diff --git a/beesdoo_shift/data/cron.xml b/beesdoo_shift/data/cron.xml index 976cb7f..cd9669f 100644 --- a/beesdoo_shift/data/cron.xml +++ b/beesdoo_shift/data/cron.xml @@ -24,8 +24,8 @@ - Generate Attendance Sheet - 20 + Generate Attendance Sheets + 1 minutes -1 diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py index 0e7aa99..b787206 100644 --- a/beesdoo_shift/models/attendance_sheet.py +++ b/beesdoo_shift/models/attendance_sheet.py @@ -176,7 +176,6 @@ class AttendanceSheet(models.Model): default=0, readonly=True, help="Indicative maximum number of workers.", - ) annotation = fields.Text("Annotation", default="") is_annotated = fields.Boolean( @@ -539,16 +538,19 @@ class AttendanceSheet(models.Model): @api.model def _generate_attendance_sheet(self): """ - Generate sheets 20 minutes before their start time. - Corresponding CRON intervall time must be the same. - Check if any task exists in the time intervall. + Generate sheets with shifts in the time interval + defined from corresponding CRON time interval. """ time_ranges = set() tasks = self.env["beesdoo.shift.shift"] sheets = self.env["beesdoo.shift.sheet"] current_time = datetime.now() - allowed_time_range = timedelta(minutes=20) + generation_interval_setting = int(self.env["ir.config_parameter"].get_param( + "beesdoo_shift.attendance_sheet_generation_interval" + )) + + allowed_time_range = timedelta(minutes=generation_interval_setting) tasks = tasks.search( [ diff --git a/beesdoo_shift/models/res_config.py b/beesdoo_shift/models/res_config.py index fa2695c..1f82528 100644 --- a/beesdoo_shift/models/res_config.py +++ b/beesdoo_shift/models/res_config.py @@ -15,13 +15,24 @@ class ShiftConfigSettings(models.TransientModel): string="Default Task Type", help="Default task type for attendance sheet pre-filling.", ) + attendance_sheet_generation_interval = fields.Integer( + string="Time interval for attendance sheet generation", + help="Time interval expressed in minutes", + ) @api.multi def set_params(self): self.ensure_one() - value = self.default_task_type_id.id + parameters = self.env["ir.config_parameter"] - parameters.set_param("beesdoo_shift.default_task_type_id", value) + parameters.set_param( + "beesdoo_shift.default_task_type_id", + str(self.default_task_type_id.id), + ) + parameters.set_param( + "beesdoo_shift.attendance_sheet_generation_interval", + str(self.attendance_sheet_generation_interval), + ) @api.multi def get_default_task_type_id(self): @@ -32,3 +43,13 @@ class ShiftConfigSettings(models.TransientModel): ) ) } + + @api.multi + def get_default_attendance_sheet_generation_interval(self): + return { + "attendance_sheet_generation_interval": int( + self.env["ir.config_parameter"].get_param( + "beesdoo_shift.attendance_sheet_generation_interval" + ) + ) + } diff --git a/beesdoo_shift/views/res_config_view.xml b/beesdoo_shift/views/res_config_view.xml index 3d8dbcb..ef30fc3 100644 --- a/beesdoo_shift/views/res_config_view.xml +++ b/beesdoo_shift/views/res_config_view.xml @@ -40,6 +40,7 @@ + diff --git a/beesdoo_website_shift/controllers/main.py b/beesdoo_website_shift/controllers/main.py index a3f4e92..53c536f 100644 --- a/beesdoo_website_shift/controllers/main.py +++ b/beesdoo_website_shift/controllers/main.py @@ -135,7 +135,8 @@ class WebsiteShiftController(http.Controller): * the given shift exist * the shift status is open * the shift is free for subscription - * the shift is starting in more than 20 minutes + * the shift is starting after the time interval + for attendance sheet generation defined in beesdoo_shift settings """ # Get current user cur_user = request.env['res.users'].browse(request.uid) @@ -144,8 +145,13 @@ class WebsiteShiftController(http.Controller): # Get config irregular_enable_sign_up = literal_eval(request.env['ir.config_parameter'].get_param( 'beesdoo_website_shift.irregular_enable_sign_up')) - # Set start time limit - start_time_limit = datetime.now() + timedelta(minutes = 20) + # Set start time limit as defined in beesdoo_shift settings + setting = int( + request.env["ir.config_parameter"].get_param( + "beesdoo_shift.attendance_sheet_generation_interval" + ) + ) + start_time_limit = datetime.now() + timedelta(minutes=setting) shift_start_time = fields.Datetime.from_string(shift.start_time) request.session['success'] = False @@ -236,6 +242,14 @@ class WebsiteShiftController(http.Controller): template_context['success'] = request.session.get('success') del request.session['success'] + # Add setting for subscription allowed time + subscription_time_limit = int( + request.env["ir.config_parameter"].get_param( + "beesdoo_shift.attendance_sheet_generation_interval" + ) + ) + template_context['subscription_time_limit'] = subscription_time_limit + return template_context def my_shift_regular_worker_without_shift(self): diff --git a/beesdoo_website_shift/views/my_shift_website_templates.xml b/beesdoo_website_shift/views/my_shift_website_templates.xml index 56356c1..0a91fc1 100644 --- a/beesdoo_website_shift/views/my_shift_website_templates.xml +++ b/beesdoo_website_shift/views/my_shift_website_templates.xml @@ -902,7 +902,7 @@ subscribed before you or the shift was deleted. Try again in a moment. - Please note that you can't subscribe 20 minutes before the shift. + Please note that you can't subscribe minutes before the shift.