@@ -14,7 +14,7 @@ urlpatterns = [ |
||
14 | 14 |
url(r'^u/login$', account_views.user_login_api, name='user_login_api'), # 用户登录 |
15 | 15 |
] |
16 | 16 |
|
17 |
-urlpatterns = [ |
|
17 |
+urlpatterns += [ |
|
18 | 18 |
url(r'^g/create$', group_views.group_create_api, name='group_create_api'), # 群组创建 |
19 | 19 |
url(r'^g/detail$', group_views.group_detail_api, name='group_detail_api'), # 群组详情 |
20 | 20 |
url(r'^g/update$', group_views.group_update_api, name='group_update_api'), # 群组更新 |
@@ -26,6 +26,11 @@ urlpatterns = [ |
||
26 | 26 |
] |
27 | 27 |
|
28 | 28 |
urlpatterns += [ |
29 |
+ url(r'^f/upload$', group_views.flyimg_upload_api, name='flyimg_upload_api'), # 飞图上传 |
|
30 |
+ url(r'^f/list$', group_views.flyimg_upload_api, name='flyimg_list_api'), # 飞图列表 |
|
31 |
+] |
|
32 |
+ |
|
33 |
+urlpatterns += [ |
|
29 | 34 |
url(r'^uuid_init$', photo_views.uuid_init, name='uuid_init'), # 生成唯一标识 |
30 | 35 |
url(r'^uuid$', photo_views.uuid, name='uuid'), # 获取唯一标识 |
31 | 36 |
url(r'^photos/upload$', photo_views.upload_photo, name='upload_photo'), # 上传图片 |
@@ -125,3 +125,11 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
125 | 125 |
@property |
126 | 126 |
def photo_thumbnail_url(self): |
127 | 127 |
return u'{0}/{1}'.format(settings.IMG_DOMAIN, self.photo_thumbnail_path) if self.photo_thumbnail_path else '' |
128 |
+ |
|
129 |
+ @property |
|
130 |
+ def photo_info(self): |
|
131 |
+ return { |
|
132 |
+ 'photo_id': self.pk, |
|
133 |
+ 'photo_path': self.photo_url, |
|
134 |
+ 'photo_thumbnail_path': self.photo_thumbnail_url, |
|
135 |
+ } |
@@ -1,5 +1,6 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
+from django.core.files.storage import default_storage |
|
3 | 4 |
from django.db import transaction |
4 | 5 |
from django.http import JsonResponse |
5 | 6 |
|
@@ -14,6 +15,9 @@ from utils.ip_utils import ip_addr |
||
14 | 15 |
from curtail_uuid import CurtailUUID |
15 | 16 |
from TimeConvert import TimeConvert as tc |
16 | 17 |
|
18 |
+import os |
|
19 |
+import shortuuid |
|
20 |
+ |
|
17 | 21 |
|
18 | 22 |
@transaction.atomic |
19 | 23 |
def group_create_api(request): |
@@ -48,7 +52,7 @@ def group_create_api(request): |
||
48 | 52 |
'data': { |
49 | 53 |
'group_id': group_id, |
50 | 54 |
'group': group.data, |
51 |
- 'users': group.users(user_id) |
|
55 |
+ 'users': group.users(user_id), |
|
52 | 56 |
}, |
53 | 57 |
}) |
54 | 58 |
|
@@ -79,7 +83,7 @@ def group_detail_api(request): |
||
79 | 83 |
'data': { |
80 | 84 |
'group_id': group_id, |
81 | 85 |
'group': group.data, |
82 |
- 'users': group.users(user_id) |
|
86 |
+ 'users': group.users(user_id), |
|
83 | 87 |
}, |
84 | 88 |
}) |
85 | 89 |
|
@@ -122,7 +126,7 @@ def group_update_api(request): |
||
122 | 126 |
'data': { |
123 | 127 |
'group_id': group_id, |
124 | 128 |
'group': group.data, |
125 |
- 'users': group.users(admin_id) |
|
129 |
+ 'users': group.users(admin_id), |
|
126 | 130 |
}, |
127 | 131 |
}) |
128 | 132 |
|
@@ -256,7 +260,7 @@ def group_remove_api(request): |
||
256 | 260 |
'message': u'用户移除成功', |
257 | 261 |
'data': { |
258 | 262 |
'group_id': group_id, |
259 |
- 'users': group.users(admin_id) |
|
263 |
+ 'users': group.users(admin_id), |
|
260 | 264 |
}, |
261 | 265 |
}) |
262 | 266 |
|
@@ -310,7 +314,7 @@ def group_pass_api(request): |
||
310 | 314 |
'message': u'申请通过成功', |
311 | 315 |
'data': { |
312 | 316 |
'group_id': group_id, |
313 |
- 'users': group.users(admin_id) |
|
317 |
+ 'users': group.users(admin_id), |
|
314 | 318 |
}, |
315 | 319 |
}) |
316 | 320 |
|
@@ -364,11 +368,73 @@ def group_refuse_api(request): |
||
364 | 368 |
'message': u'申请拒绝成功', |
365 | 369 |
'data': { |
366 | 370 |
'group_id': group_id, |
367 |
- 'users': group.users(admin_id) |
|
371 |
+ 'users': group.users(admin_id), |
|
368 | 372 |
}, |
369 | 373 |
}) |
370 | 374 |
|
371 | 375 |
|
376 |
+def flyimg_upload_api(request): |
|
377 |
+ group_id = request.POST.get('group_id', '') |
|
378 |
+ user_id = request.POST.get('user_id', '') |
|
379 |
+ nickname = request.POST.get('nickname', '') |
|
380 |
+ |
|
381 |
+ photo = request.FILES.get('photo', '') |
|
382 |
+ |
|
383 |
+ photo_id = int(request.POST.get('photo_id', -1)) |
|
384 |
+ |
|
385 |
+ try: |
|
386 |
+ user = UserInfo.objects.get(user_id=user_id) |
|
387 |
+ except UserInfo.DoesNotExist: |
|
388 |
+ return JsonResponse({ |
|
389 |
+ 'status': 4011, |
|
390 |
+ 'message': u'用户不存在', |
|
391 |
+ }) |
|
392 |
+ |
|
393 |
+ try: |
|
394 |
+ group = GroupInfo.objects.get(group_id=group_id) |
|
395 |
+ except GroupInfo.DoesNotExist: |
|
396 |
+ return JsonResponse({ |
|
397 |
+ 'status': 4020, |
|
398 |
+ 'message': u'群组不存在', |
|
399 |
+ }) |
|
400 |
+ |
|
401 |
+ if photo: |
|
402 |
+ _, extension = os.path.splitext(photo.name) |
|
403 |
+ |
|
404 |
+ uuid = shortuuid.uuid() |
|
405 |
+ photo_path = 'fly/{uuid}{extension}'.format(uuid=uuid, extension=extension) |
|
406 |
+ photo_thumbnail_path = 'fly/{uuid}_thumbnail{extension}'.format(uuid=uuid, extension=extension) |
|
407 |
+ |
|
408 |
+ if default_storage.exists(photo_path): |
|
409 |
+ default_storage.delete(photo_path) |
|
410 |
+ default_storage.save(photo_path, photo) |
|
411 |
+ |
|
412 |
+ if default_storage.exists(photo_thumbnail_path): |
|
413 |
+ default_storage.delete(photo_thumbnail_path) |
|
414 |
+ default_storage.save(photo_thumbnail_path, photo) |
|
415 |
+ |
|
416 |
+ group_photo = GroupPhotoInfo.objects.create( |
|
417 |
+ group_id=group_id, |
|
418 |
+ user_id=user_id, |
|
419 |
+ nickname=nickname, |
|
420 |
+ photo_path=photo_path, |
|
421 |
+ photo_thumbnail_path=photo_thumbnail_path, |
|
422 |
+ ) |
|
423 |
+ |
|
424 |
+ group_photos = GroupPhotoInfo.objects.filter( |
|
425 |
+ group_id=group_id, |
|
426 |
+ pk__gt=photo_id, |
|
427 |
+ ).order_by( |
|
428 |
+ 'created_at' |
|
429 |
+ ) |
|
430 |
+ |
|
431 |
+ return JsonResponse({ |
|
432 |
+ 'status': 200, |
|
433 |
+ 'message': u'飞图上传成功', |
|
434 |
+ 'data': [photo.photo_info for photo in group_photos], |
|
435 |
+ }) |
|
436 |
+ |
|
437 |
+ |
|
372 | 438 |
class GroupInfoViewSet(viewsets.ModelViewSet): |
373 | 439 |
queryset = GroupInfo.objects.all().order_by('-created_at') |
374 | 440 |
serializer_class = GroupInfoSerializer |
@@ -123,7 +123,7 @@ def session_detail_api(request, session): |
||
123 | 123 |
'message': u'获取照片列表成功', |
124 | 124 |
'data': { |
125 | 125 |
'count': photos.count(), |
126 |
- 'photos': [p.detail for p in photos] |
|
126 |
+ 'photos': [p.detail for p in photos], |
|
127 | 127 |
} |
128 | 128 |
}) |
129 | 129 |
|
@@ -144,7 +144,7 @@ def photo_standard_api(request, photo): |
||
144 | 144 |
'status': 200, |
145 | 145 |
'message': u'获取照片详情成功', |
146 | 146 |
'data': { |
147 |
- 'photo': photo.detail |
|
147 |
+ 'photo': photo.detail, |
|
148 | 148 |
} |
149 | 149 |
}) |
150 | 150 |
|