def check_award_status(request, award, now):
    """Checking admission protocol loading by the owner in time."""
    auction = request.validated['auction']
    admission_protocol_overdue = admission_overdue_predicate(award, 'pending.admission', now)

    if admission_protocol_overdue:
        set_unsuccessful_award(request, auction, award, now)
def check_award_status(request, award, now):
    """Checking required documents loading and payment recieving in time."""
    auction = request.validated['auction']
    protocol_overdue = protocol_overdue_predicate(award,
                                                  'pending.verification', now)
    contract_overdue = contract_overdue_predicate(award, 'active', now)
    payment_overdue = (award.status == 'pending.payment'
                       and award['paymentPeriod']['endDate'] < now)
    if protocol_overdue or contract_overdue or payment_overdue:
        set_unsuccessful_award(request, auction, award, now)
def check_award_status(request, award, now):
    """Checking protocol and contract loading by the owner in time."""
    auction = request.validated['auction']
    protocol_overdue = protocol_overdue_predicate(award, 'pending', now)
    # seek for contract overdue
    related_contract = get_related_contract_of_award(award['id'], auction)
    contract_overdue = contract_overdue_predicate(
        related_contract, 'pending', now) if related_contract else None

    if protocol_overdue or contract_overdue:
        set_unsuccessful_award(request, auction, award, now)
    def test_unsuccessful_award(self):
        contract_status = 'status'
        need_status = 'active'
        need_award_id = uuid.uuid4().hex
        differ_id = uuid.uuid4().hex
        complain_end_date = get_now()
        end_data_award = munch.Munch({'endDate': True})
        end_data_action = munch.Munch({'endDate': True})

        contract = munch.Munch({
            'awardID': need_award_id,
            'status': contract_status
        })

        auction = munch.Munch({
            'status': True,
            'awardPeriod': end_data_action,
            'contracts': [contract]
        })

        award = munch.Munch({
            'id': need_award_id,
            'status': need_status,
            'complaintPeriod': end_data_award
        })
        request = mock.MagicMock()

        set_unsuccessful_award(request, auction, award, complain_end_date)
        self.assertEqual(
            1, request.content_configurator.back_to_awarding.call_count)
        self.assertEqual(contract.status, 'cancelled')
        self.assertEqual(auction.status, 'active.qualification')
        self.assertEqual(auction.awardPeriod.endDate, None)
        self.assertEqual(award.status, 'unsuccessful')
        self.assertEqual(award.complaintPeriod.endDate.isoformat(),
                         end_data_award.endDate.isoformat())

        award.status = 'not_active'
        auction.awardPeriod.endDate = True
        auction.status = 'not_changed'
        contract.status = 'not_cancelled'
        set_unsuccessful_award(request, auction, award, complain_end_date)
        self.assertEqual(auction.awardPeriod.endDate, True)
        self.assertEqual(auction.status, 'not_changed')
        self.assertEqual(contract.status, 'not_cancelled')
        self.assertEqual(
            2, request.content_configurator.back_to_awarding.call_count)

        award.status = 'active'
        award.id = differ_id
        set_unsuccessful_award(request, auction, award, complain_end_date)
        self.assertEqual(contract.status, 'not_cancelled')
        self.assertEqual(auction.status, 'active.qualification')
        self.assertEqual(auction.awardPeriod.endDate, None)