openerp-india team mailing list archive
-
openerp-india team
-
Mailing list archive
-
Message #08750
[Bug 950118] Re: Duplication of a Group with application name containing ampersand character.
** Description changed:
When trying to duplicate a group which application contains an ampersand
(as "Invoice & Payments" does), the server issues:
Server Traceback (most recent call last):
- File "/home/vaab/dev/python/openerp-web/addons/web/common/http.py", line 592, in send
- result = openerp.netsvc.dispatch_rpc(service_name, method, args)
- File "/home/vaab/dev/python/openobject-server/openerp/netsvc.py", line 360, in dispatch_rpc
- result = ExportService.getService(service_name).dispatch(method, params)
- File "/home/vaab/dev/python/openobject-server/openerp/service/web_services.py", line 572, in dispatch
- res = fn(db, uid, *params)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/osv.py", line 167, in execute_kw
- return self.execute(db, uid, obj, method, *args, **kw or {})
- File "/home/vaab/dev/python/openobject-server/openerp/osv/osv.py", line 121, in wrapper
- return f(self, dbname, *args, **kwargs)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/osv.py", line 176, in execute
- res = self.execute_cr(cr, uid, obj, method, *args, **kw)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/osv.py", line 164, in execute_cr
- return getattr(object, method)(cr, uid, *args, **kw)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/res/res_users.py", line 83, in copy
- return super(groups, self).copy(cr, uid, id, default, context)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/orm.py", line 4732, in copy
- new_id = self.create(cr, uid, data, context)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/res/res_users.py", line 727, in create
- res = super(groups_view, self).create(cr, uid, values, context)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/res/res_users.py", line 637, in create
- self.write(cr, uid, [gid], {'users': users}, context)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/res/res_users.py", line 733, in write
- self.update_user_groups_view(cr, uid, context)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/res/res_users.py", line 768, in update_user_groups_view
- view.write({'arch': xml % ('\n'.join(xml1), '\n'.join(xml2))})
- File "/home/vaab/dev/python/openobject-server/openerp/osv/orm.py", line 368, in function_proxy
- return attr(self._cr, self._uid, [self._id], *args, **kwargs)
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 117, in write
- result = super(view, self).write(cr, uid, ids, vals, context)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/orm.py", line 3943, in write
- self._validate(cr, user, ids, context)
- File "/home/vaab/dev/python/openobject-server/openerp/osv/orm.py", line 1448, in _validate
- if not fun(self, cr, uid, ids):
- File "/home/vaab/dev/python/openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 78, in _check_xml
- eview = etree.fromstring(view.arch.encode('utf8'))
- File "lxml.etree.pyx", line 2743, in lxml.etree.fromstring (src/lxml/lxml.etree.c:52665)
- File "parser.pxi", line 1573, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:79932)
- File "parser.pxi", line 1452, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:78774)
- File "parser.pxi", line 960, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:75389)
- File "parser.pxi", line 564, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:71739)
- File "parser.pxi", line 645, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:72614)
- File "parser.pxi", line 585, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955)
+ File "openerp-web/addons/web/common/http.py", line 592, in send
+ result = openerp.netsvc.dispatch_rpc(service_name, method, args)
+ File "openobject-server/openerp/netsvc.py", line 360, in dispatch_rpc
+ result = ExportService.getService(service_name).dispatch(method, params)
+ File "openobject-server/openerp/service/web_services.py", line 572, in dispatch
+ res = fn(db, uid, *params)
+ File "openobject-server/openerp/osv/osv.py", line 167, in execute_kw
+ return self.execute(db, uid, obj, method, *args, **kw or {})
+ File "openobject-server/openerp/osv/osv.py", line 121, in wrapper
+ return f(self, dbname, *args, **kwargs)
+ File "openobject-server/openerp/osv/osv.py", line 176, in execute
+ res = self.execute_cr(cr, uid, obj, method, *args, **kw)
+ File "openobject-server/openerp/osv/osv.py", line 164, in execute_cr
+ return getattr(object, method)(cr, uid, *args, **kw)
+ File "openobject-server/openerp/addons/base/res/res_users.py", line 83, in copy
+ return super(groups, self).copy(cr, uid, id, default, context)
+ File "openobject-server/openerp/osv/orm.py", line 4732, in copy
+ new_id = self.create(cr, uid, data, context)
+ File "openobject-server/openerp/addons/base/res/res_users.py", line 727, in create
+ res = super(groups_view, self).create(cr, uid, values, context)
+ File "openobject-server/openerp/addons/base/res/res_users.py", line 637, in create
+ self.write(cr, uid, [gid], {'users': users}, context)
+ File "openobject-server/openerp/addons/base/res/res_users.py", line 733, in write
+ self.update_user_groups_view(cr, uid, context)
+ File "openobject-server/openerp/addons/base/res/res_users.py", line 768, in update_user_groups_view
+ view.write({'arch': xml % ('\n'.join(xml1), '\n'.join(xml2))})
+ File "openobject-server/openerp/osv/orm.py", line 368, in function_proxy
+ return attr(self._cr, self._uid, [self._id], *args, **kwargs)
+ File "openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 117, in write
+ result = super(view, self).write(cr, uid, ids, vals, context)
+ File "openobject-server/openerp/osv/orm.py", line 3943, in write
+ self._validate(cr, user, ids, context)
+ File "openobject-server/openerp/osv/orm.py", line 1448, in _validate
+ if not fun(self, cr, uid, ids):
+ File "openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 78, in _check_xml
+ eview = etree.fromstring(view.arch.encode('utf8'))
+ File "lxml.etree.pyx", line 2743, in lxml.etree.fromstring (src/lxml/lxml.etree.c:52665)
+ File "parser.pxi", line 1573, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:79932)
+ File "parser.pxi", line 1452, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:78774)
+ File "parser.pxi", line 960, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:75389)
+ File "parser.pxi", line 564, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:71739)
+ File "parser.pxi", line 645, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:72614)
+ File "parser.pxi", line 585, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955)
XMLSyntaxError: xmlParseEntityRef: no name, line 11, column 30
TO REPRODUCE:
- From a new empty database,
+ From a new empty database,
1 - go to Settings/Users/Groups
2 - create new group with application "Invoicing & Payments". The group name doesn't matters.
3 - try to duplicate this new Group.
DIAGNOSTIC:
Characters in the application name are not protected in
"base/res/res_users.py" in "groups_view" model, method
'update_user_groups_view' line 764:
- xml2.append('<separator string="%s" colspan="4"/>' % app_name)
+ xml2.append('<separator string="%s" colspan="4"/>' % app_name)
At validation time, the xml is checked by launching
etree.fromstring(...) which cast the reported exception.
SOLUTION PROPOSED:
Why write some XML bare handed ? lxml is at your disposal and is used in
others location of the code...
I might post some code to remove the problem in the next day.
** Branch linked: lp:~vaab/openobject-server/fix-bad-xml-generation-in-
res-group
--
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Server.
https://bugs.launchpad.net/bugs/950118
Title:
Duplication of a Group with application name containing ampersand
character.
Status in OpenERP Server:
New
Bug description:
When trying to duplicate a group which application contains an
ampersand (as "Invoice & Payments" does), the server issues:
Server Traceback (most recent call last):
File "openerp-web/addons/web/common/http.py", line 592, in send
result = openerp.netsvc.dispatch_rpc(service_name, method, args)
File "openobject-server/openerp/netsvc.py", line 360, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "openobject-server/openerp/service/web_services.py", line 572, in dispatch
res = fn(db, uid, *params)
File "openobject-server/openerp/osv/osv.py", line 167, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "openobject-server/openerp/osv/osv.py", line 121, in wrapper
return f(self, dbname, *args, **kwargs)
File "openobject-server/openerp/osv/osv.py", line 176, in execute
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "openobject-server/openerp/osv/osv.py", line 164, in execute_cr
return getattr(object, method)(cr, uid, *args, **kw)
File "openobject-server/openerp/addons/base/res/res_users.py", line 83, in copy
return super(groups, self).copy(cr, uid, id, default, context)
File "openobject-server/openerp/osv/orm.py", line 4732, in copy
new_id = self.create(cr, uid, data, context)
File "openobject-server/openerp/addons/base/res/res_users.py", line 727, in create
res = super(groups_view, self).create(cr, uid, values, context)
File "openobject-server/openerp/addons/base/res/res_users.py", line 637, in create
self.write(cr, uid, [gid], {'users': users}, context)
File "openobject-server/openerp/addons/base/res/res_users.py", line 733, in write
self.update_user_groups_view(cr, uid, context)
File "openobject-server/openerp/addons/base/res/res_users.py", line 768, in update_user_groups_view
view.write({'arch': xml % ('\n'.join(xml1), '\n'.join(xml2))})
File "openobject-server/openerp/osv/orm.py", line 368, in function_proxy
return attr(self._cr, self._uid, [self._id], *args, **kwargs)
File "openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 117, in write
result = super(view, self).write(cr, uid, ids, vals, context)
File "openobject-server/openerp/osv/orm.py", line 3943, in write
self._validate(cr, user, ids, context)
File "openobject-server/openerp/osv/orm.py", line 1448, in _validate
if not fun(self, cr, uid, ids):
File "openobject-server/openerp/addons/base/ir/ir_ui_view.py", line 78, in _check_xml
eview = etree.fromstring(view.arch.encode('utf8'))
File "lxml.etree.pyx", line 2743, in lxml.etree.fromstring (src/lxml/lxml.etree.c:52665)
File "parser.pxi", line 1573, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:79932)
File "parser.pxi", line 1452, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:78774)
File "parser.pxi", line 960, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:75389)
File "parser.pxi", line 564, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:71739)
File "parser.pxi", line 645, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:72614)
File "parser.pxi", line 585, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955)
XMLSyntaxError: xmlParseEntityRef: no name, line 11, column 30
TO REPRODUCE:
From a new empty database,
1 - go to Settings/Users/Groups
2 - create new group with application "Invoicing & Payments". The group name doesn't matters.
3 - try to duplicate this new Group.
DIAGNOSTIC:
Characters in the application name are not protected in
"base/res/res_users.py" in "groups_view" model, method
'update_user_groups_view' line 764:
xml2.append('<separator string="%s" colspan="4"/>' % app_name)
At validation time, the xml is checked by launching
etree.fromstring(...) which cast the reported exception.
SOLUTION PROPOSED:
Why write some XML bare handed ? lxml is at your disposal and is used
in others location of the code...
I might post some code to remove the problem in the next day.
To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-server/+bug/950118/+subscriptions
References