|
@@ -1,4 +1,4 @@
|
|
|
-#coding=utf-8
|
|
|
+# coding=utf-8
|
|
|
import traceback
|
|
|
import json
|
|
|
from django.db.models import Q
|
|
@@ -8,9 +8,10 @@ from rest_framework.views import APIView
|
|
|
from rest_framework.serializers import ValidationError
|
|
|
from utils.permission import permission_required, isLogin, check_permission
|
|
|
from django.contrib.auth.models import Group, Permission
|
|
|
-from rest_framework_jwt.views import ObtainJSONWebToken,VerifyJSONWebToken,RefreshJSONWebToken
|
|
|
+from rest_framework_jwt.views import ObtainJSONWebToken, VerifyJSONWebToken, RefreshJSONWebToken
|
|
|
from utils import response_error, response_ok
|
|
|
from django.contrib.auth import get_user_model
|
|
|
+
|
|
|
User = get_user_model()
|
|
|
from apps.account.serializers import JWTSerializer, EmployeeSerializer, GroupDictSerializer, GroupSerializer
|
|
|
from utils.custom_modelviewset import CustomModelViewSet
|
|
@@ -21,6 +22,7 @@ from apps.account.consts import PermissionMenu
|
|
|
from collections import OrderedDict
|
|
|
from apps.agent.models import Store, Agent
|
|
|
|
|
|
+
|
|
|
class LoginView(ObtainJSONWebToken):
|
|
|
serializer_class = JWTSerializer
|
|
|
|
|
@@ -28,11 +30,13 @@ class LoginView(ObtainJSONWebToken):
|
|
|
try:
|
|
|
ser = self.serializer_class(data=request.data)
|
|
|
ser.request = request
|
|
|
+ # TODO 判断门店是否在用、在有效期内
|
|
|
if ser.is_valid(raise_exception=True):
|
|
|
return response_ok(ser.validated_data)
|
|
|
except ValidationError as e:
|
|
|
return response_error(e.detail['error'][0])
|
|
|
|
|
|
+
|
|
|
class RefreshTokenView(RefreshJSONWebToken):
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
try:
|
|
@@ -42,6 +46,7 @@ class RefreshTokenView(RefreshJSONWebToken):
|
|
|
except ValidationError as e:
|
|
|
return response_error(u'登录状态失效,请重新登录')
|
|
|
|
|
|
+
|
|
|
class EmployeeViewSet(CustomModelViewSet):
|
|
|
permission_classes = [isLogin, ]
|
|
|
queryset = User.objects.filter()
|
|
@@ -54,7 +59,11 @@ class EmployeeViewSet(CustomModelViewSet):
|
|
|
queryset = queryset.filter(
|
|
|
Q(store_id__in=self.request.user.get_manager_range()) |
|
|
|
Q(id=user.id) |
|
|
|
- Q(create_user=user))
|
|
|
+ Q(create_user=user) |
|
|
|
+
|
|
|
+ Q(agent__create_user=user) |
|
|
|
+ Q(general_agent__create_user=user)
|
|
|
+ )
|
|
|
|
|
|
f = UserFilter(self.request.GET, queryset=queryset)
|
|
|
return f.qs
|
|
@@ -99,9 +108,9 @@ class EmployeeViewSet(CustomModelViewSet):
|
|
|
traceback.print_exc()
|
|
|
return response_error(u'入职失败')
|
|
|
|
|
|
- @permission_required('account.manager_store')
|
|
|
@action(methods=['post'], detail=True)
|
|
|
def branch(self, request, pk):
|
|
|
+ check_permission(request, 'account.manager_store')
|
|
|
data = json.loads(request.POST.get('sotres'))
|
|
|
try:
|
|
|
with transaction.atomic():
|
|
@@ -110,12 +119,13 @@ class EmployeeViewSet(CustomModelViewSet):
|
|
|
for row in data:
|
|
|
ManageStoreUser.objects.create(store_id=row, manage_user_id=pk)
|
|
|
BizLog.objects.addnew(self.request.user, BizLog.INSERT,
|
|
|
- u'设置账号[%s]管理门店,id=%d' % (instance.username, instance.id),data)
|
|
|
+ u'设置账号[%s]管理门店,id=%d' % (instance.username, instance.id), data)
|
|
|
return response_ok()
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
return response_error(u'保存失败')
|
|
|
|
|
|
+
|
|
|
class GroupsViewSet(CustomModelViewSet):
|
|
|
permission_classes = [isLogin, ]
|
|
|
queryset = Group.objects.filter()
|
|
@@ -124,8 +134,8 @@ class GroupsViewSet(CustomModelViewSet):
|
|
|
@permission_required('account.manager_permissions')
|
|
|
def filter_queryset(self, queryset):
|
|
|
if not self.request.user.is_superuser:
|
|
|
- groups = self.request.user.groups.all()
|
|
|
- queryset =queryset.filter(id__in=[g.id for g in groups])
|
|
|
+ groups = self.request.user.groups.all()
|
|
|
+ queryset = queryset.filter(id__in=[g.id for g in groups])
|
|
|
f = GroupFilter(self.request.GET, queryset=queryset)
|
|
|
return f.qs
|
|
|
|
|
@@ -158,6 +168,7 @@ class GroupsViewSet(CustomModelViewSet):
|
|
|
instance.delete()
|
|
|
return response_ok()
|
|
|
|
|
|
+
|
|
|
class PermissionsListView(APIView):
|
|
|
permission_classes = [isLogin, ]
|
|
|
|
|
@@ -181,6 +192,7 @@ class PermissionsListView(APIView):
|
|
|
permissions[row.content_type.name] = [item, ]
|
|
|
return response_ok(menus)
|
|
|
|
|
|
+
|
|
|
class PermissionDictView(APIView):
|
|
|
permission_classes = [isLogin, ]
|
|
|
|
|
@@ -189,7 +201,7 @@ class PermissionDictView(APIView):
|
|
|
rows = Group.objects.filter()
|
|
|
if not request.user.is_superuser:
|
|
|
groups = request.user.groups.all()
|
|
|
- rows =rows.filter(id__in=[g.id for g in groups])
|
|
|
+ rows = rows.filter(id__in=[g.id for g in groups])
|
|
|
serializer = GroupDictSerializer(rows, many=True)
|
|
|
return response_ok(serializer.data)
|
|
|
|
|
@@ -206,15 +218,15 @@ class StoreTreeView(APIView):
|
|
|
agents = Agent.objects.filter()
|
|
|
if not request.user.is_superuser:
|
|
|
agents = agents.filter(id=request.user.agent_id)
|
|
|
- agents = agents.values('id','name')
|
|
|
+ agents = agents.values('id', 'name')
|
|
|
for agent in agents:
|
|
|
item = {
|
|
|
- 'title':agent['name'],
|
|
|
- 'id':agent['id'],
|
|
|
- 'field':'agent',
|
|
|
+ 'title': agent['name'],
|
|
|
+ 'id': agent['id'],
|
|
|
+ 'field': 'agent',
|
|
|
'children': [],
|
|
|
}
|
|
|
- stores = Store.objects.filter(agent_id=agent['id'], enable=True).values('id','name')
|
|
|
+ stores = Store.objects.filter(agent_id=agent['id'], enable=True).values('id', 'name')
|
|
|
for store in stores:
|
|
|
manage_store = ManageStoreUser.objects.filter(manage_user_id=id, store_id=store['id']).first()
|
|
|
checked = manage_store and True or False
|