class Game(db.Model): __tablename__ = 'game' id_ = db.Column('id', db.Integer, primary_key=True) name = db.Column(db.Unicode(length=255), nullable=False) owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) guest_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(ModelMixin, db.Model): name = db.Column(db.Unicode(length=255), nullable=False, unique=True) _password = db.Column('password', db.Unicode(length=255), nullable=False) @property def password(self): return self._password @password.setter def password(self, value): self._password = bcrypt.hashpw(value.encode('utf-8'), bcrypt.gensalt()) def check_password(self, value): return bcrypt.hashpw(value, self._password) == self._password def get_dictionary(self): return {'id_': self.id_, 'name': self.name}
class ModelMixin(object): @declared_attr def __tablename__(cls): return cls.__name__.lower() def __str__(self): return '<{} id={}>'.format(self.__class__.__name__, self.id_) id_ = db.Column('id', db.Integer, primary_key=True) def get_dictionary(self): d = {} for column in self.__table__.columns: d[column.key] = getattr(self, column.key) return d
class Square(db.Model, ModelMixin): board_id = db.Column(db.Integer, db.ForeignKey('board.id'), nullable=False) left = db.Column(db.Boolean, nullable=False, default=False) right = db.Column(db.Boolean, nullable=False, default=False) up = db.Column(db.Boolean, nullable=False, default=False) down = db.Column(db.Boolean, nullable=False, default=False) x = db.Column(db.Integer, nullable=False) y = db.Column(db.Integer, nullable=False) def get_dictionary(self): return dict( id=self.id, board_id=self.board_id, left=self.left, right=self.right, up=self.up, down=self.down, x=self.x, y=self.y )
class Board(db.Model, ModelMixin): name = db.Column(db.Unicode(length=255), nullable=False) width = db.Column(db.Integer, nullable=False) height = db.Column(db.Integer, nullable=False)
class User(db.Model): __tablename__ = 'user' id_ = db.Column('id', db.Integer, primary_key=True) name = db.Column(db.Unicode(length=255), nullable=False)