apk上传更新功能
This commit is contained in:
parent
b21441ad76
commit
53db107a88
|
@ -13,6 +13,6 @@ celerybeat-schedule.dat
|
|||
celerybeat-schedule.dir
|
||||
db.sqlite3
|
||||
server/conf.py
|
||||
server/conf.json
|
||||
server/conf.ini
|
||||
sh/*
|
||||
nohup.out
|
|
@ -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='文件地址')
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue