class HrApplication(SurrogatePK, TimeMixin, Model): # query_class = HrApplicationQuery __tablename__ = 'hr_applications' __searchable__ = ['thesis', 'how_long', 'notable_accomplishments', 'corporation_history', 'why_leaving', 'what_know', 'what_expect', 'bought_characters', 'why_interested', 'find_out', 'favorite_role', 'main_character_name'] main_character_name = Column(db.Unicode, nullable=True) alt_application = Column(db.Boolean, default=False) characters = relationship('EveCharacter', secondary=character_apps, backref=db.backref('hr_applications', lazy='dynamic'), lazy='dynamic') thesis = Column(db.UnicodeText, nullable=True) how_long = Column(db.Text, nullable=True) notable_accomplishments = Column(db.Text, nullable=True) corporation_history = Column(db.Text, nullable=True) why_leaving = Column(db.Text, nullable=True) what_know = Column(db.Text, nullable=True) what_expect = Column(db.Text, nullable=True) bought_characters = Column(db.Text, nullable=True) why_interested = Column(db.Text, nullable=True) goon_interaction = Column(db.Text, nullable=True) friends = Column(db.Text, nullable=True) scale = Column(db.Text, nullable=True) find_out = Column(db.Text, nullable=True) favorite_role = Column(db.Text, nullable=True) user_id = ReferenceCol('users', nullable=True) reviewer_user_id = ReferenceCol('users', nullable=True) last_user_id = ReferenceCol('users', nullable=True) approved_denied = Column(db.Text, default="New") hidden = Column(db.Boolean, nullable=True, default=False) # search_vector = Column(TSVectorType('main_character_name', 'thesis')) user = relationship('User', foreign_keys=[user_id], backref='hr_applications') reviewer_user = relationship('User', foreign_keys=[reviewer_user_id], backref='hr_applications_reviewed') last_action_user = relationship('User', foreign_keys=[last_user_id], backref='hr_applications_touched') training = Column(db.Boolean, default=False) def __str__(self): return '<Application %r>' % str(self.main_character_name)
class EveCharacter(Model, TimeMixin): __tablename__ = 'characters' character_id = Column(db.String(254), primary_key=True) character_name = Column(db.String(254)) corporation_id = ReferenceCol('corporations', pk_name='corporation_id', nullable=True) corporation = relationship('EveCorporationInfo', backref='characters', foreign_keys=[corporation_id]) api_id = ReferenceCol('api_key_pairs', pk_name='api_id', nullable=True) api = relationship('EveApiKeyPair', backref='characters', foreign_keys=[api_id]) user_id = ReferenceCol('users', nullable=True) user = relationship('User', backref='characters', foreign_keys=[user_id]) skillpoints = Column(db.Integer, nullable=True) previous_users = db.relationship('User', secondary=previous_chars, backref=db.backref('previous_chars', lazy='dynamic'), lazy='dynamic') def __str__(self): return self.character_name
class User(SurrogatePK, Model, UserMixin): __tablename__ = 'users' email = Column(db.String(80), unique=True, nullable=False) #: The hashed password password = Column(db.String(128), nullable=True) created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow) active = Column(db.Boolean(), default=False) is_admin = Column(db.Boolean(), default=False) confirmed_at = Column(db.DateTime, nullable=True) last_login_at = Column(db.DateTime()) current_login_at = Column(db.DateTime()) last_login_ip = Column(db.String(100)) current_login_ip = Column(db.String(100)) login_count = Column(db.Integer) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'), lazy='dynamic') main_character_id = ReferenceCol('characters', pk_name='character_id', nullable=True) main_character = relationship('EveCharacter', backref='user_main_character', foreign_keys=[main_character_id]) def set_password(self, password): self.password = encrypt_password(password) self.save() def check_password(self, value): return verify_and_update_password(value, self) @classmethod def create(self, **kwargs): """Create a new record and save it the database.""" instance = self(**kwargs) if kwargs['password']: instance.password = encrypt_password(kwargs['password']) return instance.save() @property def get_ips(self): return self.last_login_ip.split(', ') + self.current_login_ip.split( ', ') def __repr__(self): return '<User({name})>'.format(name=self.email) def __str__(self): return self.email
class AuthInfo(SurrogatePK, Model): __tablename__ = 'auth_info' user_id = ReferenceCol('users', nullable=True) user = relationship('User', backref='auth_info') main_character_id = ReferenceCol('characters', pk_name='character_id', nullable=True) main_character = relationship('EveCharacter', lazy='subquery', backref=db.backref('auth_info', lazy='dynamic')) def __repr__(self): return '<AuthInfo({name})>'.format(name=self.user)
class HrApplicationComment(SurrogatePK, Model): __tablename__ = 'hr_comments' comment = Column(db.Text, nullable=True) application_id = ReferenceCol('hr_applications', nullable=False) user_id = ReferenceCol('users', nullable=False) last_update_time = Column(db.DateTime(), nullable=True) application = relationship('HrApplication', foreign_keys=[application_id], backref=db.backref('hr_comments', cascade="delete"), single_parent=True) user = relationship('User', backref=db.backref('hr_comments', lazy='dynamic')) def __repr__(self): return str(self.user) + " - Comment"
class User(SurrogatePK, Model, UserMixin): __tablename__ = 'users' username = Column(db.String(80), unique=True, nullable=True) email = Column(db.String(80), unique=True, nullable=False) #: The hashed password password = Column(db.String(128), nullable=True) created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow) active = Column(db.Boolean(), default=False) is_admin = Column(db.Boolean(), default=False) confirmed_at = Column(db.DateTime, nullable=True) last_login_at = Column(db.DateTime()) current_login_at = Column(db.DateTime()) last_login_ip = Column(db.String(100)) current_login_ip = Column(db.String(100)) login_count = Column(db.Integer) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) # def __init__(self, username, email, password=None, **kwargs): # db.Model.__init__(self, username=username, email=email, **kwargs) # if password: # self.set_password(password) # else: # self.password = None def set_password(self, password): self.password = bcrypt.generate_password_hash(password) def check_password(self, value): return bcrypt.check_password_hash(self.password, value) @property def full_name(self): return "{0} {1}".format(self.first_name, self.last_name) # def __repr__(self): # return '<User({username!r})>'.format(username=self.username) def __repr__(self): return '<User({name})>'.format(name=self.email)
class HrApplication(SurrogatePK, Model): __tablename__ = 'hr_applications' __searchable__ = [ 'thesis', 'how_long', 'notable_accomplishments', 'corporation_history', 'why_leaving', 'what_know', 'what_expect', 'bought_characters', 'why_interested', 'find_out', 'favorite_role', 'main_character_name' ] main_character_name = Column(db.Text, nullable=True) alt_application = Column(db.Boolean, default=False) characters = db.relationship('EveCharacter', secondary=character_apps, backref=db.backref('alt_apps', lazy='dynamic')) thesis = Column(db.Text, nullable=True) how_long = Column(db.Text, nullable=True) notable_accomplishments = Column(db.Text, nullable=True) corporation_history = Column(db.Text, nullable=True) why_leaving = Column(db.Text, nullable=True) what_know = Column(db.Text, nullable=True) what_expect = Column(db.Text, nullable=True) bought_characters = Column(db.Text, nullable=True) why_interested = Column(db.Text, nullable=True) goon_interaction = Column(db.Text, nullable=True) friends = Column(db.Text, nullable=True) scale = Column(db.Text, nullable=True) #reason_for_joining = Column(db.Text, nullable=True) find_out = Column(db.Text, nullable=True) favorite_role = Column(db.Text, nullable=True) last_update_time = Column(db.DateTime(), nullable=True) user_id = ReferenceCol('users', nullable=True) reviewer_user_id = ReferenceCol('users', nullable=True) last_user_id = ReferenceCol('users', nullable=True) approved_denied = Column(db.String(10), default="Pending") hidden = Column(db.Boolean, nullable=True, default=False) user = relationship('User', foreign_keys=[user_id], backref='hr_applications') reviewer_user = relationship('User', foreign_keys=[reviewer_user_id], backref='hr_applications_reviewed') last_action_user = relationship('User', foreign_keys=[last_user_id], backref='hr_applications_touched') # def __str__(self): # return self.user.auth_info + " - Application" def __str__(self): return '<Application %r>' % self.user.auth_info