示例#1
0
class Notification(db.Model):
    __tablename__ = 'notifications'
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer, db.ForeignKey('users.id'))
    message = db.Column(db.String(500))
    author = db.Column(db.String(30))
    type = db.Column(db.String(30))
示例#2
0
class ChatmessageIngame(db.Model):
    __tablename__ = 'chatmessages_ingame'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    game_hashid = db.Column(db.String(10), primary_key=True)
    author = db.Column(db.Integer, db.ForeignKey('users.id'))
    message = db.Column(db.String(500))
    timestamp = db.Column(db.DateTime)
示例#3
0
class Privatemessage(db.Model):
    __tablename__ = 'privatemessages'
    id = db.Column(db.Integer, primary_key=True)
    sender = db.Column(db.Integer, db.ForeignKey('users.id'))
    receiver = db.Column(db.Integer, db.ForeignKey('users.id'))
    message = db.Column(db.String(500))
    timestamp = db.Column(db.DateTime)
示例#4
0
class UsernameChange(db.Model):
    __tablename__ = 'username_changes'
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer)
    old_name = db.Column(db.String(25))
    new_name = db.Column(db.String(25))
    timestamp = db.Column(db.DateTime)
示例#5
0
class Chatmessage(db.Model):
    __tablename__ = 'chatmessages'
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.Integer, db.ForeignKey('users.id'))
    message = db.Column(db.String(500))
    timestamp = db.Column(db.DateTime, index=True)
    tournament_hashid = db.Column(db.String(10), db.ForeignKey('tournaments.hashid'), default=None)
示例#6
0
class Friendship(db.Model):
    __tablename__ = 'friendships'
    user1_id = db.Column(db.Integer,
                         db.ForeignKey('users.id'),
                         primary_key=True)
    user2_id = db.Column(db.Integer,
                         db.ForeignKey('users.id'),
                         primary_key=True)
示例#7
0
class FriendshipRequest(db.Model):
    __tablename__ = 'friendship_requests'
    requesting_user_id = db.Column(db.Integer,
                                   db.ForeignKey('users.id'),
                                   primary_key=True)
    receiving_user_id = db.Column(db.Integer,
                                  db.ForeignKey('users.id'),
                                  primary_key=True)
示例#8
0
class CricketPresetting(db.Model):
    __tablename__ = 'cricket_presettings'
    user = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    bo_sets = db.Column(db.Integer)
    bo_legs = db.Column(db.Integer)
    two_clear_legs = db.Column(db.Boolean)
    starter = db.Column(db.String(25))
    opponent_type = db.Column(db.String(10))
    level = db.Column(db.Integer)
    public_challenge = db.Column(db.Boolean)
    webcam = db.Column(db.Boolean)
    score_input_delay = db.Column(db.Integer)
示例#9
0
class BoardCoordinates(db.Model):
    __tablename__ = 'boardcoordinates'
    id = db.Column(db.Integer(), primary_key=True)
    user = db.Column(db.Integer, db.ForeignKey('users.id'))
    x1 = db.Column(db.Integer)
    y1 = db.Column(db.Integer)
    x2 = db.Column(db.Integer)
    y2 = db.Column(db.Integer)
    x3 = db.Column(db.Integer)
    y3 = db.Column(db.Integer)
示例#10
0
class UserSettings(db.Model):
    __tablename__ = 'user_settings'
    user = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    match_alerts = db.Column(db.Boolean, default=True)
    allow_challenges = db.Column(db.Boolean, default=True)
    allow_private_messages = db.Column(db.Boolean, default=True)
    allow_friend_requests = db.Column(db.Boolean, default=True)
    notification_sound = db.Column(db.Boolean, default=True)
    country = db.Column(db.String, default=None)
    last_country_change = db.Column(db.DateTime, default=None)
示例#11
0
class WebcamSettings(db.Model):
    __tablename__ = 'webcam_settings'
    user = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    user_object = relationship("User", back_populates="webcam_settings")
    activated = db.Column(db.Boolean, default=False)
    stream_consent = db.Column(db.Boolean, default=False)
    mobile_app = db.Column(db.Boolean, default=False)
    mobile_follower_mode = db.Column(db.Boolean, default=False)
    force_scoreboard_page = db.Column(db.Boolean, default=False)
    latest_jitsi_hashid = db.Column(db.String(10), default=None)
    jitsi_public_server = db.Column(db.Boolean, default=False)
