From 1318e3f203efa2d07c1da21694929ade9866eb4c Mon Sep 17 00:00:00 2001 From: "pawan.sharma" Date: Thu, 29 Sep 2022 11:24:09 +0530 Subject: [PATCH] code optimize --- timesheet_entry_block/models/timesheet.py | 65 +++++++++++------------ 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/timesheet_entry_block/models/timesheet.py b/timesheet_entry_block/models/timesheet.py index eb75032..cab1969 100755 --- a/timesheet_entry_block/models/timesheet.py +++ b/timesheet_entry_block/models/timesheet.py @@ -8,13 +8,14 @@ class EmployeeInherit(models.Model): _inherit = 'hr.employee' permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id", - string="History", required=False ) + string="History", required=False) + class EmployeePublicInherit(models.Model): _inherit = 'hr.employee.public' permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id", - string="History", required=False ) + string="History", required=False) class TimesheetBlock(models.Model): @@ -32,60 +33,57 @@ class TimehseetBlock(models.Model): @api.model def create(self, values): - entry_start_date = datetime.strptime(str(values['start_datetime']),"%Y-%m-%d %H:%M:%S").date() - entry_end_date = datetime.strptime(values['end_datetime'],"%Y-%m-%d %H:%M:%S").date() - employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)]) + format = "%Y-%m-%d %H:%M:%S" + entry_start_date = datetime.strptime(str(values['start_datetime']), format).date() + entry_end_date = datetime.strptime(values['end_datetime'], format).date() + emp_obj = self.env['hr.employee'].search([('user_id', '=', self.env.uid)]) # project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager') - permission_block_object = employee_object.permission_block_history.search( - [('employee_id', '=', employee_object.id)], order='create_date desc', limit=1) - if permission_block_object: - if (permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or ( - permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or ( - permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date + block_obj = emp_obj.permission_block_history.search( + [('employee_id', '=', emp_obj.id)], order='create_date desc', limit=1) + if block_obj: + if (block_obj.start_date <= entry_start_date and block_obj.end_date >= entry_start_date) or ( + block_obj.start_date <= entry_end_date and block_obj.end_date >= entry_end_date) or ( + block_obj.start_date >= entry_start_date and block_obj.end_date <= entry_end_date ) or ( - permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date + block_obj.end_date >= entry_start_date and block_obj.end_date <= entry_end_date ): raise AccessError('You are not allowed to create entry for this date!') else: pass return super(TimehseetBlock, self).create(values) - def write(self, record): + format = "%Y-%m-%d %H:%M:%S" if 'start_datetime' in record or 'end_datetime' in record or 'project_id' in record or 'sub_project' in record or 'task_id' in record or 'description' in record: if 'start_datetime' in record and 'end_datetime' not in record: - entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date() - entry_end_date = datetime.strptime(str(self.end_datetime),"%Y-%m-%d %H:%M:%S").date() + entry_start_date = datetime.strptime(str(record['start_datetime']), format).date() + entry_end_date = datetime.strptime(str(self.end_datetime), format).date() elif 'start_datetime' not in record and 'end_datetime' in record: - entry_start_date = datetime.strptime(str(self.start_datetime), "%Y-%m-%d %H:%M:%S").date() - entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date() + entry_start_date = datetime.strptime(str(self.start_datetime), format).date() + entry_end_date = datetime.strptime(str(record['end_datetime']), format).date() elif 'start_datetime' in record and 'end_datetime' in record: - entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date() - entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date() + entry_start_date = datetime.strptime(str(record['start_datetime']), format).date() + entry_end_date = datetime.strptime(str(record['end_datetime']), format).date() else: res_start_date = str(self.start_datetime).split('.', 1)[0] res_end_date = str(self.end_datetime).split('.', 1)[0] - entry_start_date = datetime.strptime(str(res_start_date), '%Y-%m-%d %H:%M:%S').date() - entry_end_date = datetime.strptime(str(res_end_date), '%Y-%m-%d %H:%M:%S').date() - employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)]) + entry_start_date = datetime.strptime(str(res_start_date), format).date() + entry_end_date = datetime.strptime(str(res_end_date), format).date() + emp_obj = self.env['hr.employee'].search([('user_id', '=', self.env.uid)]) # project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager') if self.user_id.id == self.env.uid: - permission_block_object = employee_object.permission_block_history.search( - [('employee_id', '=', employee_object.id)], order='create_date desc', limit=1) - if permission_block_object: - if ( - permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or ( - permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or ( - permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date - ) or ( - permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date - ): + block_obj = emp_obj.permission_block_history.search( + [('employee_id', '=', emp_obj.id)], order='create_date desc', limit=1) + if block_obj: + if (block_obj.start_date <= entry_start_date and block_obj.end_date >= entry_start_date) or ( + block_obj.start_date <= entry_end_date and block_obj.end_date >= entry_end_date) or ( + block_obj.start_date >= entry_start_date and block_obj.end_date <= entry_end_date) or ( + block_obj.end_date >= entry_start_date and block_obj.end_date <= entry_end_date): raise AccessError('You are not allowed to edit entry for this date!') else: pass return super(TimehseetBlock, self).write(record) - # @api.constrains('unit_amount') # def _check_unit_amount(self): # for rec in self: @@ -100,4 +98,3 @@ class TimehseetBlock(models.Model): end_date = datetime.strptime(str(self.end_datetime), "%Y-%m-%d %H:%M:%S").date() if end_date > current_date: raise AccessError('End date cannot be a future date!') -