Esempio n. 1
0
    def as_text(self):
        '''Fetch and render all regions

        For search and test purposes

        just a prototype
        '''
        from leonardo.templatetags.leonardo_tags import _render_content

        request_factory = RequestFactory()
        request = request_factory.get(self.get_absolute_url(), data={})
        request.feincms_page = request.leonardo_page = self
        request.frontend_editing = False
        request.user = AnonymousUser()

        if not hasattr(request, '_feincms_extra_context'):
            request._feincms_extra_context = {}

        content = ''
        try:

            # check permissions etc..
            self.run_request_processors(request)

            for region in [region.key for region in self._feincms_all_regions]:
                content += ''.join(
                    _render_content(content, request=request, context={})
                    for content in getattr(self.content, region))
        except PermissionDenied:
            pass
        except Exception as e:
            raise e

        return content
Esempio n. 2
0
    def as_text(self):
        '''Fetch and render all regions

        For search and test purposes

        just a prototype
        '''
        from leonardo.templatetags.leonardo_tags import _render_content

        request = get_anonymous_request(self)

        content = ''

        try:

            for region in [region.key
                           for region in self._feincms_all_regions]:
                content += ''.join(
                    _render_content(content, request=request, context={})
                    for content in getattr(self.content, region))
        except PermissionDenied:
            pass
        except Exception as e:
            LOG.exception(e)

        return content
Esempio n. 3
0
    def as_text(self):
        '''Fetch and render all regions

        For search and test purposes

        just a prototype
        '''
        from leonardo.templatetags.leonardo_tags import _render_content

        request_factory = RequestFactory()
        request = request_factory.get(
            self.get_absolute_url(), data={})
        request.feincms_page = request.leonardo_page = self
        request.user = AnonymousUser()

        if not hasattr(request, '_feincms_extra_context'):
            request._feincms_extra_context = {}

        content = ''
        try:

            # check permissions etc..
            self.run_request_processors(request)

            for region in [region.key
                           for region in self._feincms_all_regions]:
                content += ''.join(
                    _render_content(content, request=request, context={})
                    for content in getattr(self.content, region))
        except PermissionDenied:
            pass
        except Exception as e:
            raise e

        return content
Esempio n. 4
0
    def as_text(self):
        '''Fetch and render all regions

        For search and test purposes

        just a prototype
        '''
        from leonardo.templatetags.leonardo_tags import _render_content

        request = get_anonymous_request(self)

        content = ''

        try:

            for region in [region.key for region in self._feincms_all_regions]:
                content += ''.join(
                    _render_content(content, request=request, context={})
                    for content in getattr(self.content, region))
        except PermissionDenied:
            pass
        except Exception as e:
            LOG.exception(e)

        return content
Esempio n. 5
0
def render_region(widget=None,
                  request=None,
                  view=None,
                  page=None,
                  region=None):
    """returns rendered content
    this is not too clear and little tricky,
    because external apps needs calling process method
    """

    # change the request
    if not isinstance(request, dict):
        request.query_string = None
        request.method = "GET"

    if not hasattr(request, '_feincms_extra_context'):
        request._feincms_extra_context = {}

    leonardo_page = widget.parent if widget else page
    render_region = widget.region if widget else region

    # call processors
    for fn in reversed(list(leonardo_page.request_processors.values())):
        try:
            r = fn(leonardo_page, request)
        except:
            pass

    contents = {}

    for content in leonardo_page.content.all_of_type(
            tuple(leonardo_page._feincms_content_types_with_process)):

        try:
            r = content.process(request, view=view)
        except:
            pass
        else:
            # this is HttpResponse object or string
            if not isinstance(r, six.string_types):
                r.render()
                contents[content.fe_identifier] = getattr(r, 'content', r)
            else:
                contents[content.fe_identifier] = r

    from leonardo.templatetags.leonardo_tags import _render_content

    region_content = ''.join(
        contents[content.fe_identifier] if content.fe_identifier in
        contents else _render_content(content, request=request, context={})
        for content in getattr(leonardo_page.content, render_region))

    return region_content
Esempio n. 6
0
def render_region(widget=None, request=None, view=None,
                  page=None, region=None):
    """returns rendered content
    this is not too clear and little tricky,
    because external apps needs calling process method
    """

    # change the request
    if not isinstance(request, dict):
        request.query_string = None
        request.method = "GET"

    if not hasattr(request, '_feincms_extra_context'):
        request._feincms_extra_context = {}

    leonardo_page = widget.parent if widget else page
    render_region = widget.region if widget else region

    # call processors
    for fn in reversed(list(leonardo_page.request_processors.values())):
        try:
            r = fn(leonardo_page, request)
        except:
            pass

    contents = {}

    for content in leonardo_page.content.all_of_type(tuple(
            leonardo_page._feincms_content_types_with_process)):

        try:
            r = content.process(request, view=view)
        except:
            pass
        else:
            # this is HttpResponse object or string
            if not isinstance(r, six.string_types):
                r.render()
                contents[content.fe_identifier] = getattr(r, 'content', r)
            else:
                contents[content.fe_identifier] = r

    from leonardo.templatetags.leonardo_tags import _render_content

    region_content = ''.join(
        contents[content.fe_identifier] if content.fe_identifier in contents else _render_content(
            content, request=request, context={})
        for content in getattr(leonardo_page.content, render_region))

    return region_content
Esempio n. 7
0
    def render_region(self, request):
        '''Returns rendered region in JSON response'''

        page = self.get_object()

        try:
            region = request.POST['region']
        except KeyError:
            region = request.GET['region']

        from leonardo.templatetags.leonardo_tags import _render_content
        request.query_string = None
        result = ''.join(
            _render_content(content, request=request, context={})
            for content in getattr(page.content, region))
        return JsonResponse({'result': result, 'region': region})