Skip to content

Type names with matching Title brake the left panel viewlet #212

@szakitibi

Description

@szakitibi

Expected result

image

Current behavior

image

Details

With types defined with matching translated titles, e.g. two "Folder" types like:

[...
 ('Folder',
  {'action': 'http://localhost:8080/Plone/++add++Folder',
   'description': '',
   'extra': {'class': 'contenttype-folder', 'id': 'folder', 'separator': None},
   'icon': None,
   'id': 'Folder',
   'selected': False,
   'submenu': None,
   'title': 'Folder'}),
...
 ('Folder',
  {'action': 'http://localhost:8080/Plone/++add++customers.special.Folder',
   'description': '',
   'extra': {'class': 'contenttype-customers-special-folder', 'id': 'customers-special-folder', 'separator': None},
   'icon': None,
   'id': 'customers.special.Folder',
   'selected': False,
   'submenu': None,
   'title': 'Folder'})]

This section of code forced to compare dictionaries:

# Sort the addable content types based on their translated title
results = [(translate(ctype['title'], context=request), ctype)
for ctype in results]
results.sort()
results = [ctype[-1] for ctype in results]

Which results the following error:

TypeError: '<' not supported between instances of 'dict' and 'dict'

Suggested solution

results.sort(key=lambda ctype: translate(ctype['title'], context=request))

Note: Unless this violates some underlying rule banning matching titles for content types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions