ska-referee-test/ref-test/app/tools/forms.py

48 lines
1.4 KiB
Python

from ..extensions import db
from ..tools.logs import write
from flask import jsonify
from sqlalchemy.exc import SQLAlchemyError
from wtforms.validators import ValidationError
import json
from sqlalchemy.ext import mutable
def value(min:int=0, max:int=None):
if not max:
message = f'Value must be greater than {min}.'
else:
message = f'Value must be between {min} and {max}.'
def length(form, field):
value = field.data or 0
if value < min or max != None and value > max:
raise ValidationError(message)
return length
def get_time_options():
time_options = [
('none', 'None'),
('60', '1 hour'),
('90', '1 hour 30 minutes'),
('120', '2 hours')
]
return time_options
def get_dataset_choices():
from ..models import Dataset
try: datasets = Dataset.query.all()
except Exception as exception:
write('system.log', f'Database error when fetching dataset lists: {exception}')
return []
dataset_choices = []
for dataset in datasets:
label = dataset.get_name()
label = f'{label} (Default)' if dataset.default else label
choice = (dataset.id, label)
dataset_choices.append(choice)
return dataset_choices
def send_errors_to_client(form):
errors = [*form.errors.values()]
return jsonify({ 'error': errors}), 400