Example #1
0
class User(db.Model, UserMixin):

    __tablename__ = 'users'

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

    # User Authentication fields
    email = db.Column(db.String(255), nullable=False, unique=True)
    email_confirmed_at = db.Column(db.DateTime())
    password = db.Column(db.String(255), nullable=False)

    # User fields
    active = db.Column(db.Boolean(), default=True)
    first_name = db.Column(db.String(50), nullable=False, default='MISSING')
    last_name = db.Column(db.String(50), nullable=False, default='MISSING')
    sex = db.Column(db.String(1), nullable=False,
                    default='f')  # f female m male

    slug = db.Column(db.String(24),
                     nullable=False,
                     unique=True,
                     index=True,
                     default=create_random_slug(24))

    # Relationships
    roles = db.relationship('Role', secondary='user_roles')

    # federation members
    member_id = db.Column(db.Integer(),
                          db.ForeignKey('members.id', ondelete='CASCADE'))
Example #2
0
class UserRoles(db.Model):
    __tablename__ = 'user_roles'
    id = db.Column(db.Integer(), primary_key=True)
    user_id = db.Column(db.Integer(),
                        db.ForeignKey('users.id', ondelete='CASCADE'))
    role_id = db.Column(db.Integer(),
                        db.ForeignKey('roles.id', ondelete='CASCADE'))
Example #3
0
class ConvCard(db.Model):

    __tablename__ = 'convcards'

    id = db.Column(db.Integer(), primary_key=True)
    slug = db.Column(db.String(24),
                     unique=True,
                     nullable=False,
                     index=True,
                     default=create_random_slug(24))
    uploaded = db.Column(db.DateTime(), default=datetime.now, nullable=False)

    # reference to members
    players = db.relationship('Member',
                              secondary=playercards,
                              lazy='subquery',
                              back_populates='my_cards')

    @property
    def filename(self):
        return f'cc{self.slug}.pdf'
Example #4
0
class Member(db.Model):
    __tablename__ = 'members'

    id = db.Column(db.Integer(), primary_key=True)
    slug = db.Column(db.String(24),
                     nullable=False,
                     index=True,
                     unique=True,
                     default=create_random_slug(24))

    # federation member number
    fed_nr = db.Column(db.Integer(), nullable=True, unique=True, index=True)
    guest_nr = db.Column(db.String(10), nullable=True, unique=True, index=True)

    first_name = db.Column(db.String(50), nullable=False)
    last_name = db.Column(db.String(50), nullable=False)

    user = db.relationship('User',
                           backref='member',
                           uselist=False,
                           cascade="all, delete-orphan")

    # reference to convcards
    my_cards = db.relationship('ConvCard',
                               secondary=playercards,
                               lazy='subquery',
                               back_populates='players')

    @property
    def list_name(self):
        return ' '.join([self.last_name, self.first_name])

    @property
    def alias_list_name(self):
        if not self.user:
            return None

        alias = ' '.join([self.user.last_name, self.user.first_name])

        if alias == self.list_name:
            return None

        return alias

    def __repr__(self):
        if self.fed_nr:
            return f'{self.fed_nr} {self.last_name} {self.first_name}'
        else:
            return f'{self.guest_nr} {self.last_name} {self.first_name}'
Example #5
0
import os
from OnlineBridge import db, CONV_CARD_FOLDER
from utilities.sluggenerator import create_random_slug
from datetime import datetime

playercards = db.Table(
    'playercards',
    db.Column('member_id',
              db.Integer,
              db.ForeignKey('members.id', ondelete='CASCADE'),
              primary_key=True),
    db.Column('convcards_id',
              db.Integer,
              db.ForeignKey('convcards.id', ondelete='CASCADE'),
              primary_key=True))


class ConvCard(db.Model):

    __tablename__ = 'convcards'

    id = db.Column(db.Integer(), primary_key=True)
    slug = db.Column(db.String(24),
                     unique=True,
                     nullable=False,
                     index=True,
                     default=create_random_slug(24))
    uploaded = db.Column(db.DateTime(), default=datetime.now, nullable=False)

    # reference to members
    players = db.relationship('Member',
Example #6
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(50), unique=True)