sprox (can't edit or delete)

33 views
Skip to first unread message

jo

unread,
Dec 20, 2012, 2:27:23 AM12/20/12
to tg
Hi all,

I'm new to tg2 and I'm trying sprox, I followed the tutorial at:
http://sprox.org/tutorials/table.html and
http://sprox.org/tutorials/form.html

and I created the model, templates and controller
I can insert new rows into the table movies
and the table grid shows the rows I inserted
but when I try to edit or delete a row
I get the 404 error like this:

edit: http://myserverdev:8080/movies/3/edit ERROR 404
delete: http://myserverdev:8080/movies/3 ERROR 404

here is my controller, what's wrong with it?
-------------------------------------------------------

from formencode.validators import DateValidator, String
from sprox.formbase import Field, CalendarDatePicker, AddRecordForm,
EditableForm
from sprox.tablebase import TableBase
from sprox.fillerbase import TableFiller, EditFormFiller
from tg.controllers import RestController, redirect
from tg import expose, tmpl_context, validate
from vir.model import DBSession
from vir.model.movies import Movie, Genre, Director
import transaction

class MovieTableFiller(TableFiller):
__model__ = Movie
def directors(self, obj):
directors = ', '.join(['<a
href="/directors/'+str(d.director_id)+'">'+d.name+'</a>'
for d in obj.directors])
return directors.join(('<div>', '</div>'))

class MovieTable(TableBase):
__model__ = Movie
__omit_fields__ = ['movie_id', 'genre_id']
__xml_fields__ = ['directors']

class NewMovieForm(AddRecordForm):
__model__ = Movie
release_date = Field(DateValidator)
title = Field(String(min=4))
__require_fields__ = ['release_date','description']

class MovieEditForm(EditableForm):
__model__ = Movie
__omit_fields__ = ['genre_id', 'movie_id']

movie_table = MovieTable(DBSession);
movie_filler = MovieTableFiller(DBSession)
new_movie_form = NewMovieForm(DBSession)
edit_movie_form = MovieEditForm(DBSession)


class SproxMovieController(RestController):
@expose('vir.templates.movies')
def get_all(self):
tmpl_context.widget = movie_table
value = movie_filler.get_value()
return dict(value=value)

@expose('vir.templates.movies_new')
def new(self, **kw):
tmpl_context.widget = new_movie_form
return dict(value=kw)

@expose('vir.templates.movies_add')
@validate(new_movie_form, error_handler=new)
def add_movie(self, **kw):
record = Movie(
title = kw.get('title') ,
description = kw.get('description') ,
genre_id = kw.get('genre') ,
release_date = kw.get('release_date')
)
DBSession.add(record)
DBSession.flush()
transaction.commit()
redirect('/movies')

@expose('vir.templates.movies_edit')
def edit(self, **kw):
tmpl_context.widget = edit_movie_form
return dict(value=kw)
--------------------------------------------------
thanks for any help
j

Moritz Schlarb

unread,
Dec 20, 2012, 2:33:32 AM12/20/12
to turbo...@googlegroups.com
Have you thought about using CrudRestController from tgext.crud ?
Using it would save you some hassle, and it's very configurable though.

jo

unread,
Dec 20, 2012, 6:05:55 AM12/20/12
to turbo...@googlegroups.com
Ok Moritz, let's try CrudRestController...
Yes, it works!
thanks a lot.

j
> <http://d.name>+'</a>'
> --
> You received this message because you are subscribed to the Google
> Groups "TurboGears" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/turbogears/-/oiMX0zaiGvwJ.
> To post to this group, send email to turbo...@googlegroups.com.
> To unsubscribe from this group, send email to
> turbogears+...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/turbogears?hl=en.


--
Jose Soares Da Silva _/_/
Sferacarta Net
Via Bazzanese 69 _/_/ _/_/_/
40033 Casalecchio di Reno _/_/ _/_/ _/_/
Bologna - Italy _/_/ _/_/ _/_/
Ph +39051591054 _/_/ _/_/ _/_/ _/_/
fax +390516131537 _/_/ _/_/ _/_/ _/_/
web:www.sferacarta.com _/_/_/ _/_/_/

Le informazioni contenute nella presente mail ed in ogni eventuale file allegato sono riservate e, comunque, destinate esclusivamente alla persona o ente sopraindicati, ai sensi del decreto legislativo 30 giugno 2003, n. 196. La diffusione, distribuzione e/o copiatura della mail trasmessa, da parte di qualsiasi soggetto diverso dal destinatario, sono vietate. La correttezza, l�integrit� e la sicurezza della presente mail non possono essere garantite. Se avete ricevuto questa mail per errore, Vi preghiamo di contattarci immediatamente e di eliminarla. Grazie.

This communication is intended only for use by the addressee, pursuant to legislative decree 30 June 2003, n. 196. It may contain confidential or privileged information. You should not copy or use it to disclose its contents to any other person. Transmission cannot be guaranteed to be error-free, complete and secure. If you are not the intended recipient and receive this communication unintentionally, please inform us immediately and then delete this message from your system. Thank you.

Reply all
Reply to author
Forward
0 new messages