コード例 #1
0
def diazo_enabled(request):
    """
    Adds Diazo enabled variable to the context.
    """
    return {
        'DIAZO_ENABLED': check_themes_enabled(request),
    }
コード例 #2
0
ファイル: middleware.py プロジェクト: appsembler/django-diazo
    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)
コード例 #3
0
ファイル: middleware.py プロジェクト: jean/django-diazo
    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)
コード例 #4
0
    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),
        )
コード例 #5
0
ファイル: middleware.py プロジェクト: jean/django-diazo
 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),
         )