from flask import redirect, render_template, url_for from ..models import User from ..tables import AdminUserTable, AdminUserItem from . import main from ..decorators import admin_required from flask_login import current_user, login_required from .forms import SwarmForm from ..import swarm from threading import Thread @main.route('/') def index(): return render_template('main/index.html.j2', title='Portal') @main.route('/about') def about(): return render_template('main/about.html.j2', title='About') @main.route('/admin', methods=['GET', 'POST']) @login_required @admin_required def for_admins_only(): """ View for admin page only accesible by admins. """ users = User.query.order_by(User.username).all() items = [AdminUserItem(u.username, u.email, u.role_id, u.confirmed) for u in users] table = AdminUserTable(items) swarm_form = SwarmForm() if swarm_form.validate_on_submit(): ''' ' TODO: Implement a Job class. For now a dictionary representation is ' enough. ''' job = { 'creator': current_user.id, 'id': '5fd40cb0cadef3ab5676c4968fc3d748', 'requested_cpus': 2, 'requested_memory': 2048, 'service': 'ocr', 'service_args': { 'lang': 'eng' }, 'status': 'queued' } ''' ' TODO: Let the scheduler run this job in the background. Using self ' created threads is just for testing purpose as there is no ' scheduler available. ''' thread = Thread(target=swarm.run, args=(job,)) thread.start() return redirect(url_for('main.for_admins_only')) return render_template('main/admin.html.j2', title='Administration tools', swarm_form=swarm_form, table=table.__html__())