def add_resource(resource_info, update=True):
    if 'trait' in resource_info['data']:
        resource_id = hmac_creation('{}:{}:{}'.format(
            str(resource_info['type']), str(resource_info['data']['dataset']),
            str(resource_info['data']['trait'])))
    else:
        resource_id = hmac_creation('{}:{}'.format(
            str(resource_info['type']), str(resource_info['data']['dataset'])))

    if update or not Redis.hexists("resources", resource_id):
        Redis.hset("resources", resource_id, json.dumps(resource_info))

    return resource_info
def get_resource_id(dataset, trait_id=None):
    resource_id = False
    if dataset.type == "Publish":
        if trait_id:
            resource_id = hmac_creation("{}:{}:{}".format(
                'dataset-publish', dataset.id, trait_id))
    elif dataset.type == "ProbeSet":
        resource_id = hmac_creation("{}:{}".format('dataset-probeset',
                                                   dataset.id))
    elif dataset.type == "Geno":
        resource_id = hmac_creation("{}:{}".format('dataset-geno', dataset.id))

    return resource_id
def verify_cookie(cookie):
    the_uuid, separator, the_signature = cookie.partition(':')
    assert len(the_uuid) == 36, "Is session_id a uuid?"
    assert separator == ":", "Expected a : here"
    assert the_signature == hmac.hmac_creation(
        the_uuid), "Uh-oh, someone tampering with the cookie?"
    return the_uuid
Esempio n. 4
0
def process_traits(unprocessed_traits):
    if isinstance(unprocessed_traits, basestring):
        unprocessed_traits = unprocessed_traits.split(",")
    traits = set()
    for trait in unprocessed_traits:
        data, _separator, the_hmac = trait.rpartition(':')
        data = data.strip()
        if g.user_session.logged_in:
            assert the_hmac == hmac.hmac_creation(data), "Data tampering?"
        traits.add(str(data))

    return traits
def create_signed_cookie():
    the_uuid = str(uuid.uuid4())
    signature = hmac.hmac_creation(the_uuid)
    uuid_signed = the_uuid + ":" + signature
    logger.debug("uuid_signed:", uuid_signed)
    return the_uuid, uuid_signed
Esempio n. 6
0
def generate_corr_json(corr_results,
                       this_trait,
                       dataset,
                       target_dataset,
                       for_api=False):
    results_list = []
    for i, trait in enumerate(corr_results):
        results_dict = {}
        if not for_api:
            results_dict[
                'checkbox'] = "<INPUT TYPE='checkbox' NAME='searchResult' class='checkbox trait_checkbox' style='padding-right: 0px;' VALUE='" + hmac.hmac_creation(
                    '{}:{}'.format(trait.name, trait.dataset.name)) + "'>"
            results_dict['index'] = i + 1
            results_dict['trait_id'] = "<a href='/show_trait?trait_id=" + str(
                trait.name) + "&dataset=" + str(dataset.name) + "'>" + str(
                    trait.name) + "</a>"
        else:
            results_dict['trait_id'] = trait.name
        if target_dataset.type == "ProbeSet":
            results_dict['symbol'] = trait.symbol
            results_dict['description'] = trait.description_display
            results_dict['location'] = trait.location_repr
            results_dict['mean'] = float(trait.mean)
            if trait.LRS_score_repr != "N/A":
                results_dict['lrs_score'] = "%.1f" % float(
                    trait.LRS_score_repr)
            else:
                results_dict['lrs_score'] = "N/A"
            results_dict['lrs_location'] = trait.LRS_location_repr
            if trait.additive != "":
                results_dict['additive'] = "%0.3f" % float(trait.additive)
            else:
                results_dict['additive'] = "N/A"
            if for_api:
                results_dict['sample_r'] = "%0.3f" % float(trait.sample_r)
            else:
                results_dict[
                    'sample_r'] = "<a target='_blank' href='corr_scatter_plot?dataset_1=" + str(
                        dataset.name) + "&dataset_2=" + str(
                            trait.dataset.name) + "&trait_1=" + str(
                                this_trait.name) + "&trait_2=" + str(
                                    trait.name) + "'>" + "%0.3f" % float(
                                        trait.sample_r) + "</a>"
            results_dict['num_overlap'] = trait.num_overlap
            results_dict['sample_p'] = "%0.3e" % float(trait.sample_p)
            if trait.lit_corr == "" or trait.lit_corr == 0:
                results_dict['lit_corr'] = "--"
            else:
                results_dict['lit_corr'] = "%0.3f" % float(trait.lit_corr)
            if trait.tissue_corr == "" or trait.tissue_corr == 0:
                results_dict['tissue_corr'] = "--"
            else:
                results_dict['tissue_corr'] = "%0.3f" % float(
                    trait.tissue_corr)
        elif target_dataset.type == "Publish":
            results_dict['description'] = trait.description_display
            results_dict['authors'] = trait.authors
            if trait.pubmed_id:
                if for_api:
                    results_dict['pubmed_id'] = trait.pubmed_id
                    results_dict['year'] = trait.pubmed_text
                else:
                    results_dict[
                        'pubmed'] = "<a href='" + trait.pubmed_link + "'> " + trait.pubmed_text + "</a>"
            else:
                if for_api:
                    results_dict['pubmed_id'] = "N/A"
                    results_dict['year'] = "N/A"
                else:
                    results_dict['pubmed'] = "N/A"
            results_dict['lrs_score'] = trait.LRS_score_repr
            results_dict['lrs_location'] = trait.LRS_location_repr
            if trait.additive != "":
                results_dict['additive'] = "%0.3f" % float(trait.additive)
            else:
                results_dict['additive'] = "N/A"
            if for_api:
                results_dict['sample_r'] = "%0.3f" % trait.sample_r
            else:
                results_dict[
                    'sample_r'] = "<a target='_blank' href='corr_scatter_plot?dataset_1=" + str(
                        dataset.name) + "&dataset_2=" + str(
                            trait.dataset.name) + "&trait_1=" + str(
                                this_trait.name) + "&trait_2=" + str(
                                    trait.name
                                ) + "'>" + "%0.3f" % trait.sample_r + "</a>"
            results_dict['num_overlap'] = trait.num_overlap
            results_dict['sample_p'] = "%0.3e" % float(trait.sample_p)
        else:
            results_dict['lrs_location'] = trait.LRS_location_repr
            if for_api:
                results_dict['sample_r'] = "%0.3f" % trait.sample_r
            else:
                results_dict[
                    'sample_r'] = "<a target='_blank' href='corr_scatter_plot?dataset_1=" + str(
                        dataset.name) + "&dataset_2=" + str(
                            trait.dataset.name) + "&trait_1=" + str(
                                this_trait.name) + "&trait_2=" + str(
                                    trait.name) + "'>" + "%0.3f" % float(
                                        trait.sample_r) + "</a>"
            results_dict['num_overlap'] = trait.num_overlap
            results_dict['sample_p'] = "%0.3e" % float(trait.sample_p)

        results_list.append(results_dict)

    return json.dumps(results_list)
 def test_hmac_creation_with_cookie(self):
     """Test hmac creation with a cookie"""
     cookie = "3f4c1dbf-5b56-4260-87d6-f35445bda37e:af4fcf5eace9e7c864ce"
     uuid_, _, signature = cookie.partition(":")
     self.assertEqual(hmac_creation(uuid_), "af4fcf5eace9e7c864ce")
 def test_hmac_creation(self):
     """Test hmac creation with a utf-8 string"""
     self.assertEqual(hmac_creation("ファイ"), "7410466338cfe109e946")