示例#1
0
def show():
    context_dict = get_app_list()
    app_id = context_dict['app_id']
    username = context_dict['username']
    app_list = context_dict['app_list']

    if not app_id or app_id == '5621fb0f60b27457e863fabb':  # Demo App
        fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), 'fake_data.json')))
        context_fake = fake_data.get('context')
        event_tmp = sorted(map(lambda x: (translate(translate(x, 'event_old'), 'context'), context_fake[x]),
                               context_fake.keys()), key=lambda item: -item[1])
    else:
        result_dict = get_query_list(app_id, 'event')
        event_list = filter(lambda x: x is not None, result_dict['event'])
        event_list_tmp = map(lambda item: map(lambda x: item[x],  item.keys()), event_list)
        event_list = [i for row in event_list_tmp for i in row]
        event_list = filter(lambda y: y is not None,
                            map(lambda x: translate(translate(x, 'event_old'), 'context'), event_list))
        event_tmp = sorted(map(lambda x: (x, event_list.count(x)), set(event_list)), key=lambda item: -item[1])
    data = map(lambda x: {'rank': x/3+1, 'name': event_tmp[x-1][0],
                          'count': event_tmp[x-1][1]}, xrange(1, len(set(event_tmp))+1))
    event = {
        'errcode': 0,
        'errmsg': 'ok',
        'data': data
    }
    return render_template('index.html', username=username, app_id=app_id,
                           app_list=app_list, option=json.dumps(event))
示例#2
0
def show():
    context_dict = get_app_list()
    app_id = context_dict['app_id']
    username = context_dict['username']
    app_list = context_dict['app_list']

    if not app_id or app_id == '5621fb0f60b27457e863fabb':  # Demo App
        fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), 'fake_data.json')))
        static_info = fake_data.get('static_info')
        gender_obj = static_info.get('gender')
        gender = {'category': map(lambda x: translate(x, 'gender'), gender_obj.keys()),
                  'series': map(lambda x: gender_obj.get(x), gender_obj.keys())}

        age_obj = static_info.get('age')
        age = {'category': map(lambda x: translate(x, 'age'), age_obj.keys()),
               'series': map(lambda x: age_obj.get(x), age_obj.keys())}

        occupation_obj = static_info.get('occupation')
        occupation = {"category": map(lambda x: translate(x, 'occupation'), occupation_obj.keys()),
                      "series": map(lambda x: occupation_obj.get(x), occupation_obj.keys())}

        field_obj = static_info.get('field')
        field = {"category": map(lambda x: translate(x, 'field'), field_obj.keys()),
                 "series": map(lambda x: field_obj.get(x), field_obj.keys())}
    else:
        result_dict = get_query_list(app_id, 'gender', 'age', 'occupation', 'field')
        gender_list = filter(lambda x: x, result_dict.get('gender'))
        age_list = filter(lambda x: x, result_dict.get('age'))
        occupation_list = filter(lambda x: x, result_dict.get('occupation'))
        field_list = filter(lambda x: x, result_dict.get('field'))
        gender = {'category': map(lambda x: translate(x, 'gender'), list(set(gender_list))),
                  'series': map(lambda x: gender_list.count(x), list(set(gender_list)))}
        age = {'category': map(lambda x: translate(x, 'age'), list(set(age_list))),
               'series': map(lambda x: age_list.count(x), list(set(age_list)))}

        occupation_tmp = map(lambda x: list(x), zip(*map(lambda x: [x, occupation_list.count(x)],
                                                         filter(lambda x: str(x) != '', set(occupation_list)))))
        occupation = {"category": map(lambda x: translate(x, 'occupation') or '', occupation_tmp[0]),
                      "series": occupation_tmp[1]} if occupation_tmp else {"category": [], "series": []}
        field_tmp = map(lambda x: list(x), zip(*map(lambda x: [x, field_list.count(x)],
                                                    filter(lambda x: str(x) != '', set(field_list)))))
        field = {"category": map(lambda x: translate(x, 'field') or '', field_tmp[0]),
                 "series": field_tmp[1]} if field_tmp else {"category": [], "series": []}

    data = {'gender': gender, 'age': age, 'job': occupation, 'profession': field}
    user_profile = {
        'errcode': 0,
        'errmsg': 'ok',
        'data': data
    }
    return render_template('dashboard/user-identity.html', option=json.dumps(user_profile),
                           username=username, app_id=app_id, app_list=app_list)
