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))
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)
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
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, )
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, )
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
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)
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 = {}
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
"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