From 53db107a88cb51bc2392fd99413a73e797375619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Mon, 8 Aug 2022 08:51:07 +0800 Subject: [PATCH] =?UTF-8?q?apk=E4=B8=8A=E4=BC=A0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- apps/system/serializers.py | 5 +++++ apps/system/urls.py | 4 +++- apps/system/views.py | 39 ++++++++++++++++++++++++++++++++++++-- apps/utils/views.py | 2 +- apps/utils/wxmp.py | 2 +- server/settings.py | 7 ++++--- 7 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index c96a2f9f..2e871ae2 100755 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,6 @@ celerybeat-schedule.dat celerybeat-schedule.dir db.sqlite3 server/conf.py -server/conf.json +server/conf.ini sh/* nohup.out \ No newline at end of file diff --git a/apps/system/serializers.py b/apps/system/serializers.py index 5bfd6518..f94cd87b 100755 --- a/apps/system/serializers.py +++ b/apps/system/serializers.py @@ -406,3 +406,8 @@ class UserInfoSerializer(CustomModelSerializer): class Meta: model = User fields = ['id', 'username', 'name', 'posts_', 'avatar'] + + +class ApkSerializer(serializers.Serializer): + version = serializers.CharField(label='版本号') + file = serializers.CharField(label='文件地址') diff --git a/apps/system/urls.py b/apps/system/urls.py index aa19a1a7..9143c2e0 100755 --- a/apps/system/urls.py +++ b/apps/system/urls.py @@ -1,5 +1,6 @@ +from email.mime import base from django.urls import path, include -from .views import FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \ +from .views import ApkView, FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \ UserPostViewSet, UserViewSet, DeptViewSet, \ PermissionViewSet, RoleViewSet, PostViewSet, \ DictTypeViewSet, DictViewSet @@ -29,5 +30,6 @@ 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 14453a91..80bf647f 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -1,3 +1,5 @@ +import configparser +import os import importlib import json from django.contrib.auth.hashers import check_password, make_password @@ -17,14 +19,14 @@ from rest_framework.views import APIView from apps.system.errors import OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG from apps.system.filters import UserFilterSet # from django_q.models import Task as QTask, Schedule as QSchedule -from apps.utils.mixins import (CustomCreateModelMixin) +from apps.utils.mixins import (CustomCreateModelMixin, MyLoggingMixin) from django.conf import settings from apps.utils.permission import ALL_PERMS, get_user_perms_map from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from server.celery import app as celery_app from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User, UserPost) -from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, +from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer, FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer, PermissionSerializer, PostCreateUpdateSerializer, PostRoleCreateSerializer, @@ -33,6 +35,7 @@ from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreate RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer, UserCreateSerializer, UserListSerializer, UserPostCreateSerializer, UserPostSerializer, UserUpdateSerializer) +from rest_framework.generics import ListCreateAPIView # logger.info('请求成功! response_code:{};response_headers:{}; @@ -566,3 +569,35 @@ class FileViewSet(CustomCreateModelMixin, RetrieveModelMixin, ListModelMixin, Cu create_by=self.request.user, name=name, size=size, type=file_type, mime=mime) instance.path = settings.MEDIA_URL + instance.file.name instance.save() + + +# 生成ConfigParser对象 +config = configparser.ConfigParser() +# 读取配置文件 +filename = os.path.join(settings.BASE_DIR, 'server/conf.ini') +config.read(filename, encoding='utf-8') + + +class ApkView(MyLoggingMixin, ListCreateAPIView): + authentication_classes = [] + permission_classes = [] + serializer_class = ApkSerializer + + def get(self, request): + """获取apk信息 + + 获取apk信息 + """ + 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): + sr = ApkSerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + config.set("apk", "version", vdata['version']) + config.set("apk", "file", vdata['file']) + config.write(open(os.path.join(settings.BASE_DIR, 'server/conf.ini'), 'w')) + return Response() diff --git a/apps/utils/views.py b/apps/utils/views.py index ba000b54..ee7e22f3 100755 --- a/apps/utils/views.py +++ b/apps/utils/views.py @@ -55,4 +55,4 @@ class SignatureViewSet(CustomCreateModelMixin, CustomGenericViewSet): cv2.imwrite(new_path, image) return Response({'path': new_path.replace(BASE_DIR, '')}) except Exception: - raise ParseError(**SIGN_MAKE_FAIL) \ No newline at end of file + raise ParseError(**SIGN_MAKE_FAIL) diff --git a/apps/utils/wxmp.py b/apps/utils/wxmp.py index c76fcec8..5265e2b0 100644 --- a/apps/utils/wxmp.py +++ b/apps/utils/wxmp.py @@ -91,7 +91,7 @@ class WxmpClient: "errors": errors }) Tlog(**self.log).save() - + def get_basic_info(self, code): params = { 'appid': self.app_id, diff --git a/server/settings.py b/server/settings.py index 949c2e54..1f72715d 100755 --- a/server/settings.py +++ b/server/settings.py @@ -11,10 +11,8 @@ https://docs.djangoproject.com/en/3.0/ref/settings/ """ from datetime import datetime, timedelta -import json import os from . import conf -import logging # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -346,7 +344,8 @@ LOGGING = { } } -# 项目地址 +# 项目 +VERSION = '1.0.0' BASE_URL = conf.BASE_URL # 大华ICC平台 @@ -404,3 +403,5 @@ WXMP_APPSECRET = conf.WXMP_APPSECRET WX_ENABLED = conf.WX_ENABLED WX_APPID = conf.WX_APPID WX_APPSECRET = conf.WX_APPSECRET + +