コード例 #1
0
async def test_cleaning_with_accepted_offer(
        db: Database, test_user2: UserInDB, test_user3: UserInDB,
        test_user_list: List[UserInDB]) -> CleaningInDB:
    cleaning_repo = CleaningsRepository(db)
    offers_repo = OffersRepository(db)

    new_cleaning = CleaningCreate(
        name="cleaning with offers",
        description="desc for cleaning",
        price=9.99,
        cleaning_type="full_clean",
    )

    created_cleaning = await cleaning_repo.create_cleaning(
        new_cleaning=new_cleaning, requesting_user=test_user2)

    offers = []
    for user in test_user_list:
        offers.append(
            await offers_repo.create_offer_for_cleaning(new_offer=OfferCreate(
                cleaning_id=created_cleaning.id, user_id=user.id)))

    await offers_repo.accept_offer(
        offer=[o for o in offers if o.user_id == test_user3.id][0],
        offer_update=OfferUpdate(status="accepted"))

    return created_cleaning
コード例 #2
0
async def test_cleaning_with_accepted_offer(
        db: Database, test_user2: UserInDB, test_user3: UserInDB,
        test_user_list: List[UserInDB]) -> CleaningInDB:
    '''
    We're creating a cleaning with offers from everyone in the test_user_list 
    and having test_user2 accept the offer from test_user3.
    '''
    cleaning_repo = CleaningsRepository(db)
    offers_repo = OffersRepository(db)

    new_cleaning = CleaningCreate(
        name='cleaning with offers',
        description='desc for cleaning',
        price=9.99,
        cleaning_type='full_clean',
    )

    created_cleaning = await cleaning_repo.create_cleaning(
        new_cleaning=new_cleaning, requesting_user=test_user2)

    offers = []
    for user in test_user_list:
        offers.append(
            await offers_repo.create_offer_for_cleaning(new_offer=OfferCreate(
                cleaning_id=created_cleaning.id, user_id=user.id)))

    await offers_repo.accept_offer(
        offer=[offer for offer in offers if offer.user_id == test_user3.id][0],
        offer_update=OfferUpdate(status='accepted'))

    return created_cleaning
コード例 #3
0
async def create_offer(
    cleaning: CleaningInDB = Depends(get_cleaning_by_id_from_path),
    current_user: UserInDB = Depends(get_current_active_user),
    offers_repo: OffersRepository = Depends(get_repository(OffersRepository)),
) -> OfferPublic:
    return await offers_repo.create_offer_for_cleaning(
        new_offer=OfferCreate(cleaning_id=cleaning.id, user_id=current_user.id)
    )
コード例 #4
0
 async def create_offer_for_cleaning(self, *,
                                     new_offer: OfferCreate) -> OfferInDB:
     created_offer = await self.db.fetch_one(
         query=CREATE_OFFER_FOR_CLEANING_QUERY,
         values={
             **new_offer.dict(), "status": "pending"
         })
     return OfferInDB(**created_offer)
コード例 #5
0
ファイル: offers.py プロジェクト: jeancarlosdanese/phresh
 async def create_offer_for_cleaning(self, *,
                                     new_offer: OfferCreate) -> OfferInDB:
     try:
         created_offer = await self.db.fetch_one(
             query=CREATE_OFFER_FOR_CLEANING_QUERY,
             values={
                 **new_offer.dict(), "status": "pending"
             })
         return OfferInDB(**created_offer)
     except UniqueViolationError:
         raise HTTPException(
             status_code=status.HTTP_400_BAD_REQUEST,
             detail=
             "Users aren't allowed create more than one offer for a cleaning job.",
         )
コード例 #6
0
    async def create_offer_for_cleaning(self, *, new_offer: OfferCreate) -> OfferInDB:
        try:
            created_offer = await self.db.fetch_one(
                query=CREATE_OFFER_FOR_CLEANING_QUERY, values={**new_offer.dict(), "status": "pending"}
            )
            return OfferInDB(**created_offer)

        # this looks very familiar to the 403 unauthorized request we've refactored all
        # over the place into its own dependency. Catching a UniqueViolationError as a
        # way to prevent duplicate entries is another permissions issue. When we see
        # this, our thinking should go directly to dependencies.
        except UniqueViolationError:
            raise HTTPException(
                status_code=status.HTTP_400_BAD_REQUEST,
                detail="Users aren't allowed create more than one offer for a cleaning job.",
            )
コード例 #7
0
ファイル: conftest.py プロジェクト: jeancarlosdanese/phresh
async def test_cleaning_with_offers(
        db: Database, test_user2: UserInDB,
        test_user_list: List[UserInDB]) -> CleaningInDB:
    cleaning_repo = CleaningsRepository(db)
    offers_repo = OffersRepository(db)
    new_cleaning = CleaningCreate(
        name="cleaning with offers",
        description="desc for cleaning",
        price=9.99,
        cleaning_type="full_clean",
    )
    created_cleaning = await cleaning_repo.create_cleaning(
        new_cleaning=new_cleaning, requesting_user=test_user2)
    for user in test_user_list:
        await offers_repo.create_offer_for_cleaning(new_offer=OfferCreate(
            cleaning_id=created_cleaning.id, user_id=user.id))
    return created_cleaning
コード例 #8
0
async def create_cleaning_with_evaluation_offer_helper(
        db: Database, owner: UserInDB, cleaner: UserInDB,
        cleaning_create: CleaningCreate,
        evaluation_create: EvaluationCreate) -> CleaningInDB:
    cleaning_repo = CleaningsRepository(db)
    offers_repo = OffersRepository(db)
    evals_repo = EvaluationsRepository(db)

    created_cleaning = await cleaning_repo.create_cleaning(
        new_cleaning=cleaning_create, requesting_user=owner)
    offer = await offers_repo.create_offer_for_cleaning(new_offer=OfferCreate(
        cleaning_id=created_cleaning.id, user_id=cleaner.id))
    await offers_repo.accept_offer(offer=offer,
                                   offer_update=OfferUpdate(status="accepted"))
    await evals_repo.create_evaluation_for_cleaner(
        evaluation_create=evaluation_create,
        cleaning=created_cleaning,
        cleaner=cleaner,
    )
    return created_cleaning