Projet

Général

Profil

0001-manager-fix-display-of-page-edition-in-case-of-unkno.patch

Frédéric Péters, 17 janvier 2019 11:36

Télécharger (3,25 ko)

Voir les différences:

Subject: [PATCH] manager: fix display of page edition in case of unknown
 template (#29383)

 combo/data/models.py  | 18 +++++++++++++-----
 tests/test_manager.py |  8 ++++++++
 2 files changed, 21 insertions(+), 5 deletions(-)
combo/data/models.py
233 233
        return Page.objects.filter(parent_id=self.id).exists()
234 234

  
235 235
    def get_template_display_name(self):
236
        return settings.COMBO_PUBLIC_TEMPLATES[self.template_name]['name']
236
        try:
237
            return settings.COMBO_PUBLIC_TEMPLATES[self.template_name]['name']
238
        except KeyError:
239
            return _('Unknown (%s)') % self.template_name
237 240

  
238 241
    def missing_template(self):
239
        template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name).get('template')
242
        template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name, {}).get('template')
243
        if not template_name:
244
            return True
240 245
        try:
241 246
            template.loader.select_template([template_name])
242 247
        except TemplateDoesNotExist:
......
246 251
    def get_placeholders(self, request, traverse_cells=False, template_name=None):
247 252
        placeholders = []
248 253

  
249
        page_template = settings.COMBO_PUBLIC_TEMPLATES.get(template_name or self.template_name)
254
        page_template = settings.COMBO_PUBLIC_TEMPLATES.get(template_name or self.template_name, {})
250 255
        if page_template.get('placeholders'):
251 256
            # manual declaration
252 257
            for key, options in page_template['placeholders'].items():
253 258
                placeholders.append(Placeholder(key=key, **options))
254 259
            return placeholders
255 260

  
256
        template_name = settings.COMBO_PUBLIC_TEMPLATES.get(self.template_name).get('template')
257
        tmpl = template.loader.select_template([template_name, 'combo/page_template.html'])
261
        template_names = []
262
        if page_template.get('template'):
263
            template_names.append(page_template['template'])
264
        template_names.append('combo/page_template.html')
265
        tmpl = template.loader.select_template(template_names)
258 266
        request = RequestFactory(SERVER_NAME=request.get_host()).get(self.get_online_url())
259 267
        request.user = None
260 268
        context = {
tests/test_manager.py
120 120
    resp = resp.follow()
121 121
    assert Page.objects.all()[0].exclude_from_navigation is True
122 122

  
123
def test_edit_page_unknown_template(app, admin_user):
124
    Page.objects.all().delete()
125
    page = Page(title='One', slug='one', template_name='broken')
126
    page.save()
127
    app = login(app)
128
    resp = app.get('/manage/pages/%s/' % page.id)
129
    assert 'Unknown (broken)' in resp.text
130

  
123 131
def test_page_edit_slug(app, admin_user):
124 132
    Page.objects.all().delete()
125 133
    page = Page(title='One', slug='one', template_name='standard')
126
-