Exemplo n.º 1
0
from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property

from ext import db
from config import avatar_tmpl
from .mixin import BaseMixin

friendship = db.Table(
    'friends', db.Column('user_id', db.String(20), db.ForeignKey('users.id')),
    db.Column('friend_id', db.String(20), db.ForeignKey('users.id')))

group_relationship = db.Table(
    'group_relationship',
    db.Column('group_id',
              db.String(20),
              db.ForeignKey('groups.id'),
              nullable=False),
    db.Column('user_id',
              db.String(20),
              db.ForeignKey('users.id'),
              nullable=False))

mp_relationship = db.Table(
    'mp_relationship',
    db.Column('mp_id', db.String(20), db.ForeignKey('mps.id'), nullable=False),
    db.Column('user_id',
              db.String(20),
              db.ForeignKey('users.id'),
              nullable=False))


class CoreMixin(BaseMixin):
Exemplo n.º 2
0
        user = self.query(MP if self.type == _MP else User).get(self.sender_id)
        return user.to_dict() if user else {}

    @cached_hybrid_property
    def msg_type(self):
        return ID_TO_TYPE_MAP.get(self.type, 'Text')

    def to_dict(self):
        dct = super().to_dict()
        for p in ('sender', 'group', 'msg_type'):
            dct[p] = getattr(self, p)
        return dct


class Tag(db.Model, BaseMixin):
    __tablename__ = 'tag'
    __table_args__ = {'mysql_charset': 'utf8mb4'}
    id = db.Column(db.Integer, primary_key=True)
    tag_name = db.Column(db.String(1024))
    created_time = db.Column(db.DateTime)
    ref_count = db.Column(db.Integer)
    parent = db.Column(db.Integer, default='')
    level = db.Column(db.Integer, default=0)


tag_message = db.Table('tag_meesage',
                       db.Column('tag_id', db.Integer,
                                 db.ForeignKey('tag.id')),
                       db.Column('message_id', db.Integer,
                                 db.ForeignKey('message.id')),
                       mysql_charset='utf8mb4')
Exemplo n.º 3
0
        return column


def serialize(model):
    """Transforms a model into a dictionary which can be dumped to JSON."""
    # first we get the names of all the columns on your model
    columns = [c.key for c in class_mapper(model.__class__).columns]
    # then we return their values in a dict
    return dict((c, getattr(model, c)) for c in columns)


roles = db.Table(
    'roles_users',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('users.id'),
              primary_key=True),
    db.Column('role_id',
              db.Integer,
              db.ForeignKey('roles.id'),
              primary_key=True))


class VarQueries(db.Model):
    __tablename__ = 'variables_queries'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    query_id = db.Column(db.Integer, db.ForeignKey('query_group.id'))
    variable_id = db.Column(db.Integer, db.ForeignKey('yjvariableinfo.id'))
    query = db.relationship('QueryGroup', back_populates='variables')
    variable = db.relationship('YjVariableInfo', back_populates='queries')

Exemplo n.º 4
0
from flask import abort, url_for, current_app

from flask_restful import Resource, reqparse, fields, marshal
from passlib.apps import custom_app_context as pwd_context
from ext import db, desc, login
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from hashlib import md5

from time import time
from datetime import datetime, timedelta, timezone
import jwt

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(UserMixin, db.Model):  #用户 ORM注册
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    is_adminenticated = db.Column(db.Boolean, default=False)

    institute = db.Column(db.String(128), nullable=False)
    real_name = db.Column(db.String(128))
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    photo = db.Column(db.String(120))
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property
from werkzeug.security import generate_password_hash, check_password_hash
from loguru import logger
from ext import db
from config import avatar_tmpl
from .mixin import BaseMixin

friendship = db.Table('friends',
                      db.Column('user_id', db.String(20),
                                db.ForeignKey('users.id')),
                      db.Column('friend_id', db.String(20),
                                db.ForeignKey('users.id')),
                      mysql_charset='utf8mb4')

group_relationship = db.Table('group_relationship',
                              db.Column('group_id',
                                        db.String(20),
                                        db.ForeignKey('groups.id'),
                                        nullable=False),
                              db.Column('user_id',
                                        db.String(20),
                                        db.ForeignKey('users.id'),
                                        nullable=False),
                              mysql_charset='utf8mb4')

