From 9d7236a7a56d99e6d84ef288f30295a37f461987 Mon Sep 17 00:00:00 2001
From: JordiMForgeFlow
Date: Tue, 6 Jun 2023 12:17:04 +0200
Subject: [PATCH 01/12] [ADD] hr_holidays_summary_email
---
hr_holidays_summary_email/README.rst | 97 ++++
hr_holidays_summary_email/__init__.py | 1 +
hr_holidays_summary_email/__manifest__.py | 24 +
hr_holidays_summary_email/data/ir_cron.xml | 15 +
.../data/mail_template_data.xml | 109 +++++
hr_holidays_summary_email/models/__init__.py | 5 +
.../models/hr_employee.py | 18 +
hr_holidays_summary_email/models/hr_leave.py | 137 ++++++
.../models/res_company.py | 23 +
.../models/res_config_settings.py | 14 +
hr_holidays_summary_email/models/res_users.py | 11 +
.../readme/CONTRIBUTORS.rst | 3 +
.../readme/DESCRIPTION.rst | 2 +
hr_holidays_summary_email/readme/USAGE.rst | 9 +
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 442 ++++++++++++++++++
hr_holidays_summary_email/tests/__init__.py | 1 +
.../tests/test_hr_leave_summary_email.py | 101 ++++
.../views/hr_employee_views.xml | 27 ++
.../views/res_config_settings.xml | 43 ++
.../views/res_users_views.xml | 18 +
21 files changed, 1100 insertions(+)
create mode 100644 hr_holidays_summary_email/README.rst
create mode 100644 hr_holidays_summary_email/__init__.py
create mode 100644 hr_holidays_summary_email/__manifest__.py
create mode 100644 hr_holidays_summary_email/data/ir_cron.xml
create mode 100644 hr_holidays_summary_email/data/mail_template_data.xml
create mode 100644 hr_holidays_summary_email/models/__init__.py
create mode 100644 hr_holidays_summary_email/models/hr_employee.py
create mode 100644 hr_holidays_summary_email/models/hr_leave.py
create mode 100644 hr_holidays_summary_email/models/res_company.py
create mode 100644 hr_holidays_summary_email/models/res_config_settings.py
create mode 100644 hr_holidays_summary_email/models/res_users.py
create mode 100644 hr_holidays_summary_email/readme/CONTRIBUTORS.rst
create mode 100644 hr_holidays_summary_email/readme/DESCRIPTION.rst
create mode 100644 hr_holidays_summary_email/readme/USAGE.rst
create mode 100644 hr_holidays_summary_email/static/description/icon.png
create mode 100644 hr_holidays_summary_email/static/description/index.html
create mode 100644 hr_holidays_summary_email/tests/__init__.py
create mode 100644 hr_holidays_summary_email/tests/test_hr_leave_summary_email.py
create mode 100644 hr_holidays_summary_email/views/hr_employee_views.xml
create mode 100644 hr_holidays_summary_email/views/res_config_settings.xml
create mode 100644 hr_holidays_summary_email/views/res_users_views.xml
diff --git a/hr_holidays_summary_email/README.rst b/hr_holidays_summary_email/README.rst
new file mode 100644
index 00000000..6a9da1da
--- /dev/null
+++ b/hr_holidays_summary_email/README.rst
@@ -0,0 +1,97 @@
+======================
+Holidays Summary Email
+======================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--holidays-lightgray.png?logo=github
+ :target: https://github.com/OCA/hr-holidays/tree/14.0/hr_holidays_summary_email
+ :alt: OCA/hr-holidays
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/hr-holidays-14-0/hr-holidays-14-0-hr_holidays_summary_email
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/290/14.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module allows sending a daily/weekly email to employees with a summary
+of the leaves on that period of other employees in the same company.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+For each employee, three options can be selected for the Leave Summary Email
+configuration:
+
+- No: No email with the leaves summary is sent to the employee.
+- Daily: A daily email with the leaves summary is sent to the employee.
+- Weekly: A weekly email with the leaves summary is sent to the employee.
+
+For the weekly email, the setting `Leave Weekly Summary Day of Week` allows
+setting the day of the week in which the email is sent.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* ForgeFlow
+
+Contributors
+~~~~~~~~~~~~
+
+* ForgeFlow
+
+ * Jordi Masvidal
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+.. |maintainer-JordiMForgeFlow| image:: https://github.com/JordiMForgeFlow.png?size=40px
+ :target: https://github.com/JordiMForgeFlow
+ :alt: JordiMForgeFlow
+
+Current `maintainer `__:
+
+|maintainer-JordiMForgeFlow|
+
+This module is part of the `OCA/hr-holidays `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/hr_holidays_summary_email/__init__.py b/hr_holidays_summary_email/__init__.py
new file mode 100644
index 00000000..0650744f
--- /dev/null
+++ b/hr_holidays_summary_email/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/hr_holidays_summary_email/__manifest__.py b/hr_holidays_summary_email/__manifest__.py
new file mode 100644
index 00000000..676dcd2f
--- /dev/null
+++ b/hr_holidays_summary_email/__manifest__.py
@@ -0,0 +1,24 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+{
+ "name": "Holidays Summary Email",
+ "summary": """
+ Notify employees with daily or weekly leaves summaries of their company.
+ """,
+ "version": "14.0.1.0.0",
+ "category": "Human Resources",
+ "website": "https://github.com/OCA/hr-holidays",
+ "author": "ForgeFlow, Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "installable": True,
+ "depends": ["hr_holidays", "hr_holidays_settings"],
+ "data": [
+ "data/ir_cron.xml",
+ "data/mail_template_data.xml",
+ "views/hr_employee_views.xml",
+ "views/res_users_views.xml",
+ "views/res_config_settings.xml",
+ ],
+ "maintainers": ["JordiMForgeFlow"],
+}
diff --git a/hr_holidays_summary_email/data/ir_cron.xml b/hr_holidays_summary_email/data/ir_cron.xml
new file mode 100644
index 00000000..8b17eb4e
--- /dev/null
+++ b/hr_holidays_summary_email/data/ir_cron.xml
@@ -0,0 +1,15 @@
+
+
+
+ Leaves Summary Email
+
+
+ 1
+ days
+ -1
+
+
+ code
+ model._cron_send_hr_leave_summary_emails()
+
+
diff --git a/hr_holidays_summary_email/data/mail_template_data.xml b/hr_holidays_summary_email/data/mail_template_data.xml
new file mode 100644
index 00000000..72840431
--- /dev/null
+++ b/hr_holidays_summary_email/data/mail_template_data.xml
@@ -0,0 +1,109 @@
+
+
+
+
+ Leaves Summary: Daily
+
+ Daily Leaves Summary
+ ${object.work_email | safe}
+ ${object.company_id.partner_id.email_formatted | safe}
+
+
+
Dear ${object.name},
+
+
This is today's leave summary:
+
+
+
+
Employee
+
Time Off
+
From
+
To
+
+ % set timeoffs = ctx.get('time_offs', False)
+ % for data in timeoffs
+ % set d_from = data.format_hr_leave_summary_date()
+ % set d_to = data.format_hr_leave_summary_date(False)
+
+ % set timeoffs = ctx.get('time_offs', False)
+ % for data in timeoffs
+ % set d_from = data.format_hr_leave_summary_date()
+ % set d_to = data.format_hr_leave_summary_date(False)
+
+
${data.employee_id.name}
+
${data.name or ''}
+
${d_from}
+
${d_to}
+
+ % endfor
+
+
+
+ ${object.lang}
+
+
+
+
diff --git a/hr_holidays_summary_email/models/__init__.py b/hr_holidays_summary_email/models/__init__.py
new file mode 100644
index 00000000..74ec9fc5
--- /dev/null
+++ b/hr_holidays_summary_email/models/__init__.py
@@ -0,0 +1,5 @@
+from . import hr_leave
+from . import hr_employee
+from . import res_company
+from . import res_config_settings
+from . import res_users
diff --git a/hr_holidays_summary_email/models/hr_employee.py b/hr_holidays_summary_email/models/hr_employee.py
new file mode 100644
index 00000000..58a23a75
--- /dev/null
+++ b/hr_holidays_summary_email/models/hr_employee.py
@@ -0,0 +1,18 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import fields, models
+
+
+class HrEmployeeBase(models.AbstractModel):
+ _inherit = "hr.employee.base"
+
+ hr_leave_summary_type = fields.Selection(
+ selection=[("no", "No"), ("daily", "Daily"), ("weekly", "Weekly")],
+ string="Leave Summary Email",
+ required=True,
+ default="no",
+ )
+ last_hr_leave_summary_sent = fields.Date(
+ string="Last Leave Summary Email Sent",
+ readonly=True,
+ )
diff --git a/hr_holidays_summary_email/models/hr_leave.py b/hr_holidays_summary_email/models/hr_leave.py
new file mode 100644
index 00000000..74bfa7b6
--- /dev/null
+++ b/hr_holidays_summary_email/models/hr_leave.py
@@ -0,0 +1,137 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from dateutil.relativedelta import relativedelta
+
+from odoo import api, fields, models
+from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
+
+
+class HrLeave(models.Model):
+ _inherit = "hr.leave"
+
+ @api.model
+ def _get_hr_leave_summary_mail_template(self, summary_type):
+ return self.env.ref(
+ "hr_holidays_summary_email.hr_holidays_summary_mail_template_%s"
+ % summary_type,
+ raise_if_not_found=False,
+ )
+
+ @api.model
+ def _get_hr_leave_summary_employee_domain(self, summary_type, company_id):
+ return [
+ ("hr_leave_summary_type", "=", summary_type),
+ ("last_hr_leave_summary_sent", "!=", fields.Date.today()),
+ ("company_id", "=", company_id),
+ ]
+
+ @api.model
+ def _get_hr_leave_summary_base_domain(self, company_id):
+ return [
+ ("state", "=", "validate"),
+ ("employee_id.company_id", "=", company_id),
+ ]
+
+ @api.model
+ def _get_hr_leave_summary_daily_domain(self, company_id):
+ res = self._get_hr_leave_summary_base_domain(company_id)
+ res += [
+ ("date_from", "<=", fields.Date.today()),
+ ("date_to", ">=", fields.Date.today()),
+ ]
+ return res
+
+ @api.model
+ def _get_hr_leave_summary_weekly_domain(self, company_id):
+ res = self._get_hr_leave_summary_base_domain(company_id)
+ date_from = fields.Date.today()
+ date_to = date_from + relativedelta(days=6)
+ res += [
+ ("date_from", "<=", date_to),
+ ("date_to", ">=", date_from),
+ ]
+ return res
+
+ @api.model
+ def _cron_send_hr_leave_summary_emails_daily(self, employees_to_notify, company):
+ domain = self._get_hr_leave_summary_daily_domain(company.id)
+ today_time_offs = self.env["hr.leave"].sudo().search(domain)
+ template = self._get_hr_leave_summary_mail_template("daily")
+ if not template:
+ return
+ for employee in employees_to_notify:
+ template.with_context(time_offs=today_time_offs).send_mail(
+ employee.id, force_send=False
+ )
+ employees_to_notify.write({"last_hr_leave_summary_sent": fields.Date.today()})
+
+ @api.model
+ def _cron_send_hr_leave_summary_emails_weekly(self, employees_to_notify, company):
+ if str(fields.Date.today().weekday()) != company.hr_holidays_summary_weekly_dow:
+ return
+ domain = self._get_hr_leave_summary_weekly_domain(company.id)
+ today_time_offs = self.env["hr.leave"].sudo().search(domain)
+ template = self._get_hr_leave_summary_mail_template("weekly")
+ if not template:
+ return
+ for employee in employees_to_notify:
+ template.with_context(time_offs=today_time_offs).send_mail(
+ employee.id, force_send=False
+ )
+ employees_to_notify.write({"last_hr_leave_summary_sent": fields.Date.today()})
+
+ @api.model
+ def _cron_send_hr_leave_summary_emails(self):
+ summary_types = self.env["hr.employee"].fields_get(["hr_leave_summary_type"])[
+ "hr_leave_summary_type"
+ ]["selection"]
+ for company in self.env["res.company"].search([]):
+ for stype_tuple in summary_types:
+ stype = stype_tuple[0]
+ employee_domain = self._get_hr_leave_summary_employee_domain(
+ stype, company.id
+ )
+ employees_to_notify = self.env["hr.employee"].search(employee_domain)
+ if employees_to_notify and hasattr(
+ self, "_cron_send_hr_leave_summary_emails_%s" % stype
+ ):
+ getattr(self, "_cron_send_hr_leave_summary_emails_%s" % stype)(
+ employees_to_notify, company
+ )
+
+ def format_hr_leave_summary_date(self, date_from=True):
+ self.ensure_one()
+ if date_from:
+ res = self.date_from.strftime(DEFAULT_SERVER_DATE_FORMAT)
+ else:
+ res = self.date_to.strftime(DEFAULT_SERVER_DATE_FORMAT)
+ if self.request_unit_half:
+ res += (
+ " %s"
+ % dict(
+ self.env["hr.leave"].fields_get(["request_date_from_period"])[
+ "request_date_from_period"
+ ]["selection"]
+ )[self.request_date_from_period]
+ )
+ elif self.request_unit_hours:
+ if date_from:
+ res += (
+ " %s"
+ % dict(
+ self.env["hr.leave"].fields_get(["request_hour_from"])[
+ "request_hour_from"
+ ]["selection"]
+ )[self.request_hour_from]
+ )
+ else:
+ res += (
+ " %s"
+ % dict(
+ self.env["hr.leave"].fields_get(["request_hour_to"])[
+ "request_hour_to"
+ ]["selection"]
+ )[self.request_hour_to]
+ )
+ return res
diff --git a/hr_holidays_summary_email/models/res_company.py b/hr_holidays_summary_email/models/res_company.py
new file mode 100644
index 00000000..03b36d56
--- /dev/null
+++ b/hr_holidays_summary_email/models/res_company.py
@@ -0,0 +1,23 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class ResCompany(models.Model):
+ _inherit = "res.company"
+
+ hr_holidays_summary_weekly_dow = fields.Selection(
+ selection=[
+ ("0", "Monday"),
+ ("1", "Tuesday"),
+ ("2", "Wednesday"),
+ ("3", "Thursday"),
+ ("4", "Friday"),
+ ("5", "Saturday"),
+ ("6", "Sunday"),
+ ],
+ string="Leave Weekly Summary Day of Week",
+ default="0",
+ required=True,
+ )
diff --git a/hr_holidays_summary_email/models/res_config_settings.py b/hr_holidays_summary_email/models/res_config_settings.py
new file mode 100644
index 00000000..9d914966
--- /dev/null
+++ b/hr_holidays_summary_email/models/res_config_settings.py
@@ -0,0 +1,14 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class ResConfigSettings(models.TransientModel):
+ _inherit = "res.config.settings"
+
+ hr_holidays_summary_weekly_dow = fields.Selection(
+ related="company_id.hr_holidays_summary_weekly_dow",
+ readonly=False,
+ required=True,
+ )
diff --git a/hr_holidays_summary_email/models/res_users.py b/hr_holidays_summary_email/models/res_users.py
new file mode 100644
index 00000000..f44c4998
--- /dev/null
+++ b/hr_holidays_summary_email/models/res_users.py
@@ -0,0 +1,11 @@
+# Copyright 2023 ForgeFlow S.L.
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import fields, models
+
+
+class ResUser(models.Model):
+ _inherit = "res.users"
+
+ hr_leave_summary_type = fields.Selection(
+ related="employee_id.hr_leave_summary_type", readonly=False, related_sudo=False
+ )
diff --git a/hr_holidays_summary_email/readme/CONTRIBUTORS.rst b/hr_holidays_summary_email/readme/CONTRIBUTORS.rst
new file mode 100644
index 00000000..bbe976d7
--- /dev/null
+++ b/hr_holidays_summary_email/readme/CONTRIBUTORS.rst
@@ -0,0 +1,3 @@
+* ForgeFlow
+
+ * Jordi Masvidal
diff --git a/hr_holidays_summary_email/readme/DESCRIPTION.rst b/hr_holidays_summary_email/readme/DESCRIPTION.rst
new file mode 100644
index 00000000..7230f841
--- /dev/null
+++ b/hr_holidays_summary_email/readme/DESCRIPTION.rst
@@ -0,0 +1,2 @@
+This module allows sending a daily/weekly email to employees with a summary
+of the leaves on that period of other employees in the same company.
diff --git a/hr_holidays_summary_email/readme/USAGE.rst b/hr_holidays_summary_email/readme/USAGE.rst
new file mode 100644
index 00000000..f2dea967
--- /dev/null
+++ b/hr_holidays_summary_email/readme/USAGE.rst
@@ -0,0 +1,9 @@
+For each employee, three options can be selected for the Leave Summary Email
+configuration:
+
+- No: No email with the leaves summary is sent to the employee.
+- Daily: A daily email with the leaves summary is sent to the employee.
+- Weekly: A weekly email with the leaves summary is sent to the employee.
+
+For the weekly email, the setting `Leave Weekly Summary Day of Week` allows
+setting the day of the week in which the email is sent.
diff --git a/hr_holidays_summary_email/static/description/icon.png b/hr_holidays_summary_email/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/hr_holidays_summary_email/static/description/index.html b/hr_holidays_summary_email/static/description/index.html
new file mode 100644
index 00000000..e900281b
--- /dev/null
+++ b/hr_holidays_summary_email/static/description/index.html
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+Holidays natural period
+
+
+
+
+
Holidays natural period
+
+
+
+
This module was written to define natural day option in request unit on holidays type.
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)\n"
+"
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)\n"
+"
\n"
+"
${data.employee_id.name}
\n"
+"
${data.name or ''}
\n"
+"
${d_from}
\n"
+"
${d_to}
\n"
+"
\n"
+" % endfor\n"
+"
\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model_terms:ir.ui.view,arch_db:hr_holidays_summary_email.res_config_settings_view_form
+msgid "Weekly Leaves Summary"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model,name:hr_holidays_summary_email.model_hr_employee_base
+msgid "Basic Employee"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model,name:hr_holidays_summary_email.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model,name:hr_holidays_summary_email.model_res_config_settings
+msgid "Config Settings"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee__hr_leave_summary_type__daily
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_base__hr_leave_summary_type__daily
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_public__hr_leave_summary_type__daily
+msgid "Daily"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:mail.template,subject:hr_holidays_summary_email.hr_holidays_summary_mail_template_daily
+msgid "Daily Leaves Summary"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model_terms:ir.ui.view,arch_db:hr_holidays_summary_email.res_config_settings_view_form
+msgid "Day of week when the weekly leaves summary is sent."
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_base__display_name
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_leave__display_name
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_company__display_name
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_config_settings__display_name
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_users__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__4
+msgid "Friday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_base__id
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_leave__id
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_company__id
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_config_settings__id
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_users__id
+msgid "ID"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee__last_hr_leave_summary_sent
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_base__last_hr_leave_summary_sent
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_public__last_hr_leave_summary_sent
+msgid "Last Leave Summary Email Sent"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_base____last_update
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_leave____last_update
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_company____last_update
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_config_settings____last_update
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_users____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee__hr_leave_summary_type
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_base__hr_leave_summary_type
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_hr_employee_public__hr_leave_summary_type
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_users__hr_leave_summary_type
+msgid "Leave Summary Email"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_company__hr_holidays_summary_weekly_dow
+#: model:ir.model.fields,field_description:hr_holidays_summary_email.field_res_config_settings__hr_holidays_summary_weekly_dow
+msgid "Leave Weekly Summary Day of Week"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.actions.server,name:hr_holidays_summary_email.ir_cron_hr_holidays_summary_email_ir_actions_server
+#: model:ir.cron,cron_name:hr_holidays_summary_email.ir_cron_hr_holidays_summary_email
+#: model:ir.cron,name:hr_holidays_summary_email.ir_cron_hr_holidays_summary_email
+msgid "Leaves Summary Email"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__0
+msgid "Monday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee__hr_leave_summary_type__no
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_base__hr_leave_summary_type__no
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_public__hr_leave_summary_type__no
+msgid "No"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__5
+msgid "Saturday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model_terms:ir.ui.view,arch_db:hr_holidays_summary_email.res_config_settings_view_form
+msgid "Sending Day Of Week"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__6
+msgid "Sunday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__3
+msgid "Thursday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model,name:hr_holidays_summary_email.model_hr_leave
+msgid "Time Off"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__1
+msgid "Tuesday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model,name:hr_holidays_summary_email.model_res_users
+msgid "Users"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__res_company__hr_holidays_summary_weekly_dow__2
+msgid "Wednesday"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee__hr_leave_summary_type__weekly
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_base__hr_leave_summary_type__weekly
+#: model:ir.model.fields.selection,name:hr_holidays_summary_email.selection__hr_employee_public__hr_leave_summary_type__weekly
+msgid "Weekly"
+msgstr ""
+
+#. module: hr_holidays_summary_email
+#: model:mail.template,subject:hr_holidays_summary_email.hr_holidays_summary_mail_template_weekly
+msgid "Weekly Leaves Summary"
+msgstr ""
From d133b1fbfe9b958c49562d0f7d4b87af04ece80e Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Mon, 4 Sep 2023 12:25:37 +0000
Subject: [PATCH 03/12] [UPD] README.rst
---
hr_holidays_summary_email/README.rst | 17 ++--
.../static/description/index.html | 79 ++++++++++---------
2 files changed, 50 insertions(+), 46 deletions(-)
diff --git a/hr_holidays_summary_email/README.rst b/hr_holidays_summary_email/README.rst
index 6a9da1da..50c5dba3 100644
--- a/hr_holidays_summary_email/README.rst
+++ b/hr_holidays_summary_email/README.rst
@@ -2,10 +2,13 @@
Holidays Summary Email
======================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:b059b061e7275ac9595e7bf51c4d3a3e139eea53d3beb76c870af9450291c914
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ Holidays Summary Email
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/hr-holidays-14-0/hr-holidays-14-0-hr_holidays_summary_email
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/290/14.0
- :alt: Try me on Runbot
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/hr-holidays&target_branch=14.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows sending a daily/weekly email to employees with a summary
of the leaves on that period of other employees in the same company.
@@ -51,8 +54,8 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
-If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
diff --git a/hr_holidays_summary_email/static/description/index.html b/hr_holidays_summary_email/static/description/index.html
index e900281b..6696a3c6 100644
--- a/hr_holidays_summary_email/static/description/index.html
+++ b/hr_holidays_summary_email/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
-Holidays natural period
+
+Holidays Summary Email
-
-
Holidays natural period
+
+
Holidays Summary Email
-
-
This module was written to define natural day option in request unit on holidays type.
+
+
This module allows sending a daily/weekly email to employees with a summary
+of the leaves on that period of other employees in the same company.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
-If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+feedback.
Do not contact contributors directly about support or help with technical issues.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)\n"
+"
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)\n"
+"
questo è il riepilogo dei permessi di questa "
+"settimana:
\n"
+" \n"
+"
\n"
+"
\n"
+"
Dipendente
\n"
+"
Tempo assenza
\n"
+"
Da
\n"
+"
A
\n"
+"
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)"
+"\n"
+"
\n"
+" % set timeoffs = ctx.get('time_offs', False)\n"
+" % for data in timeoffs\n"
+" % set d_from = data.format_hr_leave_summary_date()\n"
+" % set d_to = data.format_hr_leave_summary_date(False)"
+"\n"
+"
\n"
" % set timeoffs = ctx.get('time_offs', False)\n"
" % for data in timeoffs\n"
" % set d_from = data.format_hr_leave_summary_date()\n"
-" % set d_to = data.format_hr_leave_summary_date(False)\n"
+" % set d_to = data."
+"format_hr_leave_summary_date(False)\n"
"
\n"
-"
${data.employee_id.name}
\n"
-"
${data.name or ''}
\n"
-"
${d_from}
\n"
-"
${d_to}
\n"
+"
${data.employee_id.name}
\n"
+"
${data.name or ''}
\n"
+"
${d_from}
\n"
+"
${d_to}
\n"
"
\n"
" % endfor\n"
"
\n"
@@ -67,8 +77,8 @@ msgstr ""
" % set timeoffs = ctx.get('time_offs', False)\n"
" % for data in timeoffs\n"
" % set d_from = data.format_hr_leave_summary_date()\n"
-" % set d_to = data.format_hr_leave_summary_date(False)"
-"\n"
+" % set d_to = data."
+"format_hr_leave_summary_date(False)\n"
"
\n"
"
${data.employee_id.name}
\n"
@@ -92,22 +102,32 @@ msgid ""
" \n"
"
This is today's leave summary:
\n"
" \n"
-"
\n"
+"
\n"
"
\n"
-"
Employee
\n"
-"
Time Off
\n"
-"
From
\n"
-"
To
\n"
+"
Employee
\n"
+"
Time Off
\n"
+"
From
\n"
+"
To
\n"
"
\n"
" % set timeoffs = ctx.get('time_offs', False)\n"
" % for data in timeoffs\n"
" % set d_from = data.format_hr_leave_summary_date()\n"
-" % set d_to = data.format_hr_leave_summary_date(False)\n"
+" % set d_to = data."
+"format_hr_leave_summary_date(False)\n"
"
\n"
-"
${data.employee_id.name}
\n"
-"
${data.name or ''}
\n"
-"
${d_from}
\n"
-"
${d_to}
\n"
+"
${data.employee_id.name}
\n"
+"
${data.name or ''}
\n"
+"
${d_from}
\n"
+"
${d_to}
\n"
"
\n"
" % endfor\n"
"
\n"
@@ -134,8 +154,8 @@ msgstr ""
" % set timeoffs = ctx.get('time_offs', False)\n"
" % for data in timeoffs\n"
" % set d_from = data.format_hr_leave_summary_date()\n"
-" % set d_to = data.format_hr_leave_summary_date(False)"
-"\n"
+" % set d_to = data."
+"format_hr_leave_summary_date(False)\n"
"
@@ -105,5 +104,4 @@
${object.lang}
-
From f09e11b433c31720aeaf3422e2ce649514529e42 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Sat, 28 Oct 2023 07:02:03 +0000
Subject: [PATCH 08/12] [BOT] post-merge updates
---
hr_holidays_summary_email/README.rst | 2 +-
hr_holidays_summary_email/__manifest__.py | 2 +-
hr_holidays_summary_email/static/description/index.html | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/hr_holidays_summary_email/README.rst b/hr_holidays_summary_email/README.rst
index 50c5dba3..c0b8988e 100644
--- a/hr_holidays_summary_email/README.rst
+++ b/hr_holidays_summary_email/README.rst
@@ -7,7 +7,7 @@ Holidays Summary Email
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:b059b061e7275ac9595e7bf51c4d3a3e139eea53d3beb76c870af9450291c914
+ !! source digest: sha256:5b86ab27fe5fce4b3f08db41d6887306ca1857a3fdbf1ee3034d5da210aaf1ea
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
diff --git a/hr_holidays_summary_email/__manifest__.py b/hr_holidays_summary_email/__manifest__.py
index 676dcd2f..b647012a 100644
--- a/hr_holidays_summary_email/__manifest__.py
+++ b/hr_holidays_summary_email/__manifest__.py
@@ -6,7 +6,7 @@
"summary": """
Notify employees with daily or weekly leaves summaries of their company.
""",
- "version": "14.0.1.0.0",
+ "version": "14.0.1.0.1",
"category": "Human Resources",
"website": "https://github.com/OCA/hr-holidays",
"author": "ForgeFlow, Odoo Community Association (OCA)",
diff --git a/hr_holidays_summary_email/static/description/index.html b/hr_holidays_summary_email/static/description/index.html
index 6696a3c6..85319532 100644
--- a/hr_holidays_summary_email/static/description/index.html
+++ b/hr_holidays_summary_email/static/description/index.html
@@ -367,7 +367,7 @@
Holidays Summary Email
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:b059b061e7275ac9595e7bf51c4d3a3e139eea53d3beb76c870af9450291c914
+!! source digest: sha256:5b86ab27fe5fce4b3f08db41d6887306ca1857a3fdbf1ee3034d5da210aaf1ea
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
This module allows sending a daily/weekly email to employees with a summary
From 75692d11ad40043e6ae6e410020c691a83fb7bf0 Mon Sep 17 00:00:00 2001
From: JordiMForgeFlow
Date: Tue, 20 Feb 2024 10:22:31 +0100
Subject: [PATCH 09/12] [FIX] hr_holidays_summary_email: allow users to self
edit setting
---
hr_holidays_summary_email/models/res_users.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/hr_holidays_summary_email/models/res_users.py b/hr_holidays_summary_email/models/res_users.py
index f44c4998..02854fd2 100644
--- a/hr_holidays_summary_email/models/res_users.py
+++ b/hr_holidays_summary_email/models/res_users.py
@@ -9,3 +9,17 @@ class ResUser(models.Model):
hr_leave_summary_type = fields.Selection(
related="employee_id.hr_leave_summary_type", readonly=False, related_sudo=False
)
+
+ def __init__(self, pool, cr):
+ """Override of __init__ to add access rights.
+ Access rights are disabled by default, but allowed
+ on some specific fields defined in self.SELF_{READ/WRITE}ABLE_FIELDS.
+ """
+ super(ResUser, self).__init__(pool, cr)
+ # duplicate list to avoid modifying the original reference
+ type(self).SELF_READABLE_FIELDS = type(self).SELF_READABLE_FIELDS + [
+ "hr_leave_summary_type"
+ ]
+ type(self).SELF_WRITEABLE_FIELDS = type(self).SELF_WRITEABLE_FIELDS + [
+ "hr_leave_summary_type"
+ ]
From 98994f811b88cfad24c62c40da8dc6ab91b41a69 Mon Sep 17 00:00:00 2001
From: JordiMForgeFlow
Date: Tue, 20 Feb 2024 14:40:58 +0100
Subject: [PATCH 10/12] [MIG] hr_holidays_summary_email: Migration to 15.0
---
hr_holidays_summary_email/README.rst | 12 +-
hr_holidays_summary_email/__manifest__.py | 2 +-
.../data/mail_template_data.xml | 104 ++++++++++--------
hr_holidays_summary_email/models/res_users.py | 20 ++--
.../static/description/index.html | 8 +-
.../tests/test_hr_leave_summary_email.py | 33 +++---
6 files changed, 93 insertions(+), 86 deletions(-)
diff --git a/hr_holidays_summary_email/README.rst b/hr_holidays_summary_email/README.rst
index c0b8988e..d7c5f6a9 100644
--- a/hr_holidays_summary_email/README.rst
+++ b/hr_holidays_summary_email/README.rst
@@ -7,7 +7,7 @@ Holidays Summary Email
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:5b86ab27fe5fce4b3f08db41d6887306ca1857a3fdbf1ee3034d5da210aaf1ea
+ !! source digest: sha256:f1265d7ee3d6a0e55298f1e6c7e6d29492327378e1ebde255497ef87ac4b3dd9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -17,13 +17,13 @@ Holidays Summary Email
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--holidays-lightgray.png?logo=github
- :target: https://github.com/OCA/hr-holidays/tree/14.0/hr_holidays_summary_email
+ :target: https://github.com/OCA/hr-holidays/tree/15.0/hr_holidays_summary_email
:alt: OCA/hr-holidays
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/hr-holidays-14-0/hr-holidays-14-0-hr_holidays_summary_email
+ :target: https://translation.odoo-community.org/projects/hr-holidays-15-0/hr-holidays-15-0-hr_holidays_summary_email
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/hr-holidays&target_branch=14.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/hr-holidays&target_branch=15.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -55,7 +55,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -95,6 +95,6 @@ Current `maintainer `__:
|maintainer-JordiMForgeFlow|
-This module is part of the `OCA/hr-holidays `_ project on GitHub.
+This module is part of the `OCA/hr-holidays `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/hr_holidays_summary_email/__manifest__.py b/hr_holidays_summary_email/__manifest__.py
index b647012a..facc635c 100644
--- a/hr_holidays_summary_email/__manifest__.py
+++ b/hr_holidays_summary_email/__manifest__.py
@@ -6,7 +6,7 @@
"summary": """
Notify employees with daily or weekly leaves summaries of their company.
""",
- "version": "14.0.1.0.1",
+ "version": "15.0.1.0.0",
"category": "Human Resources",
"website": "https://github.com/OCA/hr-holidays",
"author": "ForgeFlow, Odoo Community Association (OCA)",
diff --git a/hr_holidays_summary_email/data/mail_template_data.xml b/hr_holidays_summary_email/data/mail_template_data.xml
index a5fb8200..876da150 100644
--- a/hr_holidays_summary_email/data/mail_template_data.xml
+++ b/hr_holidays_summary_email/data/mail_template_data.xml
@@ -4,13 +4,13 @@
Leaves Summary: DailyDaily Leaves Summary
- ${object.work_email | safe}
+ {{object.work_email}}${object.company_id.partner_id.email_formatted | safe}
+ >{{object.company_id.partner_id.email_formatted}}
-
Dear ${object.name},
+
Dear ,
This is today's leave summary:
@@ -27,42 +27,48 @@
From
To
- % set timeoffs = ctx.get('time_offs', False)
- % for data in timeoffs
- % set d_from = data.format_hr_leave_summary_date()
- % set d_to = data.format_hr_leave_summary_date(False)
-
- % set timeoffs = ctx.get('time_offs', False)
- % for data in timeoffs
- % set d_from = data.format_hr_leave_summary_date()
- % set d_to = data.format_hr_leave_summary_date(False)
-
-
${data.employee_id.name}
-
${data.name or ''}
-
${d_from}
-
${d_to}
-
- % endfor
+
+
+
+
+
+
+
+
+
+
+
- ${object.lang}
+ {{object.lang}}
diff --git a/hr_holidays_summary_email/models/res_users.py b/hr_holidays_summary_email/models/res_users.py
index 02854fd2..18843d5f 100644
--- a/hr_holidays_summary_email/models/res_users.py
+++ b/hr_holidays_summary_email/models/res_users.py
@@ -10,16 +10,10 @@ class ResUser(models.Model):
related="employee_id.hr_leave_summary_type", readonly=False, related_sudo=False
)
- def __init__(self, pool, cr):
- """Override of __init__ to add access rights.
- Access rights are disabled by default, but allowed
- on some specific fields defined in self.SELF_{READ/WRITE}ABLE_FIELDS.
- """
- super(ResUser, self).__init__(pool, cr)
- # duplicate list to avoid modifying the original reference
- type(self).SELF_READABLE_FIELDS = type(self).SELF_READABLE_FIELDS + [
- "hr_leave_summary_type"
- ]
- type(self).SELF_WRITEABLE_FIELDS = type(self).SELF_WRITEABLE_FIELDS + [
- "hr_leave_summary_type"
- ]
+ @property
+ def SELF_READABLE_FIELDS(self):
+ return super().SELF_READABLE_FIELDS + ["hr_leave_summary_type"]
+
+ @property
+ def SELF_WRITEABLE_FIELDS(self):
+ return super().SELF_WRITEABLE_FIELDS + ["hr_leave_summary_type"]
diff --git a/hr_holidays_summary_email/static/description/index.html b/hr_holidays_summary_email/static/description/index.html
index 85319532..c4ec7e48 100644
--- a/hr_holidays_summary_email/static/description/index.html
+++ b/hr_holidays_summary_email/static/description/index.html
@@ -367,9 +367,9 @@
Holidays Summary Email
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:5b86ab27fe5fce4b3f08db41d6887306ca1857a3fdbf1ee3034d5da210aaf1ea
+!! source digest: sha256:f1265d7ee3d6a0e55298f1e6c7e6d29492327378e1ebde255497ef87ac4b3dd9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module allows sending a daily/weekly email to employees with a summary
of the leaves on that period of other employees in the same company.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.