From 1f786c1cef72cfbf385dbacc306f9dcfd0e572ce Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Sat, 2 Dec 2017 00:11:38 +0100 Subject: [PATCH] Refactor QR Codes page --- app/main/views.py | 21 +++++++++++---------- app/templates/base.html | 2 +- app/templates/qrcodes.html | 16 ++++++++++------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/main/views.py b/app/main/views.py index 5c3d708..99fb980 100644 --- a/app/main/views.py +++ b/app/main/views.py @@ -102,17 +102,18 @@ def view_item(ics_id): return render_template('view_item.html', item=item.to_dict(long=True)) -@bp.route('/qrcodes') +@bp.route('/qrcodes/<kind>') @login_required -def qrcodes(): - codes = {} - for model in (models.Action, models.Manufacturer, models.Model, models.Location, models.Status): - items = db.session.query(model).order_by(model.name) - images = [{'name': item.name, - 'data': utils.image_to_base64(item.image())} - for item in items] - codes[model.__name__] = images - return render_template('qrcodes.html', codes=codes) +def qrcodes(kind='Action'): + try: + model = getattr(models, kind) + except AttributeError: + raise utils.CSEntryError(f"Unknown model '{kind}'", status_code=422) + items = db.session.query(model).order_by(model.name) + images = [{'name': item.name, + 'data': utils.image_to_base64(item.image())} + for item in items] + return render_template('qrcodes.html', kind=kind, images=images) @bp.route('/attributes', methods=('GET', 'POST')) diff --git a/app/templates/base.html b/app/templates/base.html index df8eea2..7d40c2c 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -26,7 +26,7 @@ <a class="nav-item nav-link {{ is_active(path.startswith("/items")) }}" href="{{ url_for('main.list_items') }}">Items</a> <a class="nav-item nav-link {{ is_active(path.startswith("/hosts")) }}" href="{{ url_for('main.list_hosts') }}">Hosts</a> <a class="nav-item nav-link {{ is_active(path.startswith("/attributes")) }}" href="{{ url_for('main.attributes') }}">Attributes</a> - <a class="nav-item nav-link {{ is_active(path.startswith("/qrcodes")) }}" href="{{ url_for('main.qrcodes') }}">QR Codes</a> + <a class="nav-item nav-link {{ is_active(path.startswith("/qrcodes")) }}" href="{{ url_for('main.qrcodes', kind='Action') }}">QR Codes</a> {% if current_user.is_authenticated and current_user.is_admin %} <a class="nav-item nav-link" href="{{ url_for('admin.index') }}">Admin</a> {% endif %} diff --git a/app/templates/qrcodes.html b/app/templates/qrcodes.html index 91aa071..d725bf4 100644 --- a/app/templates/qrcodes.html +++ b/app/templates/qrcodes.html @@ -3,10 +3,16 @@ {% block title %}QR Codes - CSEntry{% endblock %} {% block main %} - {% for name, images in codes.items() %} - <div class="row"> - <h2>{{ name }} codes</h2> - </div> + <ul class="nav nav-tabs"> + {% for item in ('Action', 'Manufacturer', 'Model', 'Location', 'Status') %} + <li class="nav-item"> + <a class="nav-link {% if kind == item %}active{% endif %}" href="{{ url_for('main.qrcodes', kind=item) }}">{{ item }}</a> + </li> + {% endfor %} + </ul> + + <br> + <div class="row"> {% for image in images %} <div class="col-md-3"> @@ -19,6 +25,4 @@ </div> {% endfor %} </div> - <hr class="separator"> - {% endfor %} {%- endblock %} -- GitLab