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)
示例#2
0
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)
示例#3
0
文件: utils.py 项目: lttga/op2
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)
示例#4
0
 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)}