def enhance_with_archive_items(self, items): if items: ids = list(set([item.get('item_id') for item in items if item.get('item_id')])) archive_items = [] archive_lookup = {} if ids: query = {'$and': [{config.ID_FIELD: {'$in': ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list(superdesk.get_resource_service(ARCHIVE) .get_from_mongo(req=archive_req, lookup=query)) takes_service = TakesPackageService() takes_service.enhance_items_with_takes_packages(archive_items) for item in archive_items: handle_existing_data(item) archive_lookup[item[config.ID_FIELD]] = item for item in items: archive_item = archive_lookup.get(item.get('item_id'), {config.VERSION: item.get(config.VERSION, 1)}) updates = { config.ID_FIELD: item.get('item_id'), 'item_id': item.get(config.ID_FIELD), 'lock_user': archive_item.get('lock_user', None), 'lock_time': archive_item.get('lock_time', None), 'lock_action': archive_item.get('lock_action', None), 'lock_session': archive_item.get('lock_session', None), 'archive_item': archive_item if archive_item else None } item.update(updates) handle_existing_data(item)
def enhance_with_archive_items(self, items): if items: ids = list(set([item.get("item_id") for item in items if item.get("item_id")])) archive_items = [] archive_lookup = {} if ids: query = {"$and": [{config.ID_FIELD: {"$in": ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list( superdesk.get_resource_service(ARCHIVE).get_from_mongo(req=archive_req, lookup=query) ) takes_service = TakesPackageService() takes_service.enhance_items_with_takes_packages(archive_items) for item in archive_items: handle_existing_data(item) archive_lookup[item[config.ID_FIELD]] = item for item in items: archive_item = archive_lookup.get(item.get("item_id"), {config.VERSION: item.get(config.VERSION, 1)}) updates = { config.ID_FIELD: item.get("item_id"), "item_id": item.get(config.ID_FIELD), "lock_user": archive_item.get("lock_user", None), "lock_time": archive_item.get("lock_time", None), "lock_session": archive_item.get("lock_session", None), "archive_item": archive_item if archive_item else None, } item.update(updates) handle_existing_data(item)
def enhance_with_archive_items(self, items): if items: ids = list(set([item.get('item_id') for item in items if item.get('item_id')])) archive_items = [] if ids: query = {'$and': [{config.ID_FIELD: {'$in': ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list(superdesk.get_resource_service(ARCHIVE) .get_from_mongo(req=archive_req, lookup=query)) takes_service = TakesPackageService() for item in archive_items: handle_existing_data(item) takes_service.enhance_with_package_info(item) for item in items: archive_item = [i for i in archive_items if i.get(config.ID_FIELD) == item.get('item_id')] archive_item = archive_item[0] if len(archive_item) > 0 else \ {config.VERSION: item.get(config.VERSION, 1)} updates = { config.ID_FIELD: item.get('item_id'), 'item_id': item.get(config.ID_FIELD), 'lock_user': archive_item.get('lock_user', None), 'lock_time': archive_item.get('lock_time', None), 'lock_session': archive_item.get('lock_session', None), 'archive_item': archive_item if archive_item else None } item.update(updates) handle_existing_data(item)
def enhance_with_archive_items(self, items): if items: ids = list(set([item.get("item_id") for item in items if item.get("item_id")])) archive_items = [] archive_lookup = {} if ids: query = {"$and": [{config.ID_FIELD: {"$in": ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list( superdesk.get_resource_service(ARCHIVE).get_from_mongo(req=archive_req, lookup=query) ) for item in archive_items: handle_existing_data(item) archive_lookup[item[config.ID_FIELD]] = item for item in items: archive_item = archive_lookup.get(item.get("item_id"), {config.VERSION: item.get(config.VERSION, 1)}) updates = { config.ID_FIELD: item.get("item_id"), "item_id": item.get(config.ID_FIELD), "lock_user": archive_item.get("lock_user", None), "lock_time": archive_item.get("lock_time", None), "lock_action": archive_item.get("lock_action", None), "lock_session": archive_item.get("lock_session", None), "archive_item": archive_item if archive_item else None, } item.update(updates) handle_existing_data(item)
def enhance_with_archive_items(self, items): if items: ids = list(set([item.get("item_id") for item in items if item.get("item_id")])) archive_items = [] if ids: query = {"$and": [{config.ID_FIELD: {"$in": ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list( superdesk.get_resource_service(ARCHIVE).get_from_mongo(req=archive_req, lookup=query) ) takes_service = TakesPackageService() for item in archive_items: handle_existing_data(item) takes_service.enhance_with_package_info(item) for item in items: try: archive_item = [i for i in archive_items if i.get(config.ID_FIELD) == item.get("item_id")][0] except IndexError: logger.exception( ( "Data inconsistency found for the published item {}. " "Cannot find item {} in the archive collection." ).format(item.get(config.ID_FIELD), item.get("item_id")) ) archive_item = {} updates = { config.ID_FIELD: item.get("item_id"), "item_id": item.get(config.ID_FIELD), "lock_user": archive_item.get("lock_user", None), "lock_time": archive_item.get("lock_time", None), "lock_session": archive_item.get("lock_session", None), "archive_item": archive_item if archive_item else None, } item.update(updates) handle_existing_data(item)
def enhance_with_archive_items(self, items): if items: ids = list(set([item.get('item_id') for item in items if item.get('item_id')])) archive_items = [] if ids: query = {'$and': [{'_id': {'$in': ids}}]} archive_req = ParsedRequest() archive_req.max_results = len(ids) # can't access published from elastic due filter on the archive resource hence going to mongo archive_items = list(superdesk.get_resource_service(ARCHIVE) .get_from_mongo(req=archive_req, lookup=query)) takes_service = TakesPackageService() for item in archive_items: handle_existing_data(item) takes_service.enhance_with_package_info(item) for item in items: try: archive_item = [i for i in archive_items if i.get('_id') == item.get('item_id')][0] except IndexError: logger.exception(('Data inconsistency found for the published item {}. ' 'Cannot find item {} in the archive collection.') .format(item.get('_id'), item.get('item_id'))) archive_item = {} updates = { '_id': item.get('item_id'), 'item_id': item.get('_id'), 'lock_user': archive_item.get('lock_user', None), 'lock_time': archive_item.get('lock_time', None), 'lock_session': archive_item.get('lock_session', None), 'archive_item': archive_item if archive_item else None } item.update(updates) handle_existing_data(item)
def find_one(self, req, **lookup): item = super().find_one(req, **lookup) handle_existing_data(item) return item