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.idwritten 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.


Reply via email to