[Refactor] Rename the app module to calsocial
Just for clarity
This commit is contained in:
87
calsocial/models.py
Normal file
87
calsocial/models.py
Normal file
@@ -0,0 +1,87 @@
|
||||
from datetime import datetime
|
||||
|
||||
from flask_security import UserMixin, RoleMixin
|
||||
from flask_security.utils import hash_password
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
db = SQLAlchemy()
|
||||
users_roles = db.Table(
|
||||
'users_roles',
|
||||
db.Column('user_id', db.Integer(), db.ForeignKey('users.id')),
|
||||
db.Column('role_id', db.Integer(), db.ForeignKey('roles.id')))
|
||||
|
||||
|
||||
class User(db.Model, UserMixin):
|
||||
__tablename__ = 'users'
|
||||
id = db.Column(db.Integer(), primary_key=True)
|
||||
|
||||
#: The username of the user. This is also the display name and thus is immutable
|
||||
username = db.Column(db.String(length=50), unique=True, nullable=False)
|
||||
|
||||
#: The email address of the user
|
||||
email = db.Column(db.String(length=255), unique=True, nullable=True)
|
||||
|
||||
#: The (hashed) password of the user
|
||||
password = db.Column(db.String(length=255))
|
||||
|
||||
#: A flag to show whether the user is enabled (active) or not
|
||||
active = db.Column(db.Boolean(), default=False)
|
||||
|
||||
#: The timestamp when this user was created
|
||||
created_at = db.Column(db.DateTime(), default=datetime.utcnow)
|
||||
|
||||
#: The timestamp when the user was activated
|
||||
confirmed_at = db.Column(db.DateTime())
|
||||
|
||||
#: The roles of the user
|
||||
roles = db.relationship('Role',
|
||||
secondary=users_roles,
|
||||
backref=db.backref('users', lazy='dynamic'))
|
||||
|
||||
def __repr__(self):
|
||||
return f'<User {self.id}({self.username})>'
|
||||
|
||||
|
||||
class Role(db.Model, RoleMixin):
|
||||
__tablename__ = 'roles'
|
||||
id = db.Column(db.Integer(), primary_key=True)
|
||||
|
||||
#: The name of the role
|
||||
name = db.Column(db.Unicode(length=80), unique=True)
|
||||
|
||||
#: A description of the role
|
||||
description = db.Column(db.UnicodeText)
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Role {self.id}({self.name})>'
|
||||
|
||||
|
||||
class Event(db.Model):
|
||||
__tablename__ = 'events'
|
||||
id = db.Column(db.Integer(), primary_key=True)
|
||||
|
||||
#: The ID of the user who created the event
|
||||
user_id = db.Column(db.Integer(), db.ForeignKey('users.id'), nullable=False)
|
||||
|
||||
user = db.relationship('User', backref=db.backref('events', lazy='dynamic'))
|
||||
|
||||
#: The title of the event
|
||||
title = db.Column(db.Unicode(length=200), nullable=False)
|
||||
|
||||
#: The time zone to be used for `start_time` and `end_time`
|
||||
time_zone = db.Column(db.String(length=80), nullable=False)
|
||||
|
||||
#: The starting timestamp of the event
|
||||
start_time = db.Column(db.DateTime(), nullable=False)
|
||||
|
||||
#: The ending timestamp of the event
|
||||
end_time = db.Column(db.DateTime(), nullable=False)
|
||||
|
||||
#: If `True`, the event is a whole-day event
|
||||
all_day = db.Column(db.Boolean(), default=False)
|
||||
|
||||
#: The description of the event
|
||||
description = db.Column(db.UnicodeText())
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Event {self.id} ({self.title}) of {self.user}>'
|
Reference in New Issue
Block a user