Thank you Richard, I'll try it as soon as I finish my current round of debugging.
-Bill On Monday, August 27, 2012 1:20:49 PM UTC-5, Richard wrote: > > Hello, > > If I resume correctly you want to assign a trainer to a dog only if the > trainer haven't been assign to any dogs yet? > > So, what you have to do it to build a set instead of only define an simple > IS_IN_DB()... > > I would do something like this (not tested) : > > not_assign_yet_trainer_set = > db(~db.trainers.id.belongs(db(db.dogs.id>0).select(db.dogs.trainer, > distinct=True))) > > Than you only have to use your set instead of db.trainers in the > IS_IN_DB() where you normally define the db table to use. > > Does it help? > > Richard > > On Mon, Aug 27, 2012 at 1:12 PM, Bill Thayer <[email protected]<javascript:> > > wrote: > >> Tryin to use the example shown in Validators between classical and >> professional >> usage<http://web2py.wordpress.com/category/web2py-validators/>to change the >> values and widget for an SQLFORM.grid. >> >> I need to display an "Assign Trainers" page with an SQLFORM.grid (or >> something similar) of new dogs that have not been assigned to a trainer but >> can only be assigned to new trainers that have not been given dogs. So I >> thought simple query the is_active property on both cases, append the >> validator make (& process) my form. >> >> db.define_table('trainer', >> Field('name'), >> Field('specialty'), >> auth.signature, >> format='%(name)s') >> db.trainer.is_active.default=False >> >> db.define_table('dogs', >> Field('name'), >> Field('bites', 'boolean'), >> Field('trainer', 'reference trainer', >> default=1, >> widget=SQLFORM.widgets.options.widget, >> requires=[IS_IN_DB('db.trainer', >> IS_UPPER())]), >> auth.signature, >> migrate=True) >> >> db.dogs.is_active.default=False >> >> Controller: >> def assign_trainers(): >> trainers=db(db.trianer._is_active==False) >> new_dogs=db(db.dogs._is_active==False) >> new_dogs.trainer.requires.append(IS_IN_SET(trainers)) >> >> grid = SQLFORM.grid(new_dogs) >> >> return locals() >> >> Been working on this solution for two days now. Read all the books, >> bought the >> Cookbook<https://play.google.com/books/reader?id=cwjpG47z_7IC&printsec=frontcover&output=reader&authuser=0&hl=en&pg=GBS.PA1>read >> the blogs and now I'm out of time with my prototype presentation due >> Thursday. >> >> ANY help is very much needed at this point. >> >> Thank you, >> Bill >> >> >> >> >> -- >> >> >> >> > > --

