diff --git a/advlabdb/models.py b/advlabdb/models.py index ffbc72f..44341de 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -18,6 +18,13 @@ from advlabdb.exceptions import DataBaseException MIN_MARK = 0 MAX_MARK = 15 +MIN_YEAR = 22 +MAX_YEAR = 99 +MIN_STUDENT_NUMBER = 0 +MIN_EXPERIMENT_NUMBER = 1 +MIN_GROUP_NUMBER = 1 +MIN_DURATION_IN_DAYS = 1 +MIN_PART_NUMBER = 1 def roundHalfUpToInt(number): @@ -26,7 +33,9 @@ def roundHalfUpToInt(number): class Student(db.Model): id = db.Column(db.Integer, primary_key=True) - student_number = db.Column(db.Integer, db.CheckConstraint("student_number > -1"), nullable=False, unique=True) + student_number = db.Column( + db.Integer, db.CheckConstraint(f"student_number >= {MIN_STUDENT_NUMBER}"), nullable=False, unique=True + ) first_name = db.Column(db.String(100), nullable=False) last_name = db.Column(db.String(100), nullable=False) uni_email = db.Column(db.String(200), nullable=False, unique=True) @@ -137,7 +146,7 @@ class PartStudent(db.Model): class Group(db.Model): id = db.Column(db.Integer, primary_key=True) - number = db.Column(db.Integer, db.CheckConstraint("number > 0"), nullable=False) + number = db.Column(db.Integer, db.CheckConstraint(f"number > {MIN_GROUP_NUMBER}"), nullable=False) semester_id = db.Column(db.Integer, db.ForeignKey("semester.id"), nullable=False) program_id = db.Column(db.Integer, db.ForeignKey("program.id"), nullable=False) @@ -227,14 +236,16 @@ class GroupExperiment(db.Model): class Experiment(db.Model): id = db.Column(db.Integer, primary_key=True) - number = db.Column(db.Integer, db.CheckConstraint("number > 0"), nullable=False) + number = db.Column(db.Integer, db.CheckConstraint(f"number > {MIN_EXPERIMENT_NUMBER}"), nullable=False) title = db.Column(db.String(200), nullable=False) description = db.Column(db.Text, nullable=True) wiki_link = db.Column(db.String(300), nullable=True) building = db.Column(db.String(100), nullable=False) room = db.Column(db.String(100), nullable=False) responsibility = db.Column(db.String(200), nullable=True) - duration_in_days = db.Column(db.Integer, db.CheckConstraint("duration_in_days > 0"), nullable=False) + duration_in_days = db.Column( + db.Integer, db.CheckConstraint(f"duration_in_days >= {MIN_DURATION_IN_DAYS}"), nullable=False + ) active = db.Column(db.Boolean, default=True, nullable=False) program_id = db.Column(db.Integer, db.ForeignKey("program.id"), nullable=False) @@ -407,7 +418,7 @@ class Appointment(db.Model): class Part(db.Model): id = db.Column(db.Integer, primary_key=True) - number = db.Column(db.Integer, db.CheckConstraint("number > 0"), nullable=False) + number = db.Column(db.Integer, db.CheckConstraint(f"number > {MIN_PART_NUMBER}"), nullable=False) program_id = db.Column(db.Integer, db.ForeignKey("program.id"), nullable=False) semester_id = db.Column(db.Integer, db.ForeignKey("semester.id"), nullable=False) @@ -426,7 +437,9 @@ class Part(db.Model): class Semester(db.Model): id = db.Column(db.Integer, primary_key=True) label = db.Column(db.String(10), nullable=False) - year = db.Column(db.Integer, db.CheckConstraint("year > 0"), db.CheckConstraint("year < 100"), nullable=False) + year = db.Column( + db.Integer, db.CheckConstraint(f"year >= {MIN_YEAR}"), db.CheckConstraint(f"year <= {MAX_YEAR}"), nullable=False + ) parts = db.relationship("Part", backref="semester", lazy=True) semester_experiments = db.relationship("SemesterExperiment", backref="semester", lazy=True)