[web2py] Re: Restricting dropdown options in SQLFORM.grid in queries on hierarchical tables.

2012-09-17 Thread Mandar Vaze
What I have done as a workaround is as follows :

def View(): 
if request.args(0) in ['edit']: 

redirect(URL('controller', 'myEdit', args=request.args, 
  
vars=request.vars)) 
 
if request.args(0) in ['new']: 
 
redirect(URL('controller', 'myNew', args=request.args,  
vars=request.vars)) 


In myEdit - I get the record to be edited from request.args(2)

Then I restrict the dropdown for specific field using :
db.tablename.fieldname.requires = IS_IN_DB(db(query), db.tablename.id, 
'%(first_name)s 
%(last_name)s')

For new I have different problem since I can't restrict the dropdown till 
othe values in the form are selected (in your case, looks like you can)
So I let default values be populated, but on submit I validate and return 
error.

Looking for suggestions to improve on both counts (edit/new).
 
-Mandar

On Monday, September 17, 2012 4:14:54 AM UTC+5:30, Michael Ellis wrote:

 Suppose I have an app that allows grandparents to enter, view, and edit 
 information about their children and grandchildren. I want to make sure 
 that each grandparent can see only his/her family's information and I want 
 to use SQLFORM.grid.  

 Using a query of the form

 q = (db.children.parent == db.parent.id)  \
 (db.parent.parent == db.grandparent.id)  \
 (db.grandparent.user_id == auth.user.id)

 form = SQLFORM.grid(q,  ... ) 

 yields a  results page that works as expected.  The form shows only the 
 grandchildren of the logged-in grandparent.  However, if I click the Add or 
 Edit links,  the dropdown for the parent reference shows all parent ids  in 
 the entire parent table.  How can I restrict the dropdown to show only the 
 parent ids contained in the record set from the query?

 (Note: my actual app involves organizations, campuses, and buildings but 
 the hierarchical relationships are the same as in my example. Somehow 
 parent-child relationships seem easier to reason with. )


 Thanks,
 Mike
  

-- 





Re: [web2py] Re: Restricting dropdown options in SQLFORM.grid in queries on hierarchical tables.

2012-09-17 Thread Michael Ellis
Thanks,  Mandar.  That looks promising. If I come up with any improvements,
I'll share them here.
Cheers,
Mike


On Mon, Sep 17, 2012 at 9:12 AM, Mandar Vaze mandarv...@gmail.com wrote:

 What I have done as a workaround is as follows :

 def View():
 if request.args(0) in ['edit']:

 redirect(URL('controller', 'myEdit', args=request.args,

 vars=request.vars))

 if request.args(0) in ['new']:

 redirect(URL('controller', 'myNew', args=request.args,

 vars=request.vars))


 In myEdit - I get the record to be edited from request.args(2)

 Then I restrict the dropdown for specific field using :
 db.tablename.fieldname.requires = IS_IN_DB(db(query), db.tablename.id, 
 '%(first_name)s
 %(last_name)s')

 For new I have different problem since I can't restrict the dropdown
 till othe values in the form are selected (in your case, looks like you can)
 So I let default values be populated, but on submit I validate and return
 error.

 Looking for suggestions to improve on both counts (edit/new).

 -Mandar


 On Monday, September 17, 2012 4:14:54 AM UTC+5:30, Michael Ellis wrote:

 Suppose I have an app that allows grandparents to enter, view, and edit
 information about their children and grandchildren. I want to make sure
 that each grandparent can see only his/her family's information and I want
 to use SQLFORM.grid.

 Using a query of the form

 q = (db.children.parent == db.parent.id)  \
 (db.parent.parent == db.grandparent.id)  \
 (db.grandparent.user_id == auth.user.id)

 form = SQLFORM.grid(q,  ... )

 yields a  results page that works as expected.  The form shows only the
 grandchildren of the logged-in grandparent.  However, if I click the Add or
 Edit links,  the dropdown for the parent reference shows all parent ids  in
 the entire parent table.  How can I restrict the dropdown to show only the
 parent ids contained in the record set from the query?

 (Note: my actual app involves organizations, campuses, and buildings but
 the hierarchical relationships are the same as in my example. Somehow
 parent-child relationships seem easier to reason with. )


 Thanks,
 Mike

  --





--