21 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
21 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
22 from pyams_form.interfaces.form import IFormContextPermissionChecker |
22 from pyams_form.interfaces.form import IFormContextPermissionChecker |
23 |
23 |
24 # import packages |
24 # import packages |
25 from persistent import Persistent |
25 from persistent import Persistent |
26 from pyams_sequence.reference import get_reference_target |
26 from pyams_content.component.links import InternalReferenceMixin |
27 from pyams_utils.adapter import adapter_config, ContextAdapter |
27 from pyams_utils.adapter import adapter_config, ContextAdapter |
28 from pyams_utils.url import canonical_url |
28 from pyams_utils.url import canonical_url |
29 from pyams_utils.zodb import volatile_property |
29 from pyams_utils.zodb import volatile_property |
30 from zope.container.contained import Contained |
30 from zope.container.contained import Contained |
31 from zope.interface import implementer |
31 from zope.interface import implementer |
32 from zope.schema.fieldproperty import FieldProperty |
32 from zope.schema.fieldproperty import FieldProperty |
33 |
33 |
34 |
34 |
35 @implementer(IRedirectionRule) |
35 @implementer(IRedirectionRule) |
36 class RedirectionRule(Persistent, Contained): |
36 class RedirectionRule(Persistent, Contained, InternalReferenceMixin): |
37 """Redirection rule persistent class""" |
37 """Redirection rule persistent class""" |
38 |
38 |
39 active = FieldProperty(IRedirectionRule['active']) |
39 active = FieldProperty(IRedirectionRule['active']) |
40 chained = FieldProperty(IRedirectionRule['chained']) |
40 chained = FieldProperty(IRedirectionRule['chained']) |
41 permanent = FieldProperty(IRedirectionRule['permanent']) |
41 permanent = FieldProperty(IRedirectionRule['permanent']) |
50 @url_pattern.setter |
50 @url_pattern.setter |
51 def url_pattern(self, value): |
51 def url_pattern(self, value): |
52 if value != self._url_pattern: |
52 if value != self._url_pattern: |
53 self._url_pattern = value |
53 self._url_pattern = value |
54 del self.pattern |
54 del self.pattern |
55 |
|
56 @volatile_property |
|
57 def target(self): |
|
58 return get_reference_target(self.reference) |
|
59 |
|
60 def get_target(self, state=None): |
|
61 if not state: |
|
62 return self.target |
|
63 else: |
|
64 return get_reference_target(self.reference, state) |
|
65 |
55 |
66 @volatile_property |
56 @volatile_property |
67 def pattern(self): |
57 def pattern(self): |
68 return re.compile(self.url_pattern) |
58 return re.compile(self.url_pattern) |
69 |
59 |