From 9769393759279b0a955af598cf10a978abe05b0a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 5 Sep 2025 17:48:13 +0000 Subject: [PATCH] [ADD] hr_timesheet_sheet_usability_akretion --- .../__init__.py | 1 + .../__manifest__.py | 18 ++++++++++++ .../models/__init__.py | 1 + .../models/hr_timesheet_sheet.py | 28 +++++++++++++++++++ .../views/hr_timesheet_sheet.xml | 23 +++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 hr_timesheet_sheet_usability_akretion/__init__.py create mode 100644 hr_timesheet_sheet_usability_akretion/__manifest__.py create mode 100644 hr_timesheet_sheet_usability_akretion/models/__init__.py create mode 100644 hr_timesheet_sheet_usability_akretion/models/hr_timesheet_sheet.py create mode 100644 hr_timesheet_sheet_usability_akretion/views/hr_timesheet_sheet.xml diff --git a/hr_timesheet_sheet_usability_akretion/__init__.py b/hr_timesheet_sheet_usability_akretion/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/hr_timesheet_sheet_usability_akretion/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_timesheet_sheet_usability_akretion/__manifest__.py b/hr_timesheet_sheet_usability_akretion/__manifest__.py new file mode 100644 index 0000000..c92c4dc --- /dev/null +++ b/hr_timesheet_sheet_usability_akretion/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2025 Akretion France (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'HR Timesheet Sheet Usability Akretion', + 'version': '16.0.1.0.0', + 'category': 'Timesheet', + 'license': 'AGPL-3', + 'summary': 'Better usability in hr_timesheet_sheet module', + 'author': 'Akretion', + 'website': 'https://github.com/akretion/odoo-usability', + 'depends': ['hr_timesheet_sheet'], + 'data': [ + 'views/hr_timesheet_sheet.xml', + ], + 'installable': True, +} diff --git a/hr_timesheet_sheet_usability_akretion/models/__init__.py b/hr_timesheet_sheet_usability_akretion/models/__init__.py new file mode 100644 index 0000000..5858a81 --- /dev/null +++ b/hr_timesheet_sheet_usability_akretion/models/__init__.py @@ -0,0 +1 @@ +from . import hr_timesheet_sheet diff --git a/hr_timesheet_sheet_usability_akretion/models/hr_timesheet_sheet.py b/hr_timesheet_sheet_usability_akretion/models/hr_timesheet_sheet.py new file mode 100644 index 0000000..264e191 --- /dev/null +++ b/hr_timesheet_sheet_usability_akretion/models/hr_timesheet_sheet.py @@ -0,0 +1,28 @@ +# Copyright 2025 Akretion France (https://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models, _ +from odoo.exceptions import UserError + + +class HrTimesheetSheet(models.Model): + _inherit = 'hr_timesheet.sheet' + + def show_lines_fullscreen(self): + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id( + "hr_timesheet.timesheet_action_all") + action['domain'] = [('sheet_id', '=', self.id)] + return action + + # Inherit native method. We don't want tons of followers by default. We just want the manager. + def _get_subscribers(self): + self.ensure_one() + subscribers = self._get_informables() + return subscribers + + def _check_can_review(self): + if self.employee_id.user_id == self.env.user and self.employee_id.parent_id: + raise UserError(_("You cannot approve your own timesheet!")) + return super()._check_can_review() diff --git a/hr_timesheet_sheet_usability_akretion/views/hr_timesheet_sheet.xml b/hr_timesheet_sheet_usability_akretion/views/hr_timesheet_sheet.xml new file mode 100644 index 0000000..d63e6c4 --- /dev/null +++ b/hr_timesheet_sheet_usability_akretion/views/hr_timesheet_sheet.xml @@ -0,0 +1,23 @@ + + + + + + + hr_timesheet.sheet + + + +
+
+
+
+
+ +