race-attendance/models.py

74 lines
2.3 KiB
Python
Raw Permalink Normal View History

2017-08-31 14:14:54 +00:00
from flask_sqlalchemy import SQLAlchemy
2017-08-31 16:37:58 +00:00
from flask_security import UserMixin, RoleMixin
from enum import Enum, unique
2017-08-31 14:14:54 +00:00
from datetime import datetime
db = SQLAlchemy()
roles_users = db.Table('roles_users',
2017-08-31 16:37:58 +00:00
db.Column('user_id',
db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id',
db.Integer(), db.ForeignKey('role.id')))
2017-08-31 14:14:54 +00:00
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))
2017-08-31 16:37:58 +00:00
2017-08-31 14:14:54 +00:00
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())
2017-08-31 16:37:58 +00:00
roles = db.relationship(
'Role',
secondary=roles_users,
backref=db.backref('users', lazy='dynamic'))
2017-08-31 14:14:54 +00:00
@unique
class Presence(Enum):
"""docstring for ResultType."""
2017-08-31 16:37:58 +00:00
PRESENT, ABSENT, SICK, VACATION = range(4)
2017-09-01 04:58:56 +00:00
presense_map = {i: str(i).replace('Presence.', '').upper() for i in Presence}
2017-08-31 14:14:54 +00:00
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
2017-08-31 16:37:58 +00:00
2017-08-31 14:14:54 +00:00
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'))
2017-08-31 16:37:58 +00:00
gradeclass = db.relationship(
2017-09-01 04:23:40 +00:00
'Gradeclass', backref=db.backref('students', lazy='dynamic'))
2017-08-31 14:14:54 +00:00
2017-08-31 16:37:58 +00:00
def __init__(self, student_name, gradeclass_id):
2017-08-31 14:14:54 +00:00
self.student_name = student_name
self.gradeclass_id = gradeclass_id
2017-08-31 16:37:58 +00:00
2017-08-31 14:14:54 +00:00
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)
2017-08-31 16:37:58 +00:00
def __init__(self, update_type, value_identifier, time, presence):
2017-08-31 14:14:54 +00:00
self.update_type = update_type
self.value_identifier = value_identifier
self.presence = presence
self.time = time