feat: MySchedule创建时自动获取汉语描述
This commit is contained in:
parent
0303184ceb
commit
3410f5d968
|
@ -420,7 +420,7 @@ class MyScheduleCreateSerializer(CustomModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = MySchedule
|
||||
fields = ['name', 'type', 'interval_', 'crontab_']
|
||||
fields = ['type', 'interval_', 'crontab_']
|
||||
|
||||
def validate(self, attrs):
|
||||
if attrs['type'] == 10 and attrs.get('interval_', None):
|
||||
|
|
|
@ -38,7 +38,8 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali
|
|||
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
||||
UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer)
|
||||
from rest_framework.viewsets import GenericViewSet
|
||||
|
||||
from cron_descriptor import get_description
|
||||
import locale
|
||||
|
||||
# logger.info('请求成功! response_code:{};response_headers:{};
|
||||
# response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
||||
|
@ -684,6 +685,22 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
|||
create_serializer_class = MyScheduleCreateSerializer
|
||||
queryset = MySchedule.objects.all()
|
||||
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
|
||||
def perform_create(self, serializer):
|
||||
|
@ -694,11 +711,13 @@ class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cus
|
|||
if vdata['type'] == 10:
|
||||
interval, _ = IntervalSchedule.objects.get_or_create(**interval_data, defaults=interval_data)
|
||||
obj = MySchedule(**vdata)
|
||||
obj.name = self.get_chinese_description('interval', vdata)
|
||||
obj.interval = interval
|
||||
obj.save()
|
||||
elif vdata['type'] == 20:
|
||||
crontab_data['timezone'] = 'Asia/Shanghai'
|
||||
crontab, _ = CrontabSchedule.objects.get_or_create(**crontab_data, defaults=crontab_data)
|
||||
obj = MySchedule(**vdata)
|
||||
obj.name = self.get_chinese_description('crontab', vdata)
|
||||
obj.crontab = crontab
|
||||
obj.save()
|
||||
|
|
|
@ -28,4 +28,4 @@ pycryptodome==3.15.0
|
|||
aliyun-python-sdk-core==2.13.36
|
||||
xlwt==1.3.0
|
||||
openpyxl==3.1.0
|
||||
|
||||
cron-descriptor==1.2.35
|
||||
|
|
Loading…
Reference in New Issue