c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #20538
[Bug 746085] [NEW] Attaching files in Communications History tab of Add Internal Note produces python script error
Public bug reported:
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
** Affects: openobject-addons
Importance: Undecided
Status: New
--
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):
New
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
Follow ups
References