diff -r 1fe028e17f70 -r 34e6d07ea2e9 src/pyams_content/features/redirect/interfaces/__init__.py --- a/src/pyams_content/features/redirect/interfaces/__init__.py Mon Nov 05 13:20:10 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -# -# Copyright (c) 2008-2018 Thierry Florac -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# - -__docformat__ = 'restructuredtext' - - -# import standard library - -# import interfaces -from pyams_content.interfaces.container import IOrderedContainer -from pyams_sequence.interfaces import IInternalReference - -# import packages -from pyams_sequence.schema import InternalReferenceField -from zope.container.constraints import contains, containers -from zope.interface import Interface, Attribute, invariant, Invalid -from zope.schema import Bool, TextLine - -from pyams_content import _ - - -REDIRECT_MANAGER_KEY = 'pyams_content.redirect' - - -class IRedirectionRule(IInternalReference): - """Redirection rule interface""" - - containers('.IRedirectManager') - - active = Bool(title=_("Active rule?"), - description=_("If 'no', selected rule is inactive"), - required=True, - default=False) - - chained = Bool(title=_("Chained rule?"), - description=_("If 'no', and if this rule is matching received request URL, the rule " - "returns a redirection response; otherwise, the rule just rewrites the " - "input URL which is forwarded to the next rule"), - required=True, - default=False) - - permanent = Bool(title=_("Permanent redirect?"), - description=_("Define if this redirection should be permanent or temporary"), - required=True, - default=True) - - url_pattern = TextLine(title=_("URL pattern"), - description=_("Regexp pattern of matching URLs for this redirection rule"), - required=True) - - pattern = Attribute("Compiled URL pattern") - - reference = InternalReferenceField(title=_("Internal redirection target"), - description=_("Internal redirection reference. You can search a reference using " - "'+' followed by internal number, of by entering text matching " - "content title."), - required=False) - - target_url = TextLine(title=_("Target URL"), - description=_("URL to which source URL should be redirected"), - required=False) - - @invariant - def check_reference_and_target(self): - if self.reference and self.target_url: - raise Invalid(_("You can only provide an internal reference OR a target URL")) - elif not (self.reference or self.target_url): - raise Invalid(_("You must provide an internal reference OR a target URL")) - - def match(self, source_url): - """Return regexp URL match on given URL""" - - def rewrite(self, source_url, request): - """Rewrite given source URL""" - - -class IRedirectionManager(IOrderedContainer): - """Redirection manager""" - - contains(IRedirectionRule) - - def get_active_items(self): - """Get iterator over active items""" - - def get_response(self, request): - """Get new response for given request""" - - def test_rules(self, source_url, request, check_inactive_rules=False): - """Test rules against given URL""" - - -class IRedirectionManagerTarget(Interface): - """Redirection manager target marker interface"""