Ejemplo n.º 1
0
class MsgSession(db.Model):
    __tablename__ = 'msg_session'
    id = db.Column(db.Integer, primary_key=True)
    from_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    from_user = db.relationship(User,
                                primaryjoin='User.id==MsgSession.from_id',
                                backref=db.backref(
                                    'from_session',
                                    cascade='all,delete-orphan'))
    to_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    to_user = db.relationship(User,
                              primaryjoin='User.id==MsgSession.to_id',
                              backref=db.backref('to_session',
                                                 cascade='all,delete-orphan'))
    from_read = db.Column(db.Boolean, default=False)
    to_read = db.Column(db.Boolean, default=False)
    count = db.Column(db.Integer, default=1)
    timestamp = db.Column(db.DateTime, index=True)
    msg_contents = db.relationship('MsgContent',
                                   backref='session',
                                   lazy='dynamic')

    def latest_msg(self):
        body = self.msg_contents.filter(
            MsgContent.timestamp == self.timestamp).first()  #不能使用filter_by
        return body.body

    def __repr__(self):
        return '<Session %r>' % (self.to_user)
Ejemplo n.º 2
0
class Booking(db.Model):
    __tablename__ = 'booking'
    id = db.Column(db.Integer, primary_key=True)
    is_cancel = db.Column(db.Boolean, default=False)
    cancelation_reason = db.Column(db.String(200))
    booked_datetime = db.Column(db.DateTime, default=datetime.now())
    start_time = db.Column(db.DateTime)
    end_time = db.Column(db.DateTime)
    total_price = db.Column(db.Integer)
    client_id = db.Column(db.Integer, db.ForeignKey('client.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    activated = db.Column(db.Boolean, default=False)

    booked_services = db.relationship('Service', secondary=service_booked)
    provided_services = db.relationship('Service', secondary=service_provided)

    def fill_booked_services(self, id_list):
        """fills booked_services by given service ids """
        for id in id_list:
            s = Service.query.get(id)
            self.booked_services.append(s)

    def fill_provided_services(self, id_list):
        """fills provided_services by given service ids """
        for id in id_list:
            s = Service.query.get(id)
            self.provided_services.append(s)
Ejemplo n.º 3
0
class User(UserMixin, db.Model):
    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))
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    posts = db.relationship('Post', backref='author', lazy='dynamic')
    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
                               backref=db.backref('followers', lazy='dynamic'),
                               lazy='dynamic')

    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)

    def avatar(self, size):
        digest = md5(self.email.lower().encode('utf-8')).hexdigest()
        return 'https://www.gravatar.com/avatar/{}?d=identicons&s={}'.format(
            digest, size)
Ejemplo n.º 4
0
class Projects(db.Model):
    __tablename_ = "Projects"
    proj_id = db.Column(db.Integer(),
                        primary_key=True,
                        autoincrement=True,
                        nullable=False)
    proj_manager = db.Column(db.NVARCHAR(20),
                             db.ForeignKey("project_managers.manager_code"),
                             nullable=False)
    proj_budget = db.Column(db.Numeric, nullable=False)
    proj_name = db.Column(db.NVARCHAR(40), nullable=False)
    proj_approval = db.Column(db.Boolean)
    proj_deadline = db.Column(db.DateTime)
    proj_hours = db.Column(db.Numeric)
    proj_client = db.Column(db.NVARCHAR(20),
                            db.ForeignKey("clients.client_id"))
    proj_description = db.Column(db.NVARCHAR(1000))
    proj_type = db.Column(db.Integer, db.ForeignKey("project_types.type_id"))
    proj_currency = db.Column(db.Integer, db.ForeignKey("currency.curr_id"))
    proj_create_date = db.Column(db.Date,
                                 default=datetime.date.today,
                                 nullable=False)

    proj_disbs = db.relationship("ProjectDisbursements",
                                 lazy="dynamic",
                                 backref="project")
    proj_tasks = db.relationship("ProjectTasks",
                                 lazy="dynamic",
                                 backref="project")
    proj_material = db.relationship("WarehouseReqs",
                                    lazy="dynamic",
                                    backref="project")
