manager: fix display of page edition in case of unknown template (#29383)

This commit is contained in:
Frédéric Péters 2018-12-30 13:39:23 +01:00
parent 6ff6101d8d
commit 0662ae94ed
2 changed files with 21 additions and 5 deletions

View File

@ -233,10 +233,15 @@ class Page(models.Model):
return Page.objects.filter(parent_id=self.id).exists()
def get_template_display_name(self):
return settings.COMBO_PUBLIC_TEMPLATES[self.template_name]['name']
try:
return settings.COMBO_PUBLIC_TEMPLATES[self.template_name]['name']
except KeyError:
return _('Unknown (%s)') % self.template_name
def missing_template(self):
template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name).get('template')
template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name, {}).get('template')
if not template_name:
return True
try:
template.loader.select_template([template_name])
except TemplateDoesNotExist:
@ -246,15 +251,18 @@ class Page(models.Model):
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)
page_template = settings.COMBO_PUBLIC_TEMPLATES.get(template_name or self.template_name, {})
if page_template.get('placeholders'):
# manual declaration
for key, options in page_template['placeholders'].items():
placeholders.append(Placeholder(key=key, **options))
return placeholders
template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name).get('template')
tmpl = template.loader.select_template([template_name, 'combo/page_template.html'])
template_names = []
if page_template.get('template'):
template_names.append(page_template['template'])
template_names.append('combo/page_template.html')
tmpl = template.loader.select_template(template_names)
request = RequestFactory(SERVER_NAME=request.get_host()).get(self.get_online_url())
request.user = None
context = {

View File

@ -120,6 +120,14 @@ def test_edit_page(app, admin_user):
resp = resp.follow()
assert Page.objects.all()[0].exclude_from_navigation is True
def test_edit_page_unknown_template(app, admin_user):
Page.objects.all().delete()
page = Page(title='One', slug='one', template_name='broken')
page.save()
app = login(app)
resp = app.get('/manage/pages/%s/' % page.id)
assert 'Unknown (broken)' in resp.text
def test_page_edit_slug(app, admin_user):
Page.objects.all().delete()
page = Page(title='One', slug='one', template_name='standard')