考试api基本完成3
This commit is contained in:
parent
2c643ca269
commit
701784fb53
|
@ -3,8 +3,8 @@ ENV = 'development'
|
||||||
|
|
||||||
# base api
|
# base api
|
||||||
#VUE_APP_BASE_API = 'http://10.0.11.127:8000/api'
|
#VUE_APP_BASE_API = 'http://10.0.11.127:8000/api'
|
||||||
#VUE_APP_BASE_API = 'http://127.0.0.1:8000/api'
|
VUE_APP_BASE_API = 'http://127.0.0.1:2222/api'
|
||||||
VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api'
|
#VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api'
|
||||||
|
|
||||||
#VUE_APP_BASE_API = 'http://47.95.0.242:9101/api'
|
#VUE_APP_BASE_API = 'http://47.95.0.242:9101/api'
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ from apps.supervision.models import Content, Record
|
||||||
from apps.supervision.serializers import ContentSerializer, RecordCreateSerializer, RecordSerializer
|
from apps.supervision.serializers import ContentSerializer, RecordCreateSerializer, RecordSerializer
|
||||||
from apps.system.mixins import CreateUpdateCustomMixin
|
from apps.system.mixins import CreateUpdateCustomMixin
|
||||||
from utils.queryset import get_child_queryset2
|
from utils.queryset import get_child_queryset2
|
||||||
|
from apps.system.permission_data import RbacFilterSet
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from apps.supervision.permission import RecordPermission
|
from apps.supervision.permission import RecordPermission
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
|
@ -60,7 +61,7 @@ class AbilityContentViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||||
def perform_update(self, serializer):
|
def perform_update(self, serializer):
|
||||||
serializer.save(update_by = self.request.user)
|
serializer.save(update_by = self.request.user)
|
||||||
|
|
||||||
class AbilityRecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
class AbilityRecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': '*',
|
perms_map = {'get': '*', 'post': '*',
|
||||||
'put': '*', 'delete': '*'}
|
'put': '*', 'delete': '*'}
|
||||||
queryset = Record.objects.filter(content__cate=2)
|
queryset = Record.objects.filter(content__cate=2)
|
||||||
|
@ -70,25 +71,6 @@ class AbilityRecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
ordering = ['-task', 'content__sortnum', '-create_time']
|
ordering = ['-task', 'content__sortnum', '-create_time']
|
||||||
filterset_fields = ['content','content__cate', 'belong_dept', 'state']
|
filterset_fields = ['content','content__cate', 'belong_dept', 'state']
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = self.queryset
|
|
||||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
|
||||||
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
|
||||||
if self.request.user.is_superuser:
|
|
||||||
pass
|
|
||||||
if hasattr(queryset.model, 'belong_dept'):
|
|
||||||
user = self.request.user
|
|
||||||
roles = user.roles
|
|
||||||
data_range = roles.values_list('datas', flat=True)
|
|
||||||
if '全部' in data_range:
|
|
||||||
pass
|
|
||||||
elif '本级及以下' in data_range:
|
|
||||||
belong_depts = get_child_queryset2(user.dept)
|
|
||||||
queryset = queryset.filter(belong_dept__in = belong_depts)
|
|
||||||
elif '本级' in data_range:
|
|
||||||
queryset = queryset.filter(belong_dept = user.dept)
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
def filter_queryset(self, queryset):
|
def filter_queryset(self, queryset):
|
||||||
if not self.request.query_params.get('pageoff', None):
|
if not self.request.query_params.get('pageoff', None):
|
||||||
queryset = queryset.exclude(state='待发布')
|
queryset = queryset.exclude(state='待发布')
|
||||||
|
|
|
@ -13,6 +13,7 @@ from rest_framework.exceptions import ParseError
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from utils.queryset import get_child_queryset2
|
from utils.queryset import get_child_queryset2
|
||||||
|
from apps.system.permission_data import RbacFilterSet
|
||||||
|
|
||||||
|
|
||||||
class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
||||||
|
@ -112,7 +113,7 @@ def cal_count(qtask, org):
|
||||||
qorg.save()
|
qorg.save()
|
||||||
|
|
||||||
|
|
||||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet):
|
class QActionViewSet(RbacFilterSet, PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
perms_map = {'get': '*', 'delete': 'qaction_delete'}
|
perms_map = {'get': '*', 'delete': 'qaction_delete'}
|
||||||
queryset = QAction.objects.select_related(
|
queryset = QAction.objects.select_related(
|
||||||
'file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by')
|
'file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by')
|
||||||
|
@ -126,24 +127,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
return QActionDetailSerializer
|
return QActionDetailSerializer
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = self.queryset
|
|
||||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
|
||||||
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
|
||||||
if self.request.user.is_superuser:
|
|
||||||
pass
|
|
||||||
if hasattr(queryset.model, 'belong_dept'):
|
|
||||||
user = self.request.user
|
|
||||||
roles = user.roles
|
|
||||||
data_range = roles.values_list('datas', flat=True)
|
|
||||||
if '全部' in data_range:
|
|
||||||
pass
|
|
||||||
elif '本级及以下' in data_range:
|
|
||||||
belong_depts = get_child_queryset2(user.dept)
|
|
||||||
queryset = queryset.filter(belong_dept__in=belong_depts)
|
|
||||||
elif '本级' in data_range:
|
|
||||||
queryset = queryset.filter(belong_dept=user.dept)
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
# @action(methods=['get'], detail=False, perms_map={'get': '*'})
|
# @action(methods=['get'], detail=False, perms_map={'get': '*'})
|
||||||
# def my(self, request, *args, **kwargs):
|
# def my(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -98,7 +98,7 @@ class SubtaskViewSet(PageOrNot, CreateUpdateCustomMixin, OptimizationMixin, Mode
|
||||||
if has_permission('inspecttask_create', self.request.user):
|
if has_permission('inspecttask_create', self.request.user):
|
||||||
return queryset
|
return queryset
|
||||||
else:
|
else:
|
||||||
return queryset.filter(team_subtask__member=self.request.user).exclude(state='待发布')
|
return queryset.filter(team_subtask__member__id=self.request.user.id).exclude(state='待发布')
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
||||||
def self(self, request, *args, **kwargs):
|
def self(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -209,7 +209,7 @@ from utils.queryset import get_child_queryset2
|
||||||
|
|
||||||
from .permission import RecordPermission
|
from .permission import RecordPermission
|
||||||
|
|
||||||
class RecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'record_create',
|
perms_map = {'get': '*', 'post': 'record_create',
|
||||||
'put': 'record_update', 'delete': 'record_delete'}
|
'put': 'record_update', 'delete': 'record_delete'}
|
||||||
queryset = Record.objects.filter(content__cate=1)
|
queryset = Record.objects.filter(content__cate=1)
|
||||||
|
@ -219,25 +219,6 @@ class RecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
ordering = ['-task', 'content__sortnum', '-create_time']
|
ordering = ['-task', 'content__sortnum', '-create_time']
|
||||||
filter_class = RecordFilter # 过滤类
|
filter_class = RecordFilter # 过滤类
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = self.queryset
|
|
||||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
|
||||||
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
|
||||||
if self.request.user.is_superuser:
|
|
||||||
pass
|
|
||||||
if hasattr(queryset.model, 'belong_dept'):
|
|
||||||
user = self.request.user
|
|
||||||
roles = user.roles
|
|
||||||
data_range = roles.values_list('datas', flat=True)
|
|
||||||
if '全部' in data_range:
|
|
||||||
pass
|
|
||||||
elif '本级及以下' in data_range:
|
|
||||||
belong_depts = get_child_queryset2(user.dept)
|
|
||||||
queryset = queryset.filter(belong_dept__in = belong_depts)
|
|
||||||
elif '本级' in data_range:
|
|
||||||
queryset = queryset.filter(belong_dept = user.dept)
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
def filter_queryset(self, queryset):
|
def filter_queryset(self, queryset):
|
||||||
if not self.request.query_params.get('pageoff', None):
|
if not self.request.query_params.get('pageoff', None):
|
||||||
queryset = queryset.exclude(state='待发布')
|
queryset = queryset.exclude(state='待发布')
|
||||||
|
|
|
@ -12,7 +12,7 @@ def get_permission_list(user):
|
||||||
perms_list = ['admin']
|
perms_list = ['admin']
|
||||||
else:
|
else:
|
||||||
perms = Permission.objects.none()
|
perms = Permission.objects.none()
|
||||||
roles = user.roles.all()
|
roles = user.roles.all() if hasattr(user, 'roles') else None
|
||||||
if roles:
|
if roles:
|
||||||
for i in roles:
|
for i in roles:
|
||||||
perms = perms | i.perms.all()
|
perms = perms | i.perms.all()
|
||||||
|
|
|
@ -34,7 +34,9 @@ class RbacFilterSet(object):
|
||||||
|
|
||||||
if hasattr(queryset.model, 'belong_dept'):
|
if hasattr(queryset.model, 'belong_dept'):
|
||||||
user = self.request.user
|
user = self.request.user
|
||||||
roles = user.roles
|
roles = user.roles if hasattr(user, 'roles') else []
|
||||||
|
if not roles:
|
||||||
|
return queryset.none()
|
||||||
data_range = roles.values_list('datas', flat=True)
|
data_range = roles.values_list('datas', flat=True)
|
||||||
if '全部' in data_range:
|
if '全部' in data_range:
|
||||||
return queryset
|
return queryset
|
||||||
|
@ -57,6 +59,8 @@ class RbacFilterSet(object):
|
||||||
elif '仅本人' in data_range:
|
elif '仅本人' in data_range:
|
||||||
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
||||||
return queryset
|
return queryset
|
||||||
|
else:
|
||||||
|
return queryset.none()
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue