diff --git a/beesdoo_shift/models/res_config_settings.py b/beesdoo_shift/models/res_config_settings.py deleted file mode 100644 index 892f582..0000000 --- a/beesdoo_shift/models/res_config_settings.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2019-2020 Elouan Le Bars -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -import ast - -from odoo import fields, models, api - - -class ResConfigSettings(models.TransientModel): - _inherit = "res.config.settings" - - card_support = fields.Boolean( - string="Scan cooperators cards instead of login for sheets validation", - config_parameter="beesdoo_shift.card_support", - ) - pre_filled_task_type_id = fields.Many2one( - "beesdoo.shift.type", - string="Default Task Type", - help="Default task type for attendance sheet pre-filling", - required=True, - default=False, - ) - attendance_sheet_generation_interval = fields.Integer( - string="Time interval for attendance sheet generation", - help="Time interval expressed in minutes", - required=True, - config_parameter="beesdoo_shift.attendance_sheet_generation_interval", - ) - - @api.multi - def set_values(self): - super(ResConfigSettings, self).set_values() - parameters = self.env["ir.config_parameter"].sudo() - parameters.set_param( - "beesdoo_shift.card_support", str(self.card_support), - ) - parameters.set_param( - "beesdoo_shift.pre_filled_task_type_id", - str(self.pre_filled_task_type_id.id), - ) - parameters.set_param( - "beesdoo_shift.attendance_sheet_generation_interval", - str(self.attendance_sheet_generation_interval), - ) - - @api.multi - def get_values(self): - res = super(ResConfigSettings, self).get_values() - res.update( - card_support=ast.literal_eval( - self.env["ir.config_parameter"].get_param( - "beesdoo_shift.card_support" - ), - ), - pre_filled_task_type_id=int( - self.env["ir.config_parameter"].get_param( - "beesdoo_shift.pre_filled_task_type_id" - ) - ), - ) - return res diff --git a/beesdoo_shift/security/group.xml b/beesdoo_shift/security/group.xml index 8876384..61f3553 100644 --- a/beesdoo_shift/security/group.xml +++ b/beesdoo_shift/security/group.xml @@ -2,7 +2,6 @@ Shift and Worker Read Access - Shifts and Attendance Sheets Management diff --git a/beesdoo_shift_attendance/__manifest__.py b/beesdoo_shift_attendance/__manifest__.py index ac7c0d3..2b260c4 100644 --- a/beesdoo_shift_attendance/__manifest__.py +++ b/beesdoo_shift_attendance/__manifest__.py @@ -1,9 +1,14 @@ +# This module is, for now, specific to the BEES coop. +# Therefore, this module depends on `beesdo_worker_status`. +# If someone needs this module but has another worker_status rules +# this module can be splitted into a generic part, and a specific part +# that implement the worker_status rules. { 'name': "Beescoop Shift Attendance Sheet", 'summary': """ Volonteer Timetable Management - Attendance Sheet""", + Attendance Sheet for BEES coop""", 'description': """ @@ -17,7 +22,7 @@ 'depends': [ 'beesdoo_shift', - 'beesdoo_worker_status', #TODO move the part that require beesdoo_worker_status in beesdoo_worker status or another module + 'beesdoo_worker_status', 'mail', 'barcodes', ], diff --git a/beesdoo_shift_attendance/data/mail_template.xml b/beesdoo_shift_attendance/data/mail_template.xml index 30a940a..4a6e39c 100644 --- a/beesdoo_shift_attendance/data/mail_template.xml +++ b/beesdoo_shift_attendance/data/mail_template.xml @@ -7,7 +7,7 @@ Shift Non-attendance Non-attendance to your last shift. ${object.replaced_id.id or object.worker_id.id|safe} - + ${object.worker_id.lang} ]]> + Non-validated sheet [${object.day}] Non-validated sheet ${object.time_slot} diff --git a/beesdoo_shift_attendance/data/system_parameter.xml b/beesdoo_shift_attendance/data/system_parameter.xml index 342f54c..ec33e06 100644 --- a/beesdoo_shift_attendance/data/system_parameter.xml +++ b/beesdoo_shift_attendance/data/system_parameter.xml @@ -1,14 +1,14 @@ - - beesdoo_shift.card_support + + beesdoo_shift_attendance.card_support False - - beesdoo_shift.attendance_sheet_generation_interval + + beesdoo_shift_attendance.attendance_sheet_generation_interval 15 - - beesdoo_shift.default_task_type_id + + beesdoo_shift_attendance.default_task_type_id 1 diff --git a/beesdoo_shift_attendance/demo/users.xml b/beesdoo_shift_attendance/demo/users.xml index d0b0547..c3d2f32 100644 --- a/beesdoo_shift_attendance/demo/users.xml +++ b/beesdoo_shift_attendance/demo/users.xml @@ -4,36 +4,37 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> - + - - Generic Account - Demo - generic@demo.net - + + Generic Account + Demo + generic@demo.net + - - Permanent Member - Demo - - permanent@demo.net - Ixelles - 1050 - - + + Permanent Member + Demo + + permanent@demo.net + Ixelles + 1050 + + - - - generic - demo - - + + + generic + demo + + + - - - permanent - demo - - + + + permanent + demo + + diff --git a/beesdoo_shift_attendance/models/attendance_sheet.py b/beesdoo_shift_attendance/models/attendance_sheet.py index 6530501..b668bbb 100644 --- a/beesdoo_shift_attendance/models/attendance_sheet.py +++ b/beesdoo_shift_attendance/models/attendance_sheet.py @@ -1,4 +1,3 @@ - from datetime import date, datetime, timedelta from lxml import etree @@ -24,13 +23,13 @@ class AttendanceSheetShift(models.Model): @api.model def pre_filled_task_type_id(self): parameters = self.env["ir.config_parameter"].sudo() - id = int( + tasktype_id = int( parameters.get_param( - "beesdoo_shift.pre_filled_task_type_id", default=1 + "beesdoo_shift_attendance.pre_filled_task_type_id", default=1 ) ) task_types = self.env["beesdoo.shift.type"] - return task_types.browse(default_task_type_id) + return task_types.browse(tasktype_id) # Related actual shift task_id = fields.Many2one("beesdoo.shift.shift", string="Task") @@ -320,7 +319,7 @@ class AttendanceSheet(models.Model): ) def on_barcode_scanned(self, barcode): - if self.env.user.has_group("beesdoo_shift.group_shift_attendance"): + if self.env.user.has_group("beesdoo_shift_attendance.group_shift_attendance"): raise UserError( _("You must be logged as 'Attendance Sheet Generic Access' " " if you want to scan cards.") @@ -469,7 +468,7 @@ class AttendanceSheet(models.Model): if expected_shift.state != "done": mail_template = self.env.ref( - "beesdoo_shift.email_template_non_attendance", False + "beesdoo_shift_attendance.email_template_non_attendance", False ) mail_template.send_mail(expected_shift.task_id.id, True) @@ -584,7 +583,9 @@ class AttendanceSheet(models.Model): ) # Open a validation wizard only if not admin - if self.env.user.has_group("beesdoo_shift.group_shift_attendance_sheet_validation"): + if self.env.user.has_group( + "beesdoo_shift_attendance.group_shift_attendance_sheet_validation" + ): if not self.worker_nb_feedback: raise UserError( _("Please give your feedback about the number of workers.") @@ -611,7 +612,7 @@ class AttendanceSheet(models.Model): current_time = datetime.now() generation_interval_setting = int( self.env["ir.config_parameter"].sudo().get_param( - "beesdoo_shift.attendance_sheet_generation_interval" + "beesdoo_shift_attendance.attendance_sheet_generation_interval" ) ) @@ -628,7 +629,7 @@ class AttendanceSheet(models.Model): start_time = task.start_time end_time = task.end_time sheets = sheets.search( - [("start_time", "=", start_time), ("end_time", "=", end_time),] + [("start_time", "=", start_time), ("end_time", "=", end_time)] ) if not sheets: @@ -648,7 +649,8 @@ class AttendanceSheet(models.Model): if non_validated_sheets: mail_template = self.env.ref( - "beesdoo_shift.email_template_non_validated_sheet", False + "beesdoo_shift_attendance.email_template_non_validated_sheet", + False, ) for rec in non_validated_sheets: mail_template.send_mail(rec.id, True) diff --git a/beesdoo_shift_attendance/models/res_config_settings.py b/beesdoo_shift_attendance/models/res_config_settings.py index 9e6090e..e2d689c 100644 --- a/beesdoo_shift_attendance/models/res_config_settings.py +++ b/beesdoo_shift_attendance/models/res_config_settings.py @@ -11,9 +11,9 @@ class ResConfigSettings(models.TransientModel): card_support = fields.Boolean( string="Scan cooperators cards instead of login for sheets validation", - config_parameter="beesdoo_shift.card_support", + config_parameter="beesdoo_shift_attendance.card_support", ) - task_type_default_id = fields.Many2one( + pre_filled_task_type_id = fields.Many2one( "beesdoo.shift.type", string="Default Task Type", help="Default task type for attendance sheet pre-filling", @@ -24,7 +24,9 @@ class ResConfigSettings(models.TransientModel): string="Time interval for attendance sheet generation", help="Time interval expressed in minutes", required=True, - config_parameter="beesdoo_shift.attendance_sheet_generation_interval", + config_parameter=( + "beesdoo_shift_attendance.attendance_sheet_generation_interval" + ), ) @api.multi @@ -32,14 +34,14 @@ class ResConfigSettings(models.TransientModel): super(ResConfigSettings, self).set_values() parameters = self.env["ir.config_parameter"].sudo() parameters.set_param( - "beesdoo_shift.card_support", str(self.card_support), + "beesdoo_shift_attendance.card_support", str(self.card_support), ) parameters.set_param( - "beesdoo_shift.task_type_default_id", - str(self.task_type_default_id.id), + "beesdoo_shift_attendance.pre_filled_task_type_id", + str(self.pre_filled_task_type_id.id), ) parameters.set_param( - "beesdoo_shift.attendance_sheet_generation_interval", + "beesdoo_shift_attendance.attendance_sheet_generation_interval", str(self.attendance_sheet_generation_interval), ) @@ -49,12 +51,12 @@ class ResConfigSettings(models.TransientModel): res.update( card_support=ast.literal_eval( self.env["ir.config_parameter"].get_param( - "beesdoo_shift.card_support" + "beesdoo_shift_attendance.card_support" ), ), - task_type_default_id=int( + pre_filled_task_type_id=int( self.env["ir.config_parameter"].get_param( - "beesdoo_shift.task_type_default_id" + "beesdoo_shift_attendance.pre_filled_task_type_id" ) ), ) diff --git a/beesdoo_shift_attendance/security/group.xml b/beesdoo_shift_attendance/security/group.xml index 9063849..4ad07fb 100644 --- a/beesdoo_shift_attendance/security/group.xml +++ b/beesdoo_shift_attendance/security/group.xml @@ -1,11 +1,14 @@ - - Attendance Sheet Generic Access - - - - - + + Attendance Sheet Generic Access + + + + Attendance Sheet Validation + + + + + + diff --git a/beesdoo_shift_attendance/security/ir.model.access.csv b/beesdoo_shift_attendance/security/ir.model.access.csv index 077ce09..f236634 100644 --- a/beesdoo_shift_attendance/security/ir.model.access.csv +++ b/beesdoo_shift_attendance/security/ir.model.access.csv @@ -1,12 +1,12 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink -create_beesdoo_shift_shift,create_edit_beesdoo_shift_shift,model_beesdoo_shift_shift,group_shift_attendance_sheet,1,1,1,0 +create_beesdoo_shift_shift,create_edit_beesdoo_shift_shift,beesdoo_shift.model_beesdoo_shift_shift,group_shift_attendance_sheet,1,1,1,0 read_beesdoo_shift_sheet_shift,read_beesdoo_shift_sheet_shift,model_beesdoo_shift_sheet_shift,group_shift_attendance_sheet,1,0,0,0 create_beesdoo_shift_sheet_shift,create_beesdoo_shift_sheet_shift,model_beesdoo_shift_sheet_shift,group_shift_attendance_sheet,1,1,1,0 create_beesdoo_shift_sheet_expected,create_beesdoo_shift_sheet_expected,model_beesdoo_shift_sheet_expected,group_shift_attendance_sheet,1,1,1,0 manage_beesdoo_shift_sheet_added,manage_beesdoo_shift_sheet_added,model_beesdoo_shift_sheet_added,group_shift_attendance_sheet,1,1,1,1 create_beesdoo_shift_sheet,create_beesdoo_shift_sheet,model_beesdoo_shift_sheet,group_shift_attendance_sheet,1,1,1,0 -sheet_access_beesdoo_shift_template,sheet_access_beesdoo_shift_template,model_beesdoo_shift_template,group_shift_attendance_sheet,1,0,0,0 -sheet_access_beesdoo_shift_type,sheet_access_beesdoo_shift_type,model_beesdoo_shift_type,group_shift_attendance_sheet,1,0,0,0 -access_beesdoo_shift_daynumber,access_beesdoo_shift_daynumber,model_beesdoo_shift_daynumber,group_shift_attendance_sheet,1,0,0,0 -manage_beesdoo_shift_sheet_shift,beesdoo_shift_sheet_shift,model_beesdoo_shift_sheet_shift,group_shift_attendance,1,1,1,1 -manage_beesdoo_shift_sheet_expected,manage_beesdoo_shift_sheet_expected,model_beesdoo_shift_sheet_expected,group_shift_attendance,1,1,1,1 \ No newline at end of file +sheet_access_beesdoo_shift_template,sheet_access_beesdoo_shift_template,beesdoo_shift.model_beesdoo_shift_template,group_shift_attendance_sheet,1,0,0,0 +sheet_access_beesdoo_shift_type,sheet_access_beesdoo_shift_type,beesdoo_shift.model_beesdoo_shift_type,group_shift_attendance_sheet,1,0,0,0 +access_beesdoo_shift_daynumber,access_beesdoo_shift_daynumber,beesdoo_shift.model_beesdoo_shift_daynumber,group_shift_attendance_sheet,1,0,0,0 +manage_beesdoo_shift_sheet_shift,beesdoo_shift_sheet_shift,model_beesdoo_shift_sheet_shift,beesdoo_shift.group_shift_attendance,1,1,1,1 +manage_beesdoo_shift_sheet_expected,manage_beesdoo_shift_sheet_expected,model_beesdoo_shift_sheet_expected,beesdoo_shift.group_shift_attendance,1,1,1,1 diff --git a/beesdoo_shift_attendance/tests/test_beesdoo_shift.py b/beesdoo_shift_attendance/tests/test_beesdoo_shift.py index 58ce822..030e62c 100644 --- a/beesdoo_shift_attendance/tests/test_beesdoo_shift.py +++ b/beesdoo_shift_attendance/tests/test_beesdoo_shift.py @@ -27,10 +27,10 @@ class TestBeesdooShift(TransactionCase): self.current_time = datetime.now() self.user_admin = self.env.ref("base.user_root") self.user_generic = self.env.ref( - "beesdoo_base.beesdoo_shift_user_1_demo" + "beesdoo_shift_attendance.beesdoo_shift_user_1_demo" ) self.user_permanent = self.env.ref( - "beesdoo_base.beesdoo_shift_user_2_demo" + "beesdoo_shift_attendance.beesdoo_shift_user_2_demo" ) self.setting_wizard = self.env["res.config.settings"].sudo( @@ -38,22 +38,22 @@ class TestBeesdooShift(TransactionCase): ) self.worker_regular_1 = self.env.ref( - "beesdoo_base.res_partner_cooperator_6_demo" + "beesdoo_shift.res_partner_cooperator_6_demo" ) self.worker_regular_2 = self.env.ref( - "beesdoo_base.res_partner_cooperator_5_demo" + "beesdoo_shift.res_partner_cooperator_5_demo" ) self.worker_regular_3 = self.env.ref( - "beesdoo_base.res_partner_cooperator_3_demo" + "beesdoo_shift.res_partner_cooperator_3_demo" ) self.worker_regular_super_1 = self.env.ref( - "beesdoo_base.res_partner_cooperator_1_demo" + "beesdoo_shift.res_partner_cooperator_1_demo" ) self.worker_irregular_1 = self.env.ref( - "beesdoo_base.res_partner_cooperator_2_demo" + "beesdoo_shift.res_partner_cooperator_2_demo" ) self.worker_irregular_2 = self.env.ref( - "beesdoo_base.res_partner_cooperator_4_demo" + "beesdoo_shift.res_partner_cooperator_4_demo" ) self.task_type_1 = self.env.ref( @@ -116,7 +116,7 @@ class TestBeesdooShift(TransactionCase): "replaced_id": self.worker_regular_2.id, } ) - future_shift_regular = self.shift_model.create( + self.future_shift_regular = self.shift_model.create( { "task_template_id": self.task_template_2.id, "task_type_id": self.task_type_1.id, @@ -388,4 +388,4 @@ class TestBeesdooShift(TransactionCase): sheet_1.added_shift_ids[0].task_id, self.shift_empty_1 ) - # sheet_1.expected_shift_ids[0].worker_id \ No newline at end of file + # sheet_1.expected_shift_ids[0].worker_id diff --git a/beesdoo_shift_attendance/views/attendance_sheet.xml b/beesdoo_shift_attendance/views/attendance_sheet.xml index 50a174c..107aee9 100644 --- a/beesdoo_shift_attendance/views/attendance_sheet.xml +++ b/beesdoo_shift_attendance/views/attendance_sheet.xml @@ -230,8 +230,8 @@ diff --git a/beesdoo_shift_attendance/views/res_config_settings_view.xml b/beesdoo_shift_attendance/views/res_config_settings_view.xml index 55ed7df..96c7faf 100644 --- a/beesdoo_shift_attendance/views/res_config_settings_view.xml +++ b/beesdoo_shift_attendance/views/res_config_settings_view.xml @@ -91,7 +91,7 @@ diff --git a/beesdoo_shift_attendance/wizard/validate_attendance_sheet.py b/beesdoo_shift_attendance/wizard/validate_attendance_sheet.py index 0457cca..e9a6db4 100644 --- a/beesdoo_shift_attendance/wizard/validate_attendance_sheet.py +++ b/beesdoo_shift_attendance/wizard/validate_attendance_sheet.py @@ -22,7 +22,7 @@ class ValidateAttendanceSheet(models.TransientModel): def _get_card_support_setting(self): return ast.literal_eval( self.env["ir.config_parameter"].sudo().get_param( - "beesdoo_shift.card_support" + "beesdoo_shift_attendance.card_support" ) ) @@ -119,7 +119,7 @@ class ValidateAttendanceSheet(models.TransientModel): partner = user.partner_id can_validate = partner.user_ids.has_group( - "beesdoo_shift.group_shift_attendance_sheet_validation" + "beesdoo_shift_attendance.group_shift_attendance_sheet_validation" ) if not partner.super and not can_validate: