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) record = super(WorkLogSetting, self).create(vals)
logging.info("工作日历设置【新建】记录时,创建工作日历记录!!!")
record.generate_work_calendar() record.generate_work_calendar()
return record return record
@@ -123,7 +122,6 @@ class WorkLogSetting(models.Model):
# 先删除之前创建的工作日历事件记录 # 先删除之前创建的工作日历事件记录
self.env['sf.work.schedule.calendar'].search([('calendar_code', '=', self.code)]).unlink() self.env['sf.work.schedule.calendar'].search([('calendar_code', '=', self.code)]).unlink()
result = super(WorkLogSetting, self).write(vals) result = super(WorkLogSetting, self).write(vals)
logging.info("工作日历设置【更新】记录时,创建工作日历记录!!!")
self.generate_work_calendar() self.generate_work_calendar()
return result return result
@@ -131,28 +129,66 @@ class WorkLogSetting(models.Model):
""" """
生成工作日历 生成工作日历
""" """
logging.info('开始创建工作日历记录')
self.ensure_one() self.ensure_one()
# start_date = date.today() # 开始日期 # start_date = date.today() # 开始日期
# end_date = start_date + timedelta(days=365) # 结束日期 # end_date = start_date + timedelta(days=365) # 结束日期
# 获取本年第一天和最后一天 # 获取本年第一天和最后一天
start_date = datetime.now().replace(month=1, day=1).date() start_date = datetime.now().replace(month=1, day=1).date()
end_date = datetime.now().replace(month=1, day=31).date() end_date = datetime.now().replace(month=12, day=31).date()
logging.info(f'start_date: {start_date} , end_date: {end_date}')
# 休息日列表 # 休息日列表
rest_days = self.day_off_ids.mapped('name') rest_days = self.chinese_weekdays_to_english(self.day_off_ids.mapped('name'))
logging.info(f'获取界面输入的休息日:{rest_days}')
for single_date in self.daterange(start_date, end_date): for single_date in self.daterange(start_date, end_date):
is_workday = single_date.strftime("%A") is_workday = self.chinese_weekday_to_english(single_date.strftime("%A"))
logging.info(f'获取一月份每天的星期:{is_workday}') logging.info(f"每天的星期:{is_workday}")
if is_workday in rest_days: if is_workday in rest_days:
print('is_workday in rest_days', is_workday) print('is_workday in rest_days', is_workday)
self.env['sf.work.schedule.calendar'].sudo().create({ self.env['sf.work.schedule.calendar'].sudo().create({
'name': '休息日', 'name': '休息日',
'name_id': self.id, 'name_id': self.id,
'date_time': single_date}) '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 @staticmethod
def daterange(start_date, end_date): def daterange(start_date, end_date):
@@ -202,13 +238,13 @@ class DayOff(models.Model):
_description = '休息日' _description = '休息日'
name = fields.Selection([ name = fields.Selection([
('星期一', '星期一'), ('Monday ', '星期一'),
('星期二', '星期二'), ('Tuesday ', '星期二'),
('星期三', '星期三'), ('Wednesday ', '星期三'),
('星期四', '星期四'), ('Thursday ', '星期四'),
('星期五', '星期五'), ('Friday ', '星期五'),
('星期六', '星期六'), ('Saturday ', '星期六'),
('星期日', '星期日')], '休息日名称') ('Sunday ', '星期日')], '休息日名称')
class WorkScheduleCalendar(models.Model): class WorkScheduleCalendar(models.Model):