From 1fb5e22a77e5a0c109db4db891ff1cf002e2db9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 4 Nov 2018 12:14:02 +0100 Subject: [PATCH] assets: make it possible to qualify assets as not being images (#27718) --- combo/apps/assets/views.py | 10 +++++++--- combo/apps/wcs/models.py | 8 ++++++-- tests/test_manager.py | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/combo/apps/assets/views.py b/combo/apps/assets/views.py index b2aaf78a..23c99c78 100644 --- a/combo/apps/assets/views.py +++ b/combo/apps/assets/views.py @@ -65,13 +65,14 @@ class CkEditorAsset(object): class SlotAsset(object): - def __init__(self, key=None, name=None, asset=None): + def __init__(self, key=None, name=None, asset_type='image', asset=None): self.key = key self.name = name + self.asset_type = asset_type self.asset = asset def is_image(self): - return bool(self.asset) + return self.asset_type == 'image' and bool(self.asset) def size(self): if self.asset: @@ -95,7 +96,10 @@ class SlotAsset(object): for cell in CellBase.get_cells(cell_filter=lambda x: bool(x.get_asset_slots)): uniq_slots.update(cell.get_asset_slots()) for key, value in uniq_slots.items(): - yield cls(key, name=value.get('label'), asset=assets.get(key)) + yield cls(key, + name=value.get('label'), + asset_type=value.get('asset-type', 'image'), + asset=assets.get(key)) class Assets(ListView): diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py index e6f4494f..0a3ace55 100644 --- a/combo/apps/wcs/models.py +++ b/combo/apps/wcs/models.py @@ -107,11 +107,13 @@ class WcsFormCell(CellBase): suffix = '' if slot_template_data.get('suffix'): suffix = ' (%s)' % slot_template_data['suffix'] - slots['wcs:form:%s:%s' % (slot_template_key, self.formdef_reference)] = { + slot_key = 'wcs:form:%s:%s' % (slot_template_key, self.formdef_reference) + slots[slot_key] = { 'label': u'%(prefix)s — %(label)s%(suffix)s' % { 'prefix': slot_template_data['prefix'], 'label': self.cached_title, 'suffix': suffix}} + slots[slot_key].update(slot_template_data) return slots @@ -150,11 +152,13 @@ class WcsCommonCategoryCell(CellBase): suffix = '' if slot_template_data.get('suffix'): suffix = ' (%s)' % slot_template_data['suffix'] - slots['wcs:category:%s:%s' % (slot_template_key, self.category_reference)] = { + slot_key = 'wcs:category:%s:%s' % (slot_template_key, self.category_reference) + slots[slot_key] = { 'label': u'%(prefix)s — %(label)s%(suffix)s' % { 'prefix': slot_template_data['prefix'], 'label': self.cached_title, 'suffix': suffix}} + slots[slot_key].update(slot_template_data) return slots diff --git a/tests/test_manager.py b/tests/test_manager.py index 6149c125..742b8ff0 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -762,6 +762,7 @@ def test_asset_slots_management(app, admin_user): 'image/png') resp = resp.form.submit().follow() assert 'test2.png' in resp.text + assert 'Delete<' in resp.text assert Asset.objects.filter(key='collectivity:banner').count() == 1 @@ -773,6 +774,19 @@ def test_asset_slots_management(app, admin_user): resp = app.get('/assets/collectivity:banner', status=404) + with override_settings(COMBO_ASSET_SLOTS={'collectivity:cgu': {'label': 'CGU', 'asset-type': 'document'}}): + resp = app.get('/manage/assets/') + assert '>CGU<' in resp.text + assert '>Delete<' not in resp.text + + resp = resp.click('Overwrite') + resp.form['upload'] = Upload('test.pdf', 'PDF-1.4 ...', 'application.pdf') + resp = resp.form.submit().follow() + assert 'test.pdf' in resp.text + assert 'Delete<' in resp.text + assert Asset.objects.filter(key='collectivity:cgu').count() == 1 + def test_menu_json(app, admin_user): app.get('/manage/menu.json', status=302) -- 2.19.1