db.dog.owner.represent = lambda value: "%s" % db.person[value].name
when called with value==None should always result in the error you see in dal.py.
Can you help me debug this? My problem is not why it does not work with dal.py (that is the part I understand). My problem is how is it that it works with sql.py?
On Apr 7, 2010, at 10:58 PM, Thadeus Burgess wrote:
I am not using different datasets, or using different queries. So here we go, let me explain in every minuet detail this process.cd ~ hg clone https://web2py.googlecode.com/hg web2py cd web2py ln -s ~/path/to/my/application applications/pms python web2py.py -a <recycle>*go to 127.0.0.1:8000/pms/default/index *everything works perfectly, I see the page as it should be with records in place, providing the proper "names" (this is only three records, I KNOW they have values)kill -SIGTERM <web2py process id> cd gluon/ mv sql.py sql.bak.py ln -s dal.py sql.py cd .. python web2py.py -a <recycle>*go to 127.0.0.1:8000/pms/default/index *receive stacktrace.kill -SIGTERM <web2py process id> cd gluon/ rm sql.py mv sql.bak.py sql.py cd .. python web2py.py -a <recycle>*go to 127.0.0.1:8000/pms/default/index *behold, everything works perfectly. Even IF, and I say IF my dataset has a bad reference to a None record, and it executes just fine with sql.py, it should execute with dal.py exactly the same, it should not be throwing the exception. -Thadeus On Wed, Apr 7, 2010 at 10:10 PM, Massimo Di Pierro <mdipie...@cs.depaul.edu> wrote:I assume it isdb.dog.owner.represent = lambda value: "%s" % db.person[value].nameThe stacktrace you get is because one of your records has owner==None hence db.person[value] is also None and None has no .name. It is not a bug. Youare doing different queries or using different datasets. Anyway if you dodb.define_table('person', Field('name'), format='%(name)s') db.define_table('dog', Field('nickname'), Field('owner', db.person))the requires is set automatically and should take care of this exception.On Apr 7, 2010, at 10:01 PM, Thadeus Burgess wrote:I am defining this function. db.define_table('person', Field('name')) db.define_table('dog', Field('nickname'), Field('owner', db.person)) db.dog.owner.represent = lambda value: "%s" % db.owner[value].name This works in sql.py This does not work in dal.py You said you made changes, I tested, works just fine on sql.py, and has been for quite a while, however I get that stacktrace when I use dal.py. -ThadeusOn Wed, Apr 7, 2010 at 8:34 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:I guess I do not understand. Who defined this represent function? isit not in your code? Are you saying this is a bug in sql.py? On Apr 7, 7:48 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:No. For dal.py to be accepted it has to work exactly like sql.py Therefore I cannot make ANY code changes if we want a new DAL. -ThadeusOn Wed, Apr 7, 2010 at 5:31 PM, mdipierro <mdipie...@cs.depaul.edu>wrote:Thisdb.TableA.id_TableB.represent = lambda value: "%s" % db.TableB[value].nameshould bedb.TableA.id_TableB.represent = lambda value: (db.TableB[value] or{}).get('name','anonymous')On Apr 7, 1:36 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:Traceback (most recent call last):File "/home/tburgess/Applications/web2py/gluon/restricted.py", line173, in restricted exec ccode in environment File"/home/tburgess/Applications/web2py/applications/pms/views/ default/index.html",line 62, in <module> <thead> File"/home/tburgess/Applications/web2py/applications/pms/models/ common.py",line 197, in <lambda> db.TableA.id_TableB.represent = lambda value: "%s" % db.TableB[value].nameFile "/home/tburgess/Applications/web2py/gluon/sql.py", line 2402,in __getitem__ return self._db(self.id == key).select().first()File "/home/tburgess/Applications/web2py/gluon/sql.py", line 3276, inselectreturn self._db._adapter.select(self._query,*fields,**attributes) File "/home/tburgess/Applications/web2py/gluon/sql.py", line 507, inselect query = self.SELECT(query,*fields, **attributes)File "/home/tburgess/Applications/web2py/gluon/sql.py", line 433, inSELECT for field in self.db[table]:File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2102,in __getitem__ return dict.__getitem__(self, str(key)) KeyError: 'None'-ThadeusOn Mon, Apr 5, 2010 at 6:00 PM, mdipierro <mdipie...@cs.depaul.edu>wrote:uploading fix. please check it. Thanks for testing this.On Apr 5, 3:59 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:Traceback (most recent call last):File "/home/tburgess/Applications/web2py/gluon/ restricted.py", line173, in restricted exec ccode in environment File"/home/tburgess/Applications/web2py/applications/pms/ controllers/default.py",line 278, in <module>File "/home/tburgess/Applications/web2py/gluon/globals.py", line96, in <lambda> self._caller = lambda f: f() File"/home/tburgess/Applications/web2py/applications/pms/ controllers/default.py",line 76, in duplicates orderby=db.potentials.AFile "/home/tburgess/Applications/web2py/gluon/sql.py", line 3258,in selectreturn self._db._adapter.select(self._query,*fields,**attributes) File "/home/tburgess/Applications/web2py/gluon/sql.py", line 512,in select return self.parse(rows,self._colnames)File "/home/tburgess/Applications/web2py/gluon/sql.py", line 706,in parse (rid._table, rid._record) = (db[referee], None) NameError: global name 'db' is not defined-ThadeusOn Mon, Apr 5, 2010 at 3:01 PM, mdipierro <mdipie...@cs.depaul.edu>wrote:try nowOn Apr 5, 2:30 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:Now I get this for reference fieldTraceback (most recent call last):File "/home/tburgess/Applications/web2py/gluon/ restricted.py",line 173, in restricted exec ccode in environment File"/home/tburgess/Applications/web2py/applications/pms/views/ default/index.html",line 84, in <module> {{=db.table[column].represent(d.B[column])}} File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2210, in __getattr__ self.__allocate() File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2203, in __allocate self._record = self._table[int(self)] File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2384, in __getitem__ return self._db(self.id == key).select().first() File "/home/tburgess/Applications/web2py/gluon/sql.py", line 3258, in select return self._db._adapter.select(self._query,*fields,**attributes)File "/home/tburgess/Applications/web2py/gluon/sql.py", line 512,in select return self.parse(rows,self._colnames)File "/home/tburgess/Applications/web2py/gluon/sql.py", line 707,in parse colset[fieldname] = rid = Reference(value) TypeError: int() argument must be a string or a number, not 'NoneType'-ThadeusOn Mon, Apr 5, 2010 at 2:20 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:I fixed the former. I did not fix the latter. It is a known problem with the new dal and one of the few things that needs to be ironed out: it does not like select('fieldname') only select(db.table['fieldname']). Not difficult to fix anyway.On Apr 5, 2:13 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:I get this traceback when attempting to access a reference field.rows = db().select(db.table.ALL) for r in rows: r.id r.title r.reference_field.name r.reference_field.descriptionTraceback (most recent call last):File "/home/tburgess/Applications/web2py/gluon/ restricted.py",line 173, in restricted exec ccode in environment File"/home/tburgess/Applications/web2py/applications/pms/ views/default/index.html",line 84, in <module> {{=db.field[column].represent(d.B[column])}}File "/home/tburgess/Applications/web2py/gluon/sql.py", line2210, in __getattr__ self.__allocate()File "/home/tburgess/Applications/web2py/gluon/sql.py", line2203, in __allocate self._record = self._table[int(self)]File "/home/tburgess/Applications/web2py/gluon/sql.py", line2384, in __getitem__ return self._db(self.id == key).select()._first() AttributeError: 'Rows' object has no attribute '_first'I get this traceback from form = SQLFORM(db.mytable)Traceback (most recent call last):File "/home/tburgess/Applications/web2py/gluon/ restricted.py",line 173, in restricted exec ccode in environment File"/home/tburgess/Applications/web2py/applications/pms/ controllers/default.py",line 278, in <module> File"/home/tburgess/Applications/web2py/applications/pms/ models/plugin_compression.py",line 28, in compress_response d = d() File"/home/tburgess/Applications/web2py/applications/pms/ controllers/default.py",line 15, in index return dict(hi='hi', form=SQLFORM(db.mytable))File "/home/tburgess/Applications/web2py/gluon/ sqlhtml.py",line 688, in __init__ inp = self.widgets.multiple.widget(field, default)File "/home/tburgess/Applications/web2py/gluon/ sqlhtml.py",line 211, in widget return OptionsWidget.widget(field, value, **attributes)File "/home/tburgess/Applications/web2py/gluon/ sqlhtml.py",line 187, in widget options = requires[0].options()File "/home/tburgess/Applications/web2py/gluon/ validators.py",line 2227, in _options options = self.other.options()File "/home/tburgess/Applications/web2py/gluon/ validators.py",line 385, in options self.build_set()File "/home/tburgess/Applications/web2py/gluon/ validators.py",line 369, in build_set records = self.dbset.select(*self.fields, **dd)File "/home/tburgess/Applications/web2py/gluon/sql.py", line3258, in select return self._db._adapter.select(self._query,*fields,**attributes)File "/home/tburgess/Applications/web2py/gluon/sql.py", line501, in select query = self.SELECT(query,*fields, **attributes)File "/home/tburgess/Applications/web2py/gluon/sql.py", line432, in SELECT tablenames.append(f._tablename) AttributeError: 'str' object has no attribute '_tablename'-Thadeus-- You received this message because you are subscribed to the Google Groups "web2py-users" group.To post to this group, send email to web2py@googlegroups.com .To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/web2py?hl=en.--You received this message because you are subscribed to the GoogleGroups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/web2py?hl=en.--You received this message because you are subscribed to the GoogleGroups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/web2py?hl=en.--You received this message because you are subscribed to the GoogleGroups "web2py-users" group. To post to this group, send email to web...@googlegroups.com.... read more ยป
-- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.