from rest_framework.views import APIView from rest_framework.permissions import IsAdminUser from rest_framework.response import Response from apps.develop.tasks import backup_database, backup_media, reload_web_git, reload_server_git, reload_server_only from rest_framework.exceptions import APIException, ParseError # Create your views here. class ReloadServerGit(APIView): authentication_classes = [] permission_classes = [] def post(self, request): """ 拉取后端代码并重启服务 拉取后端代码并重启服务 """ completed = reload_server_git() if completed.returncode == 0: return Response() else: from server.settings import myLogger myLogger.error(completed.stdout) raise ParseError(completed.stdout) class ReloadClientGit(APIView): authentication_classes = [] permission_classes = [] def post(self, request): """ 拉取前端代码并打包 拉取前端代码并打包 """ reload_web_git.delay() return Response() # completed = reload_web_git() # if completed.returncode == 0: # return Response() # else: # raise APIException(completed.stdout) class ReloadServerOnly(APIView): permission_classes = [IsAdminUser] def post(self, request): """ 仅重启服务 仅重启服务 """ completed = reload_server_only() if completed.returncode == 0: return Response() else: raise APIException(completed.stdout) class BackupDatabase(APIView): permission_classes = [IsAdminUser] def post(self, request): """ 备份数据库到指定位置 备份数据库到指定位置 """ completed = backup_database() if completed.returncode == 0: return Response() else: raise APIException(completed.stdout) class BackupMedia(APIView): permission_classes = [IsAdminUser] def post(self, request): """ 备份资源到指定位置 备份资源到指定位置 """ completed = backup_media() if completed.returncode == 0: return Response() else: raise APIException(completed.stdout)