I got the same error:

global name 'ObjectId' is not defined


and I just applied what I think is the required fix:

Edit the gluon/dal.py file:

 - go to the line 4882. The select method inside the MongoDBAdapter class.
 - after the method signature add this try catch block:

         try:
            from pymongo.objectid import ObjectId
        except ImportError:
            from bson.objectid import ObjectId

This should fix the issue.

I'm not allowed to commit this code. Whether it's fine Massimo can do that.

Cheers,

Walter


Il giorno martedì 7 agosto 2012 18:01:44 UTC+2, Elton Pereira de Lima ha 
scritto:
>
> After upgrading(git pull), I got a new error.
>
> NameError: global name 'ObjectId' is not defined
>
> Traceback (most recent call last):
>   File "/home/eltonplima/workspace/web2py/gluon/restricted.py", line 205, in 
> restricted
>     exec ccode in environment
>   File 
> "/home/eltonplima/workspace/web2py/applications/sqm/controllers/appadmin.py" 
> <http://127.0.0.1:8001/admin/default/edit/sqm/controllers/appadmin.py>, line 
> 433, in <module>
>   File "/home/eltonplima/workspace/web2py/gluon/globals.py", line 182, in 
> <lambda>
>     self._caller = lambda f: f()
>   File 
> "/home/eltonplima/workspace/web2py/applications/sqm/controllers/appadmin.py" 
> <http://127.0.0.1:8001/admin/default/edit/sqm/controllers/appadmin.py>, line 
> 127, in insert
>     form = SQLFORM(db[table], ignore_rw=ignore_rw)
>   File "/home/eltonplima/workspace/web2py/gluon/sqlhtml.py", line 920, in 
> __init__
>     inp = self.widgets.options.widget(field, default)
>   File "/home/eltonplima/workspace/web2py/gluon/sqlhtml.py", line 224, in 
> widget
>     options = requires[0].options()
>   File "/home/eltonplima/workspace/web2py/gluon/validators.py", line 479, in 
> options
>     self.build_set()
>   File "/home/eltonplima/workspace/web2py/gluon/validators.py", line 466, in 
> build_set
>     records = self.dbset(table).select(*fields, **dd)
>   File "/home/eltonplima/workspace/web2py/gluon/dal.py", line 8420, in select
>     return adapter.select(self.query,fields,attributes)
>   File "/home/eltonplima/workspace/web2py/gluon/dal.py", line 4877, in select
>     record[column],ObjectId):
> NameError: global name 'ObjectId' is not defined
>
>
> On Tuesday, August 7, 2012 11:33:50 AM UTC-3, Massimo Di Pierro wrote:
>>
>> This helps. I think I just fixed it in trunk. Can you check and confirm 
>> if it is fixed?
>>
>> On Tuesday, 7 August 2012 04:35:33 UTC-5, Elton Pereira de Lima wrote:
>>>
>>> Same error.
>>>
>>> One detail I forgot to mention, this only happens when I use mongodb.
>>>
>>> Follows the traceback:
>>>
>>> Traceback (most recent call last):
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/restricted.py", 
>>> line 205, in restricted
>>>     exec ccode in environment
>>>   File 
>>> "/home/eltonplima/workspace/web2py/2.0/web2py/applications/sqm/controllers/appadmin.py"
>>>  <http://127.0.0.1:8000/admin/default/edit/sqm/controllers/appadmin.py>, 
>>> line 432, in <module>
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/globals.py", 
>>> line 182, in <lambda>
>>>     self._caller = lambda f: f()
>>>   File 
>>> "/home/eltonplima/workspace/web2py/2.0/web2py/applications/sqm/controllers/appadmin.py"
>>>  <http://127.0.0.1:8000/admin/default/edit/sqm/controllers/appadmin.py>, 
>>> line 126, in insert
>>>     form = SQLFORM(db[table], ignore_rw=ignore_rw)
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/sqlhtml.py", 
>>> line 920, in __init__
>>>     inp = self.widgets.options.widget(field, default)
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/sqlhtml.py", 
>>> line 224, in widget
>>>     options = requires[0].options()
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/validators.py", 
>>> line 479, in options
>>>     self.build_set()
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/validators.py", 
>>> line 466, in build_set
>>>     records = self.dbset(table).select(*fields, **dd)
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/dal.py", line 
>>> 8416, in select
>>>     return adapter.select(self.query,fields,attributes)
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/dal.py", line 
>>> 4854, in select
>>>     self._select(query,fields,attributes)
>>>   File "/home/eltonplima/workspace/web2py/2.0/web2py/gluon/dal.py", line 
>>> 4802, in _select
>>>     raise SyntaxError, 'invalid select attribute: %s' % key
>>> SyntaxError: invalid select attribute: distinct
>>>
>>>
>>> On Tuesday, August 7, 2012 12:01:49 AM UTC-3, Cliff Kachinske wrote:
>>>>
>>>> I have created this problem by adding the unique argument to a table 
>>>> column after populating it with data.  try removing it from the has_line 
>>>> field.
>>>>
>>>> On Monday, August 6, 2012 8:19:36 PM UTC-4, Elton Pereira de Lima wrote:
>>>>>
>>>>> I'm using the latest development version, and try to add a record by 
>>>>> the administrative interface the following exception is raised:
>>>>> invalid <type'exceptions.SyntaxError'> select attribute: distinct
>>>>>
>>>>> The error happens when trying to insert in squid_log table.
>>>>>
>>>>> db.define_table('squid_internal_host',
>>>>>                 Field('ip', 'text', notnull=True, unique=True),
>>>>>                 Field('hostname', 'string', length=32, unique=True,),
>>>>>                 format='%(ip)s',
>>>>>                 migrate=True)
>>>>>
>>>>> db.define_table('squid_log',
>>>>>                 Field('timestamp', 'datetime', notnull=True),
>>>>>                 Field('internal_host', db.squid_internal_host),
>>>>>                 Field('log_line', 'text', notnull=True),
>>>>>                 Field('elapsed_time', 'integer', notnull=True),
>>>>>                 Field('hash_line', 'string', notnull=True, length=64, 
>>>>> unique=True,),
>>>>>                 Field('insert_timestamp', 'datetime', 
>>>>> default=lambda:datetime.datetime.now()),
>>>>>                 format='%(hash_line)s')
>>>>>
>>>>> I'm doing something wrong?
>>>>>
>>>>

-- 



Reply via email to