from flask_login import UserMixin from src import db user_role = db.Table( 'user_role', db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True), db.Column('role_id', db.Integer, db.ForeignKey('role.id'), primary_key=True)) user_course = db.Table( 'user_course', db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True), db.Column('course_id', db.Integer, db.ForeignKey('course.id'), primary_key=True)) user_create_course = db.Table( 'user_create_course', db.Column('user_id', db.Integer, db.ForeignKey('user.id'),
from src import db from datetime import datetime from werkzeug.security import generate_password_hash import uuid # #################################### # # >>>> Many-To-Many helper tables <<<< # # #################################### # dish_food = db.Table( 'dish_food', db.Column('dish_id', db.Integer, db.ForeignKey('dishes.id'), primary_key=True), db.Column('diet_id', db.Integer, primary_key=True), db.Column('type_id', db.Integer, primary_key=True), db.Column('day', primary_key=True), db.ForeignKeyConstraint(['diet_id', 'type_id', 'day'], ['foods.diet_id', 'foods.type_id', 'foods.day'])) # ################ # # >>>> Models <<<< # # ################ # class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True) password = db.Column(db.String(64), nullable=False)
from hashlib import md5 from src.utils.serializer_helper import serialize_data from datetime import datetime from sqlalchemy.ext.hybrid import hybrid_property from flask_security import RoleMixin, UserMixin from src import db, BaseMixin, ReprMixin 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 UserName(db.Model, ReprMixin, BaseMixin): name = db.Column(db.String(127), nullable=True) 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, BaseMixin, UserMixin, ReprMixin): email = db.Column(db.String(127), unique=True, nullable=False) password = db.Column(db.String(255), default='', nullable=False) username = db.Column(db.String(127), nullable=True) user_type = db.Column(db.Enum('student', 'counsellor'), default='counsellor') school_id = db.Column(db.Integer, db.ForeignKey('school.id')) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime())
from datetime import datetime from src import db metadata = db.MetaData(schema='crawl_local') book_author = db.Table( 'book_author', metadata, db.Column('book_id', db.Integer, db.ForeignKey('crawl_local.book.id'), primary_key=True), db.Column('author_id', db.Integer, db.ForeignKey('+.author.id'), primary_key=True)) book_category = db.Table( 'book_category', metadata, db.Column('book_id', db.Integer, db.ForeignKey('crawl_local.book.id'), primary_key=True), db.Column('category_id', db.Integer, db.ForeignKey('crawl_local.category.id'), primary_key=True), db.Column('update_at', db.DateTime, nullable=False, default=datetime.utcnow), db.Column('create_at',
from sqlalchemy.sql import func from sqlalchemy.orm import aliased from werkzeug.security import generate_password_hash, check_password_hash from src import db from src.lib.mixins import ResourceMixin, SearchableMixin from src.blueprints.posts.models import Post, post_tags from src.blueprints.messages.models import Message, Chat, \ LastReadMessage, Notification followers = db.Table( 'followers', db.Column('follower_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('followed_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)) user_tags = db.Table( 'user_tags', db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('tag_id', db.Integer,
self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password) class Event(db.Model): __tablename__ = "events" id = db.Column(db.Integer, primary_key=True) event_name = db.Column(db.String, nullable=False) event_description = db.Column(db.String, nullable=False) event_banner = db.Column(db.String) event_address = db.Column(db.String, nullable=False) event_time = db.Column(db.Date, nullable=False) ticket_price = db.Column(db.Integer, nullable=False) ticket_stock = db.Column(db.Integer, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) orders = db.Table( 'orders', db.Column('user_id', db.Integer, db.ForeignKey('users.id'), primary_key=True), db.Column('event_id', db.Integer, db.ForeignKey('events.id'), primary_key=True)) db.create_all()
from src import db from flask_login import UserMixin from flask import Flask, render_template, flash, redirect, url_for, request from werkzeug.security import generate_password_hash, check_password_hash import requests enrollment = db.Table( 'enrollment', db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('type_id', db.Integer, db.ForeignKey('type.id'))) class User(UserMixin, db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), index=True, unique=True) password_hash = db.Column(db.String(128), nullable=False) email = db.Column(db.String(120), index=True, unique=True) enrollment = db.relationship('Type', secondary=enrollment, lazy='subquery', backref=db.backref('user', lazy=True)) def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password)
from src import db from src.models.recipients.recipient import Recipient from src.models.alerts.alert import Alert campaigns_recipients = db.Table('campaigns_recipients', db.Column('campaign_id', db.Integer, db.ForeignKey('campaigns.id'), index=True, primary_key=True), db.Column('recipient_id', db.Integer, db.ForeignKey('recipients.id'), index=True, primary_key=True) ) class Campaign(db.Model): __tablename__ = "campaigns" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True, nullable=False) form_id = db.Column(db.Integer, db.ForeignKey('forms.id'), index=True, nullable=False) name = db.Column(db.String(255), nullable=False) unique_opens = db.Column(db.Integer) recipients = db.relationship('Recipient', secondary=campaigns_recipients, lazy='dynamic', backref=db.backref('campaigns', lazy='dynamic')) alert = db.relationship("Alert", backref='campaign', lazy=True, uselist=False) date = db.Column(db.DateTime(), nullable=False) def __repr__(self): return '<Campaign %r>' % self.name
from src import db from src.models.Scope import Scope class Role(db.Model): __tablename__ = 'role' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), nullable=False) description = db.Column(db.String(100), nullable=True) # Relationships scopes = db.relationship(Scope, secondary='role_scope') def __repr__(self): return "<Role '{0}'>".format(self.name) db.Table( 'role_scope', db.Model.metadata, db.Column('role_id', db.Integer, db.ForeignKey(Role.id, ondelete='CASCADE'), primary_key=True), db.Column('scope_id', db.Integer, db.ForeignKey(Scope.id, ondelete='CASCADE'), primary_key=True))
from src import db from sqlalchemy.sql import text ClassificationProduct = db.Table( 'ClassificationProduct', db.Column('classification_id', db.Integer, db.ForeignKey('Classification.id')), db.Column('product_id', db.Integer, db.ForeignKey('product.id'))) class Classification(db.Model): __tablename__ = 'Classification' id = db.Column(db.Integer, primary_key=True) date_created = db.Column(db.DateTime, default=db.func.current_timestamp()) date_modified = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp()) name = db.Column(db.String(144), nullable=False) description = db.Column(db.String(144), nullable=False) products = db.relationship("Product", secondary=ClassificationProduct, backref=db.backref("Classification", lazy='dynamic'), lazy='dynamic') def __init__(self, name): self.name = name
import uuid from src import db from werkzeug.security import generate_password_hash bike_riders = db.Table( "bike_riders", db.Column("rider_id", db.Integer, db.ForeignKey("riders.id"), primary_key=True), db.Column("bike_id", db.Integer, db.ForeignKey("bikes.id"), primary_key=True)) class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) email = db.Column(db.String(50), unique=True, nullable=False) password = db.Column(db.String(254), nullable=False) is_admin = db.Column(db.Boolean, default=False) uuid = db.Column(db.String(36), unique=True) def __init__(self, username, email, password, is_admin=False): self.username = username self.email = email self.password = generate_password_hash(password) self.is_admin = is_admin
from src import app, db albums_artists = db.Table( 'albums_artists', db.Column('album_spotify_id', db.String(128), db.ForeignKey('albums.spotify_id'), primary_key=True), db.Column('artist_spotify_id', db.String(128), db.ForeignKey('artists.spotify_id'), primary_key=True), ) class Album(db.Model): __tablename__ = "albums" id = db.Column(db.Integer, db.Sequence("seq_album_id")) spotify_id = db.Column(db.String(128), primary_key=True, unique=True, nullable=False) name = db.Column(db.String(128), nullable=False) uri = db.Column(db.String(128), nullable=False) href = db.Column(db.String(128), nullable=False) album_type = db.Column(db.String(128), nullable=False) images = db.Column(db.ARRAY(db.JSON)) external_urls = db.Column(db.ARRAY(db.JSON)) available_markets = db.Column(db.ARRAY(db.String(2))) artists = db.relationship('Artist',
from werkzeug.security import check_password_hash, generate_password_hash from src import db from src.commons.date_utils import utc_timestamp roles = db.Table( "tb_user_role", db.Column("role_id", db.Integer, db.ForeignKey("tb_role.id"), primary_key=True), db.Column("user_id", db.Integer, db.ForeignKey("tb_user.id"), primary_key=True), ) interface = db.Table( "tb_role_interface", db.Column("interface_id", db.Integer, db.ForeignKey("tb_interface.id"), primary_key=True), db.Column("role_id", db.Integer, db.ForeignKey("tb_role.id"), primary_key=True), ) menu = db.Table( "tb_role_menus", db.Column("menu_id", db.Integer, db.ForeignKey("tb_menu.id"), primary_key=True), db.Column("role_id", db.Integer, db.ForeignKey("tb_role.id"), primary_key=True), ) class TbUser(db.Model): __tablename__ = "tb_user" id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(128), comment="用户名") phone = db.Column(db.String(11), unique=True, comment="手机号") sex = db.Column(db.String(7), default="unknown", comment="性别")
import os from sqlalchemy.sql import func from src import db import bcrypt import hashlib import datetime assoc_favorites = db.Table( "assoc_favorites", db.Model.metadata, db.Column("user_id", db.Integer, db.ForeignKey("users.id"), primary_key=True), db.Column("place_id", db.Integer, db.ForeignKey("places.id"), primary_key=True), ) class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True, autoincrement=True) email = db.Column(db.String(128), nullable=False) username = db.Column(db.String(128), nullable=False) password_digest = db.Column(db.String(255), nullable=False)
end_date = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime) location = db.Column(db.Text, nullable = False) timestamp = db.Column(db.DateTime(timezone=True), server_default = db.func.now()) #event properties images = db.relationship('Image', backref='event') articles = db.relationship('Article', backref='event') tickettypes = db.relationship('Tickettype', backref='event') interested_people = db.relationship('User', secondary='interests', backref=db.backref('interested_events', lazy=True)) categories = db.relationship('Category', secondary='category_events', backref=db.backref('events', lazy=True)) def check_event(self, name): return Event.query.filter_by(name = name).first() attends = db.Table('attends', db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('event_id', db.Integer, db.ForeignKey('events.id')) ) class Image(db.Model): __tablename__ = 'images' id = db.Column(db.Integer, primary_key=True) image_name = db.Column(db.String(200)) image_url = db.Column(db.Text, nullable=False) event_id = db.Column(db.Integer, db.ForeignKey('events.id')) timestamp = db.Column(db.DateTime(timezone=True), server_default = db.func.now()) class Article(db.Model): __tablename__ = 'article' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(200)) body = db.Column(db.Text, nullable=False)
for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None @classmethod def reindex(cls): for obj in cls.query: add_to_index(cls.__tablename__, obj) db.event.listen(db.session, 'before_commit', SearchableMixin.before_commit) db.event.listen(db.session, 'after_commit', SearchableMixin.after_commit) followers = db.Table( 'followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))) class User(SearchableMixin, UserMixin, db.Model): __searchable__ = ['username', 'showname'] id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), nullable=False, unique=True) showname = db.Column(db.String(20), nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') email = db.Column(db.String(50), default='') password = db.Column(db.String(60), nullable=False) bio = db.Column(db.String(200), default='')
from src import db from src.utils.models import ResourceMixin grp_members = db.Table( 'group_members', db.Column('group_id', db.Integer, db.ForeignKey('groups.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)) grp_perms = db.Table( 'group_permissions', db.Column('group_id', db.Integer, db.ForeignKey('groups.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('perm_id', db.Integer, db.ForeignKey('permissions.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True))
from sqlalchemy.sql import func from src import db from src.lib.mixins import ResourceMixin post_likes = db.Table( 'post_likes', db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('post_id', db.Integer, db.ForeignKey('posts.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)) post_tags = db.Table( 'post_tags', db.Column('tag_id', db.Integer, db.ForeignKey('tags.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('post_id', db.Integer, db.ForeignKey('posts.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)) class Post(db.Model, ResourceMixin):
from src import db event_category = db.Table( 'event_category', db.Column('event_id', db.Integer, db.ForeignKey('event.id'), primary_key=True), db.Column('category_id', db.Integer, db.ForeignKey('category.id'), primary_key=True)) class Events(db.Model): #Location __tablename__ = 'event' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(132), nullable=False) description = db.Column(db.Text, nullable=False) start_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime) organizer_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) ticket_types = db.relationship('TicketTypes', backref='event', lazy=True) categories = db.relationship('Category', secondary=event_category,
# ----------------------------------------------------------- # Связь многие ко многим через association table # ----------------------------------------------------------- from src import db ticket_table = db.Table( 'ticket', db.Model.metadata, db.Column('people_id', db.Integer, db.ForeignKey('peoples.id'), primary_key=True), db.Column('film_id', db.Integer, db.ForeignKey('films.id'), primary_key=True)) # Parent class People(db.Model): __tablename__ = 'peoples' id = db.Column(db.Integer, name="id", primary_key=True) films = db.relationship('Film', secondary=ticket_table, backref='peoples') # Child class Film(db.Model): __tablename__ = 'films' id = db.Column(db.Integer, name="id", primary_key=True)
from flask_login import UserMixin import re @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) def slugify(s): pattern = r'[^\w+]' return re.sub(pattern, '-', s) post_tags = db.Table( 'post_tags', db.Column('post_id', db.Integer, db.ForeignKey('post.id')), db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))) roles_users = db.Table( 'roles_userl', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
import uuid from src import db movies_actors = db.Table( 'movies_actors', db.Column('actor_id', db.Integer, db.ForeignKey('actors.id'), primary_key=True), db.Column('film_id', db.Integer, db.ForeignKey('films.id'), primary_key=True)) class Film(db.Model): __tablename__ = 'films' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String, nullable=False) release_date = db.Column(db.Date, index=True, nullable=False) uuid = db.Column(db.String(36), unique=True) description = db.Column(db.Text) distributed_by = db.Column(db.String(128), nullable=False) length = db.Column(db.Float) rating = db.Column(db.Float) actors = db.relationship('Actor', secondary=movies_actors, lazy=True, backref=db.backref('films', lazy=True))
import os from src import db from sqlalchemy.sql import text product_subcomponent = db.Table( 'productsubcomponent', db.Column('ProductSubcomponentId', db.Integer, primary_key=True), db.Column('product_id', db.Integer, db.ForeignKey('product.id')), db.Column('subcomponent_id', db.Integer, db.ForeignKey('product.id'))) class Product(db.Model): __tablename__ = 'product' id = db.Column(db.Integer, primary_key=True) date_created = db.Column(db.DateTime, default=db.func.current_timestamp()) date_modified = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp()) name = db.Column(db.String(144), nullable=False) manufacturer_id = db.Column(db.Integer, db.ForeignKey('manufacturer.id'), nullable=False) eol = db.Column(db.Boolean, nullable=False) subcomponents = db.relationship( 'Product', secondary=product_subcomponent, primaryjoin=(id == product_subcomponent.c.subcomponent_id), secondaryjoin=(id == product_subcomponent.c.product_id),
from src import db dish_option = db.Table( 'dish_option', db.Column('dish_id', db.Integer, db.ForeignKey('dish.id'), primary_key=True), db.Column('option_id', db.Integer, db.ForeignKey('option.id'), primary_key=True)) order_dish = db.Table( 'order_dish', db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True), db.Column('dish_id', db.Integer, db.ForeignKey('dish.id'), primary_key=True))
import jwt from flask import current_app from werkzeug.security import generate_password_hash, check_password_hash from src import db from src.utils.models import ResourceMixin from src.blueprints.admin.models import Permission user_perms = db.Table( 'user_permissions', db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('perm_id', db.Integer, db.ForeignKey('permissions.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)) followers = db.Table( 'followers', db.Column('follower_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True), db.Column('followed_id',