def diazo_enabled(request): """ Adds Diazo enabled variable to the context. """ return { 'DIAZO_ENABLED': check_themes_enabled(request), }
def process_response(self, request, response): """ Transform the response with Diazo if transformable """ content = response if check_themes_enabled(request): theme = get_active_theme(request) if theme: rules_file = os.path.join(theme.theme_path(), 'rules.xml') if theme.id != self.theme_id or not os.path.exists( rules_file) or theme.debug: if not theme.builtin: if theme.rules: fp = open(rules_file, 'w') try: fp.write(theme.rules.serialize()) finally: fp.close() self.theme_id = theme.id self.diazo = DiazoMiddleware( app=self.app, global_conf=None, rules=rules_file, prefix=theme.theme_url(), doctype=DOCTYPE, ) compiled_theme = self.diazo.compile_theme() self.transform = etree.XSLT( compiled_theme, access_control=self.diazo.access_control) self.params = {} for key, value in self.diazo.environ_param_map.items(): if key in request.environ: if value in self.diazo.unquoted_params: self.params[value] = request.environ[key] else: self.params[value] = quote_param( request.environ[key]) try: if isinstance(response, etree._Element): response = HttpResponse() else: parser = etree.HTMLParser(remove_blank_text=True, remove_comments=True) content = etree.fromstring(response.content, parser) result = self.transform(content.decode('utf-8'), **self.params) response.content = XMLSerializer( result, doctype=DOCTYPE).serialize() except Exception, e: getLogger('django_diazo').error(e)
def process_response(self, request, response): """ Transform the response with Diazo if transformable """ content = response if check_themes_enabled(request): theme = get_active_theme(request) if theme: rules_file = os.path.join(theme.theme_path(), 'rules.xml') if theme.id != self.theme_id or not os.path.exists(rules_file) or theme.debug: if not theme.builtin: if theme.rules: fp = open(rules_file, 'w') try: fp.write(theme.rules.serialize()) finally: fp.close() self.theme_id = theme.id self.diazo = DiazoMiddleware( app=self.app, global_conf=None, rules=rules_file, prefix=theme.theme_url(), doctype=DOCTYPE, ) compiled_theme = self.diazo.compile_theme() self.transform = etree.XSLT(compiled_theme, access_control=self.diazo.access_control) self.params = {} for key, value in self.diazo.environ_param_map.items(): if key in request.environ: if value in self.diazo.unquoted_params: self.params[value] = request.environ[key] else: self.params[value] = quote_param(request.environ[key]) try: if isinstance(response, etree._Element): response = HttpResponse() else: parser = etree.HTMLParser(remove_blank_text=True, remove_comments=True) content = etree.fromstring(response.content, parser) result = self.transform(content, **self.params) response.content = XMLSerializer(result, doctype=DOCTYPE).serialize() except Exception, e: getLogger('django_diazo').error(e)
def populate(self): # always use draft if we have a page self.page = get_page_draft(self.request.current_page) if not self.page: # Nothing to do return self.toolbar.add_item( TemplateItem( "cms/toolbar/items/on_off.html", extra_context={ 'request': self.request, 'diazo_enabled': check_themes_enabled(self.request), }, side=RIGHT, ), len(self.toolbar.right_items), )
def process_request(self, request): """ Add Django CMS 3 on/off switch to toolbar """ if request.user.is_staff: if 'theme_on' in request.GET and not request.session.get('django_diazo_theme_enabled', False): request.session['django_diazo_theme_enabled'] = True if 'theme_off' in request.GET and request.session.get('django_diazo_theme_enabled', True): request.session['django_diazo_theme_enabled'] = False if hasattr(request, 'toolbar'): request.toolbar.add_item( TemplateItem( "cms/toolbar/items/on_off.html", extra_context={ 'request': request, 'diazo_enabled': check_themes_enabled(request), }, side=RIGHT, ), len(request.toolbar.right_items), )