class YearGroupMailingList(MailingAddressIntern): __tablename__ = 'year_group_list' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "year_group_list"} id = db.Column(db.Integer, db.ForeignKey('mail.intern.id'), primary_key=True) year_group_id = db.Column(db.Integer, db.ForeignKey('general.year_group.id'), primary_key=True, unique=True) def __init__(self, year_group_id, name): MailingAddressIntern.__init__(self, name) self.year_group_id = year_group_id def entries(self, revue_year): yg = YearGroup.query.get(self.year_group_id) return [u.email() for u in yg.members(revue_year)] def get_local_address_year(self, revue_year): return self.get_local_address() + revue_year.get_mail_affix() def get_entries_per_year(self): result = [] for y in revue.models.general.RevueYear.query.all(): result.append({"year": y, "entries": self.entries(y)}) return result
class MailingAlias(MailingAddressIntern): __tablename__ = 'alias' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "alias"} id = db.Column(db.Integer, db.ForeignKey('mail.intern.id'), primary_key=True) other_address_id = db.Column(db.Integer, db.ForeignKey('mail.address.id'), nullable=True) def other_address(self): return MailingAddress.query.get(self.other_address_id)
class MailingAddressLocal(MailingAddress): # TODO: let inherit from Internal! __tablename__ = 'local_address' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "local"} id = db.Column(db.Integer, db.ForeignKey('mail.address.id'), primary_key=True)
class PersistentGroupMailingList(MailingAddressIntern): __tablename__ = 'persistent_group_list' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "persistent_group_list"} id = db.Column(db.Integer, db.ForeignKey('mail.intern.id'), primary_key=True) persistent_group_id = db.Column( db.Integer, db.ForeignKey('general.persistent_group.id'), nullable=False, unique=True) def __init__(self, persistent_group_id, name): MailingAddressIntern.__init__(self, name) self.persistent_group_id = persistent_group_id def entries(self): pg = PersistentGroup.query.get(self.persistent_group_id) return [u.email() for u in pg.members()]
class MailingList(MailingAddressIntern): __tablename__ = 'list' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "list"} id = db.Column(db.Integer, db.ForeignKey('mail.intern.id'), primary_key=True) entries = relationship("MailingListEntry", backref="list") def __init__(self, name): MailingAddressIntern.__init__(self, name)
class MailingAddressExtern(MailingAddress): __tablename__ = 'extern_address' __table_args__ = {'schema': 'mail'} __mapper_args__ = {"polymorphic_identity": "extern"} id = db.Column(db.Integer, db.ForeignKey('mail.address.id'), primary_key=True) address = db.Column(db.String(150), nullable=False) def __init__(self, address): MailingAddress.__init__(self) self.address = address def get_address(self): return self.address
class MailingAddressIntern(MailingAddress): __tablename__ = 'intern' __table_args__ = {'schema': 'mail'} __mapper_args__ = {'polymorphic_identity': "intern"} id = db.Column(db.Integer, db.ForeignKey('mail.address.id'), primary_key=True) name = db.Column(db.String(50), nullable=True, unique=True) def __init__(self, name): self.name = name def get_address(self): return self.name + "@" + os.environ['EMAIL_SUFFIX'] def get_local_address(self): return self.name