diff --git a/DB.drawio b/DB.drawio index ff2e47b..0be006b 100644 --- a/DB.drawio +++ b/DB.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/advlabdb/models.py b/advlabdb/models.py index a697758..2886a76 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -51,6 +51,7 @@ class GroupExperiment(db.Model): class Experiment(db.Model): id = db.Column(db.Integer, primary_key=True) + number = db.Column(db.Integer, nullable=False) name = db.Column(db.String(200), nullable=False) description = db.Column(db.Text, nullable=True) room = db.Column(db.String(100), nullable=False) @@ -75,7 +76,6 @@ experiment_assistant = db.Table("experiment_assistant", class PartExperiment(db.Model): # An experiment in a specific part id = db.Column(db.Integer, primary_key=True) - number = db.Column(db.Integer, nullable=False) experiment_id = db.Column(db.Integer, db.ForeignKey("experiment.id"), nullable=False) part_id = db.Column(db.Integer, db.ForeignKey("part.id"), nullable=False) assistants = db.relationship("Assistant", secondary=experiment_assistant, lazy=True, diff --git a/advlabdb/routes.py b/advlabdb/routes.py index 0ca5630..646e131 100644 --- a/advlabdb/routes.py +++ b/advlabdb/routes.py @@ -108,7 +108,7 @@ def groups(): ["Students", "[ps.student.first_name + ' ' + ps.student.last_name for ps in row.part_students]"], ["Experiments (appointments)", - "[str(gx.part_experiment.number) + ' (' + str([appointmentDate(a.date) for a in gx.appointments]) + ')' for gx in row.group_experiments]"]] + "[str(gx.part_experiment.experiment.number) + ' (' + str([appointmentDate(a.date) for a in gx.appointments]) + ')' for gx in row.group_experiments]"]] for part in parts: tablesLabels.append("Part " + part.label + ":") diff --git a/testDB.py b/testDB.py index f8bfd93..4294c27 100644 --- a/testDB.py +++ b/testDB.py @@ -39,17 +39,17 @@ db.session.add(ps1) db.session.add(ps2) db.session.add(ps3) -ex1 = Experiment(name="exp", room="123", building="phy", responsibility="none", duration_in_days=2, +ex1 = Experiment(number=1, name="exp", room="123", building="phy", responsibility="none", duration_in_days=2, oral_weighting=0.5, protocol_weighting=0.5, final_weighting=1) -ex2 = Experiment(name="exp2", room="123", building="phy", responsibility="none", duration_in_days=2, +ex2 = Experiment(number=2, name="exp2", room="123", building="phy", responsibility="none", duration_in_days=2, oral_weighting=0.5, protocol_weighting=0.5, final_weighting=1) db.session.add(ex1) db.session.add(ex2) -px1 = PartExperiment(number=1, experiment=ex1, part=parta1) -px2 = PartExperiment(number=2, experiment=ex2, part=partb2) +px1 = PartExperiment(experiment=ex1, part=parta1) +px2 = PartExperiment(experiment=ex2, part=partb2) db.session.add(px1) db.session.add(px2)