Skip to content
Snippets Groups Projects
Commit 2033dff4 authored by Andreas Valder's avatar Andreas Valder
Browse files

added gui and backend to create a thumbnail job

parent 775c8a35
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ from server import * ...@@ -2,6 +2,7 @@ from server import *
import traceback import traceback
import json import json
import random import random
from sorter import schedule_thumbnail
@app.route('/internal/jobs/overview') @app.route('/internal/jobs/overview')
@register_navbar('Jobs', iconlib='fa', icon='suitcase') @register_navbar('Jobs', iconlib='fa', icon='suitcase')
...@@ -34,8 +35,8 @@ def jobs_overview(): ...@@ -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) 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) 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>', methods=['GET', 'POST'])
@app.route('/internal/jobs/action/<action>/<jobid>') @app.route('/internal/jobs/action/<action>/<jobid>', methods=['GET', 'POST'])
@mod_required @mod_required
@csrf_protect @csrf_protect
def jobs_action(action, jobid=None): def jobs_action(action, jobid=None):
...@@ -46,6 +47,11 @@ def jobs_action(action, jobid=None): ...@@ -46,6 +47,11 @@ def jobs_action(action, jobid=None):
if action == 'copy': if action == 'copy':
if jobid: if jobid:
query("INSERT INTO jobs SELECT NULL, type, priority, 'ready', '', '' , ?, '', NULL, data, '{}' FROM jobs where ID=?;", datetime.now(), 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'))) return redirect(request.values.get('ref', url_for('jobs_overview')))
def jobs_api_token_required(func): def jobs_api_token_required(func):
......
{% extends "base.html" %} {% 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">&times;</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 %} {% block content %}
<div class="panel-group"> <div class="panel-group">
<div class="panel panel-default"> <div class="panel panel-default">
...@@ -36,7 +71,7 @@ ...@@ -36,7 +71,7 @@
<div class="panel-heading"> <div class="panel-heading">
<h1 class="panel-title"> <h1 class="panel-title">
Jobs 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='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> <a class="btn btn-default" href="{{url_for('jobs_action', action='retry_failed', ref=request.url)}}" >Alle fehlgeschlagenen Jobs neustarten</a>
</h1> </h1>
...@@ -143,7 +178,7 @@ ...@@ -143,7 +178,7 @@
<td>{{i.status}}</td> <td>{{i.status}}</td>
<td> <td>
{% if i.state == "failed" %} {% 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> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</a> </a>
<a class="btn btn-default" href="{{url_for('jobs_action', action='retry_failed', jobid=i.id, ref=request.url)}}" title="Neustarten"> <a class="btn btn-default" href="{{url_for('jobs_action', action='retry_failed', jobid=i.id, ref=request.url)}}" title="Neustarten">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment