Exemple #1
0
class Question(db.Model):
    __tablename__ = 'question'
    id = db.Column(db.Integer, primary_key=True)
    answers = db.relationship('Answer',
                              uselist=True,
                              back_populates='question')
    text = db.Column(db.Text)
class SubCounties(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)

    # db.relationship('Ward', backref='sub_county', lazy='joined')

    def __init__(self, name):
        self.name = name
class Locations(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    ward = db.Column(db.Integer, db.ForeignKey('wards.id'), nullable=False)

    def __init__(self, name, wards):
        self.name = name
        self.wards = wards
Exemple #4
0
class Recruiter(db.Model):
    __tablename__ = 'recruiter'
    id = db.Column(db.Integer, db.ForeignKey(User.id), primary_key=True)
    user = db.relationship(User)
    applications = db.relationship('Application',
                                   uselist=True,
                                   back_populates='recruiter')
    is_senior = db.Column(db.Boolean, default=False)
Exemple #5
0
class BookModel(db.Model):
    __tablename__ = "books"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    pages = db.Column(db.Integer, nullable=False)

    def __init__(self, title, pages):
        self.title = title
        self.pages = pages
Exemple #6
0
class Structure(db.Model):
    __tablename__ = 'structure'
    id = db.Column(db.BigInteger, primary_key=True)
    name = db.Column(db.String(100))
    system_id = db.Column(db.Integer, db.ForeignKey(System.id), nullable=True)
    system = db.relationship(System, foreign_keys=[system_id])
    corporation_id = db.Column(db.Integer,
                               db.ForeignKey(Corporation.id),
                               nullable=True)
    corporation = db.relationship(Corporation, uselist=False)
    redlisted = db.Column(db.Boolean, default=False)

    @classmethod
    def get(cls, character, id):
        structure = db.session.query(cls).get(id)
        if structure is None or structure.system_id is None:
            if structure is not None:
                db.session.delete(structure)
                db.session.commit()
            try:
                structure_data = character.get_op(
                    'get_universe_structures_structure_id',
                    structure_id=id,
                )
                Corporation.get(structure_data['owner_id'])
                System.get(structure_data['solar_system_id'])
                structure = Structure(
                    id=id,
                    name=structure_data['name'],
                    system_id=structure_data['solar_system_id'],
                    corporation_id=structure_data['owner_id'])
            except esi.ESIException:
                structure = Structure(
                    id=id,
                    name='Unknown Structure {}'.format(id),
                )
            db.session.add(structure)
            db.session.commit()
        return structure

    @classmethod
    def get_multi(cls, character, id_list):
        existing_items = db.session.query(Structure).filter(
            Structure.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        for id in missing_ids:
            return_items[id] = cls.get(character, id)
        return return_items

    @property
    def is_redlisted(self):
        if self.redlisted:
            return True
        else:
            return bool(self.system and self.system.is_redlisted)
class Villages(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    sub_location = db.Column(db.Integer,
                             db.ForeignKey('sub_locations.id'),
                             nullable=False)

    def __init__(self, name, sub_location):
        self.name = name
        self.sub_location = sub_location
class SubLocations(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    location = db.Column(db.Integer,
                         db.ForeignKey('locations.id'),
                         nullable=False)

    def __init__(self, name, location):
        self.name = name
        self.location = location
Exemple #9
0
class ConfigItem(db.Model):
    __tablename__ = 'config_item'
    key = db.Column(db.String, primary_key=True)
    value = db.Column(db.String)

    def __str__(self):
        return '{}: {}'.format(self.key, self.value)

    def __repr__(self):
        return 'ConfigItem(key={!r}, value={!r})'.format(self.key, self.value)
Exemple #10
0
class Job(db.Model):
    # __tablename__ = 'jobs'
    job_id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20), nullable=False)

    skills = db.relationship('Skill',
                             secondary=job_requirements,
                             backref=db.backref('job', lazy='dynamic'))

    def __repr__(self):
        return '<Job %r>' % (self.title)
Exemple #11
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    email = db.Column(db.String(255), nullable=False)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.now,
                           onupdate=datetime.now)
Exemple #12
0
class bulletin_board(db.Model):

    __tablename__ = 'bulletin_board'

    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(255), nullable=False)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.now,
                           onupdate=datetime.now)
Exemple #13
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))

    def __init__(self, username='', email=''):
        self.username = username
        self.email = email

    def __repr__(self):
        return 'Username: {}, email: {}.'.format(self.username, self.email)
Exemple #14
0
class Candidate(db.Model):
    # __tablename__ = 'candidates'
    candidate_id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20), nullable=False)

    skills = db.relationship(
        'Skill', secondary=candidate_skills,
        backref=db.backref('candidate', lazy='dynamic')
    )

    def __repr__(self):
        return '<Candidate %r %r>' % (self.title, self.skills)
class Wards(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    sub_county = db.Column(
        db.Integer,
        db.ForeignKey('sub_counties.id'),
        nullable=False,
    )

    def __init__(self, name, sub_county):
        self.name = name
        self.sub_county = sub_county
class Genres(db.Model):
    __tablename__ = 'genres'

    id = db.Column('id', db.Integer, primary_key=True)
    genre = db.Column('genre', db.String(250), unique=True)

    def __init__(self, id, genre):
        self.id = id
        self.genre = genre

    def as_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}
Exemple #17
0
class Character(db.Model):
    __tablename__ = 'characters'

    pk = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    cv = db.Column(db.Text)
    note = db.Column(db.Text)
    x = db.Column(db.Integer)
    y = db.Column(db.Integer)
    width = db.Column(db.Integer)
    height = db.Column(db.Integer)
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
    updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
class Users(db.Model):
    __tablename__ = 'users'

    id = db.Column('id', db.Integer, primary_key=True)
    name = db.Column('name', db.String(150))
    username = db.Column('username', db.String(250), unique=True)
    email = db.Column('email', db.String(100), unique=True)
    password = db.Column('password', db.Text)
    terms = db.Column('terms', db.Boolean)
    created_at = db.Column('created_at', db.DateTime)
    updated_at = db.Column('updated_at', db.DateTime)

    def __init__(self, id, name, username, email, password, terms, created_at,
                 updated_at):
        self.name = name
        self.id = id
        self.username = username
        self.email = email
        self.password = password
        self.terms = terms
        self.created_at = created_at
        self.updated_at = updated_at

    def as_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}
Exemple #19
0
class Type(db.Model):
    __tablename__ = 'type'
    id = db.Column(db.Integer, primary_key=True)
    group_id = db.Column(db.Integer, db.ForeignKey(Group.id))
    name = db.Column(db.String(100))
    redlisted = db.Column(db.Boolean, default=False)
    price = db.Column(db.Float, default=0.)

    @classmethod
    def get(cls, id):
        type = db.session.query(cls).get(id)
        if type is None:
            type_dict = esi.get_op(
                'get_universe_types_type_id',
                type_id=id,
            )
            Group.get(type_dict['group_id'])
            type = Type(id=id,
                        name=type_dict['name'],
                        group_id=type_dict['group_id'])
            db.session.add(type)
            db.session.commit()
        return type

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(Type).filter(Type.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        if len(missing_ids) > 0:
            new_data_dict = esi.get_op('get_universe_types_type_id',
                                       type_id=list(missing_ids))
            group_ids = set(item['group_id']
                            for item in new_data_dict.values())
            Group.get_multi(list(group_ids))
            prices = get_prices(missing_ids)
            for type_id, type_data in new_data_dict.items():
                type = Type(id=type_id,
                            name=type_data['name'],
                            group_id=type_data['group_id'],
                            price=prices.get(type_id, 0))
                db.session.add(type)
                return_items[type_id] = type
            db.session.commit()
        return return_items

    @property
    def is_redlisted(self):
        return self.redlisted
Exemple #20
0
class Answer(db.Model):
    __tablename__ = 'answer'
    question_id = db.Column(db.Integer,
                            db.ForeignKey(Question.id),
                            primary_key=True)
    question = db.relationship("Question",
                               uselist=False,
                               back_populates='answers')
    application_id = db.Column(db.Integer,
                               db.ForeignKey(Application.id),
                               primary_key=True)
    application = db.relationship("Application",
                                  uselist=False,
                                  back_populates="answers")
    text = db.Column(db.Text)
Exemple #21
0
class Skill(db.Model):
    # __tablename__ = 'skills'
    skill_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), unique=True, nullable=False)

    jobs = db.relationship('Job',
                           secondary="job_requirements",
                           backref='job_skill',
                           lazy="dynamic")
    candidates = db.relationship('Candidate',
                                 secondary="candidate_skills",
                                 backref='candidate_skill',
                                 lazy="dynamic")

    def __repr__(self):
        return '<Skill %r>' % self.name
