from flask import session from flask_wtf import FlaskForm from wtforms import (StringField, BooleanField, SubmitField, DateField, SelectField, FieldList, FormField, TextAreaField, URLField) from wtforms.validators import DataRequired, Length, Optional, URL from flask_wtf.file import FileField, FileAllowed, FileRequired class AddDocumentForm(FlaskForm): file = FileField('File', validators=[FileAllowed(['pdf', 'txt', 'html']), FileRequired()]) name = StringField('Name', validators=[Length(max=100)]) language = SelectField('Language', choices=[], validators=[Optional()]) user_context = TextAreaField('User Context', validators=[Optional()]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] class AddURLForm(FlaskForm): url = URLField('URL', validators=[DataRequired(), URL()]) name = StringField('Name', validators=[Length(max=100)]) language = SelectField('Language', choices=[], validators=[Optional()]) user_context = TextAreaField('User Context', validators=[Optional()]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] class AddURLsForm(FlaskForm): urls = TextAreaField('URL(s) (one per line)', validators=[DataRequired()]) name = StringField('Name Prefix', validators=[Length(max=100)]) language = SelectField('Language', choices=[], validators=[Optional()]) user_context = TextAreaField('User Context', validators=[Optional()]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] class AddYoutubeForm(FlaskForm): url = URLField('Youtube URL', validators=[DataRequired(), URL()]) name = StringField('Name', validators=[Length(max=100)]) language = SelectField('Language', choices=[], validators=[Optional()]) user_context = TextAreaField('User Context', validators=[Optional()]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] class EditDocumentForm(FlaskForm): name = StringField('Name', validators=[Length(max=100)]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) valid_to = DateField('Valid to', id='form-control datepicker', validators=[Optional()]) submit = SubmitField('Submit') class EditDocumentVersionForm(FlaskForm): language = StringField('Language') user_context = TextAreaField('User Context', validators=[Optional()]) system_context = TextAreaField('System Context', validators=[Optional()]) submit = SubmitField('Submit')