from apifairy import authenticate from flask import render_template, flash, abort from flask_login import login_required, current_user from app.decorators import permission_required from app.models import Permission, TesseractOCRModel, JobStatus from . import bp from .forms import ContributionForm from .. import db @bp.before_request @login_required @permission_required(Permission.CONTRIBUTE) def before_request(): pass @bp.route('', methods=['GET', 'POST']) @login_required def contributions(): form = ContributionForm(prefix='contribution-form') # Is the form submitted? if form.is_submitted(): # Are their any false inputs? if not form.validate(): response = {'errors': form.errors} return response, 400 # At this point we can be sure that the form data is okay # example # compatible_service_versions = ['0.1.0', '0.1.1'] compatible_service_versions=form.compatible_service_versions.data description=form.description publisher=form.publisher publisher_url=form.publisher_url publishing_url=form.publishing_url publishing_year=form.publishing_year shared=False title=form.title version=form.version try: TesseractOCRModel.create(form.file.data, compatible_service_versions, description, publisher, publisher_url, publishing_url, publishing_year, shared, title, version) except OSError: abort(500) # job.status = JobStatus.SUBMITTED db.session.commit() # message = Markup(f'Job "{job.title}" created') flash("Model has been added.") return {}, 201, {'message': 'Model has been created'} return render_template( 'contributions/contribute.html.j2', form=form, title='Contribution' )