示例#3
0
def parse_motion_info(motion_obj):
    ret_dict = {}
    user_id = motion_obj.get('user').get('objectId')
    ret_dict['user_id'] = user_id
    timestamp = motion_obj.get('timestamp') or None
    motion_prob = motion_obj.get('motionProb') or {}
    motion_prob = sorted(filter(lambda x: x, motion_prob.items()), key=lambda v: -v[1])
    motion = translate(motion_prob[0][0] if motion_prob else "", 'motion_old')
    if motion:
        ret_dict['motion'] = {timestamp:  motion}
        # post_panel_data(tracker=user_id, type='motion', value=motion, timestamp=timestamp)
    return ret_dict
示例#4
0
def parse_home_office_info(homeoffice_info):
    ret_dict = {}
    user_id = homeoffice_info.get('user_id')
    status = translate(homeoffice_info.get('status'), 'home_office_status_old')
    timestamp = homeoffice_info.get('timestamp')
    expire = homeoffice_info.get('expire')
    expire = (int(expire) - int(timestamp)) / 1000
    ret_dict['user_id'] = user_id
    ret_dict['home_office_status'] = {timestamp: status}
    # if time.time()*1000 - timestamp < 300:
    # post_panel_data(tracker=user_id, type='home_office_status', value=status, timestamp=timestamp, expire=expire)
    return ret_dict
def show():
    context_dict = get_app_list()
    app_id = context_dict["app_id"]
    username = context_dict["username"]
    app_list = context_dict["app_list"]

    if not app_id or app_id == "5621fb0f60b27457e863fabb":  # Demo App
        fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), "fake_data.json")))
        static_info = fake_data.get("static_info")
        marriage_obj = static_info.get("marriage")
        pregnant_obj = static_info.get("pregnant")
        marriage = {
            "category": map(lambda x: translate(x, "marriage"), marriage_obj.keys()),
            "series": map(lambda x: marriage_obj.get(x), marriage_obj.keys()),
        }
        pregnant = {
            "category": map(lambda x: translate(x, "pregnant"), pregnant_obj.keys()),
            "series": map(lambda x: pregnant_obj.get(x), pregnant_obj.keys()),
        }
    else:
        result_dict = get_query_list(app_id, "marriage", "pregnant")
        marriage_list = filter(lambda x: x is not None, result_dict["marriage"])
        pregnant_list = filter(lambda x: x is not None, result_dict["pregnant"])
        marriage = {
            "category": map(lambda x: translate(x, "marriage"), list(set(marriage_list))),
            "series": map(lambda x: marriage_list.count(x), list(set(marriage_list))),
        }
        pregnant = {
            "category": map(lambda x: translate(x, "pregnant"), list(set(pregnant_list))),
            "series": map(lambda x: pregnant_list.count(x), list(set(pregnant_list))),
        }
    ret_json = {"errcode": 0, "errmsg": "ok", "data": {"marriage": marriage, "pregnant": pregnant}}
    return render_template(
        "dashboard/user-matrimony.html",
        option=json.dumps(ret_json),
        username=username,
        app_id=app_id,
        app_list=app_list,
    )
示例#6
0
def parse_event_info(event_info):
    ret_dict = {}
    user_id = event_info.get('user').get('objectId') if event_info.get('user') else None
    events = event_info.get('event') or {}
    start_time = event_info.get('startTime')
    end_time = event_info.get('endTime')
    timestamp = (start_time+end_time)/2
    ret_dict['user_id'] = user_id
    event_tmp = sorted(events.items(), key=lambda value: -value[1])
    event = translate(event_tmp[0][0], 'event_old') if event_tmp else None
    if event_info.get('isOnSubway'):
        event = 'contextTakingSubway'
    ret_dict['event'] = {timestamp: event}
    # post_panel_data(tracker=user_id, type='event', value=event, timestamp=timestamp)
    return ret_dict
