c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #20781
Re: [Bug 746085] Re: Attaching files in Communications History tab of Add Internal Note produces python script error
Acknowledged, thank you, Azazahmed.
Aleksey
On Fri, Apr 1, 2011 at 2:46 AM, Azazahmed Saiyed (OpenERP)
<746085@xxxxxxxxxxxxxxxxxx> wrote:
> Hello Aleksey,
>
> Thanks for the reply. But still did not face any error in neither stable
> nor trunk version. I have made the video of my test case which i did on
> the stable version. So please gone through it and tried it again and
> notify us.
>
> For now I am closing the issue, you can reopen it later with the more
> specific information to reproduce it.
>
> Thanks.
>
> ** Attachment added: "test.ogv"
> https://bugs.launchpad.net/openobject-addons/+bug/746085/+attachment/1962935/+files/test.ogv
>
> ** Changed in: openobject-addons
> Status: Incomplete => Invalid
>
> --
> You received this bug notification because you are a direct subscriber
> of the bug.
> https://bugs.launchpad.net/bugs/746085
>
> Title:
> Attaching files in Communications History tab of Add Internal Note
> produces python script error
>
> Status in OpenERP Modules (addons):
> Invalid
>
> Bug description:
> This is an error similar to the one reported in
> http://www.openerp.com/forum/topic22828.html
>
> I am in the Helpdesk Ticket System (Sales -> After-sales Service ->
> Helpdesk) and I am adding an internal note to a case, I go to
> Communications History, and I try to attach a file, and I get a
> screenful of python error message.
>
> I'll put the message here.
>
>
>
> <type 'exceptions.TypeError'> Python 2.5.5: /home/openerp/virtualenv/python2.5/bin/python
> Wed Mar 30 14:55:18 2011
>
> A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
> /opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cprequest.py in respond(self=<cherrypy._cprequest.Request object at 0x11a4f250>, path_info='/openerp/openo2m/save')
> 604 if self.handler:
> 605 self.stage = 'handler'
> 606 cherrypy.response.body = self.handler()
> 607
> 608 self.stage = 'before_finalize'
> global cherrypy = <module 'cherrypy' from '/opt/python-2.5.5/lib/p.../CherryPy-3.1.2-py2.5.egg/cherrypy/__init__.pyc'>, cherrypy.response = <cherrypy._ThreadLocalProxy object at 0x1082da50>, cherrypy.response.body = [], self = <cherrypy._cprequest.Request object at 0x11a4f250>, self.handler = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>
> /opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object at 0x123b8f10>)
> 23 def __call__(self):
> 24 try:
> 25 return self.callable(*self.args, **self.kwargs)
> 26 except TypeError, x:
> 27 test_callable_spec(self.callable, self.args, self.kwargs)
> self = <cherrypy._cpdispatch.LateParamPageHandler object at 0x123b8f10>, self.callable = <bound method Root.default of <openobject.controllers._root.Root object at 0x10dcc0d0>>, self.args = ('openerp', 'openo2m', 'save'), self.kwargs = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/openobject/tools/_expose.py in func_wrapper(*args=(<openobject.controllers._root.Root object at 0x10dcc0d0>, 'openerp', 'openo2m', 'save'), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 180 raise cherrypy.HTTPError(405)
> 181
> 182 res = func(*args, **kw)
> 183 if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
> 184 cherrypy.response.headers['Content-Type'] = 'text/javascript'
> global res = '/home/openerp/openerp-web-6.0.1/openobject/widgets/templates/label.mako', func = <function default at 0x10dc4cf8>, args = (<openobject.controllers._root.Root object at 0x10dcc0d0>, 'openerp', 'openo2m', 'save'), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/openobject/controllers/_root.py in default(self=<openobject.controllers._root.Root object at 0x10dcc0d0>, *args=('openerp', 'openo2m', 'save'), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 85 request.handler = cherrypy.NotFound()
> 86
> 87 return request.handler()
> 88
> 89 def find_handler(self):
> request = <cherrypy._ThreadLocalProxy object at 0x1082da10>, request.handler = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>
> /opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>)
> 23 def __call__(self):
> 24 try:
> 25 return self.callable(*self.args, **self.kwargs)
> 26 except TypeError, x:
> 27 test_callable_spec(self.callable, self.args, self.kwargs)
> self = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>, self.callable = <function save at 0x1201a050>, self.args = (), self.kwargs = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/addons/openerp/controllers/utils.py in wrapper(*args=(), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 110 # User is logged in; allow access
> 111 clear_login_fields(kw)
> 112 return fn(*args, **kw)
> 113 else:
> 114 action = kw.get('login_action', '')
> fn = <bound method OpenO2M.save of <openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>>, args = (), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 180 raise cherrypy.HTTPError(405)
> 181
> 182 res = func(*args, **kw)
> 183 if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
> 184 cherrypy.response.headers['Content-Type'] = 'text/javascript'
> global res = '/home/openerp/openerp-web-6.0.1/openobject/widgets/templates/label.mako', func = <function save at 0x1114e7d0>, args = (<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/openobject/tools/_validate.py in func_wrapper(*args=(<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 47 return func(*args, **kw)
> 48
> 49 form = init_form(args and args[0] or kw["self"])
> 50 args, kw = to_kw(func, args, kw)
> 51
> form undefined, init_form = <function <lambda> at 0x1114e668>, args = (<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/openobject/tools/_validate.py in (self=<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>)
> 37
> 38 if callable(form) and not hasattr(form, "validate"):
> 39 init_form = lambda self: form(self)
> 40 else:
> 41 init_form = lambda self: form
> init_form undefined, self = <openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>, form = <function get_validation_schema at 0x110b7c08>
> /home/openerp/openerp-web-6.0.1/addons/openerp/controllers/form.py in get_validation_schema(self=<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>)
> 128
> 129 kw = cherrypy.request.params
> 130 params, data = TinyDict.split(kw)
> 131
> 132 # bypass validations, if saving from button in non-editable view
> params undefined, data undefined, global TinyDict = <class 'openerp.utils.utils.TinyDict'>, TinyDict.split = <function split at 0x10fba140>, kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
> /home/openerp/openerp-web-6.0.1/addons/openerp/utils/utils.py in split(kwargs={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
> 164 data[n] = v
> 165
> 166 return _make_dict(params, True), _make_dict(data, False)
> 167
> 168 def make_plain(self, prefix=''):
> global _make_dict = <function _make_dict at 0x10fb75f0>, params = {'_terp_view_params/_terp_ids': [1, 2, 3], 'atta...rp_view_params/attachment_ids/_terp_context': {}}, builtin True = True, data = {'attachment_ids/__id': '', 'attachment_ids/binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'attachment_ids/name': 'GPL'}, builtin False = False
> /home/openerp/openerp-web-6.0.1/addons/openerp/utils/utils.py in _make_dict(data={'attachment_ids/__id': '', 'attachment_ids/binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'attachment_ids/name': 'GPL'}, is_params=False)
> 58
> 59 values = _make_dict(v, is_params)
> 60 if values and any(values.itervalues()):
> 61 res[k] = [(id and 1, id, values)]
> 62 else:
> values = {'binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'name': 'GPL'}, builtin any = <built-in function any>, values.itervalues = <built-in method itervalues of dict object at 0x116f4c90>
> /opt/python-2.5.5/lib/python2.5/cgi.py in __len__(self=FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'))
> 631 def __len__(self):
> 632 """Dictionary style len(x) support."""
> 633 return len(self.keys())
> 634
> 635 def read_urlencoded(self):
> builtin len = <built-in function len>, self = FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), self.keys = <bound method FieldStorage.keys of FieldStorage(...ral\nPublic License instead of this License.\n')>
> /opt/python-2.5.5/lib/python2.5/cgi.py in keys(self=FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'))
> 607 """Dictionary style keys() method."""
> 608 if self.list is None:
> 609 raise TypeError, "not indexable"
> 610 keys = []
> 611 for item in self.list:
> builtin TypeError = <type 'exceptions.TypeError'>
>
> <type 'exceptions.TypeError'>: not indexable
> args = ('not indexable',)
> message = 'not indexable'
>
> Best,
> Aleksey
>
> To unsubscribe from this bug, go to:
> https://bugs.launchpad.net/openobject-addons/+bug/746085/+subscribe
>
--
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/746085
Title:
Attaching files in Communications History tab of Add Internal Note
produces python script error
Status in OpenERP Modules (addons):
Invalid
Bug description:
This is an error similar to the one reported in
http://www.openerp.com/forum/topic22828.html
I am in the Helpdesk Ticket System (Sales -> After-sales Service ->
Helpdesk) and I am adding an internal note to a case, I go to
Communications History, and I try to attach a file, and I get a
screenful of python error message.
I'll put the message here.
<type 'exceptions.TypeError'> Python 2.5.5: /home/openerp/virtualenv/python2.5/bin/python
Wed Mar 30 14:55:18 2011
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cprequest.py in respond(self=<cherrypy._cprequest.Request object at 0x11a4f250>, path_info='/openerp/openo2m/save')
604 if self.handler:
605 self.stage = 'handler'
606 cherrypy.response.body = self.handler()
607
608 self.stage = 'before_finalize'
global cherrypy = <module 'cherrypy' from '/opt/python-2.5.5/lib/p.../CherryPy-3.1.2-py2.5.egg/cherrypy/__init__.pyc'>, cherrypy.response = <cherrypy._ThreadLocalProxy object at 0x1082da50>, cherrypy.response.body = [], self = <cherrypy._cprequest.Request object at 0x11a4f250>, self.handler = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>
/opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object at 0x123b8f10>)
23 def __call__(self):
24 try:
25 return self.callable(*self.args, **self.kwargs)
26 except TypeError, x:
27 test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object at 0x123b8f10>, self.callable = <bound method Root.default of <openobject.controllers._root.Root object at 0x10dcc0d0>>, self.args = ('openerp', 'openo2m', 'save'), self.kwargs = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/openobject/tools/_expose.py in func_wrapper(*args=(<openobject.controllers._root.Root object at 0x10dcc0d0>, 'openerp', 'openo2m', 'save'), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
180 raise cherrypy.HTTPError(405)
181
182 res = func(*args, **kw)
183 if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
184 cherrypy.response.headers['Content-Type'] = 'text/javascript'
global res = '/home/openerp/openerp-web-6.0.1/openobject/widgets/templates/label.mako', func = <function default at 0x10dc4cf8>, args = (<openobject.controllers._root.Root object at 0x10dcc0d0>, 'openerp', 'openo2m', 'save'), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/openobject/controllers/_root.py in default(self=<openobject.controllers._root.Root object at 0x10dcc0d0>, *args=('openerp', 'openo2m', 'save'), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
85 request.handler = cherrypy.NotFound()
86
87 return request.handler()
88
89 def find_handler(self):
request = <cherrypy._ThreadLocalProxy object at 0x1082da10>, request.handler = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>
/opt/python-2.5.5/lib/python2.5/site-packages/CherryPy-3.1.2-py2.5.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>)
23 def __call__(self):
24 try:
25 return self.callable(*self.args, **self.kwargs)
26 except TypeError, x:
27 test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object at 0x11d38390>, self.callable = <function save at 0x1201a050>, self.args = (), self.kwargs = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/addons/openerp/controllers/utils.py in wrapper(*args=(), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
110 # User is logged in; allow access
111 clear_login_fields(kw)
112 return fn(*args, **kw)
113 else:
114 action = kw.get('login_action', '')
fn = <bound method OpenO2M.save of <openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>>, args = (), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
180 raise cherrypy.HTTPError(405)
181
182 res = func(*args, **kw)
183 if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
184 cherrypy.response.headers['Content-Type'] = 'text/javascript'
global res = '/home/openerp/openerp-web-6.0.1/openobject/widgets/templates/label.mako', func = <function save at 0x1114e7d0>, args = (<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/openobject/tools/_validate.py in func_wrapper(*args=(<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), **kw={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
47 return func(*args, **kw)
48
49 form = init_form(args and args[0] or kw["self"])
50 args, kw = to_kw(func, args, kw)
51
form undefined, init_form = <function <lambda> at 0x1114e668>, args = (<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>,), kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/openobject/tools/_validate.py in (self=<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>)
37
38 if callable(form) and not hasattr(form, "validate"):
39 init_form = lambda self: form(self)
40 else:
41 init_form = lambda self: form
init_form undefined, self = <openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>, form = <function get_validation_schema at 0x110b7c08>
/home/openerp/openerp-web-6.0.1/addons/openerp/controllers/form.py in get_validation_schema(self=<openerp.controllers.openo2m.OpenO2M object at 0x116a9c90>)
128
129 kw = cherrypy.request.params
130 params, data = TinyDict.split(kw)
131
132 # bypass validations, if saving from button in non-editable view
params undefined, data undefined, global TinyDict = <class 'openerp.utils.utils.TinyDict'>, TinyDict.split = <function split at 0x10fba140>, kw = {'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...}
/home/openerp/openerp-web-6.0.1/addons/openerp/utils/utils.py in split(kwargs={'_terp_filter_domain': '[]', '_terp_notebook_tab': '0', '_terp_o2m': 'attachment_ids', '_terp_o2m_context': '{}', '_terp_o2m_id': '', '_terp_o2m_model': 'crm.send.mail.attachment', '_terp_parent_context': 'None', '_terp_parent_id': '3', '_terp_parent_model': 'crm.add.note', '_terp_search_data': '', ...})
164 data[n] = v
165
166 return _make_dict(params, True), _make_dict(data, False)
167
168 def make_plain(self, prefix=''):
global _make_dict = <function _make_dict at 0x10fb75f0>, params = {'_terp_view_params/_terp_ids': [1, 2, 3], 'atta...rp_view_params/attachment_ids/_terp_context': {}}, builtin True = True, data = {'attachment_ids/__id': '', 'attachment_ids/binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'attachment_ids/name': 'GPL'}, builtin False = False
/home/openerp/openerp-web-6.0.1/addons/openerp/utils/utils.py in _make_dict(data={'attachment_ids/__id': '', 'attachment_ids/binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'attachment_ids/name': 'GPL'}, is_params=False)
58
59 values = _make_dict(v, is_params)
60 if values and any(values.itervalues()):
61 res[k] = [(id and 1, id, values)]
62 else:
values = {'binary': FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), 'name': 'GPL'}, builtin any = <built-in function any>, values.itervalues = <built-in method itervalues of dict object at 0x116f4c90>
/opt/python-2.5.5/lib/python2.5/cgi.py in __len__(self=FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'))
631 def __len__(self):
632 """Dictionary style len(x) support."""
633 return len(self.keys())
634
635 def read_urlencoded(self):
builtin len = <built-in function len>, self = FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'), self.keys = <bound method FieldStorage.keys of FieldStorage(...ral\nPublic License instead of this License.\n')>
/opt/python-2.5.5/lib/python2.5/cgi.py in keys(self=FieldStorage('attachment_ids/binary', 'GPL', '\t...eral\nPublic License instead of this License.\n'))
607 """Dictionary style keys() method."""
608 if self.list is None:
609 raise TypeError, "not indexable"
610 keys = []
611 for item in self.list:
builtin TypeError = <type 'exceptions.TypeError'>
<type 'exceptions.TypeError'>: not indexable
args = ('not indexable',)
message = 'not indexable'
Best,
Aleksey
References