Failure after upgrade to 2.8.2

127 views
Skip to first unread message

Jim S

unread,
Dec 4, 2013, 9:36:17 PM12/4/13
to web...@googlegroups.com
The following code is failing after update from 2.8.x to 2.8.2 (not positive what version I came from)


auth.settings.hmac_key = 'sha512:9d8d83af-4769-410b-9cf5-e01a163b498d'   # before define_tables()

auth
.settings.extra_fields['auth_user']= [
       
Field('auth_group', 'reference auth_group', label='Group',
              requires
=IS_EMPTY_OR(IS_IN_DB(db, 'auth_group.id', '%(group)s'))),
       
Field('phone', 'string', length=20),
       
Field('active', 'boolean', default=True),
       
Field('image', 'upload'),
       
Field('created', 'datetime', default=request.now, writable=False),
       
Field('supplier', 'reference supplier', requires=IS_EMPTY_OR(IS_IN_DB(db, 'supplier.id'))),
       
Field('distributor', 'reference distributor', requires=IS_EMPTY_OR(IS_IN_DB(db, 'distributor.id'))),
       
Field('fax', 'string', length=20)
   
]

## create all tables needed by auth if not custom tables
auth
.define_tables(username=True, signature=False)



The following traceback is generated:

Traceback (most recent call last):
 
File "C:\dev\web2py\gluon\restricted.py", line 217, in restricted
 
exec ccode in environment
 
File "C:/dev/web2py/applications/ibc/models/db.py", line 69, in <module>
 auth
.define_tables(username=True, signature=False)
 
File "C:\dev\web2py\gluon\tools.py", line 1707, in define_tables
 format
='%(username)s'))
 
File "C:\dev\web2py\gluon\dal.py", line 8226, in define_table
 table
= self.lazy_define_table(tablename,*fields,**args)
 
File "C:\dev\web2py\gluon\dal.py", line 8263, in lazy_define_table
 polymodel
=polymodel)
 
File "C:\dev\web2py\gluon\dal.py", line 908, in create_table
 
raise KeyError('Cannot resolve reference %s in %s definition' % (referenced, table._tablename))
KeyError: 'Cannot resolve reference auth_group in auth_user definition'




Niphlod

unread,
Dec 5, 2013, 3:42:20 PM12/5/13
to web...@googlegroups.com
I guess this is a problem due to out-of-order reference definitions.....
it's quite a leap to require web2py to know about auth_group when it's not defined yet.......
Frankly, it should be treated as a bug (so, file an issue on google code) only because of backwards compatibility

BTW,
auth_groups has a FK to auth_membership
auth_membership has a FK to auth_groups and a FK to auth_user
your model doesn't make any sense (and frankly, it's a waste of functionality and doesn't improve any performance).... you're restricting a user to be part of only one group, jumping from auth_user to auth_groups without "passing" from auth_membership.

Jim Steil

unread,
Dec 5, 2013, 4:08:33 PM12/5/13
to web...@googlegroups.com
Thanks Niphlod. I agree the model doesn't make sense.  Made sense at the time only for simplicity of defining one and only one group a user could belong to.  I understand it is not the right way to do things.  But, working on a rewrite of that app and will be redesigning the auth_user table to get rid of that.  If I'm the only one complaining then it isn't worth filing a but report to keep a 'feature' that is not necessary.


--
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/T1kli0maSBE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web2py+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Niphlod

unread,
Dec 5, 2013, 4:18:57 PM12/5/13
to web...@googlegroups.com
it's not a "feature" per-se but DAL has suffered a complete overhaul to accomodate for new features and some bug squashing.
What used to be a "commodity" leading to "faulty" data models indeed put the developers (me and Michele Comitini) to face a really hard problem to solve to support those kinds of tunrarounds.
Let's say its a bug but - at least - let me clearly state that referencing a table that doesn't exist yet is not a "normal thing to do" :D
Reply all
Reply to author
Forward
0 new messages