Last active
December 3, 2016 10:55
-
-
Save jab3z/e1c8d889e8a85a6794ad83e8849244e2 to your computer and use it in GitHub Desktop.
Get content from django cms placeholder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from HTMLParser import HTMLParser | |
from django.core.exceptions import ObjectDoesNotExist | |
from django.template import Context | |
from django.test import RequestFactory | |
from cms.models import Title | |
class MLStripper(HTMLParser): | |
def __init__(self): | |
self.reset() | |
self.fed = [] | |
def handle_data(self, d): | |
self.fed.append(d) | |
def get_data(self): | |
return ''.join(self.fed) | |
def strip_tags(html): | |
s = MLStripper() | |
s.feed(html) | |
return s.get_data() | |
def get_content_from_page_placeholder(title_slug, | |
slot='page_content', | |
language='en', | |
publisher_is_draft=False): | |
""" | |
:param title_slug: cms.Title slug | |
:param slot: cms.Placeholder slot | |
:param language: language | |
:param publisher_is_draft: publisher_is_draft field of cms.Title model | |
:return: str | |
""" | |
try: | |
page = Title.objects.get(slug=title_slug, language=language, publisher_is_draft=publisher_is_draft).page | |
placeholder = page.placeholders.get(slot=slot) | |
except ObjectDoesNotExist: | |
return '' | |
request = RequestFactory().get('/') | |
request.current_page = page | |
ctx = Context({'request': request}) | |
content = placeholder.render(ctx, request) | |
return strip_tags(content) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment