class Volunteer(User): __tablename__ = 'volunteers' id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) def hours(start_time, end_time): ''' Calculate hours spent volunteering between time arguments ''' pass __mapper_args__ = { 'polymorphic_identity':'volunteer' }
class Admin(User): __tablename__ = 'admins' id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) password = db.Column(db.VARCHAR(255)) __mapper_args__ = { 'polymorphic_identity':'admin' } def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return self.id
class Event(db.Model): __tablename__ = 'events' id = db.Column(db.Integer, primary_key=True) event_type = db.Column(db.Text, mysql.ENUM('shop_hours', 'shop_class', 'shop_special', 'remote_event'), default="shop_hours") event_name = db.Column(db.VARCHAR(255)) time_start = db.Column(db.DateTime, default=datetime.datetime.utcnow()) time_end = db.Column(db.DateTime) @staticmethod def get_current_event(): current = db.session.query(Event).order_by(Event.id.desc()).first() if not current: current = Event() current.event_name = "Default shop hours" db.session.add(current) db.session.commit() return current
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) uname = db.Column(db.VARCHAR(255), nullable = False) fullname = db.Column(db.VARCHAR(255), default="") email = db.Column(db.VARCHAR(255), default = "") uzip = db.Column(db.VARCHAR(5), default = "") utype = db.Column(db.VARCHAR(255), mysql.ENUM('admin','volunteer','guest', 'base_user'), default='base_user') __table_args__ = (UniqueConstraint('utype', 'uname', name='_uname_utype_uc'),) __mapper_args__ = { 'polymorphic_on':utype, 'polymorphic_identity':'base_user' }
class Signin(db.Model): __tablename__ = 'signins' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True, nullable=False) event_id = db.Column(db.Integer, db.ForeignKey('events.id'), primary_key=True, nullable=False) time_in = db.Column(db.DateTime, default=datetime.datetime.utcnow(), nullable=False) time_out = db.Column(db.DateTime, default=datetime.datetime.min, nullable=False) feedback = db.Column(db.TEXT, default='', nullable=False) notes = db.Column(db.VARCHAR(255), default="", nullable=True) user = db.relationship("User", backref="Signin") event = db.relationship("Event", backref="Signin")
class Guest(User): __tablename__ = 'guests' id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) __mapper_args__ = { 'polymorphic_identity':'guest' }