On Feb 26, 2011, at 11:50 AM, LightOfMooN wrote:
>
> function is too big (150+strings)
> but I find some peace of code in it:
>
> props = get_props_by_section_id_list([section_id,])
> gsp_ids = {}
> for type in props.keys():
> gsp_ids[type] = {}
> for prop in props[type]:
> gsp_ids[type]
> [prop.id]=db((prop.id==db.sections_properties.prop_id)&(db.sections_properties.type==type)).select(db.sections_properties.id).first().id
>
> maybe because of that?
Yes. That creates a local binding of type that obscures the built-in function.
Change 'type' here to another name and you should be OK.
>
> On 27 фев, 00:11, Jonathan Lundell <[email protected]> wrote:
>> On Feb 26, 2011, at 10:53 AM, LightOfMooN wrote:
>>
>>
>>
>>> if type('asd') == str:
>>> pass
>>
>> Could you post the whole function? It sounds like you might be rebinding
>> type.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>> Traceback (most recent call last):
>>> File "/home/www-data/web2py/gluon/restricted.py", line 188, in
>>> restricted
>>> exec ccode in environment
>>> File "/home/www-data/web2py/applications/rushops/controllers/
>>> shop.py", line 376, in <module>
>>> File "/home/www-data/web2py/gluon/globals.py", line 95, in <lambda>
>>> self._caller = lambda f: f()
>>> File "/home/www-data/web2py/gluon/tools.py", line 2314, in f
>>> return action(*a, **b)
>>> File "/home/www-data/web2py/applications/rushops/controllers/
>>> shop.py", line 203, in structure
>>> if type('asd') == str:
>>> UnboundLocalError: local variable 'type' referenced before assignment
>>
>>> but in the other function:
>>
>>> ids = request.vars.filetodelete
>>> if type(ids) != list and ids:
>>> ids = [ids]
>>
>>> works fine