-num-old"> 14
from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode
from utils.error.response_utils import response
from utils.group_photo_utils import get_current_photos
@@ -127,8 +128,12 @@ def tgu_group_user_remove_api(request):
return response(GroupStatusCode.GROUP_NOT_FOUND)
# 权限校验
- if not GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists() or admin_id == user_id: # 管理员也不允许将自己移除
- return response(GroupStatusCode.NO_UPDATE_PERMISSION)
+ if not is_group_subadmin(group_id, admin_id):
+ return response(GroupStatusCode.NOT_GROUP_SUBADMIN)
+
+ # 管理员也不允许将自己移除
+ if admin_id == user_id:
+ return response(GroupStatusCode.ADMIN_CANNOT_HANDLE_SELF)
# 群组用户校验
try:
@@ -179,8 +184,8 @@ def tgu_group_user_update_api(request):
# 权限校验
if admin_id:
- if not GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists():
- return response(GroupStatusCode.NO_UPDATE_PERMISSION)
+ if not is_group_subadmin(group_id, admin_id):
+ return response(GroupStatusCode.NOT_GROUP_SUBADMIN)
else:
if not GroupUserInfo.objects.filter(group_id=group_id, user_id=user_id, status=True).exists():
return response(GroupStatusCode.NO_UPDATE_PERMISSION)
@@ -237,8 +242,8 @@ def tgu_group_user_locations_api(request):
admin_id = request.POST.get('admin_id', '') # 导游唯一标识
# 权限校验
- if not GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists():
- return response(GroupStatusCode.NO_LOCATION_PERMISSION)
+ if not is_group_subadmin(group_id, admin_id):
+ return response(GroupStatusCode.NOT_GROUP_SUBADMIN)
# 获取集合经纬度
gather_info = json.loads(r.get(TOUR_GUIDE_GROUP_CUR_GATHER_INFO % group_id) or '{}')
@@ -272,8 +277,8 @@ def tgu_group_user_location_api(request):
user_id = request.POST.get('user_id', '')
# 权限校验
- if not GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists():
- return response(GroupStatusCode.NO_LOCATION_PERMISSION)
+ if not is_group_subadmin(group_id, admin_id):
+ return response(GroupStatusCode.NOT_GROUP_SUBADMIN)
session_id = r.get(TOUR_GUIDE_GROUP_CUR_SESSION % group_id)
locations = r.lrange(TOUR_GUIDE_GROUP_USER_GEO_LIST % (group_id, session_id, user_id), 0, -1)
@@ -0,0 +1,11 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from group.models import GroupUserInfo |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+def is_group_admin(group_id, admin_id): |
|
| 7 |
+ return GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, admin=True, status=True).exists() |
|
| 8 |
+ |
|
| 9 |
+ |
|
| 10 |
+def is_group_subadmin(group_id, admin_id): |
|
| 11 |
+ return GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists() |
@@ -57,24 +57,27 @@ class GroupStatusCode(BaseStatusCode): |
||
| 57 | 57 |
""" 群组/团相关错误码 4020xx """ |
| 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 |
- NOT_GROUP_ADMIN = StatusCodeField(402003, 'Not Group Admin', description=u'非群组管理员') |
|
| 60 |
+ # 管理员 |
|
| 61 |
+ NOT_GROUP_ADMIN = StatusCodeField(402010, 'Not Group Admin', description=u'非群组管理员') |
|
| 62 |
+ NOT_GROUP_SUBADMIN = StatusCodeField(402011, 'Not Group Sub Admin', description=u'非群组协同管理员') |
|
| 63 |
+ ADMIN_CANNOT_HANDLE_SELF = StatusCodeField(402012, 'Admin Cannot Handle Self', description=u'群组管理员无法操作自身') |
|
| 61 | 64 |
# 权限 |
| 62 |
- NO_UPDATE_PERMISSION = StatusCodeField(402010, 'No Update Permission', description=u'没有更新权限') |
|
| 63 |
- NO_LOCK_PERMISSION = StatusCodeField(402011, 'No Lock Permission', description=u'没有锁定权限') |
|
| 64 |
- NO_UNLOCK_PERMISSION = StatusCodeField(402012, 'No Unlock Permission', description=u'没有解锁权限') |
|
| 65 |
- NO_REMOVE_PERMISSION = StatusCodeField(402013, 'No Remove Permission', description=u'没有移除权限') |
|
| 66 |
- NO_QUIT_PERMISSION = StatusCodeField(402014, 'No Quit Permission', description=u'没有退出权限') |
|
| 67 |
- NO_PASS_PERMISSION = StatusCodeField(402015, 'No Pass Permission', description=u'没有通过权限') |
|
| 68 |
- NO_REFUSE_PERMISSION = StatusCodeField(402016, 'No Refuse Permission', description=u'没有拒绝权限') |
|
| 69 |
- NO_CLOSE_PERMISSION = StatusCodeField(402017, 'No Close Permission', description=u'没有关闭权限') |
|
| 70 |
- NO_TRANSFER_PERMISSION = StatusCodeField(402018, 'No Transfer Permission', description=u'没有转移权限') |
|
| 71 |
- NO_LOCATION_PERMISSION = StatusCodeField(402019, 'No Location Permission', description=u'没有地理位置权限') |
|
| 65 |
+ NO_UPDATE_PERMISSION = StatusCodeField(402020, 'No Update Permission', description=u'无更新权限') |
|
| 66 |
+ NO_LOCK_PERMISSION = StatusCodeField(402021, 'No Lock Permission', description=u'无锁定权限') |
|
| 67 |
+ NO_UNLOCK_PERMISSION = StatusCodeField(402022, 'No Unlock Permission', description=u'无解锁权限') |
|
| 68 |
+ NO_REMOVE_PERMISSION = StatusCodeField(402023, 'No Remove Permission', description=u'无移除权限') |
|
| 69 |
+ NO_QUIT_PERMISSION = StatusCodeField(402024, 'No Quit Permission', description=u'无退出权限') |
|
| 70 |
+ NO_PASS_PERMISSION = StatusCodeField(402025, 'No Pass Permission', description=u'无通过权限') |
|
| 71 |
+ NO_REFUSE_PERMISSION = StatusCodeField(402026, 'No Refuse Permission', description=u'无拒绝权限') |
|
| 72 |
+ NO_CLOSE_PERMISSION = StatusCodeField(402027, 'No Close Permission', description=u'无关闭权限') |
|
| 73 |
+ NO_TRANSFER_PERMISSION = StatusCodeField(402028, 'No Transfer Permission', description=u'无转移权限') |
|
| 74 |
+ NO_LOCATION_PERMISSION = StatusCodeField(402029, 'No Location Permission', description=u'无地理位置权限') |
|
| 72 | 75 |
# 请求 |
| 73 |
- DUPLICATE_JOIN_REQUEST = StatusCodeField(402020, 'Duplicate Join Request', description=u'重复加群申请') |
|
| 74 |
- JOIN_REQUEST_NOT_FOUND = StatusCodeField(402021, 'Join Request Not Found', description=u'加群申请不存在') |
|
| 76 |
+ DUPLICATE_JOIN_REQUEST = StatusCodeField(402030, 'Duplicate Join Request', description=u'重复加群申请') |
|
| 77 |
+ JOIN_REQUEST_NOT_FOUND = StatusCodeField(402031, 'Join Request Not Found', description=u'加群申请不存在') |
|
| 75 | 78 |
# 旅行团 |
| 76 |
- GROUP_HAS_ENDED = StatusCodeField(402030, 'Group Has Ended', description=u'群组已结束') |
|
| 77 |
- COULD_HAVE_ONLY_ONE_ACTIVE_GROUP = StatusCodeField(402031, 'Could Have Only One Active Group', description=u'只能创建一个活跃团') |
|
| 79 |
+ GROUP_HAS_ENDED = StatusCodeField(402040, 'Group Has Ended', description=u'群组已结束') |
|
| 80 |
+ COULD_HAVE_ONLY_ONE_ACTIVE_GROUP = StatusCodeField(402041, 'Could Have Only One Active Group', description=u'只能创建一个活跃团') |
|
| 78 | 81 |
|
| 79 | 82 |
|
| 80 | 83 |
class GroupUserStatusCode(BaseStatusCode): |
@@ -104,7 +107,7 @@ class OrderStatusCode(BaseStatusCode): |
||
| 104 | 107 |
WX_ORDER_PAY_FAIL = StatusCodeField(404009, 'WX Order Pay Fail', description=u'微信支付失败') |
| 105 | 108 |
SIGN_CHECK_FAIL = StatusCodeField(404010, 'Sign Check Fail', description=u'签名校验失败') |
| 106 | 109 |
FEE_CHECK_FAIL = StatusCodeField(404011, 'FEE Check Fail', description=u'金额校验失败') |
| 107 |
- NO_DETAIL_PERMISSION = StatusCodeField(404015, 'No Detail Permission', description=u'没有详情权限') |
|
| 110 |
+ NO_DETAIL_PERMISSION = StatusCodeField(404015, 'No Detail Permission', description=u'无详情权限') |
|
| 108 | 111 |
WX_ORDER_PAID_ALREADY_EXISTS = StatusCodeField(404020, 'WX Order Paid Already Exists', description=u'照片已购买') |
| 109 | 112 |
|
| 110 | 113 |
|