src/pyams_content/features/redirect/__init__.py
changeset 879 47173c13e118
parent 864 209432f09f9f
child 1137 b8068bb58b9e
equal deleted inserted replaced
878:6bc257d7f53f 879:47173c13e118
    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