""" Formulaire configuration des codes Apo et EDT des modimps d'un formsemestre """ from flask_wtf import FlaskForm from wtforms import validators from wtforms.fields.simple import StringField, SubmitField from app.models import FormSemestre, ModuleImpl class _EditModimplsCodesForm(FlaskForm): "form. définition des liens personnalisés" # construit dynamiquement ci-dessous # pylint: disable=invalid-name def EditModimplsCodesForm(formsemestre: FormSemestre) -> _EditModimplsCodesForm: "Création d'un formulaire pour éditer les codes" # Formulaire dynamique, on créé une classe ad-hoc class F(_EditModimplsCodesForm): "class factory" def _gen_mod_form(modimpl: ModuleImpl): field = StringField( modimpl.module.code, validators=[ validators.Optional(), validators.Length(min=1, max=80), ], default="", render_kw={"size": 32}, ) setattr(F, f"modimpl_apo_{modimpl.id}", field) field = StringField( "", validators=[ validators.Optional(), validators.Length(min=1, max=80), ], default="", render_kw={"size": 12}, ) setattr(F, f"modimpl_edt_{modimpl.id}", field) for modimpl in formsemestre.modimpls_sorted: _gen_mod_form(modimpl) F.submit = SubmitField("Valider") F.cancel = SubmitField("Annuler", render_kw={"formnovalidate": True}) return F()