From 2462c3774d052fb4d08369917bdfed5ecbe513a2 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Tue, 18 Jul 2023 16:27:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E5=8E=86=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE---=E6=96=B0=E5=A2=9E=E5=B0=86=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E7=9A=84=E6=98=9F=E6=9C=9F=E8=BD=AC=E6=8D=A2=E6=88=90=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E7=9A=84=E6=98=9F=E6=9C=9F=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E4=BA=86=E5=A4=A7=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_plan_management/models/calendar_base.py | 72 ++++++++++++++++------ 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/sf_plan_management/models/calendar_base.py b/sf_plan_management/models/calendar_base.py index d67842e8..5b86e6dd 100644 --- a/sf_plan_management/models/calendar_base.py +++ b/sf_plan_management/models/calendar_base.py @@ -112,7 +112,6 @@ class WorkLogSetting(models.Model): 创建记录时,生成工作日历 """ record = super(WorkLogSetting, self).create(vals) - logging.info("工作日历设置【新建】记录时,创建工作日历记录!!!") record.generate_work_calendar() return record @@ -123,7 +122,6 @@ class WorkLogSetting(models.Model): # 先删除之前创建的工作日历事件记录 self.env['sf.work.schedule.calendar'].search([('calendar_code', '=', self.code)]).unlink() result = super(WorkLogSetting, self).write(vals) - logging.info("工作日历设置【更新】记录时,创建工作日历记录!!!") self.generate_work_calendar() return result @@ -131,28 +129,66 @@ class WorkLogSetting(models.Model): """ 生成工作日历 """ - logging.info('开始创建工作日历记录') self.ensure_one() # start_date = date.today() # 开始日期 # end_date = start_date + timedelta(days=365) # 结束日期 # 获取本年第一天和最后一天 start_date = datetime.now().replace(month=1, day=1).date() - end_date = datetime.now().replace(month=1, day=31).date() - logging.info(f'start_date: {start_date} , end_date: {end_date}') + end_date = datetime.now().replace(month=12, day=31).date() # 休息日列表 - rest_days = self.day_off_ids.mapped('name') - logging.info(f'获取界面输入的休息日:{rest_days}') + rest_days = self.chinese_weekdays_to_english(self.day_off_ids.mapped('name')) for single_date in self.daterange(start_date, end_date): - is_workday = single_date.strftime("%A") - logging.info(f'获取一月份每天的星期:{is_workday}') + is_workday = self.chinese_weekday_to_english(single_date.strftime("%A")) + logging.info(f"每天的星期:{is_workday}") if is_workday in rest_days: print('is_workday in rest_days', is_workday) self.env['sf.work.schedule.calendar'].sudo().create({ 'name': '休息日', 'name_id': self.id, 'date_time': single_date}) - logging.info('创建一条工作日历记录,休息时间: %s' % is_workday) - logging.info('工作日历记录创建完成') + + @staticmethod + def chinese_weekdays_to_english(chinese_weekdays): + """ + 将元组的中文星期转换成英文 + :param chinese_weekdays: + :return: + """ + weekdays = { + '星期一': 'Monday', + '星期二': 'Tuesday', + '星期三': 'Wednesday', + '星期四': 'Thursday', + '星期五': 'Friday', + '星期六': 'Saturday', + '星期日': 'Sunday' + } + english_weekdays = [] + for chinese_weekday in chinese_weekdays: + english_weekday = weekdays.get(chinese_weekday, 'Invalid weekday') + english_weekdays.append(english_weekday) + return english_weekdays + + @staticmethod + def chinese_weekday_to_english(chinese_weekday): + """ + 将单个的中文星期转换成英文 + :param chinese_weekday: + :return: + """ + weekdays = { + '星期一': 'Monday', + '星期二': 'Tuesday', + '星期三': 'Wednesday', + '星期四': 'Thursday', + '星期五': 'Friday', + '星期六': 'Saturday', + '星期日': 'Sunday' + } + weekday = weekdays.get(chinese_weekday) + if weekday: + return weekday + return chinese_weekday @staticmethod def daterange(start_date, end_date): @@ -202,13 +238,13 @@ class DayOff(models.Model): _description = '休息日' name = fields.Selection([ - ('星期一', '星期一'), - ('星期二', '星期二'), - ('星期三', '星期三'), - ('星期四', '星期四'), - ('星期五', '星期五'), - ('星期六', '星期六'), - ('星期日', '星期日')], '休息日名称') + ('Monday ', '星期一'), + ('Tuesday ', '星期二'), + ('Wednesday ', '星期三'), + ('Thursday ', '星期四'), + ('Friday ', '星期五'), + ('Saturday ', '星期六'), + ('Sunday ', '星期日')], '休息日名称') class WorkScheduleCalendar(models.Model):