def show():
    context_dict = get_app_list()
    app_id = context_dict["app_id"]
    username = context_dict["username"]
    app_list = context_dict["app_list"]

    if not app_id or app_id == "5621fb0f60b27457e863fabb":  # Demo App
        fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), "fake_data.json")))
        static_info = fake_data.get("static_info")
        consumption_obj = static_info.get("consumption")
        hascar_obj = static_info.get("has_car")
        haspet_obj = static_info.get("has_pet")
        consum = {
            "category": map(lambda x: translate(x, "consumption"), consumption_obj.keys()),
            "series": map(lambda x: consumption_obj.get(x), consumption_obj.keys()),
        }
        car = {
            "category": map(lambda x: translate(x, "has_car"), hascar_obj.keys()),
            "series": map(lambda x: hascar_obj.get(x), hascar_obj.keys()),
        }
        pet = {
            "category": map(lambda x: translate(x, "has_pet"), haspet_obj.keys()),
            "series": map(lambda x: haspet_obj.get(x), haspet_obj.keys()),
        }
    else:
        result_dict = get_query_list(app_id, "consumption", "has_car", "has_pet")
        consumption_list = filter(lambda x: x is not None, result_dict["consumption"])
        car_list = filter(lambda x: x is not None, result_dict["has_car"])
        pet_list = filter(lambda x: x is not None, result_dict["has_pet"])
        consumption_tmp = map(
            lambda x: list(x), zip(*map(lambda x: [x, consumption_list.count(x)], set(consumption_list)))
        )
        consum = (
            {"category": map(lambda x: translate(x, "consumption"), consumption_tmp[0]), "series": consumption_tmp[1]}
            if consumption_tmp
            else {}
        )
        car = {
            "category": map(lambda x: translate(x, "has_car"), list(set(car_list))),
            "series": map(lambda x: car_list.count(x), list(set(car_list))),
        }
        pet = {
            "category": map(lambda x: translate(x, "has_pet"), list(set(pet_list))),
            "series": map(lambda x: pet_list.count(x), list(set(pet_list))),
        }

    ret_json = {"errcode": 0, "errmsg": "ok", "data": {"consumption": consum, "car": car, "pet": pet}}
    return render_template(
        "dashboard/user-consumption.html",
        option=json.dumps(ret_json),
        username=username,
        app_id=app_id,
        app_list=app_list,
    )
示例#8
0
def get_motion_stastic(motion, motion_counts):
    query = Query(DashboardSource)
    user_count = query.count()

    for i in xrange(1, len(motion_counts)):
        for k in motion_counts[i].keys():
            if k in motion_counts[0]:
                motion_counts[0][k] += motion_counts[i].get(k)
            else:
                motion_counts[0][k] = motion_counts[i].get(k)
    motion_count = motion_counts[0] if motion_counts else {}

    motion_np = list(set(motion.values()))


    action_data = {
        "category": map(lambda x: translate(x, "motion"), list(set(motion.values()))),
        "data": map(lambda x: motion.values().count(x), motion_np),
        "avg": map(lambda x: (motion_count.get(x) or 0)/user_count, motion_np)
    }
    return action_data
