Accept Merge Request #268: (feature/创建工作日历代码测试 -> develop)

Merge Request: 工作日历设置---新增将中文的星期转换成英文的星期的方法,删除了大部分日志。

Created By: @禹翔辉
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/268?initial=true
This commit is contained in:
禹翔辉
2023-07-18 16:27:26 +08:00

View File

@@ -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):