apk上传更新功能

This commit is contained in:
曹前明 2022-08-08 08:51:07 +08:00
parent b21441ad76
commit 53db107a88
7 changed files with 52 additions and 9 deletions

2
.gitignore vendored
View File

@ -13,6 +13,6 @@ celerybeat-schedule.dat
celerybeat-schedule.dir
db.sqlite3
server/conf.py
server/conf.json
server/conf.ini
sh/*
nohup.out

View File

@ -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='文件地址')

View File

@ -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)),
]

View File

@ -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()

View File

@ -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)
raise ParseError(**SIGN_MAKE_FAIL)

View File

@ -91,7 +91,7 @@ class WxmpClient:
"errors": errors
})
Tlog(**self.log).save()
def get_basic_info(self, code):
params = {
'appid': self.app_id,

View File

@ -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