apk上传更新功能
This commit is contained in:
parent
b21441ad76
commit
53db107a88
|
@ -13,6 +13,6 @@ celerybeat-schedule.dat
|
||||||
celerybeat-schedule.dir
|
celerybeat-schedule.dir
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
server/conf.py
|
server/conf.py
|
||||||
server/conf.json
|
server/conf.ini
|
||||||
sh/*
|
sh/*
|
||||||
nohup.out
|
nohup.out
|
|
@ -406,3 +406,8 @@ class UserInfoSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ['id', 'username', 'name', 'posts_', 'avatar']
|
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 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, \
|
UserPostViewSet, UserViewSet, DeptViewSet, \
|
||||||
PermissionViewSet, RoleViewSet, PostViewSet, \
|
PermissionViewSet, RoleViewSet, PostViewSet, \
|
||||||
DictTypeViewSet, DictViewSet
|
DictTypeViewSet, DictViewSet
|
||||||
|
@ -29,5 +30,6 @@ router2.register('file', FileViewSet, basename='file')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
path(API_BASE_URL + 'task/', TaskList.as_view()),
|
path(API_BASE_URL + 'task/', TaskList.as_view()),
|
||||||
|
path(API_BASE_URL + 'apk/', ApkView.as_view()),
|
||||||
path('api/', include(router2.urls)),
|
path('api/', include(router2.urls)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import configparser
|
||||||
|
import os
|
||||||
import importlib
|
import importlib
|
||||||
import json
|
import json
|
||||||
from django.contrib.auth.hashers import check_password, make_password
|
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.errors import OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG
|
||||||
from apps.system.filters import UserFilterSet
|
from apps.system.filters import UserFilterSet
|
||||||
# from django_q.models import Task as QTask, Schedule as QSchedule
|
# 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 django.conf import settings
|
||||||
from apps.utils.permission import ALL_PERMS, get_user_perms_map
|
from apps.utils.permission import ALL_PERMS, get_user_perms_map
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from server.celery import app as celery_app
|
from server.celery import app as celery_app
|
||||||
from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User,
|
from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User,
|
||||||
UserPost)
|
UserPost)
|
||||||
from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer,
|
from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer,
|
||||||
DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer,
|
DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer,
|
||||||
FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer,
|
FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer,
|
||||||
PermissionSerializer, PostCreateUpdateSerializer, PostRoleCreateSerializer,
|
PermissionSerializer, PostCreateUpdateSerializer, PostRoleCreateSerializer,
|
||||||
|
@ -33,6 +35,7 @@ from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreate
|
||||||
RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer,
|
RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer,
|
||||||
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
||||||
UserPostSerializer, UserUpdateSerializer)
|
UserPostSerializer, UserUpdateSerializer)
|
||||||
|
from rest_framework.generics import ListCreateAPIView
|
||||||
|
|
||||||
|
|
||||||
# logger.info('请求成功! response_code:{};response_headers:{};
|
# 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)
|
create_by=self.request.user, name=name, size=size, type=file_type, mime=mime)
|
||||||
instance.path = settings.MEDIA_URL + instance.file.name
|
instance.path = settings.MEDIA_URL + instance.file.name
|
||||||
instance.save()
|
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()
|
||||||
|
|
|
@ -55,4 +55,4 @@ class SignatureViewSet(CustomCreateModelMixin, CustomGenericViewSet):
|
||||||
cv2.imwrite(new_path, image)
|
cv2.imwrite(new_path, image)
|
||||||
return Response({'path': new_path.replace(BASE_DIR, '')})
|
return Response({'path': new_path.replace(BASE_DIR, '')})
|
||||||
except Exception:
|
except Exception:
|
||||||
raise ParseError(**SIGN_MAKE_FAIL)
|
raise ParseError(**SIGN_MAKE_FAIL)
|
||||||
|
|
|
@ -91,7 +91,7 @@ class WxmpClient:
|
||||||
"errors": errors
|
"errors": errors
|
||||||
})
|
})
|
||||||
Tlog(**self.log).save()
|
Tlog(**self.log).save()
|
||||||
|
|
||||||
def get_basic_info(self, code):
|
def get_basic_info(self, code):
|
||||||
params = {
|
params = {
|
||||||
'appid': self.app_id,
|
'appid': self.app_id,
|
||||||
|
|
|
@ -11,10 +11,8 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
from . import conf
|
from . import conf
|
||||||
import logging
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
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
|
BASE_URL = conf.BASE_URL
|
||||||
|
|
||||||
# 大华ICC平台
|
# 大华ICC平台
|
||||||
|
@ -404,3 +403,5 @@ WXMP_APPSECRET = conf.WXMP_APPSECRET
|
||||||
WX_ENABLED = conf.WX_ENABLED
|
WX_ENABLED = conf.WX_ENABLED
|
||||||
WX_APPID = conf.WX_APPID
|
WX_APPID = conf.WX_APPID
|
||||||
WX_APPSECRET = conf.WX_APPSECRET
|
WX_APPSECRET = conf.WX_APPSECRET
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue