def get_rendered(self, colorscheme): color_dict = colorscheme.get_color_dict() for name, value in color_dict.iteritems(): color_dict[name] = "#%s" % value rendered_content = render.render_string_template(self.content, color_dict) return rendered_content
def get_rendered(self, colorscheme): color_dict = colorscheme.get_color_dict() for name, value in color_dict.items(): color_dict[name] = "#%s" % value rendered_content = render.render_string_template(self.content, color_dict) return rendered_content
def get_html(self, request=None, escape_django_tags=False, render_django_tags=False): """ return self.content rendered as html: 1. apply markup 2. parse lucidTags/django template tags """ if request is None: # e.g. called from template request = get_current_request() content1 = apply_markup(self.content, self.markup, request, escape_django_tags=escape_django_tags) if not render_django_tags: return content1 else: context = request.PYLUCID.context content2 = render.render_string_template(content1, context) return content2
if context["page_content"] is None: # Plugin has not filled the page content pagecontent_instance = _get_page_content(request) request.PYLUCID.pagecontent = request.PYLUCID.updateinfo_object = pagecontent_instance context["page_content"] = apply_markup( pagecontent_instance.content, pagecontent_instance.markup, request ) # put update information into context for itemname in ("createby", "lastupdateby", "createtime", "lastupdatetime"): context["page_%s" % itemname] = getattr(request.PYLUCID.updateinfo_object, itemname, None) # Render django tags in PageContent with the global context context["page_content"] = render.render_string_template(context["page_content"], context) template_name = context["template_name"] # Added in pylucid.context_processors page_template= loader.get_template(template_name) pre_render_global_template.send(sender=None, request=request, page_template=page_template) # Render django tags in global template with global context complete_page = page_template.render(context) # create response object response = http.HttpResponse(complete_page, mimetype="text/html") response["content-language"] = context["page_language"] return response
def test_invalid_tag(self): self.assert_activation() content = render_string_template("pre{{ tag }}post", {}) self.assertEqual(content, 'pre***invalid:tag***post') self.assertIn(TEMPLATE_INVALID_PREFIX, content)
def test_valid_tag(self): self.assert_activation() content = render_string_template("pre{{ tag }}post", {"tag": "FooBar!"}) self.assertEqual(content, 'preFooBar!post') self.assertNotIn(TEMPLATE_INVALID_PREFIX, content)
def test_render_string_template(self): x = render_string_template("Foo {{ bar }}!", {"bar": "BAR"}) assert_pformat_equal(x, "Foo BAR!")
def test_render_string_template(self): x = render_string_template("Foo {{ bar }}!", {"bar": "BAR"}) self.assertEqual(x, 'Foo BAR!')
def render_page(request, url_lang_code, url_path): """ render a PageContent page """ path_info = request.PYLUCID.path_info pagetree = request.PYLUCID.pagetree pagemeta = request.PYLUCID.pagemeta # Should never happen, because all Plugin Pages should be catched # in url.py before assert pagetree.page_type == PageTree.PAGE_TYPE url_lang_code = path_info.url_lang_code # Check the language code in the url, if exist if url_lang_code.lower() != pagemeta.language.code.lower(): # The language code in the url is wrong. e.g.: The client followed a external url with was wrong. # Note: The main_manu doesn't show links to not existing PageMeta entries! # change only the lang code in the url: new_url = i18n.change_url(request, new_lang_code=pagemeta.language.code) if settings.DEBUG or settings.PYLUCID.I18N_DEBUG: messages.error(request, "Language code in url %r is wrong! Redirect to %r." % (url_lang_code, new_url) ) # redirect the client to the right url return http.HttpResponsePermanentRedirect(new_url) # Create initial context object context = request.PYLUCID.context = RequestContext(request) # it will be filled either by plugin or by PageContent: context["page_content"] = None # call a pylucid plugin "html get view", if exist get_view_response = PYLUCID_PLUGINS.call_get_views(request) if isinstance(get_view_response, http.HttpResponse): # Plugin would be build the complete html page return get_view_response elif isinstance(get_view_response, basestring): # Plugin replace the page content context["page_content"] = get_view_response elif get_view_response is not None: # Use plugin response raise # Should never happen here, because PYLUCID_PLUGINS.call_get_views() should raise before if context["page_content"] is None: # Plugin has not filled the page content pagecontent_instance = _get_page_content(request) request.PYLUCID.pagecontent = request.PYLUCID.updateinfo_object = pagecontent_instance context["page_content"] = apply_markup( pagecontent_instance.content, pagecontent_instance.markup, request ) # put update information into context for itemname in ("createby", "lastupdateby", "createtime", "lastupdatetime"): context["page_%s" % itemname] = getattr(request.PYLUCID.updateinfo_object, itemname, None) # Render django tags in PageContent with the global context context["page_content"] = render.render_string_template(context["page_content"], context) template_name = context["base_template_name"] # Added in pylucid.context_processors page_template = loader.get_template(template_name) pre_render_global_template.send(sender=None, request=request, page_template=page_template) # Render django tags in global template with global context complete_page = page_template.render(context) # create response object response = http.HttpResponse(complete_page, mimetype="text/html") response["content-language"] = context["page_language"] return response
def test_invalid_tag(self): self.assert_activation() content = render_string_template("pre{{ tag }}post", {}) assert_pformat_equal(content, "pre***invalid:tag***post") self.assertIn(TEMPLATE_INVALID_PREFIX, content)
def test_valid_tag(self): self.assert_activation() content = render_string_template("pre{{ tag }}post", {"tag": "FooBar!"}) assert_pformat_equal(content, "preFooBar!post") self.assertNotIn(TEMPLATE_INVALID_PREFIX, content)
def render_page(request, url_lang_code, url_path): """ render a PageContent page """ path_info = request.PYLUCID.path_info pagetree = request.PYLUCID.pagetree pagemeta = request.PYLUCID.pagemeta # Should never happen, because all Plugin Pages should be catched # in url.py before assert pagetree.page_type == PageTree.PAGE_TYPE url_lang_code = path_info.url_lang_code # Check the language code in the url, if exist if url_lang_code.lower() != pagemeta.language.code.lower(): # The language code in the url is wrong. e.g.: The client followed a external url with was wrong. # Note: The main_manu doesn't show links to not existing PageMeta entries! # change only the lang code in the url: new_url = i18n.change_url(request, new_lang_code=pagemeta.language.code) if settings.DEBUG or settings.PYLUCID.I18N_DEBUG: messages.error( request, "Language code in url %r is wrong! Redirect to %r." % (url_lang_code, new_url)) # redirect the client to the right url return http.HttpResponsePermanentRedirect(new_url) # Create initial context object context = request.PYLUCID.context = RequestContext(request) # it will be filled either by plugin or by PageContent: context["page_content"] = None # call a pylucid plugin "html get view", if exist get_view_response = PYLUCID_PLUGINS.call_get_views(request) if isinstance(get_view_response, http.HttpResponse): # Plugin would be build the complete html page return get_view_response elif isinstance(get_view_response, basestring): # Plugin replace the page content context["page_content"] = get_view_response elif get_view_response is not None: # Use plugin response raise # Should never happen here, because PYLUCID_PLUGINS.call_get_views() should raise before if context["page_content"] is None: # Plugin has not filled the page content pagecontent_instance = _get_page_content(request) request.PYLUCID.pagecontent = request.PYLUCID.updateinfo_object = pagecontent_instance context["page_content"] = apply_markup(pagecontent_instance.content, pagecontent_instance.markup, request) # put update information into context for itemname in ("createby", "lastupdateby", "createtime", "lastupdatetime"): context["page_%s" % itemname] = getattr( request.PYLUCID.updateinfo_object, itemname, None) # Render django tags in PageContent with the global context context["page_content"] = render.render_string_template( context["page_content"], context) template_name = context[ "base_template_name"] # Added in pylucid.context_processors page_template = loader.get_template(template_name) pre_render_global_template.send(sender=None, request=request, page_template=page_template) # Render django tags in global template with global context complete_page = page_template.render(context) # create response object response = http.HttpResponse(complete_page, mimetype="text/html") response["content-language"] = context["page_language"] return response