class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True, nullable=False, default='')
    email = db.Column(db.String(120), unique=True, nullable=False)
    company = db.Column(db.String(120),
                        unique=False,
                        nullable=False,
                        default='')
    tel = db.Column(db.String(120), unique=False, nullable=False, default='')
    address1 = db.Column(db.String(255),
                         unique=False,
                         nullable=True,
                         default='')
    address2 = db.Column(db.String(255),
                         unique=False,
                         nullable=True,
                         default='')
    city = db.Column(db.String(50), unique=False, nullable=True, default='')
    state = db.Column(db.String(50), unique=False, nullable=True, default='')
    zip = db.Column(db.String(50), unique=False, nullable=True, default='')
    country = db.Column(db.String(50), unique=False, nullable=True, default='')
    password = db.Column(db.String(60), nullable=False)
    verified = db.Column(db.Boolean, default=False, nullable=True)
    role = db.Column(db.Integer, nullable=False,
                     default=0)  # 0: client, 1: admin
    date_registered = db.Column(db.DateTime,
                                nullable=False,
                                default=datetime.utcnow)
    user_services = db.relationship('UserService', backref='user', lazy=True)

    def __repr__(self):
        return f"User('{self.email}')"
示例#2
0
class Answer(db.Model):
    __tablename__ = 'answer'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    content = db.Column(db.Text, nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    question = db.relationship('Question',
                               backref=db.backref('answers',
                                                  order_by=id.desc()))
    author = db.relationship('User', backref=db.backref('answers'))


# if __name__ == '__main__':
#     # db.create_all()
#     pass
示例#3
0
class Label(db.Model):
    '''标签表'''
    __tablename__ = 'label'
    label_id = db.Column(db.Integer, primary_key=True,
                         autoincrement=True)  #标签id
    label_name = db.Column(db.String(30))  # 标签名称
    article_infos = db.relationship('Article', backref='label', lazy='dynamic')
示例#4
0
class Phone(db.Model):
    __tablename__ = "phone"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    model = db.Column(db.String(32))
    price = db.Column(db.String(32))
    company_name = db.Column(
        db.String(20), db.ForeignKey('company.name'))  # 创建与company.name关联的外键
    company = db.relationship("Company", backref="phone_of_company")
示例#5
0
class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    users = db.relationship('User', backref='role', lazy=True)

    def serialize(self):
        return {"id": self.id, "name": self.name, "users": self.users}
示例#6
0
class Tournament(db.Model):
    __tablename__ = 'tournament'
    id = db.Column(db.Integer, primary_key=True)
    city_id = db.Column(db.Integer, db.ForeignKey('city.id'))

    date = db.Column(db.Date, nullable=False)
    name = db.Column(db.String(32), nullable=False)
    info = db.Column(db.Text)

    matches = db.relationship("Match")
    participants = db.relationship("TournamentPlayer")

    def __repr__(self):
        return f"Tournament: {self.name}"

    def __str__(self):
        return f"{self.name} {self.date}"
示例#7
0
class Role(db.Model):

    __tablename__ = 'tb_roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, nullable=False, index=True)
    users = db.relationship('User', backref='role', lazy='dynamic')

    def __str__(self):
        return 'Role is: {}'.format(self.name)
示例#8
0
class ClassyText(db.Model):
    __tablename__ = 'classy_texts'
    id = db.Column(db.Integer, primary_key=True)
    file_name = db.Column(db.String(1000))
    file_created = db.Column(db.DateTime())
    classification_text = db.Column(db.Text())
    last_updated = db.Column(db.DateTime())
    classy_job_id = db.Column(db.Integer, db.ForeignKey('classy_jobs.id'))
    training_items = db.relationship("ClassyTrainingItem")
示例#9
0
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)
    events = db.relationship('Events', backref='author', lazy=True)

    def __repr__(self):
        return 'User {} and Id {}'.format(self.username, self.id)
示例#10
0
class Question(db.Model):
    __tablename__ = 'question'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)
    # now()获取的是服务器第一次运行的时间
    # now就是每次创建一个模型的时候,都获取当前的时间
    create_time = db.Column(db.DateTime, default=datetime.now)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    author = db.relationship('User', backref=db.backref('questions'))
示例#11
0
class Issue(db.Model):
    """This class is used for issues table in database."""

    __tablename__ = 'issues'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    user_id = db.Column(db.ForeignKey(u'users.id'), index=True)
    category_id = db.Column(db.ForeignKey(u'category.id'),
                            nullable=False,
                            index=True)
    location = db.Column(db.Text)
    description = db.Column(db.Text)
    open_date = db.Column(db.Date)
    close_date = db.Column(db.Date)
    delete_date = db.Column(db.Date)

    category = db.relationship(u'Category')
    user = db.relationship(u'User')
示例#12
0
class Attachment(db.Model):
    """This class is used for attachment table in database."""

    __tablename__ = 'attachments'

    id = db.Column(db.Integer, primary_key=True)
    issue_id = db.Column(db.ForeignKey(u'issues.id'), index=True)
    image_url = db.Column(db.Text)
    delete_date = db.Column(db.Date)

    issue = db.relationship(u'Issue')
class Sport(db.Model):  # hasta aca estan ok las relaciones
    __tablename__ = 'sport'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    # clasificados = db.relationship('Clasificado', backref='sport', lazy=True)
    user_sport = db.relationship('UserSport', backref='sport', lazy=True)

    def serialize(self):
        return {
            "id": self.id,
            "name": self.name,
        }
