Exemple #1
0
class Customer(db.Model):
    __tablename__ = 'customers'

    id = db.Column(db.Integer, primary_key=True)
    dob = db.Column(db.Date)
    address = db.Column(db.String(64), nullable=True)
    phone = db.Column(db.String(15), nullable=True)
Exemple #2
0
class Answer(db.Model):
    __tablename__ = 'answers'

    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
Exemple #3
0
class UserRoles(db.Model):
    __tablename__ = 'user_roles'
    id = db.Column(db.Integer(), primary_key=True)
    user_id = db.Column(db.Integer(),
                        db.ForeignKey('users.id', ondelete='CASCADE'))
    role_id = db.Column(db.Integer(),
                        db.ForeignKey('roles.id', ondelete='CASCADE'),
                        default=1)
Exemple #4
0
class Pet(db.Model):
    __tablename__ = 'pets'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
    age = db.Column(db.Integer)
    category = db.Column(db.String(32))  # dog/cat
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
Exemple #5
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Post: {}>'.format(self.body)
Exemple #6
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)
    password_hash = db.Column(db.String(128))

    def __repr__(self):
        return '<User {}>'.format(self.username)
Exemple #7
0
class LoanType(db.Model):
    __tablename__ = 'loanType'

    loanCategory = db.Column(db.Text, primary_key=True)
    interestRate = db.Column(db.Numeric, nullable=False)

    def __repr__(self):
        # How this class is printed
        return '<Loan Category (type) {}>'.format(self.loanCategory)
Exemple #8
0
class Question(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), index=True)
    description = db.Column(db.String(300), index=True)
    datetime = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Question {}>'.format(self.title)
Exemple #9
0
class PatronBankAccounts(db.Model):
    __tablename__ = 'patronBankAccounts'

    id_patron = db.Column(db.Integer,
                          db.ForeignKey('patron.id'),
                          primary_key=True)
    id_bankAccount = db.Column(db.Integer,
                               db.ForeignKey('bankAccount.id'),
                               primary_key=True)
Exemple #10
0
class BankAccountType(db.Model):
    __tablename__ = 'bankAccountType'

    accountType = db.Column(db.Text, primary_key=True)
    accountInterestRate = db.Column(db.Numeric, nullable=False)

    def __repr__(self):
        # How this class is printed
        return '<Bank Account Type {}>'.format(self.accountType)
Exemple #11
0
class PatronLoanAccounts(db.Model):
    __tablename__ = 'patronLoanAccounts'

    id_patron = db.Column(db.Integer,
                          db.ForeignKey('patron.id'),
                          primary_key=True)
    id_loan = db.Column(db.Integer,
                        db.ForeignKey('loans.id'),
                        primary_key=True)
Exemple #12
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)
	password_hash = db.Column(db.String(128))
	posts = db.relationship('Post', backref='author', lazy='dynamic')
	profile = db.relationship('Profile', backref='user', lazy='dynamic')

	def __repr__(self):
		return '<User {}>'.format(self.username)
Exemple #13
0
class Profile(db.Model):
	id = db.Column(db.Integer, primary_key=True)
	dob = db.Column(db.DateTime, index=True)
	gender = db.Column(db.String(10), index=True)
	user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

	def date(self):
		return '{}'.format(str(self.dob)[0:10])
	def __repr__(self):
		return '<Profile for user: {}, gender: {}, birthday: {}>'.format(self.user_id, self.dob, self.dob)
Exemple #14
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    is_customer = db.Column(db.Boolean, index=True)
    ref_id = db.Column(db.Integer)
    questions = db.relationship('Question', backref='author', lazy='dynamic')
    answers = db.relationship('Answer', backref='author', lazy='dynamic')
    pets = db.relationship('Pet', backref='owner', lazy='dynamic')