Ejemplo n.º 5
0
class Users(db.Model):
    """"""

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column("username", db.String(64))
    display_name = db.Column("DisplayName", db.String(128))
    email = db.Column("Email", db.String(128))
    # spotify_username = db.Column("spotify_username", db.String(64))

    # saved_tracks_id = db.Column(db.Integer, db.ForeignKey("saved_tracks.id"))
    # saved_tracks = db.relationship("SavedTracks", backref="users")

    # top_artists_id = db.Column(db.Integer, db.ForeignKey("top_artists.id"))
    top_artists = db.relationship("TopArtists", backref="users")

    # top_tracks_id = db.Column(db.Integer, db.ForeignKey("top_tracks.id"))
    top_tracks = db.relationship("TopTracks", backref="users")

    # user_playlists_id = db.Column(db.Integer, db.ForeignKey("UserPlaylists.id"))
    # user_playlists = db.relationship(
    #     UserPlaylists, uselist=False, back_populates="users"
    # )

    # followed_artists_id = db.Column(db.Integer, db.ForeignKey("followed_artists.id"))
    # followed_artists = db.relationship("FollowedArtists", backref="users")

    def get_user_id(self):
        return self.id

    def get_username(self):
        return self.username
Ejemplo n.º 6
0
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    avatar = db.Column(db.String(255))
    sex = db.Column(db.String(10))
    age = db.Column(db.Integer)
    account = db.Column(db.String(100), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    describe = db.Column(db.Text)
    created_at = db.Column(db.DateTime, default=datetime.now())
    courses = db.relationship("Course", secondary=user_course_table)
    modules = db.relationship("Module", secondary=user_module_table)

    def to_json(self):
        return {
            "id": self.id,
            "account": self.account,
            "name": self.name,
            "avatar": self.avatar,
            "sex": self.sex,
            "age": self.age,
            "describe": self.describe,
            "created_at": self.created_at
        }
Ejemplo n.º 7
0
class Course(db.Model):
    __tablename__ = "courses"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    admin_id = db.Column(db.Integer, db.ForeignKey('admins.id'))
    content = db.Column(db.Text)
    videos = db.Column(db.Text)
    type = db.Column(db.Integer)
    module_id = db.Column(db.Integer, db.ForeignKey('modules.id'))
    cover = db.Column(db.String(255))
    collect_num = db.Column(db.Integer, default=0)
    view_num = db.Column(db.Integer, default=0)
    score = db.Column(db.Integer, default=0)
    created_at = db.Column(db.DateTime, default=datetime.now())
    module = db.relationship('Module')
    admin = db.relationship("Admin")
    users = db.relationship("User", secondary=user_course_table)

    def to_json(self):
        return {
            "id": self.id,
            "name": self.name,
            "admin": self.admin.to_json(),
            "content": self.content,
            "videos": self.videos,
            "type": self.type,
            "module": self.module.name,
            "score": self.score,
            "view_num": self.view_num,
            "collect_num": self.collect_num,
            "created_at": self.created_at,
            "cover": self.cover
        }
Ejemplo n.º 8
0
class Scores(db.Model):
    __tablename__ = "scores"
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    score = db.Column(db.Integer)
    course_id = db.Column(db.Integer, db.ForeignKey("courses.id"))
    user = db.relationship("User")
    course = db.relationship("Course")
Ejemplo n.º 9
0
class Class(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    class_id = db.Column(db.String(7), unique=True, nullable=False)
    class_name = db.Column(db.String(255), unique=True, nullable=False)
    schedule = db.relationship('Schedule', backref='schedule_c', lazy=True)
    student = db.relationship('Profile_Student',
                              backref='student_c',
                              lazy=True)

    def __repr__(self) -> str:
        return '<Role %s>' % self.class_id
Ejemplo n.º 10
0
class BackupInstance(db.Model):
    __tablename__ = 'backup_instance'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    server_id = db.Column(db.String(255), nullable=False)

    backup_type_id = db.Column(db.Integer, db.ForeignKey('backup_type.id'), nullable=False)
    backup_type = db.relationship('BackupType', backref=db.backref('backupinstances', lazy='dynamic'))
    business_id = db.Column(db.Integer, db.ForeignKey('business.id'), nullable=False)
    business = db.relationship('Business', backref=db.backref('backupinstances', lazy='dynamic'))
    instance = db.Column(db.Integer, nullable=False)
Ejemplo n.º 11
0
class User(db.Model):
    __tablename__ = 'user'
    public_id = db.Column(db.String(50), unique=True,primary_key = True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(50))
    password = db.Column(db.String(80))
    admin = db.Column(db.Boolean)
    ##Relationships --
    goals = db.relationship('Goal', backref='owner', lazy='dynamic') ## One to Many Relationship
    reminders = db.relationship('Reminder', backref = 'owner',lazy = "dynamic") ## One to Many relationship
    categorys = db.relationship('Category',backref = 'owner',lazy = "dynamic")  ## One to Many relationship
    transactions = db.relationship('Transaction',backref ='owner',lazy = "dynamic")
Ejemplo n.º 12
0
class Nickname(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), unique=True)
    article = db.relationship('Article', backref='nick', lazy='dynamic')
    n_comment = db.relationship('Comment', backref='n_com', lazy='dynamic')
    admin = db.Column(db.String(20))
    password_hash = db.Column(db.String(128))

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Ejemplo n.º 13
0
class TopArtistsArtistsAssociation(db.Model):
    """"""

    __tablename__ = "top_artists_artists_association"
    top_artists_id = db.Column(db.Integer,
                               db.ForeignKey("top_artists.id"),
                               primary_key=True)
    artists_id = db.Column(db.Integer,
                           db.ForeignKey("artists.id"),
                           primary_key=True)
    top_artists = db.relationship("TopArtists")
    artists = db.relationship("Artists")
    rank = db.Column(db.Integer, default=-1)
Ejemplo n.º 14
0
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)

    tasks = db.relationship('Task', backref='user', lazy='dynamic')
    habits = db.relationship('Habit', backref='user', lazy='dynamic')

    def get_id(self):
        return str(self.id)

    def __repr__(self):
        return '<User {}>'.format(self.username)
