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()]) doc_embedding_model = SelectField('Default Embedding Model', choices=[], validators=[DataRequired()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] self.language.data = session.get('default_language') self.doc_embedding_model.choices = [(model, model) for model in session.get('tenant').get('allowed_embedding_models')] self.doc_embedding_model.data = session.get('default_embedding_model') 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()]) doc_embedding_model = SelectField('Default Embedding Model', choices=[], validators=[DataRequired()]) submit = SubmitField('Submit') def __init__(self): super().__init__() self.language.choices = [(language, language) for language in session.get('tenant').get('allowed_languages')] self.language.data = session.get('default_language') self.doc_embedding_model.choices = [(model, model) for model in session.get('tenant').get('allowed_embedding_models')] self.doc_embedding_model.data = session.get('default_embedding_model')