# HG changeset patch # User Damien Correia # Date 1539267904 -7200 # Node ID d69762f1ca4d09f830e8b0f235071d2ec0c3e601 # Parent d77417cf9e6722de9fafb88fe021ddcccaad74a9 Updated Pictograms sorted by local title diff -r d77417cf9e67 -r d69762f1ca4d src/pyams_content/reference/pictograms/zmi/manager.py --- a/src/pyams_content/reference/pictograms/zmi/manager.py Thu Oct 11 16:18:06 2018 +0200 +++ b/src/pyams_content/reference/pictograms/zmi/manager.py Thu Oct 11 16:25:04 2018 +0200 @@ -15,11 +15,13 @@ # import standard library import json +import locale # import interfaces from pyams_content.interfaces import MANAGE_TOOL_PERMISSION from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget, IPictogramManager, IPictogramTable from pyams_form.interfaces.form import IWidgetForm, IWidgetsSuffixViewletsManager, IUncheckedEditFormButtons +from pyams_i18n.interfaces import II18n from pyams_skin.interfaces import IInnerPage from pyams_skin.layer import IPyAMSLayer from pyams_utils.interfaces.data import IObjectData @@ -85,24 +87,30 @@ class PictogramManagerSelectionView(Viewlet): """Pictogram manager selection viewlet""" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.table = query_utility(IPictogramTable) + self.target = get_parent(self.context, IPictogramManagerTarget) + if self.target is not None: + self.picto_manager = IPictogramManager(self.target) + + def sort_pictogram(self, pictograms): + return sorted(pictograms, + key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', + request=self.request) or '').lower()) + @property def available_pictograms(self): - table = query_utility(IPictogramTable) - target = get_parent(self.context, IPictogramManagerTarget) - if target is not None: - manager = IPictogramManager(target) - for pictogram in table.values(): - if (not manager.selected_pictograms) or (pictogram.__name__ not in manager.selected_pictograms): + if self.picto_manager: + for pictogram in self.sort_pictogram(self.table.values()): + if pictogram.__name__ not in self.picto_manager.selected_pictograms: yield pictogram @property def selected_pictograms(self): - table = query_utility(IPictogramTable) - target = get_parent(self.context, IPictogramManagerTarget) - if target is not None: - manager = IPictogramManager(target) - if manager.selected_pictograms: - for name in manager.selected_pictograms: - pictogram = table.get(name) - if pictogram is not None: - yield pictogram + if self.picto_manager.selected_pictograms: + for name in self.picto_manager.selected_pictograms: + pictogram = self.table.get(name) + if pictogram is not None: + yield pictogram