too many db..... requires=IS_IN_DB(db, (db, 'companies.id', '%(name)s'))
needs to be requires=IS_IN_DB(db, 'companies.id', '%(name)s') On Monday, April 8, 2013 9:39:15 AM UTC+2, Domagoj Kovač wrote: > > Hi, > > i tried moving companies outside of db.py. > > In db.py i have: > > auth.settings.extra_fields['auth_user'] = [Field('deleted', 'boolean', > default=False), > Field('company_id', 'reference > companies', requires=IS_IN_DB(db, (db, 'companies.id', '%(name)s')))] > > Error i am receiving now is: > <type 'exceptions.ValueError'> too many values to unpack > What is wrong now? > > On Friday, April 5, 2013 7:09:28 PM UTC+2, Anthony wrote: >> >> Note, simply doing (db, 'companies.id', ...) may not completely resolve >> the problem. Even doing that, the db.companies table is only getting >> defined conditionally when the "companies" controller is called, but the >> db.auth_user table is defined on every request, and it could be used by >> other controllers. If the auth_user table links to another table, it may be >> a good idea to make sure that other table is defined whenever the auth_user >> table is defined (i.e., maybe move the db.companies table definition into >> db.py or some other model that isn't conditionally executed). >> >> Anthony >> >> On Friday, April 5, 2013 11:30:38 AM UTC-4, Niphlod wrote: >>> >>> Nope. >>> when "auth" definition is encountered, if you want to use >>> db.companies.id written as it is, db.define_table('companies') should >>> have been executead already. >>> You need to change your IS_IN_DB call to (db, 'companies.id', >>> '%(name)s') ... notice the ticks around companies.id, it's a string.... >>> When you do it that way, the db.companies table will be called not at >>> "models definition" time, but at the time the page is rendered (so, >>> allowing all the models to be executed before --> having at your >>> disposition the companies table) >>> >>> On Friday, April 5, 2013 5:11:32 PM UTC+2, Domagoj Kovač wrote: >>>> >>>> Thanks guys, >>>> >>>> right now my db.py looks like this: >>>> >>>> from gluon.tools import Auth, Crud, Service, PluginManager, prettydate >>>> auth = Auth(db) >>>> crud, service, plugins = Crud(db), Service(), PluginManager() >>>> >>>> db.define_table('companies', >>>> Field('name', 'string', >>>> required=True, >>>> requires=IS_NOT_EMPTY(), >>>> label=LABEL(T("Naziv"), _for="companies_name")), >>>> Field('url_sufix', 'string', >>>> required=True, >>>> requires=IS_NOT_EMPTY(), >>>> unique=True, >>>> label=LABEL(T("Url-sufix"), >>>> _for="companies_url_sufix")), >>>> Field('logo', 'upload', >>>> label=LABEL(T("Logo"), _for="companies_logo")), >>>> Field('deleted', 'boolean')) >>>> >>>> >>>> auth.settings.extra_fields['auth_user'] = [Field('deleted', 'boolean', >>>> default=False), >>>> Field('company_id', >>>> 'reference companies', requires=IS_IN_DB(db, db.companies.id, >>>> '%(name)s'))] >>>> >>>> ## create all tables needed by auth if not custom tables >>>> auth.define_tables(username=False, signature=False) >>>> >>>> Is there any way i could have my companies definition in >>>> /companies/companies.py but still do this. >>>> >>> -- --- 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/groups/opt_out.