Projet

Général

Profil

0001-backoffice-add-inspector-view-for-blocks-65545.patch

Frédéric Péters, 16 juin 2022 09:01

Télécharger (4,77 ko)

Voir les différences:

Subject: [PATCH] backoffice: add inspector view for blocks (#65545)

 tests/admin_pages/test_block.py               | 17 ++++++++++
 wcs/admin/blocks.py                           | 10 ++++++
 .../wcs/backoffice/block-inspect.html         | 34 +++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 wcs/templates/wcs/backoffice/block-inspect.html
tests/admin_pages/test_block.py
441 441
    assert 'This block of fields contains 30 fields.' in resp.text
442 442
    assert '<div id="new-field"><h3>New Field</h3>' not in resp.text
443 443
    assert '>Duplicate<' not in resp.text
444

  
445

  
446
def test_block_inspect(pub):
447
    create_superuser(pub)
448
    BlockDef.wipe()
449
    block = BlockDef()
450
    block.name = 'foobar'
451
    block.fields = [
452
        fields.StringField(id='123', required=True, label='Test', type='string'),
453
        fields.StringField(id='124', required=True, label='Test2', type='string'),
454
    ]
455
    block.store()
456

  
457
    app = login(get_app(pub))
458
    resp = app.get('/backoffice/forms/blocks/%s/' % block.id)
459
    resp = resp.click('Inspector')
460
    assert resp.pyquery('#inspect-fields .inspect-field').length == 2
wcs/admin/blocks.py
44 44
        'delete',
45 45
        'export',
46 46
        'settings',
47
        'inspect',
47 48
        ('history', 'snapshots_dir'),
48 49
    ]
49 50
    field_def_page_class = BlockFieldDefPage
......
103 104
        if get_publisher().snapshot_class:
104 105
            r += htmltext('<li><a rel="popup" href="history/save">%s</a></li>') % _('Save snapshot')
105 106
            r += htmltext('<li><a href="history/">%s</a></li>') % _('History')
107
        r += htmltext('<li><a href="inspect">%s</a></li>') % _('Inspector')
106 108
        r += htmltext('<li><a href="settings" rel="popup">%s</a></li>') % _('Settings')
107 109
        r += htmltext('</ul>')
108 110
        r += super().get_new_field_form(page_id=page_id)
......
206 208
        r += form.render()
207 209
        return r.getvalue()
208 210

  
211
    def inspect(self):
212
        self.html_top(self.objectdef.name)
213
        get_response().breadcrumb.append(('inspect', _('Inspector')))
214
        context = {'blockdef': self.objectdef, 'view': self}
215
        return template.QommonTemplateResponse(
216
            templates=['wcs/backoffice/block-inspect.html'], context=context
217
        )
218

  
209 219

  
210 220
class BlocksDirectory(Directory):
211 221
    _q_exports = ['', 'new', 'categories', ('import', 'p_import')]
wcs/templates/wcs/backoffice/block-inspect.html
1
{% extends "wcs/backoffice/base.html" %}
2
{% load i18n %}
3

  
4
{% block appbar %}{% endblock %}
5

  
6
{% block content %}
7

  
8
<div class="pk-tabs inspect-tabs inspect-form-tabs">
9
 <div class="pk-tabs--tab-list" role="tablist">
10
  <button role="tab" aria-selected="true" aria-controls="inspect-infos" id="tab-infos" tabindex="0">{% trans "Information" %}</button>
11
  <button role="tab" aria-selected="false" aria-controls="inspect-fields" id="tab-fields" tabindex="-1">{% trans "Fields" %}</button>
12
 </div>
13
 <div class="pk-tabs--container">
14

  
15
 <div id="inspect-infos" role="tabpanel" tabindex="0" aria-labelledby="tab-info">
16
<ul>
17
<li><span class="parameter">{% trans "Title" %}{% trans ":" %}</span> {{ blockdef.name|default:"-" }}</li>
18
<li><span class="parameter">{% trans "Category" %}{% trans ":" %}</span> {% if blockdef.category %}<a href="{{ blockdef.category.get_admin_url }}">{{ blockdef.category.name }}</a>{% else %}-{% endif %}</li>
19
<li><span class="parameter">{% trans "Digest Template" %}{% trans ":" %}</span> {{ blockdef.digest_template|default:"-" }}</li>
20
</ul>
21
</div>
22

  
23
<div id="inspect-fields" role="tabpanel" tabindex="0" aria-labelledby="tab-fields" hidden>
24
{% for field in blockdef.fields %}
25
<div class="inspect-field inspect-field--{{ field.key }} {% if forloop.first %}inspect-field--first{% endif %}" data-field-id="{{ field.id }}">
26
<h4><a href="fields/{{ field.id }}/">{{ field.ellipsized_label }}</a> <span class="inspect-field-type">- {{ field.get_type_label }}</span></h4>
27
{{ field.get_parameters_view|safe }}
28
</div>
29
{% endfor %}
30
</div>
31
</div>
32

  
33
</div>
34
{% endblock %}
0
-