from flask_sqlalchemy import SQLAlchemy from flask_security import UserMixin, RoleMixin from enum import Enum, unique from datetime import datetime db = SQLAlchemy() roles_users = db.Table('roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship( 'Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) @unique class Presence(Enum): """docstring for ResultType.""" PRESENT, ABSENT, SICK, VACATION = range(4) presense_map = {i: str(i).replace('Presence.', '').upper() for i in Presence} class Gradeclass(db.Model): id = db.Column(db.Integer, primary_key=True) class_name = db.Column(db.String(255)) def __init__(self, class_name): self.class_name = class_name class Student(db.Model): id = db.Column(db.Integer, primary_key=True) student_name = db.Column(db.String(255)) gradeclass_id = db.Column(db.Integer, db.ForeignKey('gradeclass.id')) gradeclass = db.relationship( 'Gradeclass', backref=db.backref('students', lazy='dynamic')) def __init__(self, student_name, gradeclass_id): self.student_name = student_name self.gradeclass_id = gradeclass_id class AttendanceUpdate(db.Model): id = db.Column(db.Integer, primary_key=True) time = db.Column(db.DateTime()) presence = db.Column(db.Enum(Presence)) update_type = db.Column(db.String(10)) value_identifier = db.Column(db.Integer) def __init__(self, update_type, value_identifier, time, presence): self.update_type = update_type self.value_identifier = value_identifier self.presence = presence self.time = time