Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • erp5 erp5
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Merge requests 146
    • Merge requests 146
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • erp5erp5
  • Merge requests
  • !2218

Merged
Created Dec 18, 2025 by Xiaowu Zhang@xiaowu.zhangDeveloper

fix safe_html view

  • Overview 4
  • Commits 1
  • Changes 1

we get error when access safe_html/manage_main in python3 instance

https://xxxxxxxx/erp5/portal_transforms/safe_html/manage_main
Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 181, in transaction_pubevents
    yield
  Module ZPublisher.WSGIPublisher, line 390, in publish_module
    response = _publish(request, new_mod_info)
  Module Products.ERP5Type.patches.WSGIPublisher, line 150, in publish
    return _original_publish(request, module_info)
  Module ZPublisher.WSGIPublisher, line 284, in publish
    result = mapply(obj,
  Module ZPublisher.mapply, line 98, in mapply
    return debug(object, args, context)
  Module ZPublisher.WSGIPublisher, line 68, in call_object
    return obj(*args)
  Module Shared.DC.Scripts.Bindings, line 335, in __call__
    return self._bindAndExec(args, kw, None)
  Module Shared.DC.Scripts.Bindings, line 372, in _bindAndExec
    return self._exec(bound_data, args, kw)
  Module Products.PageTemplates.PageTemplateFile, line 143, in _exec
    return self.pt_render(extra_context=bound_names)
  Module Products.PageTemplates.PageTemplate, line 81, in pt_render
    return super().pt_render(
  Module zope.pagetemplate.pagetemplate, line 134, in pt_render
   - Warning: Macro expansion failed
   - Warning: <class 'NameError'>: name 'widget' is not defined
    return self._v_program(
  Module zope.pagetemplate.pagetemplate, line 278, in __call__
    interpreter()
  Module zope.tal.talinterpreter, line 287, in __call__
    self.interpret(self.program)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 880, in do_condition
    self.interpret(block)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 550, in do_optTag_tal
    self.do_optTag(stuff)
  Module zope.tal.talinterpreter, line 535, in do_optTag
    return self.no_tag(start, program)
  Module zope.tal.talinterpreter, line 530, in no_tag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 846, in do_loop_tal
    self.interpret(block)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 550, in do_optTag_tal
    self.do_optTag(stuff)
  Module zope.tal.talinterpreter, line 535, in do_optTag
    return self.no_tag(start, program)
  Module zope.tal.talinterpreter, line 530, in no_tag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 919, in do_useMacro
    self.interpret(macro)
  Module zope.tal.talinterpreter, line 359, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 603, in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  Module zope.tales.tales, line 768, in evaluate
   - URL: tr_widgets
   - Line 22, Column 21
   - Expression: <PythonExpr values.sort()>
   - Names:
      {'container': <Transform at /erp5/portal_transforms/safe_html>,
       'context': <Transform at /erp5/portal_transforms/safe_html>,
       'default': <object object at 0x7f0b7b9b51b0>,
       'here': <Transform at /erp5/portal_transforms/safe_html>,
       'loop': {'param': <Products.PageTemplates.Expressions.PathIterator object at 0x7f0b413f6bd0>},
       'nothing': None,
       'options': {'args': ()},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x7f0b4538d5d0>,
       'request': <WSGIRequest, URL=https://xxxxxxx/erp5/portal_transforms/safe_html/manage_main>,
       'root': <Application at >,
       'template': <PageTemplateFile at /erp5/portal_transforms/safe_html/configureTransform>,
       'user': <User 'zope'>}
    return expression(self)
  Module Products.PageTemplates.ZRPythonExpr, line 53, in __call__
   - __traceback_info__: values.sort()
    return eval(self._code, vars, {})
  Module PythonExpr, line 1, in <module>

AttributeError: 'SafeItemsView' object has no attribute 'sort'
Edited Dec 18, 2025 by Xiaowu Zhang
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: fix/safe_html_view
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7