示例#12
0
class TournamentStageRound(db.Model):
    __tablename__ = 'tournament_stage_rounds'
    id = db.Column(db.Integer, primary_key=True)
    stage_id = db.Column(db.Integer, db.ForeignKey('tournament_stages.id'))
    stage = db.relationship("TournamentStage", back_populates="rounds")
    games = db.relationship("Game", back_populates="tournament_round")
    variant = db.Column(db.String(50))
    bo_sets = db.Column(db.Integer, nullable=False)
    bo_legs = db.Column(db.Integer, nullable=False)
    two_clear_legs = db.Column(db.Boolean)
    starter = db.Column(db.String(30))
    score_input_delay = db.Column(db.Integer, default=0)
示例#13
0
class UserStatistic(db.Model):
    __tablename__ = 'user_statistic'
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer, db.ForeignKey('users.id'), unique=True)
    average = db.Column(db.Float, default=0)
    first9 = db.Column(db.Float, default=0)
    doubles = db.Column(db.Float, default=0)
    total_games = db.Column(db.Integer, default=0)
    darts_thrown = db.Column(db.Integer, default=0)
示例#14
0
class Tournament(db.Model):
    __tablename__ = 'tournaments'
    id = db.Column(db.Integer, primary_key=True)
    creator = db.Column(db.Integer, db.ForeignKey('users.id'))
    hashid = db.Column(db.String(10), unique=True)
    name = db.Column(db.String(50), nullable=False)
    public = db.Column(db.Boolean, default=False)
    description = db.Column(db.String(200))
    external_url = db.Column(db.String(120))
    start_timestamp = db.Column(db.DateTime)
    creation_timestamp = db.Column(db.DateTime, default=datetime.utcnow())
    players = db.relationship(
        'User',
        secondary=tournament_players_association_table,
        lazy=True,
        backref=db.backref('tournaments', lazy=True),
    )

    def __init__(self, **kwargs):
        super(Tournament, self).__init__(**kwargs)
        self.hashid = secrets.token_urlsafe(8)[:8]
示例#15
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    alternative_id = db.Column(db.Integer, index=True, unique=True)
    username = db.Column(db.String(25), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password = db.Column(db.String(128))
    active = db.Column(db.Boolean)
    avatar = db.Column(db.String(15), default=None)
    avatar_version = db.Column(db.Integer, default=0)
    last_seen = db.Column(db.DateTime, default=datetime.utcnow())
    last_seen_ingame = db.Column(db.DateTime, default=datetime.utcnow())
    is_online = db.Column(db.Boolean, default=False)
    active_sessions = db.Column(db.Integer, default=0)
    status = db.Column(db.String(15), default='online')
    caller = db.Column(db.String(20), default='default')
    cpu_delay = db.Column(db.Integer, default=0)
    roles = db.relationship('Role',
                            secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))
    registration_timestamp = db.Column(db.DateTime, default=datetime.utcnow())
    is_backer = db.Column(db.Boolean, default=False)
    is_verified = db.Column(db.Boolean, default=False)
    backer_until = db.Column(db.DateTime, default=None)
    webcam_settings = relationship("WebcamSettings",
                                   uselist=False,
                                   back_populates="user_object")
    api_key = db.Column(db.String(16), default=None)

    requested_friend_reqs = db.relationship(
        'FriendshipRequest',
        foreign_keys='FriendshipRequest.requesting_user_id',
        backref='requesting_user')
    received_friend_reqs = db.relationship(
        'FriendshipRequest',
        foreign_keys='FriendshipRequest.receiving_user_id',
        backref='receiving_user')
    aspiring_friends = association_proxy('received_friend_reqs',
                                         'requesting_user')
    desired_friends = association_proxy('requested_friend_reqs',
                                        'receiving_user')

    requested_friend_confs = db.relationship(
        'Friendship',
        foreign_keys='Friendship.user1_id',
        backref='requesting_friend')
    received_friend_confs = db.relationship('Friendship',
                                            foreign_keys='Friendship.user2_id',
                                            backref='receiving_friend')
    friends_requested = association_proxy('received_friend_confs',
                                          'requesting_friend')
    friends_received = association_proxy('requested_friend_confs',
                                         'receiving_friend')

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

    def as_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}

    def recently_online(self):
        return self.is_online or self.last_seen > datetime.utcnow(
        ) - timedelta(minutes=1)