Exemple #15
0
class BankAccount(db.Model):
    __tablename__ = 'bankAccount'

    id = db.Column(db.Integer, primary_key=True)
    accountName = db.Column(db.Text, nullable=False)
    accountBalance = db.Column(db.REAL, nullable=False)
    insurance = db.Column(db.Integer, nullable=False)
    accountType = db.Column(db.ForeignKey('bankAccountType.accountType'),
                            nullable=False)

    bankAccountType = relationship('BankAccountType')

    def __repr__(self):
        # How this class is printed
        return '<Bank Account Name {}>'.format(self.accountName)
Exemple #16
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    active = db.Column('is_active',
                       db.Boolean(),
                       nullable=False,
                       server_default='1')

    # User authentication information. The collation='NOCASE' is required
    # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
    email = db.Column(db.String(255, collation='NOCASE'),
                      nullable=False,
                      unique=True)
    email_confirmed_at = db.Column(db.DateTime())
    password = db.Column(db.String(255), nullable=False, server_default='')

    # User information
    first_name = db.Column(db.String(100, collation='NOCASE'),
                           nullable=False,
                           server_default='')
    last_name = db.Column(db.String(100, collation='NOCASE'),
                          nullable=False,
                          server_default='')

    # Define the relationship to Role via UserRoles
    roles = db.relationship('Role', secondary='user_roles')
Exemple #17
0
class Message(db.Model):
    __tablename__ = 'messages'
    id = db.Column(db.Integer, primary_key=True)
    content_crypt = db.Column(db.String(250))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    sender_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    recipient_id = db.Column(db.Integer, db.ForeignKey('users.id'))

    sender = db.relationship('User',
                             back_populates='sent_messages',
                             primaryjoin='Message.sender_id == User.id')
    recipient = db.relationship('User',
                                back_populates='received_messages',
                                primaryjoin='Message.recipient_id == User.id')

    def decrypted_message(self):
        f = Fernet(key)
        return f.decrypt(self.content_crypt.encode()).decode('utf-8')
Exemple #18
0
class Patron(UserMixin, db.Model):
    __tablename__ = 'patron'

    id = db.Column(db.Integer, primary_key=True)
    patronFirstName = db.Column(db.Text, nullable=False)
    patronLastName = db.Column(db.Text, nullable=False)
    patronEmail = db.Column(db.Text, nullable=False)
    password = db.Column(db.Text, nullable=False)

    def __repr__(self):
        # How this class is printed
        return '<User Email {}>'.format(self.patronEmail)

    # Functions for hashing and then reading the passwords
    def setPassword(self, password):
        self.password = generate_password_hash(password)

    def checkPassword(self, password):
        return check_password_hash(self.password, password)
Exemple #19
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    email = db.Column(db.String(120), index=True, nullable=True)
    dob = db.Column(db.DateTime, index=True, nullable=True)
    address = db.Column(db.String(128), nullable=True)
    phone = db.Column(db.String(15), nullable=True)
    is_customer = db.Column(db.Boolean, index=True)
    questions = db.relationship('Question', backref='author', lazy='dynamic')
    answers = db.relationship('Answer', backref='author', lazy='dynamic')
