Skip to content

Instantly share code, notes, and snippets.

@jab3z
Last active December 3, 2016 10:55
Show Gist options
  • Save jab3z/e1c8d889e8a85a6794ad83e8849244e2 to your computer and use it in GitHub Desktop.
Save jab3z/e1c8d889e8a85a6794ad83e8849244e2 to your computer and use it in GitHub Desktop.
Get content from django cms placeholder
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