Exemple #1
0
    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)
Exemple #3
0
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)
Exemple #7
0
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")
Exemple #8
0
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
Exemple #11
0
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
Exemple #15
0
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]