From 877d4389d57fbdc0025c9d489fbee977c3f28953 Mon Sep 17 00:00:00 2001 From: Raimon Esteve Date: Thu, 28 Sep 2023 12:16:29 +0200 Subject: [PATCH] Send Own Assignee #162314 --- __init__.py | 2 ++ locale/ca.po | 47 ++++++++++++++++++++++++++++++++++ locale/es.po | 47 ++++++++++++++++++++++++++++++++++ role.py | 13 ++++++---- tryton.cfg | 1 + user.py | 14 ++++++++++ user.xml | 19 ++++++++++++++ view/user_form.xml | 8 ++++++ view/user_form_preferences.xml | 8 ++++++ 9 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 locale/ca.po create mode 100644 locale/es.po create mode 100644 user.py create mode 100644 user.xml create mode 100644 view/user_form.xml create mode 100644 view/user_form_preferences.xml diff --git a/__init__.py b/__init__.py index 5d116c9..fd5c9e5 100644 --- a/__init__.py +++ b/__init__.py @@ -3,6 +3,7 @@ # the full copyright notices and license terms. from trytond.pool import Pool from . import role +from . import user def register(): Pool.register( @@ -11,4 +12,5 @@ def register(): role.Allocation, role.WorkStatus, role.Work, + user.User, module='project_role', type_='model') diff --git a/locale/ca.po b/locale/ca.po new file mode 100644 index 0000000..185987d --- /dev/null +++ b/locale/ca.po @@ -0,0 +1,47 @@ +# +msgid "" +msgstr "Content-Type: text/plain; charset=utf-8\n" + +msgctxt "field:project.allocation,role:" +msgid "Role" +msgstr "Rol" + +msgctxt "field:project.role,name:" +msgid "Name" +msgstr "Nom" + +msgctxt "field:project.work,assignee:" +msgid "Assignee" +msgstr "Assigna" + +msgctxt "field:project.work,role_employee:" +msgid "Role Employee" +msgstr "Rol empleat" + +msgctxt "field:project.work.status,role:" +msgid "Role" +msgstr "Rols" + +msgctxt "field:res.user,send_own_assignee:" +msgid "Send Own Assignee" +msgstr "Envia assignació pròpia" + +msgctxt "field:work.configuration,default_allocation_employee:" +msgid "Default Allocation Employee" +msgstr "Assigna empleat per defecte" + +msgctxt "model:ir.action,name:act_project_role" +msgid "Project Roles" +msgstr "Rols projecte" + +msgctxt "model:ir.rule.group,name:rule_group_project_allocation" +msgid "User in company" +msgstr "Usuari a les empreses" + +msgctxt "model:ir.ui.menu,name:menu_project_role_configuration" +msgid "Roles" +msgstr "Rols" + +msgctxt "model:project.role,name:" +msgid "Project Role" +msgstr "Rol projecte" diff --git a/locale/es.po b/locale/es.po new file mode 100644 index 0000000..da5b801 --- /dev/null +++ b/locale/es.po @@ -0,0 +1,47 @@ +# +msgid "" +msgstr "Content-Type: text/plain; charset=utf-8\n" + +msgctxt "field:project.allocation,role:" +msgid "Role" +msgstr "Rol" + +msgctxt "field:project.role,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:project.work,assignee:" +msgid "Assignee" +msgstr "Asignar" + +msgctxt "field:project.work,role_employee:" +msgid "Role Employee" +msgstr "Rol empleado" + +msgctxt "field:project.work.status,role:" +msgid "Role" +msgstr "Roles" + +msgctxt "field:res.user,send_own_assignee:" +msgid "Send Own Assignee" +msgstr "Envía asignación propia" + +msgctxt "field:work.configuration,default_allocation_employee:" +msgid "Default Allocation Employee" +msgstr "Asignar empleado por defecto" + +msgctxt "model:ir.action,name:act_project_role" +msgid "Project Roles" +msgstr "Roles proyecto" + +msgctxt "model:ir.rule.group,name:rule_group_project_allocation" +msgid "User in company" +msgstr "Usuario a las empresas" + +msgctxt "model:ir.ui.menu,name:menu_project_role_configuration" +msgid "Roles" +msgstr "Roles" + +msgctxt "model:project.role,name:" +msgid "Project Role" +msgstr "Rol proyecto" diff --git a/role.py b/role.py index 18b9777..186b143 100644 --- a/role.py +++ b/role.py @@ -4,13 +4,15 @@ from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, ModelSQL, fields from trytond.sendmail import sendmail_transactional from trytond.config import config +from trytond.transaction import Transaction FROM_ADDR = config.get('email', 'from') + class Role(ModelSQL, ModelView): 'Project Role' __name__ = 'project.role' - name = fields.Char('name', required=True) + name = fields.Char('Name', required=True) class WorkConfiguration(metaclass=PoolMeta): @@ -69,11 +71,12 @@ class Work(metaclass=PoolMeta): if not self.assignee or not self.assignee.party.email: return + user_id = Transaction().user + users = User.search([('id', '=', self.write_uid)], limit=1) - if users: - user, = users - else: - user = None + user = users[0] if users else None + if not user or (user.id == user_id and not user.send_own_assignee): + return body = [] previous_assignee = previous.get('assignee') diff --git a/tryton.cfg b/tryton.cfg index fbe2f35..941a4d0 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -8,4 +8,5 @@ depends: project_sequence xml: role.xml + user.xml work.xml diff --git a/user.py b/user.py new file mode 100644 index 0000000..a0641fc --- /dev/null +++ b/user.py @@ -0,0 +1,14 @@ +from trytond.pool import PoolMeta +from trytond.model import fields + + +class User(metaclass=PoolMeta): + __name__ = 'res.user' + + send_own_assignee = fields.Boolean('Send Own Assignee') + + @classmethod + def __setup__(cls): + super(User, cls).__setup__() + if not 'send_own_assignee' in cls._preferences_fields: + cls._preferences_fields.append('send_own_assignee') diff --git a/user.xml b/user.xml new file mode 100644 index 0000000..68dbcd6 --- /dev/null +++ b/user.xml @@ -0,0 +1,19 @@ + + + + + + res.user + + user_form + + + + + res.user + + user_form_preferences + + + diff --git a/view/user_form.xml b/view/user_form.xml new file mode 100644 index 0000000..52fde80 --- /dev/null +++ b/view/user_form.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/view/user_form_preferences.xml b/view/user_form_preferences.xml new file mode 100644 index 0000000..52fde80 --- /dev/null +++ b/view/user_form_preferences.xml @@ -0,0 +1,8 @@ + + + + + +