mp_relationship = db.Table('mp_relationship',
                           db.Column('mp_id',
                                     db.String(20),
                                     db.ForeignKey('mps.id'),
                                     nullable=False),
                           db.Column('user_id',
Exemplo n.º 8
0
from ext import db


class Group(db.Model):
    __tablename__ = 'group'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), nullable=False, unique=True)
    summary = db.Column(db.String(255), nullable=True)


Group_Power = db.Table(
    'group_power', db.Model.metadata,
    db.Column('g_id',
              db.Integer,
              db.ForeignKey('group.id', ondelete='RESTRICT'),
              primary_key=True),
    db.Column('p_id',
              db.Integer,
              db.ForeignKey('power.id', ondelete='RESTRICT'),
              primary_key=True))


class Power(db.Model):
    __tablename__ = 'power'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    index_r = db.Column(db.Boolean, nullable=False, default=True)
    index_w = db.Column(db.Boolean, nullable=False, default=False)
    person_r = db.Column(db.Boolean, nullable=False, default=True)
    person_w = db.Column(db.Boolean, nullable=False, default=False)
    article_r = db.Column(db.Boolean, nullable=False, default=True)
    article_w = db.Column(db.Boolean, nullable=False, default=False)
Exemplo n.º 9
0
#用户
#文章
#标签


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(50))
    email = db.Column(db.String(50))


article_tag_table = db.Table(
    'article_tag',
    db.Column('article_id',
              db.Integer,
              db.ForeignKey("article.id"),
              primary_key=True),
    db.Column('tag_id', db.Integer, db.ForeignKey("tag.id"), primary_key=True),
)


class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    author = db.relationship("User", backref="articles")
    tags = db.relationship("Tag", secondary=article_tag_table, backref="tags")

Exemplo n.º 10
0
from ext import db
from models import BaseModel


class Student(db.Model, BaseModel):
    sid = db.Column(db.Integer, primary_key=True, autoincrement=True)
    sname = db.Column(db.String(30))
    courses = db.relationship('Course', secondary='grade', backref='students')
    __tablename__ = 'student'


class Course(db.Model, BaseModel):
    cid = db.Column(db.Integer, primary_key=True, autoincrement=True)
    cname = db.Column(db.String(30))
    __tablename__ = 'course'


grade = db.Table('grade',
                 db.Column('sid', db.Integer, db.ForeignKey('student.sid')),
                 db.Column('cid', db.Integer, db.ForeignKey('course.cid')))
Exemplo n.º 11
0
# -*- coding:utf-8 -*-

from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property
from sqlalchemy.exc import SQLAlchemyError
from flask import url_for
from passlib.apps import custom_app_context as pwd_context
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired

from ext import db
import app

roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
    db.Column('role_id', db.Integer, db.ForeignKey('roles.id')))

group_relationship = db.Table('group_relationship',
                              db.Column('group_id',
                                        db.Integer,
                                        db.ForeignKey('user_groups.id'),
                                        nullable=False),
                              db.Column('user_id',
                                        db.Integer,
                                        db.ForeignKey('users.id'),
                                        nullable=False),
                              mysql_charset='utf8mb4')

friendship = db.Table('friends',
                      db.Column('user_id', db.Integer,
                                db.ForeignKey('users.id')),
                      db.Column('friend_id', db.Integer,
                                db.ForeignKey('users.id')),
Exemplo n.º 12
0
    # rets: a json string of validity
    def get_resp(self):
        return json.dumps(self.__map)


#        return Response(json.dumps({'valid': self._valid,
#                                    'info': self._info}),
#                        content_type='application/json')

# Membership of some user for some group
membership = db.Table(
    'membership',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('user.id'),
              primary_key=True),
    db.Column('group_id',
              db.Integer,
              db.ForeignKey('group.id'),
              primary_key=True))

