Realize set geo submit flag for api tg_group_detail_api

Brightcells 8 年 前
コミット
a6660a7ab6
共有1 個のファイルを変更した19 個の追加5 個の削除を含む
  1. 19 5
      group/tourguidegroup_views.py

+ 19 - 5
group/tourguidegroup_views.py

@@ -102,10 +102,16 @@ def tg_group_create_api(request):
102 102
     })
103 103
 
104 104
 
105
-def set_geo_submit_flag(uinfo, geo_dt):
105
+def set_geo_submit_flag(uinfo, geo_at, gather_at):
106 106
     uinfo['geo_submited'] = False
107
-    if geo_dt:
108
-        pass
107
+    if geo_at and gather_at:
108
+        current_dt = tc.utc_datetime()
109
+        delta_seconds = tc.total_seconds(gather_at - current_dt)
110
+        # 距离集合时间超过30分钟是5分钟,15分钟到30分钟是3分钟,15分钟以内是1分钟
111
+        for delta, gdt in [(1800, 300), (900, 180), (0, 60)]:
112
+            if delta_seconds > delta:
113
+                uinfo['geo_submited'] = tc.total_seconds(current_dt - geo_at) <= gdt
114
+                break
109 115
     return uinfo
110 116
 
111 117
 
@@ -115,13 +121,21 @@ def tg_group_detail_api(request):
115 121
     group_id = request.POST.get('group_id', '')
116 122
     user_id = request.POST.get('user_id', '')
117 123
 
124
+    # GEO last submit datetimes
118 125
     geo_dts = r.hgetall(TOUR_GUIDE_GROUP_GEO_SUBMIT_DT % group_id)
119 126
 
127
+    group_info = get_group_info(group_id)
128
+    # Gather datetime
129
+    gather_at = group_info.get('gather_at', '')
130
+    gather_at = tc.utc_string_to_utc_datetime(gather_at, format='%Y-%m-%dT%H:%M:%SZ') if isinstance(gather_at, basestring) else gather_at
131
+    if gather_at and tc.utc_datetime() > gather_at:
132
+        gather_at = ''
133
+
120 134
     group_users_info = get_group_users_info(group_id, user_id)
121 135
     # Remove tourguide
122 136
     group_passed_users = [uinfo for uinfo in group_users_info['passed'] if not uinfo['subadmin']]
123 137
     # GEO Submited Flag
124
-    group_passed_users = [set_geo_submit_flag(uinfo, geo_dts.get(uinfo['user_id'], '')) for uinfo in group_passed_users]
138
+    group_passed_users = [set_geo_submit_flag(uinfo, tc.utc_string_to_utc_datetime(geo_dts.get(uinfo['user_id'], '')), gather_at) for uinfo in group_passed_users]
125 139
     group_users_info['passed'] = group_passed_users
126 140
     # Update passed count
127 141
     group_users_info['passed_count'] = len(group_passed_users)
@@ -130,7 +144,7 @@ def tg_group_detail_api(request):
130 144
 
131 145
     return response(200, 'Get Tour Guide Group Detail Info Success', u'获取旅行团详情成功', {
132 146
         'group_id': group_id,
133
-        'group': get_group_info(group_id),
147
+        'group': group_info,
134 148
         'users': group_users_info,
135 149
     })
136 150