示例#14
0
class User(db.Model):
    """This class is used for user table in database."""

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    alias = db.Column(db.Text)
    email = db.Column(db.Text)
    password = db.Column(db.Text)
    role_id = db.Column(db.ForeignKey(u'roles.id'), index=True)
    avatar = db.Column(db.Text)
    delete_date = db.Column(db.Date)

    role = db.relationship(u'Role')
示例#15
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(100))
    last_name = db.Column(db.String(100))
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(100))
    phone_number = db.Column(db.Integer)
    opportunities = db.relationship('Opportunity', backref='client')

    def __init__(self, first_name, last_name, email, password, phone_number):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email
        self.password = password
        self.phone_number = phone_number
示例#16
0
class Player(db.Model):
    __tablename__ = 'player'
    id = db.Column(db.Integer, primary_key=True)
    city_id = db.Column(db.Integer, db.ForeignKey('city.id'))
    pin = db.Column(db.String, unique=True)
    full_name = db.Column(db.String(64))
    japanese_rank = db.Column(db.String(3))
    national_rank = db.Column(db.String(5))
    is_active = db.Column(db.Boolean, default=True)
    ratings = db.relationship("TournamentPlayer")

    def __repr__(self):
        return f'Player: {self.first_name} {self.last_name}'

    def __str__(self):
        return f'{self.first_name} {self.last_name}'
示例#17
0
class Show(db.Model):

    __tablename__ = 'shows'

    show_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    show_date = db.Column(db.Date, nullable=False)
    show_venue = db.Column(db.String, nullable=False)
    sales = db.relationship('Sales', backref='shows', cascade='all, delete-orphan', lazy='dynamic')

    # sales = db.relationship('sales', backref='shows', passive_deletes=True)
    # sales = db.relationship("Sales", cascade="save-update, merge, delete")
    def __init__(self, date, venue):
        self.show_date = date
        self.show_venue = venue

    def __repr__(self):
        template = 'id: {} date: {} venue: {}'
        return template.format(self.show_id, self.show_date, self.show_venue)
示例#18
0
class Merch(db.Model):

    __tablename__ = 'merch'

    merch_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    merch_name = db.Column(db.String, nullable=False, unique=True)
    merch_cost = db.Column(db.Float, nullable=False)
    merch_descr = db.Column(db.VARCHAR, nullable=False)
    sales = db.relationship('Sales', backref='merch', cascade='all, delete-orphan', lazy='dynamic')
    #
    # sales = db.relationship('Sales', cascade="save-update, merge, delete")
    # sales = db.relationship('sales', backref='merch', passive_deletes=True)

    def __init__(self, name, cost, descr):
        self.merch_name = name
        self.merch_cost = cost
        self.merch_descr = descr

    def __repr__(self):
        template = 'id: {} name: {} cost: {} description: {}'
        return template.format(self.merch_id, self.merch_name, self.merch_cost, self.merch_descr)
示例#19
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    userslalala = db.relationship('User', backref='rolelalala')
class User(db.Model):
    """ User Model for storing user related details """
    __tablename__ = "user"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(255), unique=True, nullable=False)
    registered_at = db.Column(db.DateTime,
                              nullable=False,
                              default=datetime.utcnow())
    first_name = db.Column(db.String(100), nullable=False)
    last_name = db.Column(db.String(100), nullable=False)
    password_hash = db.Column(db.String(100), nullable=False)
    birthdate = db.Column(db.DateTime)
    #dia_hora = db.Column(db.DateTime)
    bio = db.Column(db.String(100))
    phones = db.Column(db.String(100))
    gender = db.Column(db.String(100))
    status = db.Column(db.Boolean, default=True)
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'), nullable=False)
    photo = db.Column(db.String(100), default='without-photo.png')
    user_sports = db.relationship('UserSport', backref='user', lazy=True)

    #friends = db.relationship('Friend', backref='user', lazy=True)

    def serialize(self):
        return {
            "id": self.id,
            "firstname": self.first_name,
            "lastname": self.last_name,
            "email": self.email,
            "bio": self.bio,
            "phones": self.phones,
            "status": self.status,
            "birthdate": self.birthdate,
            "gender": self.gender,
            "role": self.role_id,
            #"dia_hora": self.dia_hora,
            "photo": self.photo,
            "sports": self.get_all_sports()
        }

    def get_all_sports(self):
        sports = list(map(lambda sport: sport.serialize(), self.user_sports))
        return sports

    @property
    def password(self):
        raise AttributeError('password: write-only field')

    @password.setter
    def password(self, password):
        self.password_hash = flask_bcrypt.generate_password_hash(
            password).decode('utf-8')

    def check_password(self, password):
        return flask_bcrypt.check_password_hash(self.password_hash, password)

    def encode_auth_token(self):
        """
        Generates the Auth Token
        :return: string
        """
        try:
            payload = {
                'exp': datetime.utcnow() + timedelta(days=1, seconds=5),
                'iat': datetime.utcnow(),
                'sub': self.id,
                'role': self.role_id,
                'firstName': self.first_name,
                'email': self.email
            }
            return jwt.encode(payload, key, algorithm='HS256')
        except Exception as e:
            return e

    @staticmethod
    def decode_auth_token(auth_token):
        """
        Decodes the auth token
        :param auth_token:
        :return: integer|string
        """
        try:
            payload = jwt.decode(auth_token, key)
            return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please log in again.'
        except jwt.InvalidTokenError:
            return 'Invalid token. Please log in again.'

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

    def save_changes(self):
        db.session.add(self)
        db.session.commit()