def __init__(self, view, req_evt, request, response): super(RenderThread, self).__init__() self.daemon = True self._view = view self._req_evt = req_evt self._request = request self._response = response self._locales = LanguagePreferences.preferred(request.session) self._translation = rbtranslations.translation\ ("l10n", view._portal._templates_dir, self._locales, "en") if self._translation.language: response.headers["Content-Language"] \ = self._translation.language.replace("_", "-") self._portal = PortalSessionFacade(self._view, self._request.session) self._portlet_counter = 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])