diff --git a/beesdoo_website_shift/__manifest__.py b/beesdoo_website_shift/__manifest__.py index e2873e3..08fbdf7 100644 --- a/beesdoo_website_shift/__manifest__.py +++ b/beesdoo_website_shift/__manifest__.py @@ -1,11 +1,9 @@ -# -*- coding: utf-8 -*- - -# Copyright 2017-2018 Rémy Taymans +# Copyright 2017-2020 Coop IT Easy (http://coopiteasy.be) +# Rémy Taymans # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'BEES coop Website Shift', - 'summary': """ Show available shifts for regular and irregular workers on the website and let workers manage their shifts with an @@ -13,20 +11,16 @@ """, 'description': """ """, - - 'author': 'Rémy Taymans', - 'license': 'AGPL-3', - 'version': '9.0.2.3.1', - 'website': "https://github.com/beescoop/Obeesdoo", - - 'category': 'Cooperative management', - - 'depends': ['website', 'beesdoo_shift'], - - 'data': [ - 'data/res_config_data.xml', - 'views/shift_website_templates.xml', - 'views/my_shift_website_templates.xml', - 'views/res_config_views.xml', - ] + "author": "Coop IT Easy SCRLfs", + "license": "AGPL-3", + "version": "12.0.1.0.0", + "website": "https://github.com/beescoop/Obeesdoo", + "category": "Cooperative management", + "depends": ["portal", "website", "beesdoo_shift"], + "data": [ + "data/res_config_data.xml", + "views/shift_website_templates.xml", + "views/my_shift_website_templates.xml", + "views/res_config_views.xml", + ], } diff --git a/beesdoo_website_shift/controllers/main.py b/beesdoo_website_shift/controllers/main.py index aa92173..2af24fb 100644 --- a/beesdoo_website_shift/controllers/main.py +++ b/beesdoo_website_shift/controllers/main.py @@ -1,6 +1,5 @@ -# -*- coding: utf8 -*- - -# Copyright 2017-2018 Rémy Taymans +# Copyright 2017-2020 Coop IT Easy (http://coopiteasy.be) +# Rémy Taymans # Copyright 2017-2018 Thibault François # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -141,23 +140,18 @@ class WebsiteShiftController(http.Controller): # Get the shift shift = request.env['beesdoo.shift.shift'].sudo().browse(shift_id) # Get config - irregular_enable_sign_up = literal_eval(request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.irregular_enable_sign_up')) + irregular_enable_sign_up = request.website.irregular_enable_sign_up # 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) + # TODO: Move this into the attendance_sheet module + # setting = request.website.attendance_sheet_generation_interval + start_time_limit = datetime.now() # + timedelta(minutes=setting) request.session['success'] = False if (irregular_enable_sign_up and self.user_can_subscribe() and shift and shift.state == "open" - and shift_start_time > start_time_limit + and shift.start_time > start_time_limit and not shift.worker_id): shift.worker_id = cur_user.partner_id request.session['success'] = True @@ -192,11 +186,7 @@ class WebsiteShiftController(http.Controller): task_templates = template.sudo().search([], order="planning_id, day_nb_id, start_time") # Get config - regular_highlight_rule = literal_eval( - request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.regular_highlight_rule' - ) - ) + regular_highlight_rule = request.website.regular_highlight_rule task_tpls_data = [] for task_tpl in task_templates: @@ -220,8 +210,7 @@ class WebsiteShiftController(http.Controller): Return template variables for 'beesdoo_website_shift.my_shift_irregular_worker' template """ # Get config - irregular_enable_sign_up = literal_eval(request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.irregular_enable_sign_up')) + irregular_enable_sign_up = request.website.irregular_enable_sign_up # Create template context template_context = {} @@ -241,11 +230,11 @@ class WebsiteShiftController(http.Controller): 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" - ) - ) + # TODO: move this to the attendance_sheet module + # subscription_time_limit = ( + # request.website.attendance_sheet_generation_interval + # ) + subscription_time_limit = 0 template_context['subscription_time_limit'] = subscription_time_limit return template_context @@ -310,18 +299,9 @@ class WebsiteShiftController(http.Controller): ) # Get config - irregular_shift_limit = int( - request.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.irregular_shift_limit') - ) - highlight_rule_pc = int( - request.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.highlight_rule_pc') - ) - hide_rule = int( - request.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.hide_rule') - ) / 100.0 + irregular_shift_limit = request.website.irregular_shift_limit + highlight_rule_pc = request.website.highlight_rule_pc + hide_rule = request.website.hide_rule / 100.0 # Grouby task_template_id, if no task_template_id is specified # then group by start_time, if no start_time specified sort by @@ -405,8 +385,7 @@ class WebsiteShiftController(http.Controller): ) # Get config - regular_next_shift_limit = int(request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.regular_next_shift_limit')) + regular_next_shift_limit = request.website.regular_next_shift_limit shift_period = int(request.env['ir.config_parameter'].get_param( 'beesdoo_website_shift.shift_period')) @@ -426,11 +405,11 @@ class WebsiteShiftController(http.Controller): shift.revert_info = main_shift.revert_info # Set new date shift.start_time = self.add_days( - fields.Datetime.from_string(main_shift.start_time), + main_shift.start_time, days=i * shift_period ) shift.end_time = self.add_days( - fields.Datetime.from_string(main_shift.end_time), + main_shift.end_time, days=i * shift_period ) # Add the fictive shift to the list of shift @@ -450,11 +429,9 @@ class WebsiteShiftController(http.Controller): # Get config past_shift_limit = 0 if self.is_user_irregular(): - past_shift_limit = int(request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.irregular_past_shift_limit')) + past_shift_limit = request.website.irregular_past_shift_limit if self.is_user_regular(): - past_shift_limit = int(request.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.regular_past_shift_limit')) + past_shift_limit = request.website.regular_past_shift_limit # Get shifts where user was subscribed now = datetime.now() if past_shift_limit > 0: diff --git a/beesdoo_website_shift/data/res_config_data.xml b/beesdoo_website_shift/data/res_config_data.xml index f84681e..2d34b78 100644 --- a/beesdoo_website_shift/data/res_config_data.xml +++ b/beesdoo_website_shift/data/res_config_data.xml @@ -5,38 +5,6 @@ --> - - beesdoo_website_shift.irregular_shift_limit - 0 - - - beesdoo_website_shift.highlight_rule_pc - 30 - - - beesdoo_website_shift.hide_rule - 20 - - - beesdoo_website_shift.irregular_enable_sign_up - True - - - beesdoo_website_shift.irregular_past_shift_limit - 10 - - - beesdoo_website_shift.regular_past_shift_limit - 10 - - - beesdoo_website_shift.regular_next_shift_limit - 13 - - - beesdoo_website_shift.regular_highlight_rule - 20 - beesdoo_website_shift.shift_period 28 diff --git a/beesdoo_website_shift/migrations/9.0.2.1.1/post-migrate.py b/beesdoo_website_shift/migrations/9.0.2.1.1/post-migrate.py deleted file mode 100644 index 6068a9b..0000000 --- a/beesdoo_website_shift/migrations/9.0.2.1.1/post-migrate.py +++ /dev/null @@ -1,11 +0,0 @@ -# coding: utf-8 - - -def migrate(cr, version): - """Create a sequence for beesdoo_website_shift_config_settings.""" - cr.execute( - """ - CREATE SEQUENCE IF NOT EXISTS - beesdoo_website_shift_config_settings_id_seq - """ - ) diff --git a/beesdoo_website_shift/models/__init__.py b/beesdoo_website_shift/models/__init__.py index ab480f8..2f62010 100644 --- a/beesdoo_website_shift/models/__init__.py +++ b/beesdoo_website_shift/models/__init__.py @@ -1 +1,2 @@ +from . import website from . import res_config diff --git a/beesdoo_website_shift/models/res_config.py b/beesdoo_website_shift/models/res_config.py index f4e408b..dbc8382 100644 --- a/beesdoo_website_shift/models/res_config.py +++ b/beesdoo_website_shift/models/res_config.py @@ -1,136 +1,45 @@ -# -*- coding: utf-8 -*- - -# Copyright 2017-2018 Rémy Taymans +# Copyright 2017-2020 Rémy Taymans # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from ast import literal_eval from odoo import fields, models, api -PARAMS = [ - ('irregular_shift_limit', 'beesdoo_website_shift.irregular_shift_limit'), - ('highlight_rule_pc', 'beesdoo_website_shift.highlight_rule_pc'), - ('hide_rule', 'beesdoo_website_shift.hide_rule'), - ('irregular_enable_sign_up', - 'beesdoo_website_shift.irregular_enable_sign_up'), - ('irregular_past_shift_limit', - 'beesdoo_website_shift.irregular_past_shift_limit'), - ('regular_past_shift_limit', - 'beesdoo_website_shift.regular_past_shift_limit'), - ('regular_next_shift_limit', - 'beesdoo_website_shift.regular_next_shift_limit'), - ('regular_highlight_rule', - 'beesdoo_website_shift.regular_highlight_rule'), -] - class WebsiteShiftConfigSettings(models.TransientModel): - _name = 'beesdoo.website.shift.config.settings' _inherit = 'res.config.settings' # Irregular worker settings irregular_shift_limit = fields.Integer( - help="Maximum shift that will be shown" + related='website_id.irregular_shift_limit', + readonly=False, ) highlight_rule_pc = fields.Integer( - help="Treshold (in %) of available space in a shift that trigger the " - "highlight of the shift" + related='website_id.highlight_rule_pc', + readonly=False, ) hide_rule = fields.Integer( - help="Treshold ((available space)/(max space)) in percentage of " - "available space under wich the shift is hidden" + related='website_id.highlight_rule_pc', + readonly=False, ) irregular_enable_sign_up = fields.Boolean( - help="Enable shift sign up for irregular worker" + related='website_id.irregular_enable_sign_up', + readonly=False, ) irregular_past_shift_limit = fields.Integer( - help="Maximum past shift that will be shown for irregular worker" + related='website_id.irregular_past_shift_limit', + readonly=False, ) # Regular worker settings regular_past_shift_limit = fields.Integer( - help="Maximum past shift that will be shown for regular worker" + related='website_id.regular_past_shift_limit', + readonly=False, ) regular_next_shift_limit = fields.Integer( - help="Maximun number of next shift that will be shown" + related='website_id.regular_next_shift_limit', + readonly=False, ) regular_highlight_rule = fields.Integer( - help="Treshold (in %) of available space in a shift that trigger the " - "the highlight of a shift template." + related='website_id.regular_highlight_rule', + readonly=False, ) - - @api.multi - def set_params(self): - self.ensure_one() - - for field_name, key_name in PARAMS: - value = getattr(self, field_name) - self.env['ir.config_parameter'].set_param(key_name, str(value)) - - @api.multi - def get_default_irregular_shift_limit(self): - return { - 'irregular_shift_limit': int( - self.env['ir.config_parameter'] - .get_param("beesdoo_website_shift.irregular_shift_limit") - ) - } - - @api.multi - def get_default_highlight_rule_pc(self): - return { - 'highlight_rule_pc': int( - self.env['ir.config_parameter'] - .get_param("beesdoo_website_shift.highlight_rule_pc") - ) - } - - @api.multi - def get_default_hide_rule(self): - return { - 'hide_rule': int(self.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.hide_rule')) - } - - @api.multi - def get_default_irregular_shift_sign_up(self): - return { - 'irregular_enable_sign_up': - literal_eval(self.env['ir.config_parameter'].get_param( - 'beesdoo_website_shift.irregular_enable_sign_up')) - } - - @api.multi - def get_default_irregular_past_shift_limit(self): - return { - 'irregular_past_shift_limit': int( - self.env['ir.config_parameter'] - .get_param("beesdoo_website_shift.irregular_past_shift_limit") - ) - } - - @api.multi - def get_default_regular_past_shift_limit(self): - return { - 'regular_past_shift_limit': int( - self.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.regular_past_shift_limit') - ) - } - - @api.multi - def get_default_regular_next_shift_limit(self): - return { - 'regular_next_shift_limit': int( - self.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.regular_next_shift_limit') - ) - } - - @api.multi - def get_default_regular_highlight_rule(self): - return { - 'regular_highlight_rule': int( - self.env['ir.config_parameter'] - .get_param('beesdoo_website_shift.regular_highlight_rule') - ) - } diff --git a/beesdoo_website_shift/models/website.py b/beesdoo_website_shift/models/website.py new file mode 100644 index 0000000..7e2f3b6 --- /dev/null +++ b/beesdoo_website_shift/models/website.py @@ -0,0 +1,47 @@ +# Copyright 2017-2020 Rémy Taymans +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Website(models.Model): + _inherit = 'website' + + # Irregular worker settings + irregular_shift_limit = fields.Integer( + default=0, + help="Maximum shift that will be shown" + ) + highlight_rule_pc = fields.Integer( + default=30, + help="Treshold (in %) of available space in a shift that trigger the " + "highlight of the shift" + ) + hide_rule = fields.Integer( + default=20, + help="Treshold ((available space)/(max space)) in percentage of " + "available space under wich the shift is hidden" + ) + irregular_enable_sign_up = fields.Boolean( + default=True, + help="Enable shift sign up for irregular worker" + ) + irregular_past_shift_limit = fields.Integer( + default=10, + help="Maximum past shift that will be shown for irregular worker" + ) + + # Regular worker settings + regular_past_shift_limit = fields.Integer( + default=10, + help="Maximum past shift that will be shown for regular worker" + ) + regular_next_shift_limit = fields.Integer( + default=13, + help="Maximun number of next shift that will be shown" + ) + regular_highlight_rule = fields.Integer( + default=20, + help="Treshold (in %) of available space in a shift that trigger the " + "the highlight of a shift template." + ) diff --git a/beesdoo_website_shift/views/my_shift_website_templates.xml b/beesdoo_website_shift/views/my_shift_website_templates.xml index 9a6c102..42fc996 100644 --- a/beesdoo_website_shift/views/my_shift_website_templates.xml +++ b/beesdoo_website_shift/views/my_shift_website_templates.xml @@ -1,952 +1,705 @@ - - - - - - - - - - - + + + + + + + diff --git a/beesdoo_website_shift/views/res_config_views.xml b/beesdoo_website_shift/views/res_config_views.xml index 62ba035..60dc430 100644 --- a/beesdoo_website_shift/views/res_config_views.xml +++ b/beesdoo_website_shift/views/res_config_views.xml @@ -4,101 +4,91 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> - - - Website Shift Settings Irregular Worker - beesdoo.website.shift.config.settings - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Website Shift Settings Irregular Worker + res.config.settings + + +
+

Shift: Irregular Worker

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Shift: Regular Worker

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- - - Website Shift Settings Regular Worker - beesdoo.website.shift.config.settings - -
-
-
-
-
-
-
-
-
-
-
-
- - - Website Shift Settings Irregular Worker - beesdoo.website.shift.config.settings - - form - inline - - - - Website Shift Settings Regular Worker - beesdoo.website.shift.config.settings - - form - inline - - - - - - - - -
diff --git a/beesdoo_website_shift/views/shift_website_templates.xml b/beesdoo_website_shift/views/shift_website_templates.xml index 3bfc198..2909702 100644 --- a/beesdoo_website_shift/views/shift_website_templates.xml +++ b/beesdoo_website_shift/views/shift_website_templates.xml @@ -1,211 +1,158 @@ - - - - Shifts Irregular - /shift_irregular_worker - - 50 - - - Shifts Regular - /shift_template_regular_worker - - 51 - - - -