示例#1
0
def submit_task(input_data):
    status = 0  # mark it can not submit
    task_name = input_data['task_name']
    submit_user = input_data['submit_user']
    task_id = input_data['task_id']
    try:
        result = es_recommendation_result.get(
            index=recommendation_index_name,
            doc_type=recommendation_index_type,
            id=task_id)['_source']
    except:
        status = 1

    if status != 0 and 'uid_file' not in input_data:
        input_data['status'] = 0  # mark the task not compute
        count = len(json.loads(input_data['uid_list']))
        input_data['count'] = count
        input_data['submit_user'] = submit_user
        # add_es_dict = {'task_information': input_data, 'query_condition':''}
        es_recommendation_result.index(index=recommendation_index_name,
                                       doc_type=recommendation_index_type,
                                       id=task_id,
                                       body=input_data)
        if input_data['cal_style'] == 0:
            group_analysis_queue_name = 'recommendation_in_now'
        if input_data['cal_style'] == 1:
            group_analysis_queue_name = 'recommendation_in_later'
        r.lpush(group_analysis_queue_name, json.dumps(input_data))
    return status
示例#2
0
def identify_in(data, uid_list):
    in_status = 1
    compute_status = 0
    compute_hash_name = 'compute'
    compute_uid = r.hkeys(compute_hash_name)
    for item in data:
        date = item[0]  # identify the date form '2013-09-01' with web
        uid = item[1]
        status = item[2]
        relation_string = item[3]
        recommend_style = item[4]
        submit_user = item[5]
        value_string = []
        identify_in_hashname = "identify_in_" + str(date)
        r.hset(identify_in_hashname, uid, in_status)
        if status == '1':
            in_date = date
            compute_status = '1'
        elif status == '2':
            in_date = date
            compute_status = '2'
        r.hset(
            compute_hash_name, uid,
            json.dumps([
                in_date, compute_status, relation_string, recommend_style,
                submit_user, 0
            ]))
    return True
示例#3
0
def recommentation_in(input_ts, recomment_type, submit_user, node_type):
    date = ts2datetime(input_ts)
    recomment_results = []
    # read from redis
    results = []
    hash_name = 'recomment_' + str(
        date) + "_" + recomment_type + "_" + node_type
    identify_in_hashname = "identify_in_" + str(date)
    # submit_user_recomment = "recomment_" + submit_user + "_" + str(date) # 用户自推荐名单
    results = r.hgetall(hash_name)
    if not results:
        return []
    # search from user_profile to rich the show information
    recommend_list = set(r.hkeys(hash_name))
    identify_in_list = set(r.hkeys("compute"))
    # submit_user_recomment = set(r.hkeys(submit_user_recomment))
    recomment_results = list(recommend_list - identify_in_list)
    # recomment_results = list(set(recomment_results) - submit_user_recomment)

    if recomment_results:
        results = get_user_detail(date, recomment_results[:1000], 'show_in',
                                  recomment_type)
    else:
        results = []
    return results
示例#4
0
def ajax_update_user():
    results = 0
    date = request.args.get('date', '2016-11-27') # date = '2016-11-27'
    node_type = request.args.get('node_type', '0') # '0':user  '1':org
    uid = request.args.get('uid', '2298607941')
    recommend_style = request.args.get('recommend_style', 'influence')  #influence sensitive auto 
    submit_user  = request.args.get('submit_user', 'admin')
    relation_string = request.args.get('user_rel', 'friend') # split by ,
    relation_list = relation_string.split(',')
    r.rpush(uid, json.dumps([date, '1', node_type, relation_list, submit_user, recommend_style]))
    return json.dumps(1)
示例#5
0
def recommentation_in_auto(date, submit_user):
    results = []
    #run type
    if RUN_TYPE == 1:
        now_date = search_date
    else:
        now_date = ts2datetime(datetime2ts(RUN_TEST_TIME))
    recomment_hash_name = 'recomment_' + now_date + '_auto'
    # print recomment_hash_name,'============'
    recomment_influence_hash_name = 'recomment_' + now_date + '_influence'
    recomment_sensitive_hash_name = 'recomment_' + now_date + '_sensitive'
    recomment_submit_hash_name = 'recomment_' + submit_user + '_' + now_date
    recomment_compute_hash_name = 'compute'
    # #step1: get auto
    # auto_result = r.hget(recomment_hash_name, 'auto')
    # if auto_result:
    #     auto_user_list = json.loads(auto_result)
    # else:
    #     auto_user_list = []
    #step2: get admin user result
    admin_result = r.hget(recomment_hash_name, submit_user)
    admin_user_list = []
    if admin_result:
        admin_result_dict = json.loads(admin_result)
    else:
        return None
    final_result = []
    #step3: get union user and filter compute/influence/sensitive
    for k, v in admin_result_dict.iteritems():
        admin_user_list = v
        union_user_auto_set = set(admin_user_list)
        influence_user = set(r.hkeys(recomment_influence_hash_name))
        sensitive_user = set(r.hkeys(recomment_sensitive_hash_name))
        compute_user = set(r.hkeys(recomment_compute_hash_name))
        been_submit_user = set(r.hkeys(recomment_submit_hash_name))
        filter_union_user = union_user_auto_set - (
            influence_user | sensitive_user | compute_user | been_submit_user)
        auto_user_list = list(filter_union_user)
        #step4: get user detail
        if auto_user_list == []:
            return auto_user_list
        results = get_user_detail(now_date, auto_user_list, 'show_in', 'auto')
        for detail in results:  #add root
            re_detail = detail
            re_detail.append(k)
            final_result.append(re_detail)
    return final_result
