← Back to team overview

openerp-india team mailing list archive

[Bug 950118] Re: Duplication of a Group with application name containing ampersand character.

 

** Changed in: openobject-server
   Importance: Undecided => Low

** Changed in: openobject-server
       Status: New => Confirmed

** Changed in: openobject-server
     Assignee: (unassigned) => OpenERP's Framework R&D (openerp-dev-framework)

-- 
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:
  Confirmed

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