Beispiel #1
0
class Session(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    players = db.Column(db.Integer, nullable=False)
    play_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False)

    def __repr__(self):
        return f"Session('{self.game_name}', '{self.play_date}', '{self.players}')"
Beispiel #2
0
class Game(db.Model):

    __tablename__ = "games"

    id = db.Column(db.Integer, primary_key=True)
    game_title = db.Column(db.String, nullable=False)
    game_description = db.Column(db.String, nullable=False)

    def __init__(self, title, description):
        self.game_title = title
        self.game_description = description

    def __repr__(self):
        return '<title {}'.format(self.name)
Beispiel #3
0
class User(db.Model):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String, unique=True, nullable=False)
    _password = db.Column(db.Binary(60), nullable=False)
    authenticated = db.Column(db.Boolean, default=False)
    email_confirmation_sent_on = db.Column(db.DateTime, nullable=True)
    email_confirmed = db.Column(db.Boolean, nullable=True, default=False)
    email_confirmed_on = db.Column(db.DateTime, nullable=True)

    def __init__(self,
                 email,
                 plaintext_password,
                 email_confirmation_sent_on=None):
        self.email = email
        self.password = plaintext_password
        self.authenticated = False
        self.email_confirmation_sent_on = email_confirmation_sent_on
        self.email_confirmed = False
        self.email_confirmed_on = None

    @hybrid_property
    def password(self):
        return self._password

    @password.setter
    def set_password(self, plaintext_password):
        self._password = bcrypt.generate_password_hash(plaintext_password)

    @hybrid_method
    def is_correct_password(self, plaintext_password):
        return bcrypt.check_password_hash(self.password, plaintext_password)

    @property
    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return self.authenticated

    @property
    def is_active(self):
        """Always True, as all users are active."""
        return True

    @property
    def is_anonymous(self):
        """Always False, as anonymous users aren't supported."""
        return False

    def get_id(self):
        """Return the email address to satisfy Flask-Login's requirements."""
        """Requires use of Python 3"""
        return str(self.id)

    def __repr__(self):
        return '<User {0}>'.format(self.name)
Beispiel #4
0
class Game(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    gamename = db.Column(db.String(50), unique=True, nullable=False)
    minplayers = db.Column(db.Integer, nullable=False)
    maxplayers = db.Column(db.Integer, nullable=False)
    img_file = db.Column(db.String(20), nullable=False, default='game.jpg')
    description = db.Column(db.String(200))
    publisher = db.Column(db.String(50))
    sessions = db.relationship('Session', backref='game', lazy=True)

    def __repr__(self):
        return f"Games('{self.gamename}', '{self.maxplayers}', '{self.img_file}')"
Beispiel #5
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    img_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    sessions = db.relationship('Session', backref='author', lazy=True)

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

    @staticmethod
    def verify_reset_token(token):
        s = Serializer(app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except:
            return None
        return User.query.get(user_id)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.img_file}')"
Beispiel #6
0
class Wonder(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    wonder_name = db.Column(db.String(20), nullable=False, unique=True)
Beispiel #7
0
class Scores(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    session_id = db.Column(db.Integer,
                           db.ForeignKey('session.id'),
                           nullable=False)
    player_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    seat_position = db.Column(db.Integer, nullable=False)
    total_score = db.Column(db.Integer, nullable=False)
    seven_wonder = db.Column(db.Integer, db.ForeignKey('wonder.id'))
    wonder_side = db.Column(db.String(10))
    war_score = db.Column(db.Integer)
    gold_score = db.Column(db.Integer)
    blue_score = db.Column(db.Integer)
    yellow_score = db.Column(db.Integer)
    science_score = db.Column(db.Integer)
    purple_score = db.Column(db.Integer)
    armada_score = db.Column(db.Integer)
    leader_city_score = db.Column(db.Integer)