示例#6
0
def ajax_show_user_task_status():
    compute_name = 'compute'
    result = r.hgetall(compute_name)
    result_dict = {}
    for k,v in result.iteritems():
        detail = json.loads(v)
        result_dict[k] = detail
    return json.dumps(result_dict)
示例#7
0
def recommentation_in(input_ts, recomment_type):
    date = ts2datetime(input_ts)
    recomment_results = []
    results = []
    hash_name = 'recomment_' + str(date) + "_" + recomment_type
    identify_in_hashname = "identify_in_" + str(date)
    results = r.hgetall(hash_name)
    if not results:
        return []
    recommend_list = set(r.hkeys(hash_name))
    identify_in_list = set(r.hkeys("compute"))
    recomment_results = list(recommend_list - identify_in_list)[0:3]

    if recomment_results:
        results = get_user_detail(date, recomment_results)
    else:
        results = []
    return results
示例#8
0
def ajax_show_user_task_status():
    node_type = request.args.get('node_type', '0')  # '0':user  '1':org
    compute_name = 'compute'
    result = r.hgetall(compute_name)
    # return json.dumps(result)
    result_list = []
    for k, v in result.iteritems():
        detail = json.loads(v)
        if detail[2] == node_type:
            kv_list = [k]
            kv_list.extend(detail)
            result_list.append(kv_list)
        else:
            continue
    return json.dumps(result_list)
示例#9
0
def submit_identify_in_uid(input_data):
    date = input_data['date']
    submit_user = input_data['user']
    operation_type = input_data['operation_type']
    compute_status = input_data['compute_status']
    relation_string = input_data['relation_string']
    recommend_style = input_data['recommend_style']
    hashname_submit = 'submit_recomment_' + date
    hashname_influence = 'recomment_' + date + '_influence'
    hashname_sensitive = 'recomment_' + date + '_sensitive'
    compute_hash_name = 'compute'
    # submit_user_recomment = 'recomment_' + submit_user + '_' + str(date)
    auto_recomment_set = set(r.hkeys(hashname_influence)) | set(
        r.hkeys(hashname_sensitive))
    upload_data = input_data['upload_data']
    line_list = upload_data.split('\n')
    uid_list = []
    invalid_uid_list = []
    for line in line_list:
        uid = line.split('\r')[0]
        #if len(uid)==10:
        #    uid_list.append(uid)
        if uid != '':
            uid_list.append(uid)
    if len(invalid_uid_list) != 0:
        return False, 'invalid user info', invalid_uid_list
    #identify the uid is not exist in user_portrait and compute
    #step1: filter in user_portrait
    new_uid_list = []
    have_in_uid_list = []
    try:
        exist_portrait_result = es_user_profile.mget(
            index=profile_index_name,
            doc_type=profile_index_type,
            body={'ids': uid_list},
            _source=False)['docs']
    except:
        exist_portrait_result = []
    if exist_portrait_result:
        for exist_item in exist_portrait_result:
            if exist_item['found'] == False:
                new_uid_list.append(exist_item['_id'])
            else:
                have_in_uid_list.append(exist_item['_id'])
    else:
        new_uid_list = uid_list

    #step2: filter in compute
    new_uid_set = set(new_uid_list)
    compute_set = set(r.hkeys('compute'))
    in_uid_set = list(new_uid_set - compute_set)
    print 'new_uid_set:', new_uid_set
    print 'in_uid_set:', in_uid_set
    if len(in_uid_set) == 0:
        return False, 'all user in'
    #identify the final add user
    final_submit_user_list = []
    for in_item in in_uid_set:
        if in_item in auto_recomment_set:
            tmp = json.loads(r.hget(hashname_submit, in_item))
            recommentor_list = tmp['operation'].split('&')
            recommentor_list.append(str(submit_user))
            new_list = list(set(recommentor_list))
            tmp['operation'] = '&'.join(new_list)
        else:
            tmp = {'system': '0', 'operation': submit_user}
        if operation_type == 'submit':
            r.hset(
                compute_hash_name, in_item,
                json.dumps([
                    in_date, compute_status, relation_string, recommend_style,
                    submit_user, 0
                ]))
            r.hset(hashname_submit, in_item, json.dumps(tmp))
            # r.hset(submit_user_recomment, in_item, '0')
        final_submit_user_list.append(in_item)
    return True, invalid_uid_list, have_in_uid_list, final_submit_user_list
