class DancingClassCouple(db.Model, TrackModifications): __tablename__ = TABLE_DANCING_CLASS_COUPLE __table_args__ = ( db.UniqueConstraint("dancing_class_id", "person_id", "partner_id", name="_dancing_class_couple_uc"), ) id = db.Column(db.Integer(), primary_key=True) dancing_class_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_DANCING_CLASS}.id", ondelete="CASCADE"), nullable=False) dancing_class = db.relationship("DancingClass", lazy=False) person_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_DANCING_CLASS_PERSON}.id", ondelete="CASCADE"), nullable=False) person = db.relationship("DancingClassPerson", foreign_keys=person_id, lazy=False) partner_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_DANCING_CLASS_PERSON}.id", ondelete="CASCADE"), nullable=False) partner = db.relationship("DancingClassPerson", foreign_keys=partner_id, lazy=False) def __repr__(self): return f"{self.person} - {self.partner}" def json(self): data = { "id": self.id, "lead": self.person.json(), "follow": self.partner.json(), } return data
class Couple(db.Model, TrackModifications): __tablename__ = TABLE_COUPLE __table_args__ = (db.UniqueConstraint("lead_id", "follow_id", name="_lead_follow_uc"), ) id = db.Column(db.Integer(), primary_key=True) lead_id = db.Column( db.Integer(), db.ForeignKey(f"{TABLE_PERSON}.id", ondelete="CASCADE")) lead = db.relationship("Person", foreign_keys=lead_id) follow_id = db.Column( db.Integer(), db.ForeignKey(f"{TABLE_PERSON}.id", ondelete="CASCADE")) follow = db.relationship("Person", foreign_keys=follow_id) def __repr__(self): return f"{self.lead}-{self.follow}" def json(self): data = { "id": self.id, "lead": { "id": self.lead.id, "full_name": self.lead.full_name, }, "follow": { "id": self.follow.id, "full_name": self.follow.full_name, }, "couple": f"{self.lead.full_name} & {self.follow.full_name}" } return data
class UserRole(db.Model, TrackModifications): __tablename__ = TABLE_USER_ROLE id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_USERS}.id", ondelete="CASCADE")) role_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_ROLES}.id", ondelete="CASCADE")) def __repr__(self): return f"{self.user_id}-{self.role_id}"
class Role(db.Model): __tablename__ = 'roles' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(60), unique=True) description = db.Column(db.String(255)) def __repr__(self): return '<Role %s>' % self.name
class DancingClassPerson(db.Model, TrackModifications): __tablename__ = TABLE_DANCING_CLASS_PERSON __table_args__ = (db.UniqueConstraint("dancing_class_id", "person_id", name="_dancing_class_person_uc"),) id = db.Column(db.Integer(), primary_key=True) dancing_class_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_DANCING_CLASS}.id", ondelete="CASCADE"), nullable=False) dancing_class = db.relationship("DancingClass", lazy=False) person_id = db.Column(db.Integer(), db.ForeignKey(f"{TABLE_PERSON}.id", ondelete="CASCADE"), nullable=False) person = db.relationship("Person", lazy=False) passed_triage = db.Column(db.Boolean, nullable=False, default=True) notes = db.Column(db.String(256), nullable=True) dancing_class_couples_leads = db.relationship("DancingClassCouple", foreign_keys="DancingClassCouple.person_id", cascade="all, delete, delete-orphan", lazy=False) dancing_class_couples_follows = db.relationship("DancingClassCouple", foreign_keys="DancingClassCouple.partner_id", cascade="all, delete, delete-orphan", lazy=False) def __repr__(self): return f"{self.person} - {self.dancing_class}" @property def partners(self): return [dcc.partner.person for dcc in self.dancing_class_couples_leads] + \ [dcc.person.person for dcc in self.dancing_class_couples_follows] def json(self): data = { "id": self.id, "person": { "id": self.person.id, }, "email": self.person.email, "full_name": self.person.full_name, "student_number": self.person.student_number, "passed_triage": self.passed_triage, "notes": self.notes, } return data
class Role(db.Model, TrackModifications): __tablename__ = TABLE_ROLES id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(50), unique=True, nullable=False) def __repr__(self): return f"{self.name}" def __init__(self, name): self.name = name def json(self): data = { "id": self.id, "name": self.name, } return data
import os import requests from flask_security import UserMixin, RoleMixin, SQLAlchemyUserDatastore from sqlalchemy import func as alchemyFn from config import UPLOAD_FOLDER from corelib.utils import generate_id from ext import db from models.contact import Contact from models.mixin import BaseMixin roles_users = db.Table( 'roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('users.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id')), ) class Role(db.Model, RoleMixin): name = db.Column(db.String(80), unique=True) description = db.Column(db.String(191)) class User(db.Model, UserMixin, BaseMixin): __tablename__ = 'users' bio = db.Column(db.String(128), default='') name = db.Column(db.String(128), default='') nickname = db.Column(db.String(128), default='') email = db.Column(db.String(191), default='') password = db.Column(db.String(191))
import requests from flask_security import UserMixin, RoleMixin, SQLAlchemyUserDatastore from sqlalchemy import func as alchemyFn from sqlalchemy.ext.mutable import MutableDict from sqlalchemy_utils import JSONType from ext import db from config import UPLOAD_FOLDER from models.mixin import BaseMixin from models.contact import Contact, userFollowStats from corelib.utils import generate_id roles_users = db.Table( "roles_users", db.Column("user_id", db.Integer(), db.ForeignKey("users.id")), db.Column("role_id", db.Integer(), db.ForeignKey("role.id")), ) class User(db.Model, UserMixin, BaseMixin): __tablename__ = "users" bio = db.Column(db.String(128), default="") name = db.Column(db.String(128), default="") nickname = db.Column(db.String(128), default="") email = db.Column(db.String(191), default="") password = db.Column(db.String(191)) website = db.Column(db.String(191), default="") github_id = db.Column(db.String(191), default="") last_login_at = db.Column(db.DateTime()) current_login_at = db.Column(db.DateTime()) last_login_ip = db.Column(db.String(100))