考试api基本完成3

This commit is contained in:
caoqianming 2022-11-08 13:20:05 +08:00
parent 2c643ca269
commit 701784fb53
7 changed files with 15 additions and 64 deletions

View File

@ -3,8 +3,8 @@ ENV = 'development'
# base 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 = 'https://testsearch.ctc.ac.cn/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 = 'http://47.95.0.242:9101/api'

View File

@ -19,6 +19,7 @@ from apps.supervision.models import Content, Record
from apps.supervision.serializers import ContentSerializer, RecordCreateSerializer, RecordSerializer
from apps.system.mixins import CreateUpdateCustomMixin
from utils.queryset import get_child_queryset2
from apps.system.permission_data import RbacFilterSet
from django.utils import timezone
from apps.supervision.permission import RecordPermission
from django.utils.decorators import method_decorator
@ -60,7 +61,7 @@ class AbilityContentViewSet(CreateUpdateCustomMixin, ModelViewSet):
def perform_update(self, serializer):
serializer.save(update_by = self.request.user)
class AbilityRecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
class AbilityRecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post': '*',
'put': '*', 'delete': '*'}
queryset = Record.objects.filter(content__cate=2)
@ -70,25 +71,6 @@ class AbilityRecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
ordering = ['-task', 'content__sortnum', '-create_time']
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):
if not self.request.query_params.get('pageoff', None):
queryset = queryset.exclude(state='待发布')

View File

@ -13,6 +13,7 @@ from rest_framework.exceptions import ParseError
from rest_framework import serializers
from rest_framework.exceptions import ParseError
from utils.queryset import get_child_queryset2
from apps.system.permission_data import RbacFilterSet
class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
@ -112,7 +113,7 @@ def cal_count(qtask, org):
qorg.save()
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet):
class QActionViewSet(RbacFilterSet, PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet):
perms_map = {'get': '*', 'delete': 'qaction_delete'}
queryset = QAction.objects.select_related(
'file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by')
@ -126,24 +127,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
return QActionDetailSerializer
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': '*'})
# def my(self, request, *args, **kwargs):

View File

@ -98,7 +98,7 @@ class SubtaskViewSet(PageOrNot, CreateUpdateCustomMixin, OptimizationMixin, Mode
if has_permission('inspecttask_create', self.request.user):
return queryset
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':'*'})
def self(self, request, *args, **kwargs):

View File

@ -209,7 +209,7 @@ from utils.queryset import get_child_queryset2
from .permission import RecordPermission
class RecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post': 'record_create',
'put': 'record_update', 'delete': 'record_delete'}
queryset = Record.objects.filter(content__cate=1)
@ -219,25 +219,6 @@ class RecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
ordering = ['-task', 'content__sortnum', '-create_time']
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):
if not self.request.query_params.get('pageoff', None):
queryset = queryset.exclude(state='待发布')

View File

@ -12,7 +12,7 @@ def get_permission_list(user):
perms_list = ['admin']
else:
perms = Permission.objects.none()
roles = user.roles.all()
roles = user.roles.all() if hasattr(user, 'roles') else None
if roles:
for i in roles:
perms = perms | i.perms.all()

View File

@ -34,7 +34,9 @@ class RbacFilterSet(object):
if hasattr(queryset.model, 'belong_dept'):
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)
if '全部' in data_range:
return queryset
@ -57,6 +59,8 @@ class RbacFilterSet(object):
elif '仅本人' in data_range:
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
return queryset
else:
return queryset.none()
return queryset