def check_bids(request): tender = request.validated['tender'] if tender.lots: [ setattr(i.auctionPeriod, 'startDate', None) for i in tender.lots if i.numberOfBids < 2 and i.auctionPeriod and i.auctionPeriod.startDate ] [ setattr(i, 'status', 'unsuccessful') for i in tender.lots if i.numberOfBids == 0 and i.status == 'active' ] cleanup_bids_for_cancelled_lots(tender) if not set([i.status for i in tender.lots]).difference( set(['unsuccessful', 'cancelled'])): tender.status = 'unsuccessful' elif max([i.numberOfBids for i in tender.lots if i.status == 'active']) < 2: add_next_award(request) else: if tender.numberOfBids < 2 and tender.auctionPeriod and tender.auctionPeriod.startDate: tender.auctionPeriod.startDate = None if tender.numberOfBids == 0: tender.status = 'unsuccessful' if tender.numberOfBids == 1: add_next_award(request)
def check_bids(request): tender = request.validated["tender"] if tender.lots: [ setattr(i.auctionPeriod, "startDate", None) for i in tender.lots if i.numberOfBids < 2 and i.auctionPeriod and i.auctionPeriod.startDate ] [ setattr(i, "status", "unsuccessful") for i in tender.lots if i.numberOfBids == 0 and i.status == "active" ] cleanup_bids_for_cancelled_lots(tender) if not set([i.status for i in tender.lots]).difference( set(["unsuccessful", "cancelled"])): tender.status = "unsuccessful" elif max([i.numberOfBids for i in tender.lots if i.status == "active"]) < 2: add_next_award(request) else: if tender.numberOfBids < 2 and tender.auctionPeriod and tender.auctionPeriod.startDate: tender.auctionPeriod.startDate = None if tender.numberOfBids == 0: tender.status = "unsuccessful" if tender.numberOfBids == 1: add_next_award(request)
def check_bids(request): tender = request.validated["tender"] new_rules = get_first_revision_date(tender, default=get_now()) > RELEASE_2020_04_19 if tender.lots: [ setattr(i.auctionPeriod, "startDate", None) for i in tender.lots if i.numberOfBids < 2 and i.auctionPeriod and i.auctionPeriod.startDate ] [ setattr(i, "status", "unsuccessful") for i in tender.lots if i.numberOfBids == 0 and i.status == "active" ] cleanup_bids_for_cancelled_lots(tender) if not set([i.status for i in tender.lots]).difference( set(["unsuccessful", "cancelled"])): tender.status = "unsuccessful" elif max([i.numberOfBids for i in tender.lots if i.status == "active"]) < 2: add_next_award(request) else: if new_rules and any([ i.status not in ["active", "unsuccessful"] for i in tender.cancellations ]): return if tender.numberOfBids < 2 and tender.auctionPeriod and tender.auctionPeriod.startDate: tender.auctionPeriod.startDate = None if tender.numberOfBids == 0: tender.status = "unsuccessful" if tender.numberOfBids == 1: add_next_award(request)
def post(self): """Report auction results for lot. """ apply_patch(self.request, save=False, src=self.request.validated['tender_src']) if all([i.auctionPeriod and i.auctionPeriod.endDate for i in self.request.validated['tender'].lots if i.numberOfBids > 1 and i.status == 'active']): cleanup_bids_for_cancelled_lots(self.request.validated['tender']) add_next_award(self.request) if save_tender(self.request): self.LOGGER.info('Report auction results', extra=context_unpack(self.request, {'MESSAGE_ID': 'tender_lot_auction_post'})) return {'data': self.request.validated['tender'].serialize(self.request.validated['tender'].status)}