diff --git a/transporte/templates/transport_details.html b/transporte/templates/transport_details.html index eb91c35cbe8432ce7ef5f424b0c37b936414ee36..09b1dbf050f8d70ed307e51c8fdd3d4d66d15e4b 100644 --- a/transporte/templates/transport_details.html +++ b/transporte/templates/transport_details.html @@ -4,7 +4,10 @@ {% if transport %} <h1 class="page-header">Transport Details</h1> -<p class="small">Ticket <a href="https://tickets.c3loc.de/#ticket/zoom/{{ transport.ticket_id }}" target="_blank">#{{ transport.ticket_id }}</a> </p> +<p class="small"> + Ticket <a href="https://tickets.c3loc.de/#ticket/zoom/{{ transport.ticket_id }}" target="_blank">#{{ transport.ticket_id }}</a> + Print <a href="{{ url_for('sticker_transport', id=transport.id) }}" target="_blank">Transport Sticker</a> +</p> <div class="row"> <div class="col-xs-3 col-sm-2"> diff --git a/transporte/templates/transport_sticker.html b/transporte/templates/transport_sticker.html new file mode 100644 index 0000000000000000000000000000000000000000..b60621fd98574a9121cd9f6a7b365c830cd00e3c --- /dev/null +++ b/transporte/templates/transport_sticker.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <link rel="shortcut icon" href="/static/gfx/list.jpg"> + + <title>{{ app_name }}</title> + + {% block meta %}{% endblock %} + + <link rel="stylesheet" type="text/css" + href="{{ url_for('static', filename='css/fa-v5.5.0-all.css') }}"> + <link rel="stylesheet" type="text/css" + href="{{ url_for('static', filename='css/bootstrap-4.1.1.min.css') }}"/> + <link rel="stylesheet" type="text/css" + href="{{ url_for('static', filename='css/dataTables-1.10.18.bootstrap4.min.css') }}"/> + <link rel="stylesheet" type="text/css" + href="{{ url_for('static', filename='css/main.css') }}"/> + + <script type="text/javascript" + src="{{ url_for('static', filename='js/jquery-3.3.1.min.js') }}"></script> + <script type="text/javascript" + src="{{ url_for('static', filename='js/bootstrap-4.1.1.min.js') }}"></script> + <script type="text/javascript" + src="{{ url_for('static', filename='js/jquery.dataTables-1.10.18.min.js') }}"></script> + <script type="text/javascript" + src="{{ url_for('static', filename='js/dataTables-1.10.18.bootstrap4.min.js') }}"></script> + + <style> + body{ + width: 21cm; + height: 29.7cm; + margin: 30mm 45mm 30mm 45mm; + font-size: 2rem; + } + </style> +</head> + +<body> + <div class="container" style="position:relative;height:100%;"> + <h1>Transport Sticker</h1> + <p><strong>Inhalt:</strong><br/><div style="height:3em;border-bottom:solid 1px;"></div></p> + <p><strong>Ziel:</strong><br/><div style="border-bottom:solid 1px;">{{ transport.destination|nl2br }}</div></p> + <p><strong>Datum:</strong><br/><div style="border-bottom:solid 1px;">{{ transport.date|datetime }}, {{ transport.time }}</div></p> + <div class="container" style="position: absolute; bottom:1em;"> + <div class="row"> + <div class="col-sm"> + <p>Transport Tool Link</p> + <img src=" {{ qrcode(url_for('show_transport', id=transport.id, _external=True)) }}" /> + </div> + <div class="col-sm"> + <p>Ticket Link</p> + <img src=" {{ qrcode('https://tickets.c3loc.de/#ticket/zoom/{}'.format(transport.ticket_id)) }}" /> + </div> + </div> + </div> + </div> +</body> +</html> diff --git a/transporte/views.py b/transporte/views.py index f7f3dea91a8134b2e8e1a30f266c2c1c1256dba2..ba20f4f5518237711077495286a4fbb61d1ca422 100644 --- a/transporte/views.py +++ b/transporte/views.py @@ -213,6 +213,23 @@ def show_transport(id=None): return render_template('transport_details.html', transport=transport) +@app.route('/transports/sticker/<int:id>') +@login_required +def sticker_transport(id=None): + transport = Transport.query.get(id) + if transport is None or not ( + transport.user_id == current_user.id or current_user.role in ['helpdesk', 'admin']): + transport = None + flash('Transport is not available') + else: + if transport.done: + flash('Transport is done', 'success') + elif transport.cancelled: + flash('Transport was cancelled!', 'danger') + + return render_template('transport_sticker.html', transport=transport) + + @app.route('/transports/mark/<mark>/<int:id>', methods=['GET', 'POST']) @login_required def mark_transport(mark, id=None):