Esempio n. 1
0
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')
Esempio n. 2
0
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')
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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')
Esempio n. 6
0
class Group(db.Model):
    __tablename__ = 'group'
    __table_args__ = {'extend_existing': True}

    users: list = db.relationship('Tenant',
                                  secondary=User_Group,
                                  backref='Group')

    id: int = db.Column(db.Integer, primary_key=True)
    name: str = db.Column(db.String(100), nullable=False)
    preferred_locations: str = db.Column(db.String(100))
    preferred_room_quantity: int = db.Column(db.Integer)
    preferred_size: int = db.Column(db.Integer)
    budget: int = db.Column(db.Integer)
Esempio n. 7
0
class RentalObject(db.Model):
    __tablename__ = 'rental_object'
    __mapper_args = {
        'polymorphic_identity': 'rental_object',
        'polymorphic_on': type
    }

    id: int = db.Column(db.Integer, primary_key=True, nullable=False)
    description: str = db.Column(db.String(200))
    area_description: str = db.Column(db.String(200))
    equipment: str = db.Column(db.String(200))
    address: str = db.Column(db.String)
    price: float = db.Column(db.Float)
    opinions: list = db.relationship('Opinion', back_populates='rental_object')