# Friendship between user and user
friendship = db.Table(
    'friendship',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('user.id'),
              primary_key=True),
    db.Column('friend_id',
              db.Integer,
              db.ForeignKey('user.id'),
Exemplo n.º 13
0
from dateutil.relativedelta import relativedelta
from marshmallow import (
    pre_load,
    post_load,
    validate,
)
from numpy import percentile

from ext import (
    db,
    ma,
)

relationship = db.Table(
    "relationship",
    db.Column("citizen_id", db.ForeignKey("citizen.id"), primary_key=True),
    db.Column("relative_id", db.ForeignKey("citizen.id"), primary_key=True))


class Citizen(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    import_id = db.Column(db.Integer, db.ForeignKey("import.import_id"))
    citizen_id = db.Column(db.Integer)
    town = db.Column(db.String)
    street = db.Column(db.String)
    building = db.Column(db.String)
    apartment = db.Column(db.Integer)
    name = db.Column(db.String)
    birth_date = db.Column(db.Date)
    gender = db.Column(db.String)
    # Many-To-Many relationship
Exemplo n.º 14
0
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    is_admin = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return '<User {}>'.format(self.username)

    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)


ass = db.Table('ass',
               db.Column('stu_id', db.Integer, db.ForeignKey('student.id')),
               db.Column('teach_id', db.Integer, db.ForeignKey('teacher.id')))
# Student info :
## name,
## gender,
## phone,
## exam_type,
## exam_score,
## tasks
## courses,
## teachers,


class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, unique=True)
Exemplo n.º 15
0
from ext import db
from datetime import datetime
from werkzeug.security import generate_password_hash,check_password_hash
class permissions():
    user_info=1
    banner=2
    posts=4
    pinglun=8
    bankuai=16
    user_manager=32

role_user=db.Table(
    "role_user",
    db.Model.metadata,
    db.Column("rid",db.Integer,db.ForeignKey("role.id")),
    db.Column("uid",db.Integer,db.ForeignKey("user.id"))
)
class role(db.Model):
    __tablename__="role"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    role_name=db.Column(db.String(20))
    desc=db.Column(db.String(200))
    permis=db.Column(db.Integer,nullable=False,default=permissions.user_info)



class User(db.Model):
    __tablename__="user"
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(20),nullable=False)
    _password=db.Column(db.String(200),nullable=False)
Exemplo n.º 16
0
        return column


def serialize(model):
    """Transforms a model into a dictionary which can be dumped to JSON."""
    # first we get the names of all the columns on your model
    columns = [c.key for c in class_mapper(model.__class__).columns]
    # then we return their values in a dict
    return dict((c, getattr(model, c)) for c in columns)


roles = db.Table(
    'roles_users',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('users.id'),
              primary_key=True),
    db.Column('role_id',
              db.Integer,
              db.ForeignKey('roles.id'),
              primary_key=True))

var_queries = db.Table(
    'variables_queries',
    db.Column('query_id',
              db.Integer,
              db.ForeignKey('query_group.id',
                            onupdate="CASCADE",
                            ondelete="CASCADE"),
              primary_key=True),
    db.Column(
        'variable_id',
Exemplo n.º 17
0
    USER_INFO = 1  # 00000001
    BANNER = 2  # 00000010
    POSTS = 4  # 00000100
    COMMON = 8  # 00001000
    PLATE = 16  # 00010000
    FRONT_USER = 32  # 00100000
    CMS_USER = 64  # 01000000
    CMS_USER_GROUP = 128  # 10000000


# 注意Table大写
cms_role_user = db.Table(
    'cms_role_user',
    db.Column('cms_role_id',
              db.Integer,
              db.ForeignKey('role.id'),
              primary_key=True),
    db.Column('cms_user_id',
              db.Integer,
              db.ForeignKey('user.id'),
              primary_key=True))


class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    roleName = db.Column(db.String(20), unique=True, nullable=False)
    desc = db.Column(db.String(200))
    permissions = db.Column(db.Integer, default=Permission.USER_INFO)
    # 中间表绑定到角色zh
    users = db.relationship('User',
                            secondary=cms_role_user,
    destination = db.Column(db.Integer, nullable=True)  # 目的地
    tele = db.Column(db.String(15), nullable=True)  # 电话
    wechat = db.Column(db.String(20), nullable=True)  # 微信
    qq = db.Column(db.String(15), nullable=True)  # QQ

    # 认证方式
    # 0:实名认证;1:交押金
    # identified = db.Column(db.Integer, nullable=False)
    # credit = db.Column(db.Integer, nullable=False)  # 信用分


express_user = db.Table(
    'express_user',
    db.Column('express_id',
              db.Integer,
              db.ForeignKey('express.id'),
              primary_key=True),
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('user.id'),
              primary_key=True))


class Express(db.Model):
    __tablename__ = 'express'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    owner_id = db.Column(db.Integer, nullable=False)  # 此快递的主人
    taker_id = db.Column(db.Integer, nullable=True)  # 此快递的代拿人
    users = db.relationship('User',
                            secondary=express_user,
                            backref=db.backref('expresses'))  # 此快递有关的用户