Exemple #22
0
class System(db.Model):
    __tablename__ = 'system'
    id = db.Column(db.Integer, primary_key=True)
    region_id = db.Column(db.Integer, db.ForeignKey(Region.id))
    region = db.relationship(Region, uselist=False)
    name = db.Column(db.String(100))
    redlisted = db.Column(db.Boolean, default=False)

    @classmethod
    def get(cls, id):
        system = db.session.query(cls).get(id)
        if system is None:
            system_data = esi.get_op(
                'get_universe_systems_system_id',
                system_id=id,
            )
            constellation_data = esi.get_op(
                'get_universe_constellations_constellation_id',
                constellation_id=system_data['constellation_id'],
            )
            region = Region.get(constellation_data['region_id'])
            system = System(
                id=id,
                region_id=constellation_data['region_id'],
                name=system_data['name'],
            )
            db.session.add(system)
            db.session.commit()
        return system

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(cls).filter(cls.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        for id in missing_ids:
            return_items[id] = cls.get(id)
        return return_items

    @property
    def is_redlisted(self):
        if self.redlisted:
            return True
        else:
            region = Region.get(self.region_id)
            return region.is_redlisted
Exemple #23
0
class Alliance(db.Model):
    __tablename__ = 'alliance'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    ticker = db.Column(db.String(20))
    redlisted = db.Column(db.Boolean, default=False)
    corporations = db.relationship('Corporation', back_populates='alliance')

    @classmethod
    def get(cls, id, *args, **kwargs):
        alliance = db.session.query(cls).get(id)
        if alliance is None:
            alliance_data = esi.get_op(
                'get_alliances_alliance_id',
                alliance_id=id,
            )
            alliance = Alliance(id=id,
                                name=alliance_data['name'],
                                ticker=alliance_data['ticker'])
            db.session.add(alliance)
            db.session.commit()
        return alliance

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(Alliance).filter(
            Alliance.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        if len(missing_ids) > 0:
            new_data_dict = esi.get_op('get_alliances_alliance_id',
                                       alliance_id=list(missing_ids))
            for alliance_id, data in new_data_dict.items():
                alliance = Alliance(id=alliance_id,
                                    name=data['name'],
                                    ticker=data['ticker'])
                db.session.add(alliance)
                return_items[alliance_id] = alliance
            db.session.commit()
        return return_items

    @property
    def is_redlisted(self):
        return self.redlisted
Exemple #24
0
class Image(db.Model):
    __tablename__ = 'images'
    id = db.Column(db.Integer, primary_key=True)
    application_id = db.Column(db.Integer, db.ForeignKey(Application.id))
    application = db.relationship(Application, back_populates='images')
    is_confirmed = db.Column(db.Boolean, default=False, nullable=False)

    @property
    def url(self):
        if not app.config.get('TESTING'):
            s3 = boto3.client(
                's3',
                region_name=aws_region_name,
                endpoint_url=aws_endpoint_url,
                config=Config(signature_version=aws_signature_version),
            )
            url = s3.generate_presigned_url('get_object',
                                            Params={
                                                'Bucket': aws_bucket_name,
                                                'Key': self.filename
                                            },
                                            ExpiresIn=3600)
        else:
            url = 'placeholder url for {}'.format(self.id)
        return url

    @property
    def filename(self):
        return str(self.id)

    @classmethod
    def delete(cls, id, key):
        if not app.config.get('TESTING'):
            s3 = boto3.client(
                's3',
                region_name=aws_region_name,
                endpoint_url=aws_endpoint_url,
                config=Config(signature_version=aws_signature_version),
            )
            s3.delete_object(
                Bucket=aws_bucket_name,
                Key=key,
            )
            Image.query.filter_by(id=id).delete()
            db.session.commit()
Exemple #25
0
class User(db.Model, UserMixin):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    characters = db.relationship('Character',
                                 uselist=True,
                                 back_populates='user')
    recruiter = db.relationship('Recruiter', uselist=False)
    admin = db.relationship('Admin', uselist=False)
    applications = db.relationship('Application',
                                   uselist=True,
                                   back_populates='user')
    redlisted = db.Column(db.Boolean, default=False)

    @classmethod
    def get(cls, id):
        user = db.session.query(cls).get(id)
        if user is None:
            character = Character.get(id=id)
            user = cls(id=id, name=character.name)
            db.session.add(user)
            db.session.commit()
            if character.user_id is None:
                character.user_id = user.id
                db.session.commit()
        return user

    def get_id(self):
        return self.id

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(cls).filter(cls.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        for id in missing_ids:
            return_items[id] = cls.get(id)
        return return_items

    @property
    def is_redlisted(self):
        return self.redlisted
Exemple #26
0
class Region(db.Model):
    __tablename__ = 'region'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    redlisted = db.Column(db.Boolean, default=False)

    esi_op_name = 'get_universe_regions_region_id'
    esi_id_name = 'region_id'

    @classmethod
    def _construct(cls, esi_data):
        return cls(id=esi_data[cls.esi_id_name], name=esi_data['name'])

    @classmethod
    def get(cls, id):
        result = db.session.query(cls).get(id)
        if result is None:
            esi_data = esi.get_op(cls.esi_op_name, **{cls.esi_id_name: id})
            result = cls._construct(esi_data)
            db.session.add(result)
            db.session.commit()
        return result

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(cls).filter(cls.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        if len(missing_ids) > 0:
            new_data_dict = esi.get_op(cls.esi_op_name,
                                       **{cls.esi_id_name: list(missing_ids)})
            for id, esi_data in new_data_dict.items():
                return_items[id] = cls._construct(esi_data)
                db.session.add(return_items[id])
            db.session.commit()
        return return_items

    @property
    def is_redlisted(self):
        return self.redlisted
Exemple #27
0
class Show(db.Model):
    __tablename__ = 'Show'

    id: int = db.Column(db.Integer, primary_key=True, autoincrement=True)
    start_time: datetime = db.Column(db.DateTime)

    # Foreign keys
    venue_id: int = db.Column(db.Integer,
                              db.ForeignKey('Venue.id'),
                              primary_key=True,
                              nullable=False)
    artist_id: int = db.Column(db.Integer,
                               db.ForeignKey('Artist.id'),
                               primary_key=True,
                               nullable=False)

    # Relationships
    venue = db.relationship('Venue',
                            backref=db.backref('shows', cascade='all, delete'))
    artist = db.relationship('Artist',
                             backref=db.backref('shows',
                                                cascade='all, delete'))
Exemple #28
0
class Note(db.Model):
    __tablename__ = 'note'
    id = db.Column(db.Integer, primary_key=True)
    author_id = db.Column(db.Integer)
    text = db.Column(db.Text)
    title = db.Column(db.Text, nullable=True)
    is_chat_log = db.Column(db.Boolean)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    application_id = db.Column(db.Integer, db.ForeignKey(Application.id))
    application = db.relationship("Application",
                                  uselist=False,
                                  back_populates="notes")
Exemple #29
0
class Group(db.Model):
    __tablename__ = 'group'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))

    @classmethod
    def get(cls, id):
        group = db.session.query(cls).get(id)
        if group is None:
            group_data = esi.get_op(
                'get_universe_groups_group_id',
                group_id=id,
            )
            group = Group(id=id, name=group_data['name'])
            db.session.add(group)
            db.session.commit()
        return group

    @classmethod
    def get_multi(cls, id_list):
        existing_items = db.session.query(Group).filter(Group.id.in_(id_list))
        return_items = {item.id: item for item in existing_items}
        missing_ids = set(id_list).difference(
            [item.id for item in existing_items])
        if len(missing_ids) > 0:
            new_data_dict = esi.get_op('get_universe_groups_group_id',
                                       group_id=list(missing_ids))
            for group_id, group_data in new_data_dict.items():
                group = Group(
                    id=group_id,
                    name=group_data['name'],
                )
                db.session.add(group)
                return_items[group_id] = group
            db.session.commit()
        return return_items
class BloodStock(Model):
    __tablename__ = "blood_stock"

    id = Column(db.BigInteger,
                primary_key=True,
                autoincrement=True,
                nullable=False)
    ab_positive = db.Column(db.BigInteger,
                            default=0,
                            nullable=False,
                            index=True)
    ab_negative = db.Column(db.BigInteger,
                            default=0,
                            nullable=False,
                            index=True)
    a_positive = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)
    a_negative = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)
    b_positive = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)
    b_negative = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)
    o_positive = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)
    o_negative = db.Column(db.BigInteger,
                           default=0,
                           nullable=False,
                           index=True)