c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #20551
[Bug 746085] Re: Attaching files in Communications History tab of Add Internal Note produces python script error
Hello Aleksey,
I have tested the scenario given by you in both stable and trunk version but did not able to meet with the traceback.
Would you please provide me more information from your side and mention also if you have customized anything at your end.
Thanks.
** Changed in: openobject-addons
Status: New => Incomplete
--
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):
Incomplete
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