コード例 #1
0
def from0to1(registry):
    class Request(object):
        def __init__(self, registry):
            self.registry = registry

    results = registry.db.iterview('auctions/all', 2 ** 10, include_docs=True)

    request = Request(registry)
    root = Root(request)
    procurement_method_types = get_procurement_method_types(registry, ('dgfInsider',))

    docs = []
    for i in results:
        auction = i.doc

        changed = migrate_awarding2_to_awarding3(auction, registry.server_id, procurement_method_types)
        if not changed:
            continue
        model = registry.auction_procurementMethodTypes.get(auction['procurementMethodType'])
        if model:
            try:
                auction = model(auction)
                auction.__parent__ = root
                auction = auction.to_primitive()
            except: # pragma: no cover
                LOGGER.error("Failed migration of auction {} to schema 1.".format(auction.id), extra={'MESSAGE_ID': 'migrate_data_failed', 'AUCTION_ID': auction.id})
            else:
                auction['dateModified'] = get_now().isoformat()
                docs.append(auction)
        if len(docs) >= 2 ** 7:  # pragma: no cover
            registry.db.update(docs)
            docs = []
    if docs:
        registry.db.update(docs)
コード例 #2
0
def from2to3(registry):
    class Request(object):
        def __init__(self, registry):
            self.registry = registry

    results = registry.db.iterview('auctions/all', 2 ** 10, include_docs=True)

    request = Request(registry)
    root = Root(request)

    docs = []
    for i in results:
        auction = i.doc
        procurement_method_types = get_procurement_method_types(
            registry, ['swiftsure']
        )

        if auction['procurementMethodType'] not in procurement_method_types or auction['status'] != 'active.awarded' or 'contracts' not in auction:
            continue

        changed = False
        contract = filter(lambda x: x['status'] == 'pending', auction['contracts'])[0]
        award = filter(lambda x: x['id'] == contract['awardID'], auction['awards'])[0]
        if not award['complaintPeriod'].get('endDate', False):
            award['complaintPeriod']['endDate'] = contract['date']
            changed = True

        if not auction['awardPeriod'].get('endDate', False):
            auction['awardPeriod']['endDate'] = contract['date']
            changed = True

        if not changed:
            continue

        auction_id = auction['_id']

        model = registry.auction_procurementMethodTypes.get(auction['procurementMethodType'])
        if model:
            try:
                auction = model(auction)
                auction.__parent__ = root
                auction = auction.to_primitive()
            except: # pragma: no cover
                LOGGER.error("Failed migration of auction {} to schema 3.".format(auction_id), extra={'MESSAGE_ID': 'migrate_data_failed', 'AUCTION_ID': auction_id})
            else:
                LOGGER.info("Auction {} migrated to schema 3.".format(auction_id), extra={'MESSAGE_ID': 'migrate_data', 'AUCTION_ID': auction_id})
                auction['dateModified'] = get_now().isoformat()
                docs.append(auction)
        if len(docs) >= 2 ** 7: # pragma: no cover
            registry.db.update(docs)
            docs = []
    if docs:
        registry.db.update(docs)