mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-11-08 21:21:06 +00:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
from flask_wtf import FlaskForm
|
|
from wtforms.fields import DateField, SubmitField, TextAreaField
|
|
from wtforms.validators import DataRequired, Optional
|
|
|
|
from .model_dependent_funs import selection_mark_field
|
|
|
|
|
|
class AssistantGroupExperimentFormBase(FlaskForm):
|
|
submit = SubmitField(label="Save")
|
|
|
|
|
|
def assistant_group_experiment_form_factory(current_user, group_experiment):
|
|
class AssistantGroupExperimentForm(AssistantGroupExperimentFormBase):
|
|
note = TextAreaField(
|
|
"Note",
|
|
default=group_experiment.note,
|
|
validators=[Optional()],
|
|
)
|
|
|
|
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,
|
|
),
|
|
)
|
|
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),
|
|
selection_mark_field("Oral", experiment_mark.oral_mark),
|
|
)
|
|
setattr(
|
|
AssistantGroupExperimentForm,
|
|
"protocol_experiment_mark_" + str(experiment_mark_num),
|
|
selection_mark_field("Protocol", experiment_mark.protocol_mark),
|
|
)
|
|
experiment_mark_num += 1
|
|
|
|
return (AssistantGroupExperimentForm(), appointments, experiment_marks)
|