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

Add constants for constraints

This commit is contained in:
Mo 2022-04-18 18:15:52 +02:00
parent ef4c46d535
commit 8ab38f11e2

View file

@ -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)