Files
Django/jituan/services/club_user_access.py

44 lines
1.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""后台按俱乐部校验用户/订单是否在当前数据范围内。"""
from rest_framework.response import Response
from jituan.constants import CLUB_ID_DEFAULT, DATA_SCOPE_ALL
from jituan.services.club_context import resolve_club_id_from_request, resolve_club_scope
def user_belongs_to_request(user, request):
if resolve_club_scope(request) == DATA_SCOPE_ALL:
return True
club_id = resolve_club_id_from_request(request)
user_club = getattr(user, 'ClubID', None) or ''
return user_club == club_id
def forbid_if_user_out_of_scope(request, user):
"""不属于当前俱乐部时返回 Response否则返回 None。"""
if user_belongs_to_request(user, request):
return None
return Response({'code': 403, 'msg': '该用户不属于当前俱乐部数据范围'})
def list_response_meta(request):
return {
'club_id': resolve_club_id_from_request(request),
'scope': resolve_club_scope(request),
}
def order_belongs_to_request(order, request):
if resolve_club_scope(request) == DATA_SCOPE_ALL:
return True
club_id = resolve_club_id_from_request(request)
order_club = (getattr(order, 'ClubID', None) or '').strip()
if club_id == CLUB_ID_DEFAULT:
return order_club in (club_id, '', None) or not order_club
return order_club == club_id
def forbid_if_order_out_of_scope(request, order):
if order_belongs_to_request(order, request):
return None
return Response({'code': 403, 'msg': '该订单不属于当前俱乐部数据范围'})