def test_merge_alias_dicts(self): aliases1 = {"ns1":["idA", "idB", "id1"]} aliases2 = {"ns1":["idA", "id3", "id4"], "ns2":["id1", "id2"]} response = item_module.merge_alias_dicts(aliases1, aliases2) print response expected = {'ns1': ['idA', 'idB', 'id1', 'id3', 'id4'], 'ns2': ['id1', 'id2']} assert_equals(response, expected)
def update_item_with_new_aliases(cls, alias_dict, item_doc): if alias_dict == item_doc["aliases"]: item_doc = None else: item_obj = item_module.add_aliases_to_item_object(alias_dict, item_doc) merged_aliases = item_module.merge_alias_dicts(alias_dict, item_doc["aliases"]) item_doc["aliases"] = merged_aliases return(item_doc)
def update_item_with_new_aliases(cls, alias_dict, item_doc): if alias_dict == item_doc["aliases"]: item_doc = None else: item_obj = item_module.add_aliases_to_item_object( alias_dict, item_doc) merged_aliases = item_module.merge_alias_dicts( alias_dict, item_doc["aliases"]) item_doc["aliases"] = merged_aliases return (item_doc)
def wrapper(cls, tiid, input_aliases_dict, provider, method_name, aliases_providers_run, callback): #logger.info(u"{:20}: **Starting {tiid} {provider_name} {method_name} with {aliases}".format( # "wrapper", tiid=tiid, provider_name=provider.provider_name, method_name=method_name, aliases=aliases)) provider_name = provider.provider_name worker_name = provider_name + "_worker" input_alias_tuples = item_module.alias_tuples_from_dict( input_aliases_dict) method = getattr(provider, method_name) try: method_response = method(input_alias_tuples) except ProviderError: method_response = None logger.info( u"{:20}: **ProviderError {tiid} {method_name} {provider_name} " .format(worker_name, tiid=tiid, provider_name=provider_name.upper(), method_name=method_name.upper())) if method_name == "aliases": # update aliases to include the old ones too aliases_providers_run += [provider_name] if method_response: new_aliases_dict = item_module.alias_dict_from_tuples( method_response) new_canonical_aliases_dict = item_module.canonical_aliases( new_aliases_dict) response = item_module.merge_alias_dicts( new_canonical_aliases_dict, input_aliases_dict) else: response = input_aliases_dict else: response = method_response logger.info( u"{:20}: /biblio_print, RETURNED {tiid} {method_name} {provider_name} : {response}" .format(worker_name, tiid=tiid, method_name=method_name.upper(), provider_name=provider_name.upper(), response=response)) callback(tiid, response, method_name, aliases_providers_run) try: del thread_count[provider_name][tiid + method_name] except KeyError: # thread isn't there when we call wrapper in unit tests pass return response
def wrapper(cls, tiid, input_aliases_dict, provider, method_name, aliases_providers_run, callback): # logger.info(u"{:20}: **Starting {tiid} {provider_name} {method_name} with {aliases}".format( # "wrapper", tiid=tiid, provider_name=provider.provider_name, method_name=method_name, aliases=aliases)) provider_name = provider.provider_name worker_name = provider_name + "_worker" input_alias_tuples = item_module.alias_tuples_from_dict(input_aliases_dict) method = getattr(provider, method_name) try: method_response = method(input_alias_tuples) except ProviderError: method_response = None logger.info( u"{:20}: **ProviderError {tiid} {method_name} {provider_name} ".format( worker_name, tiid=tiid, provider_name=provider_name.upper(), method_name=method_name.upper() ) ) if method_name == "aliases": # update aliases to include the old ones too aliases_providers_run += [provider_name] if method_response: new_aliases_dict = item_module.alias_dict_from_tuples(method_response) new_canonical_aliases_dict = item_module.canonical_aliases(new_aliases_dict) response = item_module.merge_alias_dicts(new_canonical_aliases_dict, input_aliases_dict) else: response = input_aliases_dict else: response = method_response logger.info( u"{:20}: /biblio_print, RETURNED {tiid} {method_name} {provider_name} : {response}".format( worker_name, tiid=tiid, method_name=method_name.upper(), provider_name=provider_name.upper(), response=response, ) ) callback(tiid, response, method_name, aliases_providers_run) try: del thread_count[provider_name][tiid + method_name] except KeyError: # thread isn't there when we call wrapper in unit tests pass return response
logger.info(u"{:20}: **ProviderError {tiid} {method_name} {provider_name}, Exception type {exception_type} {exception_arguments}".format( worker_name, tiid=tiid, provider_name=provider_name.upper(), method_name=method_name.upper(), exception_type=type(e).__name__, exception_arguments=e.args)) logger.info(u"{:20}: /biblio_print, RETURNED {tiid} {method_name} {provider_name} : {method_response}".format( worker_name, tiid=tiid, method_name=method_name.upper(), provider_name=provider_name.upper(), method_response=method_response)) if method_name == "aliases" and method_response: initial_alias_dict = item_module.alias_dict_from_tuples(method_response) new_canonical_aliases_dict = item_module.canonical_aliases(initial_alias_dict) full_aliases_dict = item_module.merge_alias_dicts(new_canonical_aliases_dict, input_aliases_dict) else: full_aliases_dict = input_aliases_dict add_to_database_if_nonzero(tiid, method_response, method_name, provider_name) return full_aliases_dict # last variable is an artifact so it has same call signature as other callbacks def add_to_database_if_nonzero( tiid, new_content, method_name,