def _on_request_1(self, event, request, response, peer_cert=None):
        """
        First request handler. This handler handles resource requests
        directed at the portal or a portlet.
        """
        if not self._is_portal_request(request):
            return

        if peer_cert:
            event.peer_cert = peer_cert
            
        # Decode query parameters and body
        event.kwargs = parse_qs(request.qs)
        parse_body(request, response, event.kwargs)
        session = request.session
        # Is this a portal portal request?
        if request.path.startswith(self._portal_resource):
            res = os.path.join(os.path.join\
                (self._portal_resource_dir, 
                 request.path[len(self._portal_resource):]))
            if os.path.exists(res):
                event.stop()
                return tools.serve_file(request, response, res)
            return
        # Is this a portal theme resource request?
        if request.path.startswith(self._theme_resource):
            for directory in self._portal._templates_dir:
                res = os.path.join \
                    (directory, "themes", 
                     ThemeSelection.selected(session), 
                     request.path[len(self._theme_resource):])
                if os.path.exists(res):
                    event.stop()
                    return tools.serve_file(request, response, res)
            return
        # Is this a portlet resource request?
        if request.path.startswith(self._portlet_resource):
            segs = request.path[len(self._portlet_resource):].split("/")
            if len(segs) >= 2:
                request.path = "/".join(segs[1:])
                event.kwargs.update\
                    ({ "theme": ThemeSelection.selected(session),
                       "locales": LanguagePreferences.preferred(session)})
                return self.fire (portlet_resource(*event.args, 
                                                   **event.kwargs), segs[0])
Beispiel #2
0
    def _on_request_1(self, event, request, response, peer_cert=None):
        """
        First request handler. This handler handles resource requests
        directed at the portal or a portlet.
        """
        if not self._is_portal_request(request):
            return

        if peer_cert:
            event.peer_cert = peer_cert
            
        # Decode query parameters and body
        event.kwargs = parse_qs(request.qs)
        parse_body(request, response, event.kwargs)
        session = request.session
        # Is this a portal portal request?
        if request.path.startswith(self._portal_resource):
            res = os.path.join(os.path.join\
                (self._portal_resource_dir, 
                 request.path[len(self._portal_resource):]))
            if os.path.exists(res):
                event.stop()
                return tools.serve_file(request, response, res)
            return
        # Is this a portal theme resource request?
        if request.path.startswith(self._theme_resource):
            for directory in self._portal._templates_dir:
                res = os.path.join \
                    (directory, "themes", 
                     ThemeSelection.selected(session), 
                     request.path[len(self._theme_resource):])
                if os.path.exists(res):
                    event.stop()
                    return tools.serve_file(request, response, res)
            return
        # Is this a portlet resource request?
        if request.path.startswith(self._portlet_resource):
            segs = request.path[len(self._portlet_resource):].split("/")
            if len(segs) >= 2:
                request.path = "/".join(segs[1:])
                event.kwargs.update\
                    ({ "theme": ThemeSelection.selected(session),
                       "locales": LanguagePreferences.preferred(session)})
                return self.fire (portlet_resource(*event.args, 
                                                   **event.kwargs), segs[0])
Beispiel #3
0
    def _on_request(self, event, req, res, peer_cert=None):
        if peer_cert:
            event.peer_cert = peer_cert

        handlers, name, channel, vpath = find_handlers(req, self.paths)

        if name is not None and channel is not None:
            event.kwargs = parse_qs(req.qs)
            process(req, event.kwargs)

            if vpath:
                event.args += tuple(vpath)

            if isinstance(name, text_type):
                name = str(name)

            return self.fire(Event.create(name, *event.args, **event.kwargs),
                             channel)
Beispiel #4
0
    def _on_request(self, event, req, res, peer_cert=None):
        if peer_cert:
            event.peer_cert = peer_cert

        handlers, name, channel, vpath = find_handlers(req, self.paths)

        if name is not None and channel is not None:
            event.kwargs = parse_qs(req.qs)
            process(req, event.kwargs)

            if vpath:
                event.args += tuple(vpath)

            if isinstance(name, text_type):
                name = str(name)

            return self.fire(
                Event.create(
                    name, *event.args, **event.kwargs
                ),
                channel
            )