示例#16
0
class Tournament(db.Model):
    __tablename__ = 'tournaments'
    id = db.Column(db.Integer, primary_key=True)
    creator = db.Column(db.Integer, db.ForeignKey('users.id'))
    hashid = db.Column(db.String(10), unique=True)
    name = db.Column(db.String(50), nullable=False)
    public = db.Column(db.Boolean, default=False)
    registration_open = db.Column(db.Boolean, default=True)
    registration_apply = db.Column(db.Boolean, default=False)
    description = db.Column(db.String(1000))
    external_url = db.Column(db.String(120))
    start_timestamp = db.Column(db.DateTime)
    creation_timestamp = db.Column(db.DateTime, default=datetime.utcnow())
    api_key = db.Column(db.String(16), default=None)
    managed_externally = db.Column(db.Boolean, default=False)
    maximum_players = db.Column(db.Integer, default=1024)
    stages = db.relationship('TournamentStage', back_populates="tournament")
    status = db.Column(db.String(20), default='registration')

    players = db.relationship(
        'User',
        secondary=tournament_players_association_table,
        lazy=True,
        backref=db.backref('tournaments', lazy=True),
    )
    banned_players = db.relationship(
        'User',
        secondary=tournament_banned_players_association_table,
        lazy=True,
        backref=db.backref('tournaments_banned', lazy=True),
    )

    def __init__(self, **kwargs):
        super(Tournament, self).__init__(**kwargs)
        self.hashid = secrets.token_urlsafe(8)[:8]
        self.api_key = secrets.token_urlsafe(16)[:16]
示例#17
0
class SocketConnections(db.Model):
    __tablename__ = 'socket_connections'
    id = db.Column(db.Integer, primary_key=True)
    active = db.Column(db.Integer, default=0)
    total = db.Column(db.Integer, default=0)
    last_reset = db.Column(db.DateTime)
示例#18
0
class UserStatistic(db.Model):
    __tablename__ = 'user_statistic'
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer,
                     db.ForeignKey('users.id'),
                     unique=True,
                     index=True)
    average = db.Column(db.Float, default=0)
    first9 = db.Column(db.Float, default=0)
    doubles = db.Column(db.Float, default=0)
    total_games = db.Column(db.Integer, default=0)
    darts_thrown = db.Column(db.Integer, default=0)
    matches_u30 = db.Column(db.Integer, default=0)
    matches30_40 = db.Column(db.Integer, default=0)
    matches40_50 = db.Column(db.Integer, default=0)
    matches50_60 = db.Column(db.Integer, default=0)
    matches60_70 = db.Column(db.Integer, default=0)
    matches70_80 = db.Column(db.Integer, default=0)
    matches80_90 = db.Column(db.Integer, default=0)
    matches_o90 = db.Column(db.Integer, default=0)
    wins_u30 = db.Column(db.Integer, default=0)
    wins30_40 = db.Column(db.Integer, default=0)
    wins40_50 = db.Column(db.Integer, default=0)
    wins50_60 = db.Column(db.Integer, default=0)
    wins60_70 = db.Column(db.Integer, default=0)
    wins70_80 = db.Column(db.Integer, default=0)
    wins80_90 = db.Column(db.Integer, default=0)
    wins_o90 = db.Column(db.Integer, default=0)
示例#19
0
class UserSettings(db.Model):
    __tablename__ = 'user_settings'
    user = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    match_alerts = db.Column(db.Boolean, default=True)
    allow_challenges = db.Column(db.Boolean, default=True)
    allow_private_messages = db.Column(db.Boolean, default=True)
    allow_friend_requests = db.Column(db.Boolean, default=True)
    notification_sound = db.Column(db.Boolean, default=True)
    country = db.Column(db.String, default=None)
    last_country_change = db.Column(db.DateTime, default=None)
    checkout_suggestions = db.Column(db.Boolean, default=False)
    show_average_in_chat_list = db.Column(db.Boolean, default=False)
    profile_text = db.Column(db.String(2000), default=None)
    channel_id = db.Column(db.String(30), default=None)
    caller = db.Column(db.String(30),
                       db.ForeignKey('callers.name'),
                       default='default')
示例#20
0
class CricketGame(GameBase):
    __tablename__ = 'games_cricket'
    confirmation_needed = db.Column(db.Boolean, default=False)
    undo_possible = db.Column(db.Boolean, default=False)
