Beispiel #1
0
class Account(db.Model):
    account_id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), index=True, unique=True, nullable=False)
    max_characters = db.Column(db.Integer, nullable=False, default=3)
    characters = db.relationship('Character', backref='account', lazy='dynamic')
    account_auths = db.relationship('AccountAuth', backref='account', lazy='dynamic')

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

    def get_id(self):
        """Return the email address to satisfy Flask-Login's requirements."""
        return self.email

    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return (self.account_id is not None)

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

    def __repr__(self):
        return '<Account %r (%d)>' % ( self.email, self.account_id )
Beispiel #2
0
class AccountAuth(db.Model):
    __tablename__ = 'account_auth'
    account_auth_id = db.Column(db.Integer, primary_key=True)
    account_id = db.Column(db.Integer, db.ForeignKey('account.account_id'))
    auth_type = db.Column(db.String(10), nullable=False)

    def get_class_by_tablename(self, tablename):
        """Return class reference mapped to table.

        :param tablename: String with name of table.
        :return: Class reference or None.
        """
        for c in db.Model._decl_class_registry.values():
            if hasattr(c, '__tablename__') and c.__tablename__ == tablename:
                return c

    def auth_info(self):
        """Returns the object from the relevant auth class

        :return: Object from db or None
        """
        authclass = self.get_class_by_tablename( "account_auth_" + self.auth_type )
        if authclass == None:
            # Non-existant authentication method
            return None
        return authclass.query.filter_by( account_auth_id = self.account_auth_id ).one()

    def __repr__(self):
        return '<AccountAuth %d (type: %r)>' % ( self.account_auth_id, self.auth_type )
Beispiel #3
0
class AccountAuthLocal(db.Model):
    __tablename__ = 'account_auth_local'
    id = db.Column(db.Integer, primary_key=True)
    account_auth_id = db.Column(db.Integer, db.ForeignKey('account_auth.account_auth_id'))
    # Extra parameters required specifically for this auth method
    # Encrypted password
    password = db.Column(db.String(255), nullable=False)

    def __repr__(self):
        return '<AccountAuthLocal %d (%r)>' % ( self.id, self.password )
Beispiel #4
0
class Character(db.Model):
    character_id = db.Column(db.Integer, primary_key=True)
    account_id = db.Column(db.Integer, db.ForeignKey('account.account_id'))
    name = db.Column(db.String(64), index=True, unique=True)
    xp = db.Column(db.Integer, nullable=False, default=0)
    disabled = db.Column(db.String(10))
    x = db.Column(db.Integer, nullable=False)
    y = db.Column(db.Integer, nullable=False)
    z = db.Column(db.Integer, nullable=False)
    world = db.Column(db.Integer, nullable=False)

    def __repr__(self):
        return '<Character %r (%d)>' % ( self.name, self.character_id )
Beispiel #5
0
class Map(db.Model):
    map_id = db.Column(db.Integer, primary_key=True)
    x = db.Column(db.Integer, nullable=False)
    y = db.Column(db.Integer, nullable=False)
    z = db.Column(db.Integer, nullable=False)
    world = db.Column(db.Integer, nullable=False)
    tile_id = db.Column(db.Integer, db.ForeignKey('tile.tile_id'), nullable=False)
    name = db.Column(db.String(32))
    css_class = db.Column(db.String(32))

    def __repr__(self):
        return '<Map %r (%d)>' % ( self.name, self.map_id )
Beispiel #6
0
class Tile(db.Model):
    tile_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
    description = db.Column(db.String(255))
    background_image = db.Column(db.String(32))
    background_colour = db.Column(db.String(7))
    css_class = db.Column(db.String(32))

    def __repr__(self):
        return '<Tile %r (%d)>' % ( self.name, self.tile_id )