src/pyams_content/features/alert/__init__.py
changeset 902 e62d6ef786d0
parent 879 47173c13e118
child 993 ce5091a24640
equal deleted inserted replaced
901:ec5032c0d883 902:e62d6ef786d0
    17 from persistent import Persistent
    17 from persistent import Persistent
    18 
    18 
    19 # import interfaces
    19 # import interfaces
    20 from pyams_content.features.alert.interfaces import IAlertItem
    20 from pyams_content.features.alert.interfaces import IAlertItem
    21 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
    21 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
    22 from pyams_content.reference.pictograms import IPictogramTable
       
    23 from pyams_form.interfaces.form import IFormContextPermissionChecker
    22 from pyams_form.interfaces.form import IFormContextPermissionChecker
    24 
    23 
    25 # import packages
    24 # import packages
    26 from pyams_content.component.links import InternalReferenceMixin
    25 from pyams_content.component.links import InternalReferenceMixin
    27 from pyams_utils.adapter import adapter_config, ContextAdapter
    26 from pyams_utils.adapter import adapter_config, ContextAdapter
    28 from pyams_utils.registry import query_utility
       
    29 from pyams_utils.zodb import volatile_property
       
    30 from zope.container.contained import Contained
    27 from zope.container.contained import Contained
    31 from zope.interface import implementer
    28 from zope.interface import implementer
    32 from zope.schema.fieldproperty import FieldProperty
    29 from zope.schema.fieldproperty import FieldProperty
    33 
    30 
    34 
    31 
    36 class AlertItem(Persistent, Contained, InternalReferenceMixin):
    33 class AlertItem(Persistent, Contained, InternalReferenceMixin):
    37     """Alert item persistent class"""
    34     """Alert item persistent class"""
    38 
    35 
    39     visible = FieldProperty(IAlertItem['visible'])
    36     visible = FieldProperty(IAlertItem['visible'])
    40     gravity = FieldProperty(IAlertItem['gravity'])
    37     gravity = FieldProperty(IAlertItem['gravity'])
    41     header = FieldProperty(IAlertItem['header'])
       
    42     message = FieldProperty(IAlertItem['message'])
    38     message = FieldProperty(IAlertItem['message'])
    43     reference = FieldProperty(IAlertItem['reference'])
    39     reference = FieldProperty(IAlertItem['reference'])
    44     _pictogram_name = FieldProperty(IAlertItem['pictogram_name'])
       
    45     start_date = FieldProperty(IAlertItem['start_date'])
    40     start_date = FieldProperty(IAlertItem['start_date'])
    46     end_date = FieldProperty(IAlertItem['end_date'])
    41     end_date = FieldProperty(IAlertItem['end_date'])
    47     maximum_interval = FieldProperty(IAlertItem['maximum_interval'])
    42     maximum_interval = FieldProperty(IAlertItem['maximum_interval'])
    48 
       
    49     @property
       
    50     def pictogram_name(self):
       
    51         return self._pictogram_name
       
    52 
       
    53     @pictogram_name.setter
       
    54     def pictogram_name(self, value):
       
    55         if value != self._pictogram_name:
       
    56             self._pictogram_name = value
       
    57             del self.pictogram
       
    58 
       
    59     @volatile_property
       
    60     def pictogram(self):
       
    61         table = query_utility(IPictogramTable)
       
    62         return table.get(self.pictogram_name)
       
    63 
    43 
    64 
    44 
    65 @adapter_config(context=IAlertItem, provides=IFormContextPermissionChecker)
    45 @adapter_config(context=IAlertItem, provides=IFormContextPermissionChecker)
    66 class AlertitemPermissionChecker(ContextAdapter):
    46 class AlertitemPermissionChecker(ContextAdapter):
    67     """Alert item permission checker"""
    47     """Alert item permission checker"""