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.

Reply via email to