Ejemplo n.º 15
0
class User(UserMixin, db.Model):
    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))
    posts = db.relationship('Post', backref='author', lazy='dynamic')
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    followed = db.relationship(
        'User',
        secondary=followers,
        primaryjoin=(followers.c.follower_id == id),
        secondaryjoin=(followers.c.followed_id == id),
        backref=db.backref('followers', lazy='dynamic'),
        lazy='dynamic',
    )


    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)

    def avatar(self, size):
        digest = md5(self.email.lower().encode('utf-8')).hexdigest()
        return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
            digest, size)

    def follow(self, user):
        if not self.is_following(user):
            self.followed.append(user)

    def unfollow(self, user):
        if self.is_following(user):
            self.followed.remove(user)

    def is_following(self, user):
        return self.followed.filter(
            followers.c.followed_id == user.id).count() > 0

    def followed_posts(self):
        followed = Post.query.join(
            followers, (followers.c.followed_id == Post.user_id)).filter(
                followers.c.follower_id == self.id)
        own = Post.query.filter_by(user_id=self.id)
        return followed.union(own).order_by(Post.timestamp.desc())
Ejemplo n.º 16
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.String(7), unique=True, nullable=False)
    user_name = db.Column(db.String(255), nullable=False)
    user_role = db.Column(db.String(7),
                          db.ForeignKey('role.role_id', onupdate='CASCADE'),
                          nullable=False)
    password = db.Column(db.String(255), nullable=False)
    subject = db.relationship('Subject', backref='teacher', lazy=True)
    profile_employee = db.relationship('Profile_Employee',
                                       backref='employee',
                                       lazy=True)

    def __repr__(self) -> str:
        return '<User %s>' % self.user_name
