class RoomNightAssignment(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id')) room_night = db.Column(db.Integer, db.ForeignKey('hotel_room_night.id'), nullable=False) hotel_room = db.Column(db.Integer, db.ForeignKey('hotel_room.id'))
class Badge(db.Model): id = db.Column(db.Integer, primary_key=True) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) badge_type = db.Column(db.Integer, db.ForeignKey('badge_type.id'), nullable=False) printed_number = db.Column(db.String(32), unique=False, nullable=True) printed_name = db.Column(db.String(256), nullable=False) search_name = db.Column(db.String(256), nullable=False) first_name = db.Column(db.String(128), nullable=False) last_name = db.Column(db.String(128), nullable=False) legal_name = db.Column(db.String(256), nullable=False) legal_name_matches = db.Column(db.Boolean) phone = db.Column(db.String(64), nullable=True) email = db.Column(db.String(128), unique=False, nullable=False) user = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True) uber_id = db.Column(db.String(128), unique=True, nullable=True) departments = db.relationship("Department", secondary="badge_to_department", back_populates="badges") room_night_requests = db.relationship("RoomNightRequest") room_night_assignments = db.relationship("RoomNightAssignment") room_night_approvals = db.relationship("RoomNightApproval") hotel_room_request = db.relationship("HotelRoomRequest") def __repr__(self): return '<Badge %r %r>' % (self.first_name, self.last_name)
class RoomNightRequest(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) requested = db.Column(db.Boolean) room_night = db.Column(db.Integer, db.ForeignKey('hotel_room_night.id'), nullable=False)
class HotelAntiRoommateRequest(db.Model): id = db.Column(db.Integer, primary_key=True) disallower = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) disallowed = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False)
class BadgeToRoomNight(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) room_block = db.Column(db.Integer, db.ForeignKey('hotel_room_block.id'), nullable=False) room_night = db.Column(db.Integer, db.ForeignKey('hotel_room_night.id'), nullable=False)
class RoomNightApproval(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) room_night = db.Column(db.Integer, db.ForeignKey('hotel_room_night.id'), nullable=False) department = db.Column(db.Integer, db.ForeignKey('department.id'), nullable=False) approved = db.Column(db.Boolean, nullable=False)
class HotelRoom(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), nullable=True) description = db.Column(db.String(256), nullable=True) disable_autofill = db.Column(db.Boolean, nullable=False, default=True) hotel_block = db.Column(db.Integer, db.ForeignKey('hotel_room_block.id'), nullable=False) hotel_location = db.Column(db.Integer, db.ForeignKey('hotel_location.id'), nullable=False)
class HotelRoom(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), nullable=True) notes = db.Column(db.String(512), nullable=True) messages = db.Column(db.String(512), nullable=True) hotel_block = db.Column(db.Integer, db.ForeignKey('hotel_room_block.id'), nullable=False) hotel_location = db.Column(db.Integer, db.ForeignKey('hotel_location.id'), nullable=False) completed = db.Column(db.Boolean) room_night_assignments = db.relationship('RoomNightAssignment')
class EmailReceipt(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.Integer, db.ForeignKey('email.id')) badge = db.Column(db.Integer, db.ForeignKey('badge.id')) source = db.Column(db.Integer, db.ForeignKey('email_source.id')) to_address = db.Column(db.String(1024), nullable=False) from_address = db.Column(db.String(1024), nullable=False) subject = db.Column(db.String(4096), nullable=False) body = db.Column(db.String(4096), nullable=False) timestamp = db.Column(db.DateTime(), nullable=False) def __repr__(self): return '<EmailReceipt %r>' % self.id
class Badge(db.Model): id = db.Column(db.Integer, primary_key=True) event_id = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) printed_number = db.Column(db.String(32), unique=False, nullable=True) printed_name = db.Column(db.String(256), nullable=False) first_name = db.Column(db.String(128), nullable=False) last_name = db.Column(db.String(128), nullable=False) legal_name = db.Column(db.String(256), nullable=False) legal_name_matches = db.Column(db.Boolean) email = db.Column(db.String(128), unique=False, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True) def __repr__(self): return '<Badge %r %r>' % (self.first_name, self.last_name)
class HotelRoomRequest(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) declined = db.Column(db.Boolean, nullable=True) prefer_department = db.Column(db.Boolean, nullable=True) preferred_department = db.Column(db.Integer, db.ForeignKey('department.id'), nullable=True) notes = db.Column(db.String(512), nullable=True) prefer_single_gender = db.Column(db.Boolean, nullable=True) preferred_gender = db.Column(db.String(64), nullable=True) noise_level = db.Column(db.String(64), nullable=True) smoke_sensitive = db.Column(db.Boolean, nullable=True) sleep_time = db.Column(db.String(64), nullable=True) room_night_justification = db.Column(db.String(512), nullable=True)
class Email(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), unique=True, nullable=False) description = db.Column(db.String(256), nullable=False) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) code = db.Column(db.String(4096), nullable=True) subject = db.Column(db.String(4096), nullable=False) body = db.Column(db.String(4096), nullable=False) active = db.Column(db.Boolean, nullable=False) send_once = db.Column(db.Boolean, nullable=False) source = db.Column(db.Integer, db.ForeignKey('email_source.id'), nullable=True) receipts = db.relationship("EmailReceipt") def __repr__(self): return '<Email %r>' % self.name
class Session(db.Model): id = db.Column(db.Integer, primary_key=True) user = db.Column(db.Integer, db.ForeignKey('user.id')) secret = db.Column(db.String(64)) last_active = db.Column(db.DateTime) def __repr__(self): return '<Session %r>' % self.id
class Department(db.Model): id = db.Column(db.Integer, primary_key=True) uber_id = db.Column(db.String(128), unique=True, nullable=True) description = db.Column(db.String(256), nullable=True) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) name = db.Column(db.String(256)) badges = db.relationship("Badge", secondary="badge_to_department", back_populates="departments")
class HotelRoomNight(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(16), nullable=False) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) restricted = db.Column(db.Boolean, nullable=False, default=False) restriction_type = db.Column(db.String(64), nullable=True) hidden = db.Column(db.Boolean, nullable=False, default=False) requests = db.relationship("RoomNightRequest") assignments = db.relationship("RoomNightAssignment") approvals = db.relationship("RoomNightApproval")
class EmailSource(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), unique=True, nullable=False) description = db.Column(db.String(256), nullable=True) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) address = db.Column(db.String(128), nullable=False) region = db.Column(db.String(64), nullable=False) ses_access_key = db.Column(db.String(128), nullable=False) ses_secret_key = db.Column(db.String(128), nullable=False) active = db.Column(db.Boolean) emails = db.relationship("Email") receipts = db.relationship("EmailReceipt") def __repr__(self): return '<EmailSource %r>' % self.name
class HotelLocation(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), nullable=False) address = db.Column(db.String(128), nullable=False) event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False) rooms = db.relationship("HotelRoom")
class HotelRoomBlock(db.Model): id = db.Column(db.Integer, primary_key=True) event = db.Column(db.Integer, db.ForeignKey('event.id')) name = db.Column(db.String(128), nullable=True) description = db.Column(db.String(256), nullable=True)
class RibbonToBadge(db.Model): id = db.Column(db.Integer, primary_key=True) ribbon = db.Column(db.Integer, db.ForeignKey('ribbon_type.id')) badge = db.Column(db.Integer, db.ForeignKey('badge.id'))
class BadgeToDepartment(db.Model): id = db.Column(db.Integer, primary_key=True) badge = db.Column(db.Integer, db.ForeignKey('badge.id'), nullable=False) department = db.Column(db.Integer, db.ForeignKey('department.id'), nullable=False)
class EmailTrigger(db.Model): id = db.Column(db.Integer, primary_key=True) trigger = db.Column(db.String(128), nullable=False) badge = db.Column(db.Integer, db.ForeignKey('badge.id')) context = db.Column(db.String(4096))
class Permission(db.Model): id = db.Column(db.Integer, primary_key=True) operation = db.Column(db.String(64), unique=True) role = db.Column(db.Integer, db.ForeignKey('role.id'))
class Grant(db.Model): # Null values become wildcards, i.e. if event is NULL, then the grant applies to all events id = db.Column(db.Integer, primary_key=True) user = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True) role = db.Column(db.Integer, nullable=True) department = db.Column(db.Integer, nullable=True)