it's odd, but seems unrelated to scheduler. To help on further 
investigation, I managed to reproduce in shell.
Append to standard db.py

import unicodedata
def testfunction():
     return response.render('message.html', context=dict())



then, create views/message.html

{{=XML('<p>%s</p>' % (unicodedata.normalize('NFKD', u'hi')))}}



then, controllers/default.py
def test():
    return testfunction()



go to testapp/default/test , no errors, "hi" is returned correctly

but, in shell....
web2py -M -S testapp
>>> myvar = testfunction()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "applications/un/models/db.py", line 86, in testfunction
    return response.render('message.html', context=dict())
  File "/home/niphlod/Scrivania/web2py_source/web2py/gluon/globals.py",line 
218, in render
    run_view_in(self._view_environment)
  File "/home/niphlod/Scrivania/web2py_source/web2py/gluon/compileapp.py",line 
656, in run_view_in
    restricted(ccode, environment, layer)
  File "/home/niphlod/Scrivania/web2py_source/web2py/gluon/restricted.py",line 
222, in restricted
    raise RestrictedError(layer, code, output, environment)
RestrictedError: <type 'exceptions.NameError'> name 'unicodedata' is not 
defined
>>> unicodedata.normalize('NFKD', u'hi')
u'hi'





On Thursday, October 11, 2012 7:29:09 PM UTC+2, Adi wrote:
>
> this is the one that comes from python: 
> http://docs.python.org/library/unicodedata.html 
>
> (using it to clean out trademark and other symbols in order to send text 
> as email)
>
>
> On Thursday, October 11, 2012 12:18:19 PM UTC-4, Massimo Di Pierro wrote:
>>
>> Where is unicodedata.py located?
>>
>> On Thursday, 11 October 2012 10:56:50 UTC-5, Adi wrote:
>>>
>>>
>>> unicodedata module is accessible in a view when i test code directly 
>>> from an application, but get the error when run the same code from 
>>> scheduler. I can move the code up to a model (db_scheduler), but just 
>>> wanted to know if imports from models should be visible to Views when run 
>>> through scheduler? 
>>>
>>> Thanks,
>>> Adnan
>>>
>>>
>>> db_scheduler.py
>>>         import unicodedata
>>>
>>>         def send_order_confirmation_email():
>>>             ...
>>>              context=dict(order=order)
>>>              message=response.render(msg_file, context)
>>>           ...send email
>>>             return
>>>
>>> Views:
>>> msg_file.html
>>>     {{=XML('<p>%s %s</p>' % \
>>>                                                 
>>> (row.orderItem.Qty,unicodedata
>>> .normalize('NFKD', \
>>>                                                 unicode(row.
>>> orderItemDetail.ProductDesc, 'utf8')).encode('ascii','ignore')))
>>>     }}
>>>
>>>
>>>
>>> Traceback (most recent call last):
>>>   File "/opt/web-apps/web2py/gluon/scheduler.py", line 218, in executor
>>>     result = dumps(_function(*args,**vars))
>>>   File "applications/crm/models/db_scheduler.py", line 179, in 
>>> send_order_confirmation_email
>>>     message=response.render(msg_file, context)
>>>   File "/opt/web-apps/web2py/gluon/globals.py", line 217, in render
>>>     run_view_in(self._view_environment)
>>>   File "/opt/web-apps/web2py/gluon/compileapp.py", line 654, in 
>>> run_view_in
>>>     context=environment)
>>>   File "/opt/web-apps/web2py/gluon/restricted.py", line 222, in 
>>> restricted
>>>     raise RestrictedError(layer, code, output, environment)
>>> RestrictedError: <type 'exceptions.NameError'> name 'unicodedata' is not 
>>> defined
>>>
>>>
>>>

-- 



Reply via email to