示例#10
0
             sensitive_value = math.log(
                 sensitive_history_dict['fields'][sensitive_string][0] /
                 float(top_sensitive) * 9 + 1, 10) * 100
             #print "sensitive_value", sensitive_value
         else:
             sensitive_value = 0
         results.append([
             uid, uname, location, fansnum, statusnum, influence,
             sensitive_words, sensitive_value
         ])
     else:
         results.append(
             [uid, uname, location, fansnum, statusnum, influence])
     if auth:
         hashname_submit = "submit_recomment_" + date
         tmp_data = json.loads(r.hget(hashname_submit, uid))
         recommend_list = (tmp_data['operation']).split('&')
         admin_list = []
         admin_list.append(tmp_data['system'])
         admin_list.append(list(set(recommend_list)))
         admin_list.append(len(recommend_list))
         results[-1].extend(admin_list)
 if status == 'show_compute':
     in_date = json.loads(input_result[uid])[0]
     compute_status = json.loads(input_result[uid])[1]
     if compute_status == '1':
         compute_status = '3'
     results.append([
         uid, uname, location, fansnum, statusnum, influence, in_date,
         compute_status
     ])
示例#11
0
def submit_identify_in_uid(input_data):
    print input_data, '00000000000'
    in_date = input_data['date']
    submit_user = input_data['user']
    operation_type = input_data['operation_type']
    compute_status = input_data['compute_status']
    relation_string = input_data['relation_string']
    recommend_style = input_data['recommend_style']
    node_type = input_data['node_type']
    hashname_submit = 'submit_recomment_' + in_date
    hashname_influence = 'recomment_' + in_date + '_influence'
    hashname_sensitive = 'recomment_' + in_date + '_sensitive'
    compute_hash_name = 'compute'
    # submit_user_recomment = 'recomment_' + submit_user + '_' + str(date)
    auto_recomment_set = set(r.hkeys(hashname_influence)) | set(
        r.hkeys(hashname_sensitive))
    upload_data = input_data['upload_data']
    uid_list = []
    invalid_uid_list = []
    if recommend_style == 'upload':
        line_list = upload_data
        # print line_list,'====8888===='
        for line in line_list:
            uid = line.strip('\r')
            # print len(str(uid)),'!!!0000000000999999999999'
            if len(str(uid)) == 10:
                uid_list.append(uid)
            else:
                invalid_uid_list.append(uid)
    if recommend_style == 'write':
        line_list = upload_data
        # print line_list,'====8888===='
        for line in line_list:
            uid = line
            if len(str(uid)) == 10:
                uid_list.append(uid)
            else:
                invalid_uid_list.append(uid)
    if len(invalid_uid_list) != 0:
        return 0, 'invalid user info', invalid_uid_list
    #identify the uid is not exist in user_portrait and compute
    #step1: filter in user_portrait
    new_uid_list = []
    have_in_uid_list = []
    try:
        exist_portrait_result = es.mget(index=portrait_index_name,
                                        doc_type=portrait_index_type,
                                        body={'ids': uid_list},
                                        _source=False)['docs']
    except:
        exist_portrait_result = []
    if exist_portrait_result:
        for exist_item in exist_portrait_result:
            if exist_item['found'] == False:
                new_uid_list.append(exist_item['_id'])
            else:
                have_in_uid_list.append(exist_item['_id'])
    else:
        new_uid_list = uid_list

    #step2: filter in compute
    new_uid_set = set(new_uid_list)
    compute_set = set(r.hkeys('compute'))
    in_uid_set = list(new_uid_set - compute_set)
    print 'new_uid_set:', new_uid_set
    print 'in_uid_set:', in_uid_set
    if len(in_uid_set) == 0:
        return 0, 'all user in'
    #identify the final add user
    final_submit_user_list = []
    for in_item in in_uid_set:
        # if in_item in auto_recomment_set:
        #     tmp = json.loads(r.hget(hashname_submit, in_item))
        #     recommentor_list = tmp['operation'].split('&')
        #     recommentor_list.append(str(submit_user))
        #     new_list = list(set(recommentor_list))
        #     tmp['operation'] = '&'.join(new_list)
        # else:
        #     tmp = {'system':'0', 'operation':submit_user}
        if operation_type == 'submit':
            relation_list = relation_string.split(',')
            r.hset(
                compute_hash_name, in_item,
                json.dumps([
                    in_date, compute_status, node_type, relation_list,
                    submit_user, recommend_style
                ]))
            # r.hset(hashname_submit, in_item, json.dumps(tmp))
            # r.hset(submit_user_recomment, in_item, '0')
        final_submit_user_list.append(in_item)
    return 1, invalid_uid_list, have_in_uid_list, final_submit_user_list