示例#9
0
def show():
    # filter by timestamp
    h_start = request.form.get('h_start') or request.args.get('h_start') or (int(time.time()) - 30*24*60*60)*1000
    h_end = request.form.get('h_end') or request.args.get('h_end') or int(time.time())*1000
    e_start = request.form.get('e_start') or request.args.get('e_start') or (int(time.time()) - 30*24*60*60)*1000
    e_end = request.form.get('e_end') or request.args.get('e_end') or int(time.time())*1000
    workday = request.form.get('workday') or request.args.get('workday') or "workday"

    context_dict = get_app_list()
    app_id = context_dict['app_id']
    username = context_dict['username']
    app_list = context_dict['app_list']

    s = json.load(file(join(dirname(dirname(dirname(__file__))), 'translate.json')))
    home_office_type = s.get('home_office_status').keys()

    if not app_id or app_id == '5621fb0f60b27457e863fabb':  # Demo App
        fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), 'fake_data.json')))
        home_office_status = fake_data.get('home_office_status')
        home_office = {'category': map(lambda x: translate(x, 'home_office_status'), home_office_status.keys()),
                       'series': map(lambda x: home_office_status[x], home_office_status.keys()),
                       "xAxis": list(range(24))}

        context_fake = fake_data.get('context')
        event = {'category': map(lambda x: translate(translate(x, 'event_old'), 'context'), context_fake.keys()),
                 'series': map(lambda x: context_fake[x], context_fake.keys())}
    else:
        # get data from leancloud#DashboardSource
        result_dict = get_query_list(app_id, 'home_office_status', 'event')
        home_office_list = filter(lambda x: x, result_dict['home_office_status'])
        event_list = filter(lambda x: x, result_dict['event'])

        # filter by timestamp
        # if app_id and app_id != '5621fb0f60b27457e863fabb':  # 非DemoFake 假数据
        home_office_list_tmp = map(lambda item:
                                   dict(map(lambda x: (x, item[x]),
                                            filter(lambda y: str(h_start) <= str(y) <= str(h_end)
                                                             and time.localtime(int(str(y)[:10]))[6] < 5
                                            if workday == 'workday' else time.localtime(int(str(y)[:10]))[6] > 4,
                                                   item.keys()))), home_office_list)
        home_office_list = map(lambda x:
                               dict(map(lambda y: ('status' + str(time.localtime(int(y[0])/1000)[3]), y[1]),
                                        x.items())), home_office_list_tmp)

        event_list_tmp = map(lambda item: map(lambda x: item[x],
                                              filter(lambda y: str(e_start) <= str(y) <= str(e_end)
                                                               and time.localtime(int(str(y)[:10]))[6] < 5
                                              if workday == 'workday' else time.localtime(int(str(y)[:10]))[6] > 4,
                                                     item.keys())), event_list)
        event_list = [i for row in event_list_tmp for i in row]

        # filled all the status* field
        for home_office in home_office_list:
            for k in range(0, 24):
                if 'status' + str(k) not in home_office.keys():
                    home_office['status' + str(k)] = None

        home_office_tmp = map(lambda x: map(lambda y: y[1],
                                            sorted(x.items(), key=lambda key: int(key[0][6:]))), home_office_list)
        home_office_series = map(lambda x: list(x),
                                 zip(*map(lambda x: [x.count(home_office_type[y])
                                                     for y in xrange(len(home_office_type))], zip(*home_office_tmp))))
        home_office = {"category": map(lambda x: translate(x, 'home_office_status'), home_office_type),
                       "xAxis": list(range(24)), "series": home_office_series}

        event_list = map(lambda x: translate(translate(x, 'event_old'), 'context'),
                         filter(lambda x: x not in home_office_type, event_list))
        event_tmp = sorted(map(lambda x: (x, event_list.count(x)), set(event_list)), key=lambda item: -item[1])
        event = {"category": list(zip(*event_tmp)[0]), "series": list(zip(*event_tmp)[1])} \
            if event_tmp else {"category": [], "series": []}

    context = {
        'errcode': 0,
        'errmsg': 'ok',
        'data': {
            'home_office': home_office,
            'event': event
        }
    }
    if request.method == 'POST':
        return json.dumps(context)
    return render_template('dashboard/context.html', option=json.dumps(context),
                           username=username, app_id=app_id, app_list=app_list)