示例#21
0
class CricketGame(GameBase):
    __tablename__ = 'games_cricket_new'
    __mapper_args__ = {'polymorphic_identity': 'cricket'}
    id = db.Column(db.Integer, db.ForeignKey('games_all.id'), primary_key=True)
    confirmation_needed = db.Column(db.Boolean, default=False)
    undo_possible = db.Column(db.Boolean, default=False)
示例#22
0
 def player2(cls):
     return db.Column(db.Integer, db.ForeignKey('users.id'), index=True)
示例#23
0
 def tournament_round_id(cls):
     return db.Column(db.Integer,
                      db.ForeignKey('tournament_stage_rounds.id'),
                      default=None)
示例#24
0
class Caller(db.Model):
    __tablename__ = 'callers'
    name = db.Column(db.String(30), primary_key=True)
    display_name = db.Column(db.String(50), default=None)
示例#25
0
class Role(db.Model, RoleMixin):
    __tablename__ = 'roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))
示例#26
0
class Game(GameBase):
    __tablename__ = 'games'
    type = db.Column(db.Integer)
    in_mode = db.Column(db.String(15))
    out_mode = db.Column(db.String(15))
示例#27
0
class GameBase(db.Model):
    __tablename__ = 'games_all'

    id = db.Column(db.Integer, primary_key=True)
    variant = db.Column(db.String(50))
    __mapper_args__ = {'polymorphic_on': variant}

    hashid = db.Column(db.String(10), unique=True)
    bo_sets = db.Column(db.Integer, nullable=False)
    bo_legs = db.Column(db.Integer, nullable=False)
    two_clear_legs = db.Column(db.Boolean)
    p1_sets = db.Column(db.Integer)
    p2_sets = db.Column(db.Integer)
    p1_legs = db.Column(db.Integer)
    p2_legs = db.Column(db.Integer)
    p1_score = db.Column(db.Integer)
    p2_score = db.Column(db.Integer)
    p1_next_turn = db.Column(db.Boolean)
    closest_to_bull = db.Column(db.Boolean)
    closest_to_bull_json = db.Column(db.JSON)
    status = db.Column(db.String(20), index=True)
    match_json = db.Column(db.JSON)
    begin = db.Column(db.DateTime)
    end = db.Column(db.DateTime)
    opponent_type = db.Column(db.String(10))
    public_challenge = db.Column(db.Boolean)
    score_input_delay = db.Column(db.Integer, default=0)
    webcam = db.Column(db.Boolean, default=False)
    jitsi_hashid = db.Column(db.String(10), unique=True)
    jitsi_public_server = db.Column(db.Boolean, default=False)
    tournament_stage_game_id = db.Column(db.Integer, default=None)
    tournament_stage_game_bracket_id = db.Column(db.Integer, default=None)

    @declared_attr
    def tournament(cls):
        return db.Column(db.String(10),
                         db.ForeignKey('tournaments.hashid'),
                         default=None)

    @declared_attr
    def tournament_round_id(cls):
        return db.Column(db.Integer,
                         db.ForeignKey('tournament_stage_rounds.id'),
                         default=None)

    @declared_attr
    def tournament_round(cls):
        return db.relationship('TournamentStageRound', back_populates='games')

    @declared_attr
    def player1(cls):
        return db.Column(db.Integer, db.ForeignKey('users.id'), index=True)

    @declared_attr
    def player2(cls):
        return db.Column(db.Integer, db.ForeignKey('users.id'), index=True)

    def set_hashid(self):
        self.hashid = secrets.token_urlsafe(8)[:8]

    def as_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}
示例#28
0
from flask_security import UserMixin, RoleMixin
from lidarts import db
from datetime import datetime, timedelta
import secrets
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.ext.declarative import declared_attr, AbstractConcreteBase
from sqlalchemy.orm import relationship

# Define models
roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('users.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('roles.id')))

tournament_players_association_table = db.Table(
    'association',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('users.id'),
              primary_key=True),
    db.Column('tournament_id',
              db.Integer,
              db.ForeignKey('tournaments.id'),
              primary_key=True),
)

tournament_banned_players_association_table = db.Table(
    'tournament_banned_players_association',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('users.id'),
示例#29
0
class StreamGame(db.Model):
    __tablename__ = 'stream_game'
    user = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    hashid = db.Column(db.String(10), primary_key=True)
    jitsi_hashid = db.Column(db.String(10))
示例#30
0
 def tournament(cls):
     return db.Column(db.String(10),
                      db.ForeignKey('tournaments.hashid'),
                      default=None)