misc: use real hostname in fake request used to get placeholders (#19993)

This commit is contained in:
Frédéric Péters 2017-11-09 12:50:37 +01:00
parent 1fff18760f
commit 9549c472a6
4 changed files with 16 additions and 13 deletions

View File

@ -190,7 +190,7 @@ class Page(models.Model):
def get_template_display_name(self):
return settings.COMBO_PUBLIC_TEMPLATES[self.template_name]['name']
def get_placeholders(self, traverse_cells=False, template_name=None):
def get_placeholders(self, request, traverse_cells=False, template_name=None):
placeholders = []
page_template = settings.COMBO_PUBLIC_TEMPLATES.get(template_name or self.template_name)
@ -202,7 +202,7 @@ class Page(models.Model):
template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name).get('template')
tmpl = template.loader.select_template([template_name])
request = RequestFactory().get(self.get_online_url())
request = RequestFactory(SERVER_NAME=request.get_host()).get(self.get_online_url())
request.user = None
context = RequestContext(request, {
'page': self,

View File

@ -92,7 +92,7 @@ class PageAddView(CreateView):
def form_valid(self, form):
response = super(PageAddView, self).form_valid(form)
if self.object.slug != 'index' or self.object.parent_id:
for placeholder in self.object.get_placeholders():
for placeholder in self.object.get_placeholders(request=self.request):
if placeholder.acquired is True:
ParentContentCell(page=self.object,
placeholder=placeholder.key, order=0).save()
@ -121,9 +121,9 @@ class PageSelectTemplateView(PageEditView):
new_template_name = self.object.template_name
response = super(PageSelectTemplateView, self).form_valid(form)
if old_template_name != new_template_name:
old_placeholder_keys = [x.key for x in self.get_object().get_placeholders()]
old_placeholder_keys = [x.key for x in self.get_object().get_placeholders(request=self.request)]
page_cells = CellBase.get_cells(page_id=self.object.id)
for placeholder in self.object.get_placeholders(new_template_name):
for placeholder in self.object.get_placeholders(request=self.request, template_name=new_template_name):
if not placeholder.acquired:
continue
if placeholder.key in old_placeholder_keys:
@ -210,7 +210,7 @@ class PageView(DetailView):
placeholders = []
combo_template = settings.COMBO_PUBLIC_TEMPLATES.get(template)
for placeholder in self.object.get_placeholders(traverse_cells=True):
for placeholder in self.object.get_placeholders(request=self.request, traverse_cells=True):
placeholder_dict = {
'key': placeholder.key,
'name': placeholder.get_name(),

View File

@ -206,7 +206,7 @@ def skeleton(request):
# add default ParentContentCells to the page
cells = []
for placeholder in selected_page.get_placeholders():
for placeholder in selected_page.get_placeholders(request=request):
if placeholder.acquired:
cells.append(ParentContentCell(page=selected_page, placeholder=placeholder.key, order=0))
else:
@ -236,15 +236,16 @@ def skeleton(request):
class StyleDemoPage(object):
def __init__(self, template_name):
self.template_name = template_name or 'standard'
def __init__(self, request):
self.request = request
self.template_name = request.GET.get('template') or 'standard'
def __enter__(self):
self.page = Page(public=False, title=_('Style Demo'))
self.page.template_name = self.template_name
self.page.save()
combo_template = settings.COMBO_PUBLIC_TEMPLATES[self.page.template_name]
for i, placeholder in enumerate(self.page.get_placeholders()):
for i, placeholder in enumerate(self.page.get_placeholders(request=self.request)):
cell = TextCell(page=self.page, placeholder=placeholder.key, order=0)
if placeholder.key == 'footer':
cell.text = '<p>%s</p>' % lorem_ipsum.sentence()
@ -283,7 +284,7 @@ def style(request):
messages.error(request, _('Error notice'))
with transaction.atomic():
with StyleDemoPage(request.GET.get('template')) as page:
with StyleDemoPage(request) as page:
return publish_page(request, page)

View File

@ -7,6 +7,7 @@ import sys
from django.conf import settings
from django.contrib.auth.models import User, Group
from django.test import override_settings
from django.test.client import RequestFactory
from django.utils.timezone import now
from combo.data.models import Page, CellBase, TextCell, LinkCell
from combo.data.management.commands.import_site import Command as ImportSiteCommand
@ -266,7 +267,8 @@ def test_last_update_time():
def test_get_placeholders():
page = Page(title=u'foo', slug='foo', template_name='standard-sidebar', order=0)
placeholders = page.get_placeholders()
request = RequestFactory().get('/')
placeholders = page.get_placeholders(request=request)
assert [x.key for x in placeholders] == ['content', 'sidebar', 'footer']
assert placeholders[0].acquired is False
assert placeholders[-1].acquired is True
@ -281,7 +283,7 @@ def test_get_placeholders():
'sidebar': {'name': 'Sidebar'},
'footer': {'name': 'Footer', 'acquired': False},
}}}):
placeholders = page.get_placeholders()
placeholders = page.get_placeholders(request=request)
assert set([x.key for x in placeholders]) == set(['content', 'content2', 'sidebar', 'footer'])
footer_placeholder = [x for x in placeholders if x.key == 'footer'][0]
assert footer_placeholder.acquired is False