Exemple #20
0
class Viewpoint(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    agree = db.Column(db.Boolean)
    disagree = db.Column(db.Boolean)
    like = db.Column(db.Boolean)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    answer_id = db.Column(db.Integer, db.ForeignKey('answer.id'))
Exemple #21
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    is_customer = db.Column(db.Boolean, index=True)
    email = db.Column(db.String(32), index=True, nullable=True)
    ref_id = db.Column(db.Integer)
    questions = db.relationship('Question', backref='author', lazy='dynamic')
    answers = db.relationship('Answer', backref='author', lazy='dynamic')
    pets = db.relationship('Pet', backref='owner', lazy='dynamic')

    # appointments = db.relationship('Appointment', backref='maker', lazy='dynamic') #Appointment表里有两个User的外键,所以这里不能反向查询

    def get_jwt_token(self, expires_in=600):
        """获取JWT令牌"""
        return jwt.encode({'reset_password': self.id, 'exp': time() + expires_in},\
                          app.config['SECRET_KEY'], algorithm='HS256').decode('utf8')

    @staticmethod
    def verify_jwt_token(token):
        try:
            user_id = jwt.decode(token,
                                 app.config['SECRET_KEY'],
                                 algorithms='HS256')['reset_password']
        except Exception as e:
            print(e)
            return
        return User.query.get(user_id)

    def set_password(self, raw_password):
        """密码加密"""
        self.password_hash = generate_password_hash(raw_password)
Exemple #22
0
class User(UserMixin, db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    first_name = db.Column(db.String(120))
    last_name = db.Column(db.String(120))
    password_hash = db.Column(db.String(128))

    sent_messages = db.relationship('Message',
                                    back_populates='sender',
                                    lazy='dynamic',
                                    foreign_keys='Message.sender_id')
    received_messages = db.relationship('Message',
                                        back_populates='recipient',
                                        lazy='dynamic',
                                        foreign_keys='Message.recipient_id')

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

    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)
Exemple #23
0
class Question(db.Model):
    __tablename__ = 'questions'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(30))
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.now)
    anonymity = db.Column(db.Integer)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    answers = db.relationship('Answer', backref='question', lazy='dynamic')
    counta = db.Column(db.Integer, default=0)

    def __repr__(self):
        return '<Question asked on {} by {}: {} >'.format(
            str(self.timestamp)[0:10], self.author.username, self.body)
Exemple #24
0
class Loan(db.Model):
    __tablename__ = 'loans'

    id = db.Column(db.Integer, primary_key=True)
    loanPayment = db.Column(db.Numeric, nullable=False)
    loanBalance = db.Column(db.Numeric, nullable=False)
    startDate = db.Column(db.Text, nullable=False)
    endDate = db.Column(db.Text, nullable=False)
    loanCategory = db.Column(db.Text,
                             db.ForeignKey('loanType.loanCategory'),
                             nullable=False)

    loanType = relationship('LoanType')

    def __repr__(self):
        # How this class is printed
        return '<Loan ID {}>'.format(self.id)
Exemple #25
0
class Follow(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    followed_id = db.Column(db.Integer, db.ForeignKey('user.id'))
Exemple #26
0
class Appointment(db.Model):
    __tablename__ = 'appointments'

    id = db.Column(db.Integer, primary_key=True)
    datetime = db.Column(db.DateTime, default=datetime.utcnow)  # 提交的时间
    description = db.Column(db.String(32), default='')
    status = db.Column(db.String(32),
                       default='Pending')  #Pending/Confirmed/Canceled/Finished
    pet_status = db.Column(db.String(32), default='Unchecked')  #设计一系列状态
    loc = db.Column(db.Integer)
    is_emergency = db.Column(db.Boolean)
    changeable = db.Column(db.Boolean)
    employee_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    pet_id = db.Column(db.Integer, db.ForeignKey('pets.id'))
    preferred_doctor_id = db.Column(db.Integer, db.ForeignKey('users.id'))
Exemple #27
0
class Employee(db.Model):
    __tablename__ = 'employees'

    id = db.Column(db.Integer, primary_key=True)
    loc = db.Column(db.Integer, nullable=False)
    intro = db.Column(db.String(32), nullable=True)
Exemple #28
0
class Invite(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    inviter_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    invitee_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
Exemple #29
0
from time import time
import jwt
from datetime import datetime
from appdir import db, login, app
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from hashlib import md5

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):
    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):
Exemple #30
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())

    def get_reset_password_token(self, expires_in=600):
        return jwt.encode(
            {
                'reset_password': self.id,
                'exp': time() + expires_in
            },
            app.config['SECRET_KEY'],
            algorithm='HS256').decode('utf-8')

    @staticmethod
    def verify_reset_password_token(token):
        try:
            id = jwt.decode(token,
                            app.config['SECRET_KEY'],
                            algorithms=['HS256'])['reset_password']
        except:
            return
        return User.query.get(id)