Ejemplo n.º 1
0
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'),
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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())
Ejemplo n.º 4
0
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',
Ejemplo n.º 5
0
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,
Ejemplo n.º 6
0
        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()
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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))
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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',
Ejemplo n.º 13
0
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="性别")
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
        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='')
Ejemplo n.º 17
0
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))
Ejemplo n.º 18
0
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):
Ejemplo n.º 19
0
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)
Ejemplo n.º 21
0
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')
Ejemplo n.º 22
0
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))
Ejemplo n.º 23
0
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),
Ejemplo n.º 24
0
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))
Ejemplo n.º 25
0
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',