示例#10
0
def get_attr_of_user(uid, h_start=None, h_end=None, e_start=None, e_end=None, workday=True):
    ret_dict = {}
    if uid.startswith("user"):
        return get_fake_data_of_user(uid)

    user = {
        "__type": "Pointer",
        "className": "_User",
        "objectId": uid
    }
    type_list = [u'gender', u'age', u'field', u'occupation', u'interest',
                 u'marriage', u'pregnant', u'consumption', u'has_car', u'has_pet']
    query = Query(DashboardSource)
    user_count = query.count()
    query.equal_to('user', user)
    attrs = query.first()

    avg_query = Query(DashboardStatistics)
    counts = avg_query.find()

    timeline = CombinedTimelines.find({"user_id": uid}).sort("start_datetime", -1) or []

    labels = map(lambda x: attrs.attributes.get(x), type_list)
    user_labels = [y for x in filter(lambda y: y, labels) for y in x if isinstance(x, list)]
    user_labels += [type_list[labels.index(x)] for x in labels if isinstance(x, unicode) and x in [u'yes', u'no']]
    user_labels += [x for x in labels if isinstance(x, unicode) and x not in [u'yes', u'no']]
    user_labels = filter(lambda x: x, user_labels)
    for item in type_list:
        user_labels = map(lambda x: translate(x, item), user_labels)
    ret_dict['userLabels'] = user_labels

    event = attrs.attributes.get('event') or {}
    event_counts = map(lambda x: x.attributes.get('event') or {},
                       filter(lambda y: str(e_start) < str(y.attributes.get('timestamp'))[:10] < str(e_end), counts))
    for i in xrange(1, len(event_counts)):
        for k in event_counts[i].keys():
            if k in event_counts[0]:
                event_counts[0][k] += event_counts[i].get(k)
            else:
                event_counts[0][k] = event_counts[i].get(k)
    event_count = event_counts[0] if event_counts else {}

    event = dict(filter(lambda x: str(e_start) < str(x[0]) < str(e_end), event.items()))
    event_np = list(set(event.values()))
    event_data = {
        "category": map(lambda x: translate(translate(x, "event_old"), "context"), event_np),
        "data": map(lambda x: event.values().count(x), event_np),
        "avg": map(lambda x: (event_count.get(x) or 0)/user_count, event_np)
    }
    ret_dict['eventData'] = event_data

    motion_counts = map(lambda x: x.attributes.get('motion') or {},
                        filter(lambda y: str(e_start) < str(y.attributes.get('timestamp'))[:10] < str(e_end), counts))
    motion = attrs.attributes.get('motion') or {}
    motion = dict(filter(lambda x: str(h_start) < str(x[0]) < str(h_end), motion.items()))
    ret_dict['actionData'] = get_motion_stastic(motion, motion_counts)

    home_office = attrs.attributes.get('home_office_status') or {}
    workday_limit = 5 if workday else 7
    home_office = dict(filter(lambda x: str(h_start) < str(x[0]) < str(h_end) and
                                        time.localtime(int(x[0]))[6] < workday_limit, home_office.items()))
    try:
        home_office_property = requests.get("http://api.trysenz.com/stalker/get_home_office/user_id/" + uid)
        home_office_property = json.loads(home_office_property.content) if home_office_property.status_code == 200 else {}
    except Exception, e:
        print e
        home_office_property = {}
