src/pyams_content/reference/pictograms/zmi/manager.py
branchdev-dc
changeset 1013 d69762f1ca4d
parent 956 a8723fffbaf6
child 1014 6cdae82405f7
equal deleted inserted replaced
1012:d77417cf9e67 1013:d69762f1ca4d
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 import json
    17 import json
       
    18 import locale
    18 
    19 
    19 # import interfaces
    20 # import interfaces
    20 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION
    21 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION
    21 from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget, IPictogramManager, IPictogramTable
    22 from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget, IPictogramManager, IPictogramTable
    22 from pyams_form.interfaces.form import IWidgetForm, IWidgetsSuffixViewletsManager, IUncheckedEditFormButtons
    23 from pyams_form.interfaces.form import IWidgetForm, IWidgetsSuffixViewletsManager, IUncheckedEditFormButtons
       
    24 from pyams_i18n.interfaces import II18n
    23 from pyams_skin.interfaces import IInnerPage
    25 from pyams_skin.interfaces import IInnerPage
    24 from pyams_skin.layer import IPyAMSLayer
    26 from pyams_skin.layer import IPyAMSLayer
    25 from pyams_utils.interfaces.data import IObjectData
    27 from pyams_utils.interfaces.data import IObjectData
    26 from pyams_zmi.interfaces.menu import IPropertiesMenu
    28 from pyams_zmi.interfaces.menu import IPropertiesMenu
    27 from pyams_zmi.layer import IAdminLayer
    29 from pyams_zmi.layer import IAdminLayer
    83                 view=PictogramManagerEditForm, manager=IWidgetsSuffixViewletsManager, permission=MANAGE_TOOL_PERMISSION)
    85                 view=PictogramManagerEditForm, manager=IWidgetsSuffixViewletsManager, permission=MANAGE_TOOL_PERMISSION)
    84 @template_config(template='templates/manager-selection.pt', layer=IAdminLayer)
    86 @template_config(template='templates/manager-selection.pt', layer=IAdminLayer)
    85 class PictogramManagerSelectionView(Viewlet):
    87 class PictogramManagerSelectionView(Viewlet):
    86     """Pictogram manager selection viewlet"""
    88     """Pictogram manager selection viewlet"""
    87 
    89 
       
    90 
       
    91     def __init__(self, *args, **kwargs):
       
    92         super().__init__(*args, **kwargs)
       
    93         self.table = query_utility(IPictogramTable)
       
    94         self.target = get_parent(self.context, IPictogramManagerTarget)
       
    95         if self.target is not None:
       
    96             self.picto_manager = IPictogramManager(self.target)
       
    97 
       
    98     def sort_pictogram(self, pictograms):
       
    99         return sorted(pictograms,
       
   100                      key=lambda x: locale.strxfrm(II18n(x).query_attribute('title',
       
   101                                                                             request=self.request) or '').lower())
       
   102 
    88     @property
   103     @property
    89     def available_pictograms(self):
   104     def available_pictograms(self):
    90         table = query_utility(IPictogramTable)
   105         if self.picto_manager:
    91         target = get_parent(self.context, IPictogramManagerTarget)
   106             for pictogram in self.sort_pictogram(self.table.values()):
    92         if target is not None:
   107                 if pictogram.__name__ not in self.picto_manager.selected_pictograms:
    93             manager = IPictogramManager(target)
       
    94             for pictogram in table.values():
       
    95                 if (not manager.selected_pictograms) or (pictogram.__name__ not in manager.selected_pictograms):
       
    96                     yield pictogram
   108                     yield pictogram
    97 
   109 
    98     @property
   110     @property
    99     def selected_pictograms(self):
   111     def selected_pictograms(self):
   100         table = query_utility(IPictogramTable)
   112         if self.picto_manager.selected_pictograms:
   101         target = get_parent(self.context, IPictogramManagerTarget)
   113             for name in self.picto_manager.selected_pictograms:
   102         if target is not None:
   114                 pictogram = self.table.get(name)
   103             manager = IPictogramManager(target)
   115                 if pictogram is not None:
   104             if manager.selected_pictograms:
   116                     yield pictogram
   105                 for name in manager.selected_pictograms:
       
   106                     pictogram = table.get(name)
       
   107                     if pictogram is not None:
       
   108                         yield pictogram