class CommonAgreement(RentalAgreement): __tablename__ = 'common_agreement' __mapper_args__ = { 'polymorphic_identity': 'common_agreement' } id = db.Column(db.Integer, db.ForeignKey('rental_agreement.id'), primary_key=True, nullable=False)
class RentBill(db.Model): __tablename__ = 'rent_bill' date_of_payment = db.Column(db.DATE) due_date = db.Column(db.DATE, nullable=False) tenant_id = db.Column(db.Integer, db.ForeignKey('tenant.id'), primary_key=True, nullable=False) tenant = db.relationship("Tenant", back_populates='bills') rental_agreement = db.relationship("RentalAgreement", back_populates='bills') rental_agreement_id = db.Column(db.Integer, db.ForeignKey('rental_agreement.id'), primary_key=True, nullable=False)
class Opinion(db.Model): __tablename__ = 'opinion' _available_rates = ("0", "1", "2", "3", "4", "5") comment: str = db.Column(db.String(200)) rate: float = db.Column(db.Float) author_id = db.Column(db.Integer, db.ForeignKey('tenant.id'), primary_key=True, nullable=False) author = db.relationship("Tenant", back_populates='opinions') rental_object = db.relationship("RentalObject", back_populates='opinions') rental_object_id = db.Column(db.Integer, db.ForeignKey('rental_object.id'), primary_key=True, nullable=False)
class OccasionalAgreement(RentalAgreement): __tablename__ = 'occasional_agreement' __mapper_args__ = {'polymorphic_identity': 'occasional_agreement'} id = db.Column(db.Integer, db.ForeignKey('rental_agreement.id'), primary_key=True, nullable=False) notary_confirmation = db.Column(db.String(100))
class LandLord(User): __tablename__ = 'landlord' __mapper_args__ = { 'polymorphic_identity': 'landlord', } id: int = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True, nullable=False) bank_account_number: str = db.Column(db.String(16), unique=True)
class Flat(RentalObject): __tablename__ = 'flat' __mapper_args__ = { 'polymorphic_identity': 'flat', 'inherit_condition': id == RentalObject.id } id: int = db.Column(db.Integer, db.ForeignKey('rental_object.id'), primary_key=True, nullable=False) rooms = db.relationship('Room')
class Tenant(User): __tablename__ = 'tenant' __mapper_args__ = {'polymorphic_identity': 'tenant'} id: int = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True, nullable=False) groups: list = db.relationship('Group', secondary=User_Group, backref='Tenant') opinions: list = db.relationship('Opinion', back_populates='author') bills: list = db.relationship('RentBill', back_populates='tenant')
class RentalAgreement(db.Model): __tablename__ = 'rental_agreement' __mapper_args = { 'polymorphic_identity': 'rental_agreement', 'polymorphic_on': type } id = db.Column(db.Integer, primary_key=True, nullable=False) start_date = db.Column(db.DATE) end_date = db.Column(db.DATE) rules_of_use = db.Column(db.String(300)) rental_object_id = db.Column(db.Integer, db.ForeignKey('rental_object.id')) rental_object = db.relationship('RentalObject') bills: list = db.relationship('RentBill', back_populates='rental_agreement')
from MAS.application import db User_Group = db.Table( 'user_group', db.Column('id', db.Integer, primary_key=True), db.Column('tenant_id', db.Integer, db.ForeignKey('tenant.id'), nullable=False), db.Column('group_id', db.Integer, db.ForeignKey('group.id'), nullable=False))