backoffice: use a template to render data management page (#38936)

This commit is contained in:
Frédéric Péters 2019-12-29 10:42:33 +01:00
parent 4b86a73ab2
commit 888bc479f5
5 changed files with 44 additions and 22 deletions

View File

@ -19,6 +19,7 @@ from quixote.html import TemplateIO, htmltext, htmlescape
from ..qommon import _
from ..qommon import errors
from ..qommon import template
from ..qommon.backoffice.menu import html_top
from wcs.carddef import CardDef
@ -26,6 +27,7 @@ from .management import ManagementDirectory, FormPage, FormFillPage, FormBackOff
class DataManagementDirectory(ManagementDirectory):
do_not_call_in_templates = True
_q_exports = ['']
def _q_traverse(self, path):
@ -44,30 +46,21 @@ class DataManagementDirectory(ManagementDirectory):
return True
return False
def _q_index(self):
html_top('data_management', _('Cards'))
formdefs = CardDef.select(order_by='name', ignore_errors=True, lightweight=True)
if len(formdefs) == 0:
return self.empty_site_message(_('Cards'))
r = TemplateIO(html=True)
r += get_session().display_message()
r += htmltext('<div id="appbar">')
r += htmltext('<h2>%s</h2>') % _('Cards')
r += htmltext('</div>')
def get_carddefs(self):
user = get_request().user
if user:
cards = []
for formdef in formdefs:
for formdef in CardDef.select(order_by='name', ignore_errors=True, lightweight=True):
if user.is_admin or formdef.is_of_concern_for_user(user):
cards.append(formdef)
r += htmltext('<ul class="biglist">')
for carddef in cards:
r += htmltext('<li><strong><a href="%s/">%s</a></strong></li>') % (carddef.url_name, carddef.name)
r += htmltext('</ul>')
yield formdef
return r.getvalue()
def _q_index(self):
html_top('data_management', _('Cards'))
if CardDef.count() == 0:
return self.empty_site_message(_('Cards'))
return template.QommonTemplateResponse(
templates=['wcs/backoffice/data-management.html'],
context={'view': self})
def _q_lookup(self, component):
return CardPage(component)

View File

@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
from quixote import get_publisher, get_response, get_request
from quixote import get_publisher, get_response, get_request, get_session
def get_global_context():
pub = get_publisher()
@ -31,4 +31,5 @@ def publisher(request):
'user': lambda: get_request() and get_request().user,
'template_base': template_base,
'global_context': get_global_context,
'session_message': lambda: get_session() and get_session().display_message(),
}

View File

@ -0,0 +1,12 @@
{% block appbar %}
<div id="appbar">
<h2>{% block appbar-title %}{% endblock %}</h2>
</div>
{% endblock %}
{% block session-message %}
{{session_message|safe}}
{% endblock %}
{% block content %}
{% endblock %}

View File

@ -0,0 +1,12 @@
{% extends "wcs/backoffice/base.html" %}
{% load i18n %}
{% block appbar-title %}{% trans "Cards" %}{% endblock %}
{% block content %}
<ul class="objects-list single-links">
{% for carddef in view.get_carddefs %}
<li><a href="{{ carddef.url_name }}/">{{ carddef.name }}</a></li>
{% endfor %}
</ul>
{% endblock %}

View File

@ -1,9 +1,13 @@
{% extends "wcs/backoffice/base.html" %}
{% load i18n %}
{% block body %}
{% block appbar %}
<div id="appbar" class="highlight">
<h2>{% trans "Studio" %}</h2>
</div>
{% endblock %}
{% block content %}
<div id="studio">
{% if user.can_go_in_backoffice_forms %}
<a class="button button-paragraph" href="../forms/">{% trans "Forms" context "studio" %}