0001-backoffice-add-inspector-view-for-blocks-65545.patch
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 |
- |