[web2py] Re: db._common_fields.append and Lazy_tables
Have the auth tables been defined at that point. In any case, to avoid pre-mature table definition, try replacing auth.settings.table_user with: 'reference %s' % auth.settings.table_user_name Anthony On Thursday, April 18, 2013 7:51:19 AM UTC-4, Loïc wrote: Hello All consider the example model file below : db = DAL('sqlite://storage.sqlite') signature = db.Table(db,'auth_signature', Field('created_on','datetime',default=request.now, writable=False,readable=False, label=T('Created on')), Field('created_by',auth.settings.table_user,default=auth.user_id, writable=False,readable=False, label=T('Created by')), Field('modified_on','datetime',update=request.now,default=request. now, writable=False,readable=False, label=T('Modified on')), Field('modified_by',auth.settings.table_user, default=auth.user_id,update=auth.user_id, writable=False,readable=False, label=T('Modified by')) ) db._common_fields.append(signature) db.define_table('mytable',Field('myfield','string')) db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) Then, if I want to activate lazy_tables db = DAL('sqlite://storage.sqlite', lazy_tables=True) I got the following error that I don't really understand. Can anyone explain me? Thank you Error ticket for test Ticket ID 127.0.0.1.2013-04-18.13-47-51.4d08ccf5-8d25-4cf1-a8dd-081d76046b7a type 'exceptions.AttributeError' 'NoneType' object has no attribute 'startswith' Version web2py™ Version 2.4.5-stable+timestamp.2013.03.18.22.46.22 Python Python 2.7.3: C:\Python27\python.exe (prefix: C:\Python27) Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback (most recent call last): File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\restricted.py, line 212, in restricted exec ccode in environment File C:/Users/MCR/Google Drive/loic/web2py/web2py/applications/test/models/db.py http://127.0.0.1:8000/admin/default/edit/test/models/db.py, line 101, in module db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7790, in __getattr__ return self.lazy_define_table(tablename,*fields,**args) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7714, in lazy_define_table polymodel=polymodel) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 776, in create_table elif field_type.startswith('reference'): AttributeError: 'NoneType' object has no attribute 'startswith' -- --- 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.
[web2py] Re: db._common_fields.append and Lazy_tables
Great! Thank you Anthony Le jeudi 18 avril 2013 13:59:18 UTC+2, Anthony a écrit : Have the auth tables been defined at that point. In any case, to avoid pre-mature table definition, try replacing auth.settings.table_user with: 'reference %s' % auth.settings.table_user_name Anthony On Thursday, April 18, 2013 7:51:19 AM UTC-4, Loïc wrote: Hello All consider the example model file below : db = DAL('sqlite://storage.sqlite') signature = db.Table(db,'auth_signature', Field('created_on','datetime',default=request.now, writable=False,readable=False, label=T('Created on')), Field('created_by',auth.settings.table_user,default=auth.user_id, writable=False,readable=False, label=T('Created by')), Field('modified_on','datetime',update=request.now,default=request .now, writable=False,readable=False, label=T('Modified on')), Field('modified_by',auth.settings.table_user, default=auth.user_id,update=auth.user_id, writable=False,readable=False, label=T('Modified by')) ) db._common_fields.append(signature) db.define_table('mytable',Field('myfield','string')) db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) Then, if I want to activate lazy_tables db = DAL('sqlite://storage.sqlite', lazy_tables=True) I got the following error that I don't really understand. Can anyone explain me? Thank you Error ticket for test Ticket ID 127.0.0.1.2013-04-18.13-47-51.4d08ccf5-8d25-4cf1-a8dd-081d76046b7a type 'exceptions.AttributeError' 'NoneType' object has no attribute 'startswith' Version web2py™ Version 2.4.5-stable+timestamp.2013.03.18.22.46.22 Python Python 2.7.3: C:\Python27\python.exe (prefix: C:\Python27) Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback (most recent call last): File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\restricted.py, line 212, in restricted exec ccode in environment File C:/Users/MCR/Google Drive/loic/web2py/web2py/applications/test/models/db.py http://127.0.0.1:8000/admin/default/edit/test/models/db.py, line 101, in module db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7790, in __getattr__ return self.lazy_define_table(tablename,*fields,**args) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7714, in lazy_define_table polymodel=polymodel) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 776, in create_table elif field_type.startswith('reference'): AttributeError: 'NoneType' object has no attribute 'startswith' -- --- 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.
[web2py] Re: db._common_fields.append and Lazy_tables
One more question Anthony, If I have other tables which reference themselves like : db.define_table('mytable',Field('myfield','string')) db.define_table('my_other_table',Field('myTable','reference mytable')) should I replace the* 'reference mytable' *statement with* 'reference %s' % I_dont_know_what*' to be lazy_tables compliant? Thank you Le jeudi 18 avril 2013 13:59:18 UTC+2, Anthony a écrit : Have the auth tables been defined at that point. In any case, to avoid pre-mature table definition, try replacing auth.settings.table_user with: 'reference %s' % auth.settings.table_user_name Anthony On Thursday, April 18, 2013 7:51:19 AM UTC-4, Loïc wrote: Hello All consider the example model file below : db = DAL('sqlite://storage.sqlite') signature = db.Table(db,'auth_signature', Field('created_on','datetime',default=request.now, writable=False,readable=False, label=T('Created on')), Field('created_by',auth.settings.table_user,default=auth.user_id, writable=False,readable=False, label=T('Created by')), Field('modified_on','datetime',update=request.now,default=request .now, writable=False,readable=False, label=T('Modified on')), Field('modified_by',auth.settings.table_user, default=auth.user_id,update=auth.user_id, writable=False,readable=False, label=T('Modified by')) ) db._common_fields.append(signature) db.define_table('mytable',Field('myfield','string')) db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) Then, if I want to activate lazy_tables db = DAL('sqlite://storage.sqlite', lazy_tables=True) I got the following error that I don't really understand. Can anyone explain me? Thank you Error ticket for test Ticket ID 127.0.0.1.2013-04-18.13-47-51.4d08ccf5-8d25-4cf1-a8dd-081d76046b7a type 'exceptions.AttributeError' 'NoneType' object has no attribute 'startswith' Version web2py™ Version 2.4.5-stable+timestamp.2013.03.18.22.46.22 Python Python 2.7.3: C:\Python27\python.exe (prefix: C:\Python27) Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback (most recent call last): File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\restricted.py, line 212, in restricted exec ccode in environment File C:/Users/MCR/Google Drive/loic/web2py/web2py/applications/test/models/db.py http://127.0.0.1:8000/admin/default/edit/test/models/db.py, line 101, in module db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7790, in __getattr__ return self.lazy_define_table(tablename,*fields,**args) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7714, in lazy_define_table polymodel=polymodel) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 776, in create_table elif field_type.startswith('reference'): AttributeError: 'NoneType' object has no attribute 'startswith' -- --- 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.
[web2py] Re: db._common_fields.append and Lazy_tables
That's clear for me now Thank you Le jeudi 18 avril 2013 14:32:12 UTC+2, Anthony a écrit : This syntax: 'reference %s' % auth.settings.table_user_name is not about being lazy tables compliant -- it is just a way to construct a string when part of the string is stored in a variable (another option would be 'reference ' + auth.settings.table_user_name). You could just as easily do: 'reference auth_user' The former syntax just allows for cases where you don't want to hard-code the name of the user table into your field definition (in case you decide to change it at some point). The problem with your original field definition was that you specified the field object itself (i.e., auth.settings.table_user), which requires that the table already exists. The reference syntax just requires the table name, not the table object. Anthony On Thursday, April 18, 2013 8:25:50 AM UTC-4, Loïc wrote: One more question Anthony, If I have other tables which reference themselves like : db.define_table('mytable',Field('myfield','string')) db.define_table('my_other_table',Field('myTable','reference mytable')) should I replace the* 'reference mytable' *statement with* 'reference %s' % I_dont_know_what*' to be lazy_tables compliant? Thank you Le jeudi 18 avril 2013 13:59:18 UTC+2, Anthony a écrit : Have the auth tables been defined at that point. In any case, to avoid pre-mature table definition, try replacing auth.settings.table_user with: 'reference %s' % auth.settings.table_user_name Anthony On Thursday, April 18, 2013 7:51:19 AM UTC-4, Loïc wrote: Hello All consider the example model file below : db = DAL('sqlite://storage.sqlite') signature = db.Table(db,'auth_signature', Field('created_on','datetime',default=request.now, writable=False,readable=False, label=T('Created on')), Field('created_by',auth.settings.table_user,default=auth. user_id, writable=False,readable=False, label=T('Created by')), Field('modified_on','datetime',update=request.now,default= request.now, writable=False,readable=False, label=T('Modified on')), Field('modified_by',auth.settings.table_user, default=auth.user_id,update=auth.user_id, writable=False,readable=False, label=T('Modified by')) ) db._common_fields.append(signature) db.define_table('mytable',Field('myfield','string')) db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) Then, if I want to activate lazy_tables db = DAL('sqlite://storage.sqlite', lazy_tables=True) I got the following error that I don't really understand. Can anyone explain me? Thank you Error ticket for test Ticket ID 127.0.0.1.2013-04-18.13-47-51.4d08ccf5-8d25-4cf1-a8dd-081d76046b7a type 'exceptions.AttributeError' 'NoneType' object has no attribute 'startswith' Version web2py™ Version 2.4.5-stable+timestamp.2013.03.18.22.46.22 Python Python 2.7.3: C:\Python27\python.exe (prefix: C:\Python27) Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback (most recent call last): File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\restricted.py, line 212, in restricted exec ccode in environment File C:/Users/MCR/Google Drive/loic/web2py/web2py/applications/test/models/db.py http://127.0.0.1:8000/admin/default/edit/test/models/db.py, line 101, in module db.mytable.myfield.requires = IS_EMPTY_OR(IS_URL()) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7790, in __getattr__ return self.lazy_define_table(tablename,*fields,**args) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 7714, in lazy_define_table polymodel=polymodel) File C:\Users\MCR\Google Drive\loic\web2py\web2py\gluon\dal.py, line 776, in create_table elif field_type.startswith('reference'): AttributeError: 'NoneType' object has no attribute 'startswith' -- --- 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.