def test_create_tiids_from_aliases(self): aliases = [('url', 'http://starbucks.com'), ('url', 'http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124')] response = item_module.create_tiids_from_aliases(aliases, self.r) print response assert_greater(len(response.keys()))
def create_new_collection(cid, title, aliases, ip_address, refset_metadata, myredis, mydao): # logger.debug(u"in create_new_collection for {cid}".format( # cid=cid)) analytics_credentials = {} tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, analytics_credentials, myredis) # logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() coll_doc, key = make(cid) if refset_metadata: coll_doc["refset_metadata"] = refset_metadata coll_doc["ip_address"] = ip_address coll_doc["title"] = title alias_strings = get_alias_strings(aliases) coll_doc["alias_tiids"] = dict(zip(alias_strings, tiids)) collection_obj = create_objects_from_collection_doc(coll_doc) # logger.info(u"saved new collection '{id}' with {num_items} items.".format( # id=coll_doc["_id"], # num_items=len(coll_doc["alias_tiids"]))) # logger.debug(json.dumps(coll_doc, sort_keys=True, indent=4)) return (coll_doc, collection_obj)
def importer_post(provider_name): """ Gets aliases associated with a query from a given provider. """ input_string = request.json["input"] if provider_name == "pmids": provider_name = "pubmed" elif provider_name == "dois": provider_name = "crossref" elif provider_name == "urls": provider_name = "webpage" try: provider = ProviderFactory.get_provider(provider_name) except ImportError: abort_custom(404, "an importer for provider '{provider_name}' is not found".format( provider_name=provider_name)) try: aliases = provider.member_items(input_string) except ProviderItemNotFoundError: abort_custom(404, "item not found") except (ProviderTimeout, ProviderServerError): abort_custom(503, "timeout error, might be transient") except ProviderError: abort(500, "internal error from provider") tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, myredis) logger.debug(u"in provider_importer_get with {tiids_aliases_map}".format( tiids_aliases_map=tiids_aliases_map)) products_dict = format_into_products_dict(tiids_aliases_map) resp = make_response(json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return resp
def create_new_collection(cid, title, aliases, ip_address, refset_metadata, myredis, mydao): # logger.debug(u"in create_new_collection for {cid}".format( # cid=cid)) analytics_credentials = {} tiids_aliases_map = item_module.create_tiids_from_aliases( aliases, analytics_credentials, myredis) # logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() coll_doc, key = make(cid) if refset_metadata: coll_doc["refset_metadata"] = refset_metadata coll_doc["ip_address"] = ip_address coll_doc["title"] = title alias_strings = get_alias_strings(aliases) coll_doc["alias_tiids"] = dict(zip(alias_strings, tiids)) collection_obj = create_objects_from_collection_doc(coll_doc) # logger.info(u"saved new collection '{id}' with {num_items} items.".format( # id=coll_doc["_id"], # num_items=len(coll_doc["alias_tiids"]))) # logger.debug(json.dumps(coll_doc, sort_keys=True, indent=4)) return (coll_doc, collection_obj)
def test_create_tiids_from_aliases_biblio(self): aliases = [('biblio', self.BIBLIO_DATA)] response = item_module.create_tiids_from_aliases(aliases, {}, self.r) print response assert_equals(len(response.keys()), 1) expected = [("biblio", self.BIBLIO_DATA)] assert_items_equal(response.values(), expected)
def test_create_tiids_from_aliases(self): aliases = [('url', 'http://starbucks.com'), ('url', 'http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124')] response = item_module.create_tiids_from_aliases(aliases, {}, self.r) print response assert_equals(len(response.keys()), 2) expected = [('url', 'http://starbucks.com'), ('url', 'http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124')] assert_items_equal(response.values(), expected)
def products_post(): if "aliases" in request.json: tiids_aliases_map = item_module.create_tiids_from_aliases(request.json["aliases"], myredis) products_dict = format_into_products_dict(tiids_aliases_map) response = make_response(json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return response elif "tiids" in request.json: # overloading post for get because tiids string gets long logger.debug("in products_post with tiids, so getting products to return") tiids = request.json["tiids"] tiids_string = ",".join(tiids) return products_get(tiids_string) else: abort_custom(400, "bad arguments")
def importer_post(provider_name): # need to do these ugly deletes because import products not in dict. fix in future! try: profile_id = request.json["profile_id"] del request.json["profile_id"] except KeyError: abort(405, "missing profile_id") try: analytics_credentials = request.json["analytics_credentials"] del request.json["analytics_credentials"] except KeyError: analytics_credentials = {} try: existing_tiids = request.json["existing_tiids"] del request.json["existing_tiids"] except KeyError: existing_tiids = [] try: retrieved_aliases = provider_module.import_products( provider_name, request.json) except ImportError: abort_custom( 404, "an importer for provider '{provider_name}' is not found".format( provider_name=provider_name)) except ProviderItemNotFoundError: abort_custom(404, "item not found") except ProviderItemNotFoundError: abort_custom(404, "item not found") except (ProviderTimeout, ProviderServerError): abort_custom(503, "timeout error, might be transient") except ProviderError: abort(500, "internal error from provider") new_aliases = item_module.aliases_not_in_existing_tiids( retrieved_aliases, existing_tiids) tiids_aliases_map = item_module.create_tiids_from_aliases( profile_id, new_aliases, analytics_credentials, myredis, provider_name) # logger.debug(u"in provider_importer_get with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) products_dict = format_into_products_dict(tiids_aliases_map) resp = make_response( json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return resp
def add_items_to_collection(cid, aliases, analytics_credentials, myredis, mydao=None): # logger.debug(u"in add_items_to_collection for {cid}".format( # cid=cid)) tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, analytics_credentials, myredis) # logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() collection_obj = add_items_to_collection_object(cid, tiids, aliases) return collection_obj
def add_items_to_collection(cid, aliases, myredis, mydao=None): logger.debug(u"in add_items_to_collection for {cid}".format(cid=cid)) tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, myredis) logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() collection_obj = add_items_to_collection_object(cid, tiids, aliases) logger.debug( u"just finished add_items_to_collection for {cid}".format(cid=cid)) return collection_obj
def products_post(): if "aliases" in request.json: tiids_aliases_map = item_module.create_tiids_from_aliases( request.json["aliases"], myredis) products_dict = format_into_products_dict(tiids_aliases_map) response = make_response( json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return response elif "tiids" in request.json: # overloading post for get because tiids string gets long logger.debug( "in products_post with tiids, so getting products to return") tiids = request.json["tiids"] tiids_string = ",".join(tiids) return products_get(tiids_string) else: abort_custom(400, "bad arguments")
def add_items_to_collection(cid, aliases, myredis, mydao=None): logger.debug(u"in add_items_to_collection for {cid}".format( cid=cid)) tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, myredis) logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() collection_obj = add_items_to_collection_object(cid, tiids, aliases) logger.debug(u"just finished add_items_to_collection for {cid}".format( cid=cid)) return collection_obj
def importer_post(provider_name): # need to do these ugly deletes because import products not in dict. fix in future! try: profile_id = request.json["profile_id"] del request.json["profile_id"] except KeyError: abort(405, "missing profile_id") try: analytics_credentials = request.json["analytics_credentials"] del request.json["analytics_credentials"] except KeyError: analytics_credentials = {} try: existing_tiids = request.json["existing_tiids"] del request.json["existing_tiids"] except KeyError: existing_tiids = [] try: retrieved_aliases = provider_module.import_products(provider_name, request.json) except ImportError: abort_custom(404, "an importer for provider '{provider_name}' is not found".format( provider_name=provider_name)) except ProviderItemNotFoundError: abort_custom(404, "item not found") except ProviderItemNotFoundError: abort_custom(404, "item not found") except (ProviderTimeout, ProviderServerError): abort_custom(503, "timeout error, might be transient") except ProviderError: abort(500, "internal error from provider") new_aliases = item_module.aliases_not_in_existing_tiids(retrieved_aliases, existing_tiids) tiids_aliases_map = item_module.create_tiids_from_aliases(profile_id, new_aliases, analytics_credentials, myredis, provider_name) # logger.debug(u"in provider_importer_get with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) products_dict = format_into_products_dict(tiids_aliases_map) resp = make_response(json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return resp
def add_items_to_collection(cid, aliases, analytics_credentials, myredis, mydao=None): # logger.debug(u"in add_items_to_collection for {cid}".format( # cid=cid)) tiids_aliases_map = item_module.create_tiids_from_aliases( aliases, analytics_credentials, myredis) # logger.debug(u"in add_items_to_collection with {tiids_aliases_map}".format( # tiids_aliases_map=tiids_aliases_map)) tiids = tiids_aliases_map.keys() aliases = tiids_aliases_map.values() collection_obj = add_items_to_collection_object(cid, tiids, aliases) return collection_obj
def importer_post(provider_name): """ Gets aliases associated with a query from a given provider. """ input_string = request.json["input"] if provider_name == "pmids": provider_name = "pubmed" elif provider_name == "dois": provider_name = "crossref" elif provider_name == "urls": provider_name = "webpage" try: provider = ProviderFactory.get_provider(provider_name) except ImportError: abort_custom( 404, "an importer for provider '{provider_name}' is not found".format( provider_name=provider_name)) try: aliases = provider.member_items(input_string) except ProviderItemNotFoundError: abort_custom(404, "item not found") except (ProviderTimeout, ProviderServerError): abort_custom(503, "timeout error, might be transient") except ProviderError: abort(500, "internal error from provider") tiids_aliases_map = item_module.create_tiids_from_aliases(aliases, myredis) logger.debug(u"in provider_importer_get with {tiids_aliases_map}".format( tiids_aliases_map=tiids_aliases_map)) products_dict = format_into_products_dict(tiids_aliases_map) resp = make_response( json.dumps({"products": products_dict}, sort_keys=True, indent=4), 200) return resp
def test_get_items_from_tiids(self): aliases = [('url', 'http://starbucks.com'), ('url', 'http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124')] response = item_module.create_tiids_from_aliases(aliases, {}, self.r) tiids = response.keys() items = item_module.get_items_from_tiids(tiids) print [item.alias_tuples for item in items]