1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-09-19 18:31:16 +00:00
AdvLabDB/advlabdb/forms.py

59 lines
2 KiB
Python
Raw Normal View History

2022-06-20 01:08:57 +00:00
from flask_wtf import FlaskForm
from wtforms.fields import DateField, SubmitField, TextAreaField
from wtforms.validators import DataRequired, Optional
2022-06-26 22:20:15 +00:00
from .model_dependent_funs import selection_mark_field
2022-06-20 01:08:57 +00:00
class AssistantGroupExperimentFormBase(FlaskForm):
2022-06-28 01:53:17 +00:00
submit = SubmitField(label="Save", render_kw={"class": "btn btn-primary btn-block"})
2022-06-20 01:08:57 +00:00
def assistant_group_experiment_form_factory(current_user, group_experiment):
class AssistantGroupExperimentForm(AssistantGroupExperimentFormBase):
note = TextAreaField(
"Note",
default=group_experiment.note,
validators=[Optional()],
2022-06-26 22:20:15 +00:00
render_kw={"class": "form-control"},
2022-06-20 01:08:57 +00:00
)
appointments = group_experiment.appointments
appointment_num = 1
for appointment in appointments:
description = None
if appointment.special:
description = "Yes"
else:
description = "No"
setattr(
AssistantGroupExperimentForm,
"appointment_" + str(appointment_num),
DateField(
str(appointment_num),
default=appointment.date,
validators=[DataRequired()],
description=description,
2022-06-26 22:20:15 +00:00
render_kw={"class": "form-control"},
2022-06-20 01:08:57 +00:00
),
)
appointment_num += 1
experiment_marks = group_experiment.experiment_marks
experiment_mark_num = 1
for experiment_mark in experiment_marks:
setattr(
AssistantGroupExperimentForm,
"oral_experiment_mark_" + str(experiment_mark_num),
2022-06-26 22:20:15 +00:00
selection_mark_field("Oral", experiment_mark.oral_mark),
2022-06-20 01:08:57 +00:00
)
setattr(
AssistantGroupExperimentForm,
"protocol_experiment_mark_" + str(experiment_mark_num),
2022-06-26 22:20:15 +00:00
selection_mark_field("Protocol", experiment_mark.protocol_mark),
2022-06-20 01:08:57 +00:00
)
experiment_mark_num += 1
return (AssistantGroupExperimentForm(), appointments, experiment_marks)