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""" |