Esempio n. 1
0
class Game(db.Model, Model):
    __tablename__ = 'games'

    id = db.Column(db.Integer, primary_key=True)

    start = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    end = db.Column(db.DateTime)
    finished = db.Column(db.Boolean, default=False)

    x_player_id = db.Column(
                        db.Integer, db.ForeignKey('users.id'), nullable=False)
    x_player = db.relationship(
                        'User', foreign_keys=[x_player_id], backref='x_games')

    o_player_id = db.Column(
                        db.Integer, db.ForeignKey('users.id'), nullable=False)
    o_player = db.relationship(
                        'User', foreign_keys=[o_player_id], backref='o_games')

    winner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    winner = db.relationship(
                        'User', foreign_keys=[winner_id], backref='won_games')

    @hybrid_property
    def serialized(self):
        return {'id': self.id,
                'x_player_id': self.x_player_id,
                'o_player_id': self.o_player_id,
                'start': str(self.start),
                'end': str(self.end),
                'finished': self.finished,
                'winner_id': self.winner_id}
Esempio n. 2
0
class UserModel(db.Model):
    __tablename__ = "api_auth_user"

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), nullable=False, unique=True)
    password = db.Column(db.String, nullable=False, default='SOME_SECRET')
    first_name = db.Column(db.String(255))
    last_name = db.Column(db.String(255))
    email = db.Column(db.String(255), unique=True)
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())

    creation_date = db.Column(db.DateTime, default=datetime.utcnow)
    modification_date = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

    roles = db.relationship('RoleModel', secondary=api_auth_roles_users, lazy='subquery',
                             backref=db.backref('users', lazy=True))
    company_id = db.Column(db.Integer, db.ForeignKey('api_auth_company.id'))  # Each user has one company
    company = db.relationship("CompanyModel")


    @classmethod
    def find_by_username(cls, username):
        return cls.query.filter_by(username=username).first()

    @classmethod
    def find_by_id(cls, _id):
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_all(cls):
        return cls.query.all()

    @classmethod
    def find_by_company(cls, _id):
        return cls.query.filter_by(company_id=_id).all()

    def set_password(self, pw):
        pwhash = bcrypt.generate_password_hash(pw.encode('utf8'))
        self.password = pwhash.decode('utf8')

    def check_password(self, pw):
        return bcrypt.check_password_hash(self.password, pw)

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

    def delete_from_db(self):
        db.session.delete(self)
        db.session.commit()

    def update(self):
        return db.session.commit()
Esempio n. 3
0
class Author(db.Model):
    __tablename__ = "authors"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    birth = db.Column(db.String(10), nullable=False)
    books = db.relationship("Book", backref=db.backref('author'))

    def __init__(self, name: str, birth: str):
        self.name = name
        self.birth = birth

    def serialize(self):
        return {"id": self.id, "name": self.name, "birth": self.birth}
Esempio n. 4
0
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(255))
    picture = db.Column(db.String(255))
    company = db.Column(db.String(255))
    email = db.Column(db.String(255), index=True)
    phone = db.Column(db.String(255))
    skills = db.relationship("Skill") # one to many

    def update(self, data):
        for k, v in data.items():
            setattr(self, k, v)
        return self
Esempio n. 5
0
class TokenModel(db.Model, CRUDMixin):
    __tablename__ = "api_auth_token"

    id = db.Column(db.Integer, primary_key=True)
    jti = db.Column(db.String, nullable=False, unique=True)
    token_type = db.Column(db.String, nullable=False)
    fresh = db.Column(db.Boolean, nullable=False, default=False)
    blacklisted = db.Column(db.Boolean, nullable=False, default=False)
    never_expire = db.Column(db.Boolean, nullable=False, default=False)

    creation_date = db.Column(db.DateTime, default=datetime.utcnow)
    expiration_date = db.Column(db.DateTime)

    user_id = db.Column(db.Integer, db.ForeignKey(
        'api_auth_user.id'))  # Each token has one user
    user = db.relationship("UserModel")

    @classmethod
    def find_by_jti(cls, _jti):
        return cls.query.filter_by(jti=_jti).first()
Esempio n. 6
0
 def company(cls):
     return db.relationship(CompanyModel)