예제 #1
0
def test_update_apartment_ok(session: Session, landlord: Landlord,
                             application: Application):
    application.create_amenity(session, "first")
    amenity1 = session.query(Amenity).filter(Amenity.title == "first").first()
    assert not session.query(Apartment).count()
    application.create_apartment(
        session,
        landlord,
        name="Apartment Name",
        monthly_price=450.70,
        utilities_price=320.15,
        address="some address",
        country="Nigeria",
        state="Kano",
        city="Kano",
        description="Apartment description",
        house_type=HouseType.DUPLEX,
        bedrooms=3,
        bathrooms=4,
        size=1200,
        longitude=1324.5,
        latitude=324.6,
        furnish_type=FurnishType.UNFURNISHED,
        available_from=datetime.now().date(),
        available_to=datetime.now().date(),
        amenities=[amenity1],
    )
    assert session.query(Apartment).count() == 1
    apartment: Apartment = session.query(Apartment).all()[0]
    apartment.landlord == landlord
    apartment.name == "Apartment Name"
    apartment.monthly_price == 450.7
    apartment.utilities_price == 320.15
    apartment.address == "some address"
    apartment.country == "Nigeria"
    apartment.state == "Kano"
    apartment.city == "Kano"
    apartment.description == "Apartment description"
    apartment.house_type == HouseType.DUPLEX,
    apartment.bedrooms == 3
    apartment.bathrooms == 4
    apartment.size == 1200
    apartment.furnish_type == FurnishType.UNFURNISHED
    apartment.available_from == datetime.now().date()
    apartment.available_to == datetime.now().date(),
    apartment.amenities == [amenity1]
    application.create_amenity(session, "pool")
    application.create_amenity(session, "barn")
    assert session.query(Amenity).count() == 3
    amenities = session.query(Amenity).all()
    application.update_apartment(session,
                                 apartment.landlord,
                                 apartment.id,
                                 amenities=amenities)
    xapartment = application.apartment_service.get(session, apartment.id)
    assert xapartment.amenities == amenities
예제 #2
0
def update_apartment(
        apartment_id: UUID,
        data: ApartmentUpdateSchema,
        session: Session = Depends(dependencies.get_database_session),
        landlord: Landlord = Depends(dependencies.get_current_landlord),
        application: Application = Depends(dependencies.get_application),
):
    try:
        payload = data.dict(exclude_none=True)
        if "amenities" in payload:
            amenities = payload["amenities"]
            amenities = [
                session.query(Amenity).filter(Amenity.title == x).first()
                for x in amenities
            ]
            payload["amenities"] = amenities
        return application.update_apartment(session, landlord, apartment_id,
                                            **payload)
    except ApplicationError as e:
        if "not found" in str(e).lower():
            raise HTTPException(404, str(e))
        raise HTTPException(400, str(e))