Ejemplo n.º 1
0
class User(db.Model):
    __tablename__ = 'user'
    __mapper_args = {'polymorphic_identity': 'user', 'polymorphic_on': type}

    id: int = db.Column(db.Integer, primary_key=True, nullable=False)
    pesel = db.Column(db.String(11), unique=True, nullable=False)
    name: str = db.Column(db.String(50), nullable=False)
    surname = db.Column(db.String(50), nullable=False)
    email: str = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(100), nullable=False)

    @validates('email')
    def validate_email(self, key, email):
        assert '@' in email, "Not valid email: email should contain '@'"
        return email

    @validates('password')
    def validate_password(self, key, password):
        assert password is not None, "Password can not be empty"
        return password

    @validates('pesel')
    def validate_pesel(self, key, pesel):
        assert len(pesel) == 11, "Bad pesel's length"
        return pesel

    @validates('name')
    def validate_name(self, key, name):
        assert name is not None, "Name can not be empty"
        return name

    @validates('surname')
    def validate_surname(self, key, surname):
        assert surname is not None, "Surname can not be empty"
        return surname
Ejemplo n.º 2
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)
Ejemplo n.º 3
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')
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
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')
Ejemplo n.º 7
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)