diff --git a/apps/system/urls.py b/apps/system/urls.py index 9143c2e0..7e2cab10 100755 --- a/apps/system/urls.py +++ b/apps/system/urls.py @@ -1,6 +1,6 @@ from email.mime import base from django.urls import path, include -from .views import ApkView, FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \ +from .views import ApkViewSet, FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \ UserPostViewSet, UserViewSet, DeptViewSet, \ PermissionViewSet, RoleViewSet, PostViewSet, \ DictTypeViewSet, DictViewSet @@ -23,6 +23,7 @@ router.register('ptask_result', PTaskResultViewSet, basename="ptask_result") # router.register('qtask_result', QTaskResultViewSet, basename="qtask_result") router.register('user_post', UserPostViewSet, basename='user_post') router.register('post_role', PostRoleViewSet, basename='post_role') +router.register('apk', ApkViewSet, basename='apk') router2 = routers.DefaultRouter() router2.register('file', FileViewSet, basename='file') @@ -30,6 +31,5 @@ router2.register('file', FileViewSet, basename='file') urlpatterns = [ path(API_BASE_URL, include(router.urls)), path(API_BASE_URL + 'task/', TaskList.as_view()), - path(API_BASE_URL + 'apk/', ApkView.as_view()), path('api/', include(router2.urls)), ] diff --git a/apps/system/views.py b/apps/system/views.py index d7f9a715..c7ad694b 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -13,7 +13,7 @@ from rest_framework.mixins import (CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin) from rest_framework.parsers import (JSONParser, MultiPartParser) -from rest_framework.permissions import IsAuthenticated +from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework.response import Response from rest_framework.views import APIView from apps.hrm.models import Employee @@ -36,7 +36,7 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer, UserCreateSerializer, UserListSerializer, UserPostCreateSerializer, UserPostSerializer, UserUpdateSerializer) -from rest_framework.generics import ListCreateAPIView +from rest_framework.viewsets import GenericViewSet # logger.info('请求成功! response_code:{};response_headers:{}; @@ -623,23 +623,36 @@ config = configparser.ConfigParser() # 读取配置文件 filename = os.path.join(settings.BASE_DIR, 'server/conf.ini') - -class ApkView(MyLoggingMixin, ListCreateAPIView): - permission_classes = [IsAuthenticated] +class ApkViewSet(MyLoggingMixin, ListModelMixin, CreateModelMixin, GenericViewSet): + perms_map = {'get': '*', 'post': 'apk.upload'} serializer_class = ApkSerializer - def get(self, request): - """获取apk信息 + def get_authenticators(self): + if self.request.method == 'GET': + return [] + return super().get_authenticators() + + def get_permissions(self): + if self.request.method == 'GET': + return [AllowAny()] + return super().get_permissions() + + def list(self, request, *args, **kwargs): + """ + 获取apk信息 获取apk信息 """ config.read(filename, encoding='utf-8') file = config.get('apk', 'file') - # if not file.startswith('http'): - # file = settings.BASE_URL + file return Response({'version': config.get('apk', 'version'), 'file': file}) - def post(self, request): + def create(self, request, *args, **kwargs): + """ + 上传apk + + 上传apk + """ sr = ApkSerializer(data=request.data) sr.is_valid(raise_exception=True) vdata = sr.validated_data @@ -650,4 +663,4 @@ class ApkView(MyLoggingMixin, ListCreateAPIView): config.write(f) from shutil import copyfile copyfile(settings.BASE_DIR + vdata['file'], settings.BASE_DIR + '/media/zc_ehs.apk') - return Response() + return Response() \ No newline at end of file