nopaque/app/contributions/routes.py

73 lines
2.2 KiB
Python
Raw Normal View History

2022-10-25 11:07:10 +00:00
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
2022-10-25 11:07:10 +00:00
from app.models import Permission, TesseractOCRModel, JobStatus
from . import bp
from .forms import ContributionForm
2022-10-25 11:07:10 +00:00
from .. import db
@bp.before_request
@login_required
@permission_required(Permission.CONTRIBUTE)
def before_request():
pass
@bp.route('', methods=['GET', 'POST'])
2022-10-25 11:07:10 +00:00
@login_required
def contributions():
form = ContributionForm(prefix='contribution-form')
2022-10-25 11:07:10 +00:00
# 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 "<a href="{job.url}">{job.title}</a>" created')
flash("Model has been added.")
return {}, 201, {'message': 'Model has been created'}
return render_template(
'contributions/contribute.html.j2',
form=form,
title='Contribution'
)