Ejemplo n.º 17
0
class Role(db.Model):
    """
    Roles are an aggregate of permissions
    """
    __tablename__ = 'roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(64), unique=True)
    description = db.Column(db.String(280))
    default = db.Column(db.Boolean, default=False, index=True)
    permissions = db.Column(db.Integer)
    users = db.relationship('User', backref='role', lazy='dynamic')

    def __repr__(self):
        return '<Role: {}> \n'.format(self.name)

    @staticmethod
    def insert_roles():
        roles = {
            'Customer': (Permission.BUY, True),
            'Moderator': (Permission.BUY |
                          Permission.WRITE_BLOGS |
                          Permission.MODERATE_CONTENT, False),
            'Administrator': (0xff, False)
        }
        for r in roles:
            role = Role.query.filter_by(name=r).first()
            if role is None:
                role = Role(name=r)
            role.permissions = roles[r][0]
            role.default = roles[r][1]
            db.session.add(role)
        db.session.commit()
Ejemplo n.º 18
0
class Role(db.Model):
    role_id = db.Column(db.String(7), primary_key=True)
    role_name = db.Column(db.String(255), nullable=False)
    user = db.relationship('User', backref='role', lazy=True)

    def __repr__(self) -> str:
        return '<Role %s>' % self.role_name
Ejemplo n.º 19
0
class Category(db.Model):
    __tablename__ = 'category'
    type = db.Column(db.String(30),
                     unique=True,
                     primary_key=True,
                     nullable=False)
    devices = db.relationship('Device', backref='category', lazy='dynamic')
Ejemplo n.º 20
0
class Comment(db.Model):
    __tablename__ = "comments"
    id = db.Column(db.Integer, primary_key=True)
    from_user_id = db.Column(db.Integer)
    from_user_type = db.Column(db.Integer)
    to_user_id = db.Column(db.Integer)
    to_user_type = db.Column(db.Integer)
    course_id = db.Column(db.Integer, db.ForeignKey("courses.id"))
    content = db.Column(db.Text)
    created_at = db.Column(db.DateTime, default=datetime.now())
    course = db.relationship("Course")

    def to_json(self):
        if self.from_user_type == 1:
            from_user = User.query.get(self.from_user_id).to_json()
        else:
            from_user = Admin.query.get(self.from_user_id).to_json()
        if self.to_user_type == 1:
            to_user = User.query.get(self.to_user_id).to_json()
        else:
            to_user = Admin.query.get(self.to_user_id).to_json()

        return {
            'id': self.id,
            "from_user": from_user,
            "to_user": to_user,
            "content": self.content,
            "course": self.course.to_json(),
            "created_at": self.created_at
        }
Ejemplo n.º 21
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True)
    password = db.Column(db.String(64))
    role = db.Column(db.SmallInteger, default=ROLE_USER)
    posts = db.relationship('Post', backref='author', lazy='dynamic')
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime)

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<User %r>' % (self.username)

    @classmethod
    def login_check(cls, username, password):
        user = cls.query.filter(
            db.and_(User.username == username,
                    User.password == password)).first()
        if not user:
            return None
        return user
