move the choices for AI models in SelectField to be delayed to when SettingsForm is created to avoid gunicorn barfing on init -- its all circular import issues I think, but this is bearable for now

This commit is contained in:
2022-12-29 13:06:21 +11:00
parent 9de6e21eaa
commit 70c449d859

View File

@@ -9,6 +9,7 @@ from main import db, app, ma
# pylint: disable=no-member
#### FIXME/KLUDGE (this is here to avoid circular import):
################################################################################
# Class describing AI_MODEL in the database, and via sqlalchemy, connected to the DB as well
################################################################################
@@ -57,8 +58,8 @@ class SettingsForm(FlaskForm):
recycle_bin_path = StringField('Path to temporarily store deleted images in:', [validators.DataRequired()])
metadata_path = StringField('Path to store metadata to:', [validators.DataRequired()])
auto_rotate = BooleanField('Automatically rotate jpegs based on exif', [validators.AnyOf([True, False])])
default_refimg_model = SelectField( 'Default model to use for reference images', choices=[(c.id, c.name) for c in AIModel.query.order_by('id')] )
default_scan_model = SelectField( 'Default model to use for all scanned images', choices=[(c.id, c.name) for c in AIModel.query.order_by('id')] )
default_refimg_model = SelectField( 'Default model to use for reference images' )
default_scan_model = SelectField( 'Default model to use for all scanned images' )
default_threshold = StringField('Face Distance threshold (below is a match):', [validators.DataRequired()])
face_size_limit = StringField('Minimum size of a face:', [validators.DataRequired()])
scheduled_import_scan = IntegerField('Days between forced scan of import path', [validators.DataRequired()])
@@ -75,6 +76,8 @@ class SettingsForm(FlaskForm):
@login_required
def settings():
form = SettingsForm(request.form)
form.default_refimg_model.choices=[(c.id, c.name) for c in AIModel.query.order_by('id')]
form.default_scan_model.choices=[(c.id, c.name) for c in AIModel.query.order_by('id')]
page_title='Settings'
HELP={}
HELP['base_path']="Optional: if the paths below are absolute, then this field is ignored. If they are relative, then this field is prepended"
@@ -123,6 +126,8 @@ def settings():
return render_template("settings.html", form=form, page_title=page_title, HELP=HELP)
else:
form = SettingsForm( obj=Settings.query.first() )
form.default_refimg_model.choices=[(c.id, c.name) for c in AIModel.query.order_by('id')]
form.default_scan_model.choices=[(c.id, c.name) for c in AIModel.query.order_by('id')]
return render_template("settings.html", form=form, page_title = page_title, HELP=HELP)
##############################################################################