feat: MySchedule创建时自动获取汉语描述
This commit is contained in:
parent
0303184ceb
commit
3410f5d968
|
@ -420,7 +420,7 @@ class MyScheduleCreateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MySchedule
|
model = MySchedule
|
||||||
fields = ['name', 'type', 'interval_', 'crontab_']
|
fields = ['type', 'interval_', 'crontab_']
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
if attrs['type'] == 10 and attrs.get('interval_', None):
|
if attrs['type'] == 10 and attrs.get('interval_', None):
|
||||||
|
|
|
@ -38,7 +38,8 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali
|
||||||
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
||||||
UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer)
|
UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer)
|
||||||
from rest_framework.viewsets import GenericViewSet
|
from rest_framework.viewsets import GenericViewSet
|
||||||
|
from cron_descriptor import get_description
|
||||||
|
import locale
|
||||||
|
|
||||||
# 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]))
|
||||||
|
@ -684,7 +685,23 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
||||||
create_serializer_class = MyScheduleCreateSerializer
|
create_serializer_class = MyScheduleCreateSerializer
|
||||||
queryset = MySchedule.objects.all()
|
queryset = MySchedule.objects.all()
|
||||||
select_related_fields = ['interval', 'crontab']
|
select_related_fields = ['interval', 'crontab']
|
||||||
|
period_dict = {
|
||||||
|
"days": "天",
|
||||||
|
"hours": "小时",
|
||||||
|
"minutes": "分钟",
|
||||||
|
"seconds": "秒",
|
||||||
|
"microseconds": "毫秒"
|
||||||
|
}
|
||||||
|
def get_chinese_description(self, type:str = 'interval', data: dict = {}):
|
||||||
|
"""转换为汉语描述
|
||||||
|
"""
|
||||||
|
if type == 'interval':
|
||||||
|
return f"每隔{data['every']}{data['period']}"
|
||||||
|
elif type == 'crontab':
|
||||||
|
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
|
||||||
|
return get_description(f"{data['minute']} {data['hour']} {data['day_of_month']} {data['month_of_year']} {data['day_of_week']}")
|
||||||
|
return ''
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
|
@ -694,11 +711,13 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
||||||
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.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.crontab = crontab
|
obj.crontab = crontab
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
|
@ -28,4 +28,4 @@ pycryptodome==3.15.0
|
||||||
aliyun-python-sdk-core==2.13.36
|
aliyun-python-sdk-core==2.13.36
|
||||||
xlwt==1.3.0
|
xlwt==1.3.0
|
||||||
openpyxl==3.1.0
|
openpyxl==3.1.0
|
||||||
|
cron-descriptor==1.2.35
|
||||||
|
|
Loading…
Reference in New Issue