示例#11
0
def get_fake_data_of_user(uid):
    ret_dict = {}
    u_index = int(uid[-1]) if uid.startswith('user') else 0

    type_list = [u'gender', u'age', u'field', u'occupation', u'interest',
                 u'marriage', u'pregnant', u'consumption', u'has_car', u'has_pet']
    user_labels = [
        [u'男', u'16-35岁', u'IT', u'宅', u'游戏新闻'],
        [u'女', u'16-35岁', u'5000to10000', u'教师', u'已婚', u'线上购物', u'电视剧'],
        [u'男', u'16-35岁', u'5000-10000', u'公务员', u'有车', u'已婚', u'跑步', u'游戏玩家', u'体育新闻'],
        [u'女', u'16-35岁', u'20000以上', u'金融', u'未婚', u'关注健康', u'有车']
    ]
    eventDatas = [
        {
            "category": [u'商圈工作中', u'乘地铁', u'出行', u'在家休息', u'看电影', u'在餐厅吃饭'],
            "data": [25, 25, 30, 23, 3, 2],
            "avg": []
        },
        {
            "category": [u'演唱会', u'逛街', u'出行', u'在家休息', u'看电影', u'在餐厅吃饭'],
            "data": [1, 4, 8, 25, 4, 5],
            "avg": []
        },
        {
            "category": [u'出行', u'乘地铁', u'在家休息', u'户外锻炼', u'看电影'],
            "data": [30, 15, 20, 20, 3],
            "avg": []
        },
        {
            "category": [u'出行', u'乘地铁', u'在家休息', u'户外锻炼', u'室内锻炼'],
            "data": [35, 16, 18, 3, 15],
            "avg": []
        }
    ]
    actionDatas = [
        {
            "category": [u'静坐', u'乘车', u'走路', u'跑步', u'骑车'],
            "data": [200, 70, 20, 5, 2],
            "avg": []
        },
        {
            "category": [u'静坐', u'乘车', u'走路', u'跑步', u'骑车'],
            "data": [180, 15, 30, 15, 8],
            "avg": []
        },
        {
            "category": [u'静坐', u'乘车', u'走路', u'跑步', u'骑车'],
            "data": [180, 42, 25, 30, 15],
            "avg": []
        },
        {
            "category": [u'静坐', u'走路', u'跑步', u'骑车', u'乘车'],
            "data": [280, 8, 30, 10, 30],
            "avg": []
        }
    ]
    homeOfficeDatas = [
        {
            "category": [i for i in xrange(0, 24)],
            "atHomeData": [30,30,30,30,30,30,30,22,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30],
            "atOfficeData": [0,0,0,0,0,0,0,0,22,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0],
            "toHomeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0],
            "toOfficeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0],
            "property": {
                "avg_start": "19:50",
                "avg_end": "7:10",
                "combo_start": "8:40",
                "combo_end": "17:20",
                "duration": "8小时30分钟",
                "home_addr": "南六环",
                "office_addr": "海淀桥北"
            }
        },
        {
            "category": [i for i in xrange(0, 24)],
            "atHomeData": [30,30,30,30,30,22,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,30],
            "atOfficeData": [0,0,0,0,0,0,22,22,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0],
            "toHomeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
            "toOfficeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
            "property": {
                "avg_start": "16:50",
                "avg_end": "6:30",
                "combo_start": "6:40",
                "combo_end": "16:20",
                "duration": "9小时40分钟",
                "home_addr": "北五环",
                "office_addr": "北五环"
            }
        },
        {
            "category": [i for i in xrange(0, 24)],
            "atHomeData": [30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30],
            "atOfficeData": [0,0,0,0,0,0,0,0,22,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0],
            "toHomeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0],
            "toOfficeData": [0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
            "property": {
                "avg_start": "19:50",
                "avg_end": "7:10",
                "combo_start": "8:40",
                "combo_end": "17:20",
                "duration": "8小时30分钟",
                "home_addr": "橡树湾",
                "office_addr": "亦庄开发区"
            }
        },
        {
            "category": [i for i in xrange(0, 24)],
            "atHomeData": [30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30],
            "atOfficeData": [0,0,0,0,0,0,0,0,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,0,0],
            "toHomeData": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0],
            "toOfficeData": [0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
            "property": {
                "avg_start": "22:30",
                "avg_end": "7:00",
                "combo_start": "8:30",
                "combo_end": "21:00",
                "duration": "12小时30分钟",
                "home_addr": "通州",
                "office_addr": "国贸CBD"
            }
        }
    ]
    locationDatas = [
        {
            "lat": 39.993537,
            "lng": 116.311717,
            "level": 15,
            "heatData": [
                {
                    "lat": 39.720367,
                    "lng": 116.384183,
                    "count": 100
                },
                {
                    "lat": 39.721699,
                    "lng": 116.382135,
                    "count": 100
                },
                {
                    "lat": 39.720922,
                    "lng": 116.387668,
                    "count": 100
                },
                {
                    "lat": 39.721089,
                    "lng": 116.390399,
                    "count": 100
                },
                {
                    "lat": 39.715538,
                    "lng": 116.384219,
                    "count": 100
                },
                {
                    "lat": 39.993537,
                    "lng": 116.311717,
                    "count": 100
                },
                {
                    "lat": 39.993299,
                    "lng": 116.3124,
                    "count": 100
                },
                {
                    "lat": 39.994073,
                    "lng": 116.312211,
                    "count": 100
                },
                {
                    "lat": 39.992936,
                    "lng": 116.313505,
                    "count": 100
                },
                {
                    "lat": 39.993005,
                    "lng": 116.311147,
                    "count": 100
                },
                {
                    "lat": 39.720367,
                    "lng": 116.384183,
                    "count": 100
                },
                {
                    "lat": 39.721699,
                    "lng": 116.382135,
                    "count": 100
                },
                {
                    "lat": 39.720922,
                    "lng": 116.387668,
                    "count": 100
                },
                {
                    "lat": 39.721089,
                    "lng": 116.390399,
                    "count": 100
                },
                {
                    "lat": 39.715538,
                    "lng": 116.384219,
                    "count": 100
                },
                {
                    "lat": 39.993537,
                    "lng": 116.311717,
                    "count": 100
                },
                {
                    "lat": 39.993299,
                    "lng": 116.3124,
                    "count": 100
                },
                {
                    "lat": 39.994073,
                    "lng": 116.312211,
                    "count": 100
                },
                {
                    "lat": 39.992936,
                    "lng": 116.313505,
                    "count": 100
                },
                {
                    "lat": 39.993005,
                    "lng": 116.311147,
                    "count": 100
                }
            ]
        },
        {
            "lat": 40.023846,
            "lng": 116.3229,
            "level": 15,
            "heatData": [{
                "lat": 40.023846,
                "lng": 116.3229,
                "count": 100
            }]
        },
        {
            "lat": 40.037043,
            "lng": 116.338469,
            "level": 15,
            "heatData": [
                {
                    "lat": 40.037043,
                    "lng": 116.338469,
                    "count": 100
                },
                {
                    "lat": 39.801202,
                    "lng": 116.512988,
                    "count": 100
                }
            ]
        },
        {
            "lat": 39.939434,
            "lng": 116.727444,
            "level": 15,
            "heatData": [
                {
                    "lat": 39.914319,
                    "lng": 116.467524,
                    "count": 100
                },
                {
                    "lat": 39.939434,
                    "lng": 116.727444,
                    "count": 100
                }
            ]
        }
    ]
    detailDatas = [
        {
            "data": []
        },
        {
            "data": []
        },
        {
            "data": []
        },
        {
            "data": []
        }
    ]

    for item in type_list:
        user_labels[u_index] = map(lambda x: translate(x, item), user_labels[u_index])

    fake_data = json.load(file(join(dirname(dirname(dirname(__file__))), 'fake_data.json')))
    detail_data = fake_data.get("detailData")
    for de in detail_data:
        de['start_ts'] = (int(time.mktime((time.localtime()[0], time.localtime()[1], time.localtime()[2],
                                          8, 39, 0, 0, 0, 0))) - int(de.get('start_ts')))*1000
    ret_dict['userLabels'] = user_labels[u_index]
    ret_dict['eventData'] = eventDatas[u_index]
    ret_dict['actionData'] = actionDatas[u_index]
    ret_dict['homeOfficeData'] = homeOfficeDatas[u_index]
    ret_dict['locationData'] = locationDatas[u_index]
    ret_dict['detailData'] = detail_data
    return ret_dict
示例#12
0
            "home_addr": home_addr,
            "office_addr": office_addr
        }
    }
    ret_dict['homeOfficeData'] = home_office_data

    coordinate = map(lambda x: {"lat": x.get('lat') if isinstance(x, dict) else x.dump().get('latitude'),
                                "lng": x.get('lng') if isinstance(x, dict) else x.dump().get('longitude'),
                                "count": 1}, attrs.attributes.get('coordinate') or [])
    ret_dict['locationData'] = {
        "lng": coordinate[len(coordinate)/2]["lng"] if coordinate else None,
        "lat": coordinate[len(coordinate)/2]["lat"] if coordinate else None,
        "level": 15,
        "heatData": coordinate
    }
    detail_data = []
    for x in timeline:
        motion_count = x.get('motion_count') or {}
        x['motion_count'] = dict(map(lambda y: (translate(translate(y, "motion_old"), "motion"),
                                                motion_count.get(y)), motion_count.keys()))
        x['label'] = translate(translate(x.get('label') or "", "event_old"), "home_office_status_old")
        x['level2_event'] = translate(x.get('level2_event') or "", "level2_event")
        # print x['level2_event']
        detail_data.append(x)
    ret_dict['detailData'] = detail_data
    return ret_dict