feat: base- 基于项目code返回或更改配置信息
This commit is contained in:
parent
a905118bdf
commit
1eec1c24b4
|
@ -41,7 +41,7 @@ from rest_framework.viewsets import GenericViewSet
|
||||||
from cron_descriptor import get_description
|
from cron_descriptor import get_description
|
||||||
import locale
|
import locale
|
||||||
from drf_yasg.utils import swagger_auto_schema
|
from drf_yasg.utils import swagger_auto_schema
|
||||||
from server.settings import get_sysconfig, update_sysconfig
|
from server.settings import get_sysconfig, update_sysconfig, update_dict
|
||||||
|
|
||||||
# logger.info('请求成功! response_code:{};response_headers:{};
|
# logger.info('请求成功! response_code:{};response_headers:{};
|
||||||
# response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
# response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
||||||
|
@ -383,14 +383,16 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
instance = serializer.save()
|
instance = serializer.save()
|
||||||
user = instance.user
|
user = instance.user
|
||||||
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
|
up = UserPost.objects.filter(user=user).order_by(
|
||||||
|
'sort', 'create_time').first()
|
||||||
if up:
|
if up:
|
||||||
user.belong_dept = up.dept
|
user.belong_dept = up.dept
|
||||||
user.post = up.post
|
user.post = up.post
|
||||||
user.update_by = self.request.user
|
user.update_by = self.request.user
|
||||||
user.save()
|
user.save()
|
||||||
# 更新人员表
|
# 更新人员表
|
||||||
ep = Employee.objects.get_queryset(all=True).filter(user=user).first()
|
ep = Employee.objects.get_queryset(
|
||||||
|
all=True).filter(user=user).first()
|
||||||
if ep:
|
if ep:
|
||||||
ep.belong_dept = user.belong_dept
|
ep.belong_dept = user.belong_dept
|
||||||
ep.post = user.post
|
ep.post = user.post
|
||||||
|
@ -401,7 +403,8 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
user = instance.user
|
user = instance.user
|
||||||
instance.delete()
|
instance.delete()
|
||||||
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
|
up = UserPost.objects.filter(user=user).order_by(
|
||||||
|
'sort', 'create_time').first()
|
||||||
if up:
|
if up:
|
||||||
user.belong_dept = up.dept
|
user.belong_dept = up.dept
|
||||||
user.post = up.post
|
user.post = up.post
|
||||||
|
@ -411,7 +414,8 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
||||||
user.update_by = self.request.user
|
user.update_by = self.request.user
|
||||||
user.save()
|
user.save()
|
||||||
# 更新人员表
|
# 更新人员表
|
||||||
ep = Employee.objects.get_queryset(all=True).filter(user=user).first()
|
ep = Employee.objects.get_queryset(
|
||||||
|
all=True).filter(user=user).first()
|
||||||
if ep:
|
if ep:
|
||||||
ep.belong_dept = user.belong_dept
|
ep.belong_dept = user.belong_dept
|
||||||
ep.post = user.post
|
ep.post = user.post
|
||||||
|
@ -437,7 +441,8 @@ class UserViewSet(CustomModelViewSet):
|
||||||
|
|
||||||
def perform_update(self, serializer):
|
def perform_update(self, serializer):
|
||||||
instance = serializer.save()
|
instance = serializer.save()
|
||||||
ep = Employee.objects.get_queryset(all=True).filter(user=instance).first()
|
ep = Employee.objects.get_queryset(
|
||||||
|
all=True).filter(user=instance).first()
|
||||||
# ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first()
|
# ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first()
|
||||||
if ep:
|
if ep:
|
||||||
pass
|
pass
|
||||||
|
@ -461,7 +466,8 @@ class UserViewSet(CustomModelViewSet):
|
||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
instance = serializer.save(password=password, belong_dept=None)
|
instance = serializer.save(password=password, belong_dept=None)
|
||||||
ep = Employee.objects.get_queryset(all=True).filter(user=instance).first()
|
ep = Employee.objects.get_queryset(
|
||||||
|
all=True).filter(user=instance).first()
|
||||||
# ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first()
|
# ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first()
|
||||||
if ep:
|
if ep:
|
||||||
pass
|
pass
|
||||||
|
@ -548,7 +554,8 @@ class UserViewSet(CustomModelViewSet):
|
||||||
if openid:
|
if openid:
|
||||||
user = request.user
|
user = request.user
|
||||||
if user.wxmp_openid != openid:
|
if user.wxmp_openid != openid:
|
||||||
User.objects.filter(wxmp_openid=openid).update(wxmp_openid=None)
|
User.objects.filter(wxmp_openid=openid).update(
|
||||||
|
wxmp_openid=None)
|
||||||
user.wxmp_openid = openid
|
user.wxmp_openid = openid
|
||||||
user.save()
|
user.save()
|
||||||
return Response({'wxmp_openid': openid})
|
return Response({'wxmp_openid': openid})
|
||||||
|
@ -677,7 +684,8 @@ class ApkViewSet(MyLoggingMixin, ListModelMixin, CreateModelMixin, GenericViewSe
|
||||||
|
|
||||||
|
|
||||||
class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'myschedule.create', 'delete': 'myschedule.delete'}
|
perms_map = {'get': '*', 'post': 'myschedule.create',
|
||||||
|
'delete': 'myschedule.delete'}
|
||||||
serializer_class = MyScheduleSerializer
|
serializer_class = MyScheduleSerializer
|
||||||
create_serializer_class = MyScheduleCreateSerializer
|
create_serializer_class = MyScheduleCreateSerializer
|
||||||
queryset = MySchedule.objects.all()
|
queryset = MySchedule.objects.all()
|
||||||
|
@ -689,6 +697,7 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
||||||
"seconds": "秒",
|
"seconds": "秒",
|
||||||
"microseconds": "毫秒"
|
"microseconds": "毫秒"
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_chinese_description(self, type: str = 'interval', data: dict = {}):
|
def get_chinese_description(self, type: str = 'interval', data: dict = {}):
|
||||||
"""转换为汉语描述
|
"""转换为汉语描述
|
||||||
"""
|
"""
|
||||||
|
@ -706,14 +715,16 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
||||||
interval_data = vdata.pop('interval_', None)
|
interval_data = vdata.pop('interval_', None)
|
||||||
crontab_data = vdata.pop('crontab_', None)
|
crontab_data = vdata.pop('crontab_', None)
|
||||||
if vdata['type'] == 10:
|
if vdata['type'] == 10:
|
||||||
interval, _ = IntervalSchedule.objects.get_or_create(**interval_data, defaults=interval_data)
|
interval, _ = IntervalSchedule.objects.get_or_create(
|
||||||
|
**interval_data, defaults=interval_data)
|
||||||
obj = MySchedule(**vdata)
|
obj = MySchedule(**vdata)
|
||||||
obj.name = self.get_chinese_description('interval', vdata)
|
obj.name = self.get_chinese_description('interval', vdata)
|
||||||
obj.interval = interval
|
obj.interval = interval
|
||||||
obj.save()
|
obj.save()
|
||||||
elif vdata['type'] == 20:
|
elif vdata['type'] == 20:
|
||||||
crontab_data['timezone'] = 'Asia/Shanghai'
|
crontab_data['timezone'] = 'Asia/Shanghai'
|
||||||
crontab, _ = CrontabSchedule.objects.get_or_create(**crontab_data, defaults=crontab_data)
|
crontab, _ = CrontabSchedule.objects.get_or_create(
|
||||||
|
**crontab_data, defaults=crontab_data)
|
||||||
obj = MySchedule(**vdata)
|
obj = MySchedule(**vdata)
|
||||||
obj.name = self.get_chinese_description('crontab', vdata)
|
obj.name = self.get_chinese_description('crontab', vdata)
|
||||||
obj.crontab = crontab
|
obj.crontab = crontab
|
||||||
|
@ -731,10 +742,21 @@ class SysBaseConfigView(APIView):
|
||||||
|
|
||||||
获取系统基本信息
|
获取系统基本信息
|
||||||
"""
|
"""
|
||||||
|
project_code = request.query_params.get('project_code', '')
|
||||||
|
if project_code:
|
||||||
|
from apps.develop.models import Project
|
||||||
|
try:
|
||||||
|
project = Project.objects.get(code=project_code)
|
||||||
|
config = project.config_json
|
||||||
|
except Project.DoesNotExist:
|
||||||
|
raise ParseError('项目不存在')
|
||||||
|
else:
|
||||||
config = get_sysconfig()
|
config = get_sysconfig()
|
||||||
base_dict = {key: config[key] for key in self.read_keys if key in config}
|
base_dict = {key: config[key]
|
||||||
|
for key in self.read_keys if key in config}
|
||||||
return Response(base_dict)
|
return Response(base_dict)
|
||||||
|
|
||||||
|
|
||||||
class SysConfigView(MyLoggingMixin, APIView):
|
class SysConfigView(MyLoggingMixin, APIView):
|
||||||
perms_map = {'get': 'sysconfig.view', 'put': 'sysconfig.update'}
|
perms_map = {'get': 'sysconfig.view', 'put': 'sysconfig.update'}
|
||||||
|
|
||||||
|
@ -747,7 +769,17 @@ class SysConfigView(MyLoggingMixin, APIView):
|
||||||
reload = False
|
reload = False
|
||||||
if request.query_params.get('reload', None):
|
if request.query_params.get('reload', None):
|
||||||
reload = True
|
reload = True
|
||||||
return Response(get_sysconfig(reload=reload))
|
project_code = request.query_params.get('project_code', '')
|
||||||
|
if project_code:
|
||||||
|
from apps.develop.models import Project
|
||||||
|
try:
|
||||||
|
project = Project.objects.get(code=project_code)
|
||||||
|
config = project.config_json
|
||||||
|
except Project.DoesNotExist:
|
||||||
|
raise ParseError('项目不存在')
|
||||||
|
else:
|
||||||
|
config = get_sysconfig(reload=reload)
|
||||||
|
return Response(config)
|
||||||
|
|
||||||
@swagger_auto_schema(request_body=Serializer)
|
@swagger_auto_schema(request_body=Serializer)
|
||||||
def put(self, request, format=None):
|
def put(self, request, format=None):
|
||||||
|
@ -757,5 +789,17 @@ class SysConfigView(MyLoggingMixin, APIView):
|
||||||
修改config json
|
修改config json
|
||||||
"""
|
"""
|
||||||
data = request.data
|
data = request.data
|
||||||
|
project_code = data.get('project_code', '')
|
||||||
|
if project_code:
|
||||||
|
from apps.develop.models import Project
|
||||||
|
try:
|
||||||
|
project = Project.objects.get(code=project_code)
|
||||||
|
config = project.config_json
|
||||||
|
new_config = update_dict(config, data)
|
||||||
|
project.config_json = new_config
|
||||||
|
project.save()
|
||||||
|
except Project.DoesNotExist:
|
||||||
|
raise ParseError('项目不存在')
|
||||||
|
else:
|
||||||
update_sysconfig(data)
|
update_sysconfig(data)
|
||||||
return Response()
|
return Response()
|
Loading…
Reference in New Issue