Add forbidden duplicate upload photo

Brightcells 8 年之前
父节点
当前提交
59def8d479
共有 2 个文件被更改,包括 21 次插入13 次删除
  1. 5 0
      group/views.py
  2. 16 13
      utils/error/errno_utils.py

+ 5 - 0
group/views.py

@@ -241,6 +241,11 @@ def flyimg_upload_api(request):
241 241
 
242 242
     current_id = int(request.POST.get('current_id', -1))
243 243
 
244
+    # 防止重复上传
245
+    if photo:
246
+        if not r.acquire_lock('{}:{}:{}'.format(group_id, user_id, photo.name), 60):
247
+            return response(GroupPhotoStatusCode.DUPLICATE_UPLOAD)
248
+
244 249
     # 用户校验
245 250
     try:
246 251
         user = UserInfo.objects.get(user_id=user_id)

+ 16 - 13
utils/error/errno_utils.py

@@ -6,24 +6,24 @@ from StatusCode import BaseStatusCode, StatusCodeField
6 6
 class LensmanStatusCode(BaseStatusCode):
7 7
     """ 摄影师相关错误码 4000xx """
8 8
     LENSMAN_NOT_FOUND = StatusCodeField(400001, 'Lensman Not Found', description=u'摄影师不存在')
9
+    # 密码
9 10
     LENSMAN_PASSWORD_ERROR = StatusCodeField(400002, 'Lensman Password Error', description=u'摄影师密码错误')
10
-
11
+    # 手机号
11 12
     LENSMAN_PHONE_ALREADY_EXISTS = StatusCodeField(400005, 'Lensman Phone Already Exists', description=u'手机号已经存在')
12
-
13
+    # 状态
13 14
     LENSMAN_ALREADY_NOT_UNVERIFIED = StatusCodeField(400010, 'Lensman Already Not Unverified', description=u'摄影师帐号已激活')
14
-
15 15
     LENSMAN_NOT_ACTIVATED = StatusCodeField(400015, 'Lensman Not Activated', description=u'摄影师帐号未激活')
16 16
 
17 17
 
18 18
 class TourGuideStatusCode(BaseStatusCode):
19 19
     """ 导游相关错误码 4001xx """
20 20
     TOURGUIDE_NOT_FOUND = StatusCodeField(400101, 'Tour Guide Not Found', description=u'导游不存在')
21
+    # 密码
21 22
     TOURGUIDE_PASSWORD_ERROR = StatusCodeField(400102, 'Tour Guide Password Error', description=u'导游密码错误')
22
-
23
+    # 手机号
23 24
     TOURGUIDE_PHONE_ALREADY_EXISTS = StatusCodeField(400105, 'Tour Guide Phone Already Exists', description=u'手机号已经存在')
24
-
25
+    # 状态
25 26
     TOURGUIDE_ALREADY_NOT_UNVERIFIED = StatusCodeField(400110, 'Tour Guide Already Not Unverified', description=u'导游帐号已激活')
26
-
27 27
     TOURGUIDE_NOT_ACTIVATED = StatusCodeField(400115, 'Tour Guide Not Activated', description=u'导游帐号未激活')
28 28
 
29 29
 
@@ -32,7 +32,7 @@ class UserStatusCode(BaseStatusCode):
32 32
     USER_NOT_FOUND = StatusCodeField(400501, 'User Not Found', description=u'用户不存在')
33 33
     USER_PASSWORD_ERROR = StatusCodeField(400502, 'User Password Error', description=u'用户密码错误')
34 34
     USERNAME_HAS_REGISTERED = StatusCodeField(400503, 'Username Has Registered', description=u'用户名已注册')
35
-
35
+    # 游客
36 36
     GUEST_NOT_ALLOWED = StatusCodeField(400511, 'Guest Not ALLOWED', description=u'游客登录未开启')
37 37
 
38 38
 
@@ -58,7 +58,7 @@ class GroupStatusCode(BaseStatusCode):
58 58
     GROUP_NOT_FOUND = StatusCodeField(402001, 'Group Not Found', description=u'群组不存在')
59 59
     GROUP_HAS_LOCKED = StatusCodeField(402002, 'Group Has Locked', description=u'群组已锁定')
60 60
     NOT_GROUP_ADMIN = StatusCodeField(402003, 'Not Group Admin', description=u'非群组管理员')
61
-
61
+    # 权限
62 62
     NO_UPDATE_PERMISSION = StatusCodeField(402010, 'No Update Permission', description=u'没有更新权限')
63 63
     NO_LOCK_PERMISSION = StatusCodeField(402011, 'No Lock Permission', description=u'没有锁定权限')
64 64
     NO_UNLOCK_PERMISSION = StatusCodeField(402012, 'No Unlock Permission', description=u'没有解锁权限')
@@ -69,10 +69,10 @@ class GroupStatusCode(BaseStatusCode):
69 69
     NO_CLOSE_PERMISSION = StatusCodeField(402017, 'No Close Permission', description=u'没有关闭权限')
70 70
     NO_TRANSFER_PERMISSION = StatusCodeField(402018, 'No Transfer Permission', description=u'没有转移权限')
71 71
     NO_LOCATION_PERMISSION = StatusCodeField(402019, 'No Location Permission', description=u'没有地理位置权限')
72
-
72
+    # 请求
73 73
     DUPLICATE_JOIN_REQUEST = StatusCodeField(402020, 'Duplicate Join Request', description=u'重复加群申请')
74 74
     JOIN_REQUEST_NOT_FOUND = StatusCodeField(402021, 'Join Request Not Found', description=u'加群申请不存在')
75
-
75
+    # 旅行团
76 76
     COULD_HAVE_ONLY_ONE_ACTIVE_GROUP = StatusCodeField(402030, 'Could Have Only One Active Group', description=u'只能创建一个活跃团')
77 77
 
78 78
 
@@ -80,15 +80,18 @@ class GroupUserStatusCode(BaseStatusCode):
80 80
     """ 群组/团用户相关错误码 4021xx """
81 81
     GROUP_USER_NOT_FOUND = StatusCodeField(402101, 'Group User Not Found', description=u'群组用户不存在')
82 82
     GROUP_USER_HAS_DELETED = StatusCodeField(402102, 'Group User Has Deleted', description=u'群组用户被移除')
83
-
83
+    # 旅行团
84 84
     USER_HAS_NOT_JOIN_GROUP = StatusCodeField(402131, 'User Has Not Join Group', description=u'用户未加入旅行团')
85 85
 
86 86
 
87 87
 class GroupPhotoStatusCode(BaseStatusCode):
88 88
     """ 群组照片(飞图)相关错误码 4022xx """
89 89
     GROUP_PHOTO_NOT_FOUND = StatusCodeField(402201, 'Group Photo Not Found', description=u'飞图不存在')
90
-    THUMB_UP_NOT_FOUND = StatusCodeField(402202, 'Thumb Up Not Found', description=u'未点赞')
91
-    DUPLICATE_THUMB_UP = StatusCodeField(402203, 'Duplicate Thumb Up', description=u'重复点赞')
90
+    # 上传
91
+    DUPLICATE_UPLOAD = StatusCodeField(402210, 'Duplicate Upload', description=u'重复上传')
92
+    # 点赞
93
+    THUMB_UP_NOT_FOUND = StatusCodeField(402220, 'Thumb Up Not Found', description=u'未点赞')
94
+    DUPLICATE_THUMB_UP = StatusCodeField(402221, 'Duplicate Thumb Up', description=u'重复点赞')
92 95
 
93 96
 
94 97
 class OrderStatusCode(BaseStatusCode):