diff --git a/jobs.py b/jobs.py index d831bdbe1473348913302affc8ed8c1cd83f2258..cd86ecb51b13348b5b0aefa5376ce0b9001717fb 100644 --- a/jobs.py +++ b/jobs.py @@ -2,6 +2,7 @@ from server import * import traceback import json import random +from sorter import schedule_thumbnail @app.route('/internal/jobs/overview') @register_navbar('Jobs', iconlib='fa', icon='suitcase') @@ -34,8 +35,8 @@ def jobs_overview(): jobs = query('SELECT * FROM jobs WHERE (type like ?) AND (worker like ? OR (worker IS NULL AND ? = "%")) AND (state like ?) ORDER BY `time_created` DESC LIMIT ? OFFSET ?', filter['type'], filter['worker'], filter['worker'], filter['state'], pagesize, page*pagesize) return render_template('jobs_overview.html',worker=worker,jobs=jobs, filter_values=filter_values, filter=filter, page=page, pagesize=pagesize, pagecount=pagecount) -@app.route('/internal/jobs/action/<action>') -@app.route('/internal/jobs/action/<action>/<jobid>') +@app.route('/internal/jobs/action/<action>', methods=['GET', 'POST']) +@app.route('/internal/jobs/action/<action>/<jobid>', methods=['GET', 'POST']) @mod_required @csrf_protect def jobs_action(action, jobid=None): @@ -46,6 +47,11 @@ def jobs_action(action, jobid=None): if action == 'copy': if jobid: query("INSERT INTO jobs SELECT NULL, type, priority, 'ready', '', '' , ?, '', NULL, data, '{}' FROM jobs where ID=?;", datetime.now(), jobid) + if action == 'add': + jobtype = request.values.get('type', None) + if jobtype == 'thumbnail': + lectureid = int(request.values.get('lecture_id', -1)) + schedule_thumbnail(lectureid) return redirect(request.values.get('ref', url_for('jobs_overview'))) def jobs_api_token_required(func): diff --git a/templates/jobs_overview.html b/templates/jobs_overview.html index 775da81e00e3f63c937fdd8677ac64ef9fe43dd5..f3c450a0cbc35ba940f3f56fc9695e501366c165 100644 --- a/templates/jobs_overview.html +++ b/templates/jobs_overview.html @@ -1,4 +1,39 @@ {% extends "base.html" %} + +{% block modals %} + {{ super() }} + + <div class="modal fade" id="modal_addjob" role="dialog"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal">×</button> + Neue(n) Job(s) erzeugen + </div> + <div class="modal-body"> + <ul class="nav nav-tabs" role="tablist"> + <li role="presentation" class="active"><a href="#add_thtumbnail" aria-controls="thumbnail" role="tab" data-toggle="tab">Thumbnaile</a></li> + </ul> + + <div class="tab-content" style="margin-top: 10px;"> + <div role="tabpanel" class="tab-pane active" id="add_thumbnail"> + <form class="form-inline" action="{{url_for('jobs_action', action='add', ref=request.url)}}" method="post"> + <div class="form-group"> + <input type="hidden" name="type" value="thumbnail"> + <input type="text" class="form-control" id="thumbnail_lectureid" placeholder="Lecture ID" name="lecture_id"> + <button type="submit" class="btn btn-primary">Hinzufügen</button> + </div> + </form> + </div> + </div> + </div> + <div class="modal-footer"> + </div> + </div> + </div> + </div> +{% endblock %} + {% block content %} <div class="panel-group"> <div class="panel panel-default"> @@ -36,7 +71,7 @@ <div class="panel-heading"> <h1 class="panel-title"> Jobs - <a class="btn btn-default">Job(s) erzeugen</a> + <a class="btn btn-default" href="javascript:$('#modal_addjob').modal()" >Job(s) erzeugen</a> <a class="btn btn-default" href="{{url_for('jobs_action', action='clear_failed', ref=request.url)}}" >Alle fehlgeschlagenen Jobs löschen</a> <a class="btn btn-default" href="{{url_for('jobs_action', action='retry_failed', ref=request.url)}}" >Alle fehlgeschlagenen Jobs neustarten</a> </h1> @@ -143,7 +178,7 @@ <td>{{i.status}}</td> <td> {% if i.state == "failed" %} - <a class="btn btn-default" href="{{url_for('jobs_action', action='clear_failed', jobid=i.id, ref=request.url)}}" title="Löschen" > + <a class="btn btn-default" href="{{url_for('jobs_action', action='clear_failed', jobid=i.id, ref=request.url)}}" title="Löschen" style="background-color: red;"> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> </a> <a class="btn btn-default" href="{{url_for('jobs_action', action='retry_failed', jobid=i.id, ref=request.url)}}" title="Neustarten">