Have you thought about using CrudRestController from tgext.crud ? Using it would save you some hassle, and it's very configurable though.
Am Donnerstag, 20. Dezember 2012 08:27:23 UTC+1 schrieb jo: > > 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 > > -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/turbogears?hl=en.

