from zope.interface import implements
from zope.component import adapts
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.annotation.interfaces import IAnnotations

from Products.qLocalSkin.config import ANNOTATION_KEY
from interfaces import IRequestPortalUrlAnnotator

class RequestPortalUrlAnnotator(object):
    """ Adapter for working with portal_url suffix in request's annotation. """

    implements(IRequestPortalUrlAnnotator)
    adapts(IBrowserRequest)

    key = ANNOTATION_KEY

    def __init__(self, request):
        self.request = request
        self.annotations = IAnnotations(self.request, None)

    def annotate(self, value):
        if self.annotations is not None:
            self.annotations[self.key] = value
            # print "################## Setted annotation on request from qLocalSkin: " + str(value)
            return True
        return False

    def getPortalUrlSuffix(self, default=''):
        if self.annotations is not None:
            return self.annotations.get(self.key, default)
        return default
