- Finalisation of the Specialist model, forms and views
This commit is contained in:
60
eveai_app/views/interaction_forms.py
Normal file
60
eveai_app/views/interaction_forms.py
Normal file
@@ -0,0 +1,60 @@
|
||||
from flask import session, current_app, request
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (StringField, BooleanField, SubmitField, DateField, IntegerField, FloatField, SelectMultipleField,
|
||||
SelectField, FieldList, FormField, TextAreaField, URLField)
|
||||
from wtforms.validators import DataRequired, Length, Optional, URL, ValidationError, NumberRange
|
||||
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
||||
import json
|
||||
|
||||
from wtforms_sqlalchemy.fields import QuerySelectField, QuerySelectMultipleField
|
||||
|
||||
from common.models.document import Retriever
|
||||
|
||||
from config.catalog_types import CATALOG_TYPES
|
||||
from config.specialist_types import SPECIALIST_TYPES
|
||||
from .dynamic_form_base import DynamicFormBase
|
||||
|
||||
|
||||
def get_retrievers():
|
||||
return Retriever.query.all()
|
||||
|
||||
|
||||
class SpecialistForm(FlaskForm):
|
||||
name = StringField('Name', validators=[DataRequired(), Length(max=50)])
|
||||
description = TextAreaField('Description', validators=[DataRequired()])
|
||||
|
||||
retrievers = QuerySelectMultipleField(
|
||||
'Retrievers',
|
||||
query_factory=get_retrievers,
|
||||
get_label='name', # Assuming your Retriever model has a 'name' field
|
||||
allow_blank=True,
|
||||
description='Select one or more retrievers to associate with this specialist'
|
||||
)
|
||||
|
||||
type = SelectField('Specialist Type', validators=[DataRequired()])
|
||||
|
||||
tuning = BooleanField('Enable Retrieval Tuning', default=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Dynamically populate the 'type' field using the constructor
|
||||
self.type.choices = [(key, value['name']) for key, value in SPECIALIST_TYPES.items()]
|
||||
|
||||
|
||||
class EditSpecialistForm(DynamicFormBase):
|
||||
name = StringField('Name', validators=[DataRequired()])
|
||||
description = TextAreaField('Description', validators=[DataRequired()])
|
||||
|
||||
retrievers = QuerySelectMultipleField(
|
||||
'Retrievers',
|
||||
query_factory=get_retrievers,
|
||||
get_label='name',
|
||||
allow_blank=True,
|
||||
description='Select one or more retrievers to associate with this specialist'
|
||||
)
|
||||
|
||||
type = StringField('Specialist Type', validators=[DataRequired()], render_kw={'readonly': True})
|
||||
tuning = BooleanField('Enable Retrieval Tuning', default=False)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user