Ejemplo n.º 22
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    article_id = db.Column(db.Integer, db.ForeignKey('post.id'))  # 评论文章id
    content = db.Column(db.String(100), nullable=False)
    time = db.Column(db.DateTime,
                     default=datetime.strptime(
                         datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                         '%Y-%m-%d %H:%M:%S'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 用户id
    to_user = db.Column(db.Integer)  # 回复的用户,无则None
    to_id = db.Column(db.Integer)  # 回复目标id,无回复则None  #

    c_post = db.relationship('Post',
                             backref=db.backref('comments',
                                                order_by=id.desc()))
    c_user = db.relationship('User', backref=db.backref('comments'))
Ejemplo n.º 23
0
class Student(UserMixin, db.Model):
    __tablename__ = 'students'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Unicode)
    Class = db.Column(db.Unicode)
    password_hash = db.Column(db.String(128))
    grades = db.relationship('Grade', backref='student', lazy='dynamic')

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __init__(self, id, name, Class, password=app.config['DEFAULT_PASSWD']):
        self.id = id
        self.name = name
        self.Class = Class
        self.password_hash = password

    @staticmethod
    def add_stu1():
        stu1 = Student(1234567890, 'stu1', 123)
        db.session.add(stu1)
        db.session.commit()

    def __repr__(self):
        return '<Student %r>' % self.id
Ejemplo n.º 24
0
class Student(db.Model, UserMixin):
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(25),nullable=False,unique=True)
    email = db.Column(db.String(30),nullable=False,unique=True)
    password = db.Column(db.String(100),nullable=False)
    gender = db.Column(db.String(5))
    birthday = db.Column(db.Date)
    phone = db.Column(db.BigInteger(),nullable=False,unique=True)
    image_file = db.Column(db.String(64),nullable=False,default='default.jpg')
    events = db.relationship('Event',secondary='student_events',backref='student',lazy='dynamic')


    def __repr__(self):
        return '<User %r>' % self.username

    def get_reset_token(self,expires_after_secs=1800):
        s = Serializer(app.config['SECRET_KEY'],expires_after_secs)
        return s.dumps({'user_id':self.id}).decode('utf-8')

    @staticmethod
    def get_verify_token(token):
        s = Serializer(app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except itsdangerous.SignatureExpired:
            return None
        return Student.query.get(user_id)
Ejemplo n.º 25
0
class Module(db.Model):
    __tablename__ = "modules"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    courses = db.relationship("Course")

    def to_json(self):
        return {"id": self.id, "name": self.name}
Ejemplo n.º 26
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    uname = db.Column(db.String(30), nullable=False, unique=True)
    email = db.Column(db.String(40), unique=True, nullable=False)
    password_hash = db.Column(db.String, nullable=False)
    tasks = db.relationship("Task", backref="author", lazy=True)

    def __repr__(self):
        return f"User('{self.uname}','{self.email}')"
Ejemplo n.º 27
0
class Post(db.Model):
    __tablename__ = 'post'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    created = db.Column(db.TIMESTAMP,
                        server_default=db.text('CURRENT_TIMESTAMP'))
    title = db.Column(db.Text, nullable=False)
    body = db.Column(db.Text, nullable=False)
    author = db.relationship('User', backref="post")
Ejemplo n.º 28
0
class User(db.Model):
    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)
    pass_hash = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    def __repr__(self):
        return '<User {} with {}>'.format(self.username, self.email)
Ejemplo n.º 29
0
class WarehouseUnits(db.Model):
    __tablename_ = "warehouse_units"
    units_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    units_name = db.Column(db.VARCHAR(40), nullable=False)
    units_abbr = db.Column(db.NVARCHAR(15), nullable=False)

    product = db.relationship("WarehouseProducts",
                              lazy="dynamic",
                              backref="unitnames")
Ejemplo n.º 30
0
class Info(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    url_id = db.Column(db.Integer, db.ForeignKey('url.id'))
    word_id = db.Column(db.Integer, db.ForeignKey('word.id'))
    count = db.Column(db.Float)

    url = db.relationship(Url, backref='infos')
    word = db.relationship(Word, backref='infos')

    def __init__(self, url=None, word=None, count=1):
        if url is not None:
            self.url = url
        if word is not None:
            self.word = word
        self.count = count

    def __unicode__(self):
        return unicode(self.id)