Alex, Massimo has wrote on this list in the pass that he don't want to maintain CRUD in the future. He didn't says when the support for could end though. Since SQLFORM is almost as easy then crud and more flexible, I suggest you to not start using CRUD if you write new code...
auth.has_permission() and auth.has_membership() let you easilly do what CRUD do out of the box... You can also decorate your function if your access permission management is not to complex. Richard On Fri, Nov 14, 2014 at 3:10 AM, Alex Glaros <alexgla...@gmail.com> wrote: > ok, the below now works, except for the part where it returns to parent > controller (highlighted yellow). > > Seems like there needs to be a way for the child controller to remember > the grandparent vars. > > CHILD CONTROLLER - after form is filled, wants to redirect to parent > controller with the correct vars. > def edit_object_comment(): > db.SuperObjectComment.superObjectID.readable = True > db.SuperObjectComment.superObjectID.writable = False > comment_id = request.args(0) or redirect(URL('view_suggestions')) > form = SQLFORM(db.SuperObjectComment, comment_id, next=(URL('default', > 'comment_on_an_object')), _class='formstyle') > if form.process().accepted: > response.flash = 'form accepted' > redirect(URL('comment_on_an_object', > vars=dict(filter=db.SuperObjectComment.superObjectID, > id=db.SuperObjectComment.id))) > elif form.errors: > response.flash = 'form has errors' > return dict(form=form) > > GRANDPARENT CONTROLLER sends this to the parent. Child controller needs > to figure out how to go to parent controller too. > dict(header='Comments', body=lambda row: A('Comments',_class="btn > btn-mini", _href=URL('comment_on_an_object', vars=dict(filter=row.objectID, > id=row.id)))) > > > PARENT CONTROLLER > def comment_on_an_object(): > is_owner = (lambda row: row.created_by == auth.user_id) if auth.user > else False > db.SuperObjectComment.superObjectID.default = request.get_vars.filter > db.SuperObjectComment.superObjectID.readable = False > db.SuperObjectComment.superObjectID.writable = False > commentsHeader=db.SuperObject(request.get_vars.filter) > form = crud.create(db.SuperObjectComment) > objectComments = db(db.SuperObjectComment.superObjectID == > request.get_vars.filter).select() > return locals() > > PARENT HTML > {{extend 'layout.html'}} > <font size=+3> > Comments<input style="margin:0px 0px 0px 80px" type="button" > onclick="history.go(-1);" value="Back"></font> > <h1 style="margin:60px 40px 40px 40px"> > {{=(commentsHeader.objectDisplayName)}}</h1> > <table><!--- big table that contains two tables that run down the whole > length of page. One on left is comments. Table on right contains ads or > other types of info --> > <tr> <td> <!-- this table on left --> > <table class="table table-striped"> > {{for objectComment in objectComments:}} > <tr> > <td > style="color:gray;font-size:80%">{{=prettydate(objectComment.created_on)}}</td> > <td>{{=A(objectComment.created_by.first_name, > _href=URL('default','view_user_profile', args=objectComment.created_by))}} > {{=A(objectComment.created_by.last_name, > _href=URL('default','view_user_profile', > args=objectComment.created_by))}}</td> > <td>{{=MARKMIN(objectComment.superObjectComment)}}</td> > <td> {{if auth.user_id == objectComment.created_by:}} > {{=A(objectComment.created_by.first_name, > _href=URL('default','view_user_profile', args=objectComment.created_by), > _class='btn btn-min')}}</td> > {{pass}} > <td> {{if auth.user_id == objectComment.created_by:}} {{=A("Edit me", > _href=URL('default','edit_object_comment', args=objectComment.id), > _class='btn btn-min')}}</td> > {{pass}} > </tr> > {{pass}} > </table> > <hr> > <h4>{{=form}}</h4> > > </td> <!-- this end table on left.><td> <!-- this starts table on right --> > </tr> > </table> > <input style="margin:70px" type="button" onclick="history.go(-1);" > value="Back"> > > I'm hoping someone can explain how to phrase the syntax in yellow so that > the the real vars are produced instead of the pseudo code. > > thanks, > > Alex Glaros > > -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.