diff --git a/project_task_description_template/README.rst b/project_task_description_template/README.rst new file mode 100644 index 0000000000..bc23ba2bdc --- /dev/null +++ b/project_task_description_template/README.rst @@ -0,0 +1,90 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +================================= +Project Task Description Template +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:dabdcc3828f70f9a39d27c0f417364ae2f96bf412fb9e584d1481db464b48524 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/19.0/project_task_description_template + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-19-0/project-19-0-project_task_description_template + :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/project&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allow to define description templates for a task and use +them to generate the description of the task. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module: + +Select the description template you want to use in a task. + +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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Jarsa + +Contributors +------------ + +- Alan Ramos +- ``Heliconia Solutions Pvt. Ltd. ``\ \_ +- Nils Coenen + +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. + +This module is part of the `OCA/project `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_task_description_template/__init__.py b/project_task_description_template/__init__.py new file mode 100644 index 0000000000..0519b1d42b --- /dev/null +++ b/project_task_description_template/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2023 - Jarsa +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). + +from . import models diff --git a/project_task_description_template/__manifest__.py b/project_task_description_template/__manifest__.py new file mode 100644 index 0000000000..7c53f13ced --- /dev/null +++ b/project_task_description_template/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2023 - Jarsa +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). +{ + "name": "Project Task Description Template", + "summary": "Add a description template to project tasks", + "version": "19.0.1.0.0", + "category": "Project Management", + "author": "Jarsa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "LGPL-3", + "installable": True, + "depends": ["project"], + "data": [ + "security/ir.model.access.csv", + "security/ir_rule_data.xml", + "views/project_task_view.xml", + "views/project_task_description_template_view.xml", + ], +} diff --git a/project_task_description_template/i18n/es.po b/project_task_description_template/i18n/es.po new file mode 100644 index 0000000000..78524bbcc6 --- /dev/null +++ b/project_task_description_template/i18n/es.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_description_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-10-28 12:06+0000\n" +"Last-Translator: Alberto Martínez \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__active +msgid "Active" +msgstr "Activo" + +#. module: project_task_description_template +#: model_terms:ir.actions.act_window,help:project_task_description_template.project_task_description_template_action +msgid "Click to create a new description template." +msgstr "Haz click para crear una nueva plantilla de descripción." + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__company_id +msgid "Company" +msgstr "Compañía" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__description +#: model_terms:ir.ui.view,arch_db:project_task_description_template.project_task_description_template_view_form +msgid "Description" +msgstr "Descripción" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task__description_template_id +msgid "Description Template" +msgstr "Plantilla de descripción" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__id +msgid "ID" +msgstr "ID" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_uid +msgid "Last Updated by" +msgstr "Última modificación el" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_date +msgid "Last Updated on" +msgstr "Última actualización por" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__name +msgid "Name" +msgstr "Nombre" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task_description_template +msgid "Project Task Description Template" +msgstr "Plantilla de descripción de tareas" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_description_template +#: model:ir.ui.menu,name:project_task_description_template.project_task_description_template_menu +msgid "Task Description Templates" +msgstr "Plantillas de descripción de tareas" + +#. module: project_task_description_template +#: model:ir.actions.act_window,name:project_task_description_template.project_task_description_template_action +msgid "Task Description template" +msgstr "Plantilla de descripción de tarea" diff --git a/project_task_description_template/i18n/es_MX.po b/project_task_description_template/i18n/es_MX.po new file mode 100644 index 0000000000..8a14e660b2 --- /dev/null +++ b/project_task_description_template/i18n/es_MX.po @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_description_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-04 00:23+0000\n" +"PO-Revision-Date: 2023-07-03 18:24-0600\n" +"Last-Translator: Jesús Alan Ramos Rodríguez \n" +"Language-Team: \n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.3.2\n" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__active +msgid "Active" +msgstr "Activo" + +#. module: project_task_description_template +#: model_terms:ir.actions.act_window,help:project_task_description_template.project_task_description_template_action +msgid "Click to create a new description template." +msgstr "Haga clic para crear una nueva plantilla de descripción." + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__company_id +msgid "Company" +msgstr "Compañía" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__description +#: model_terms:ir.ui.view,arch_db:project_task_description_template.project_task_description_template_view_form +msgid "Description" +msgstr "Descripción" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task__description_template_id +msgid "Description Template" +msgstr "Descripción Plantilla" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__display_name +msgid "Display Name" +msgstr "Nombre para mostrar" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__id +msgid "ID" +msgstr "ID" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__name +msgid "Name" +msgstr "Nombre" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task_description_template +msgid "Project Task Description Template" +msgstr "Plantilla de descripción de tareas del proyecto" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_description_template +#: model:ir.ui.menu,name:project_task_description_template.project_task_description_template_menu +msgid "Task Description Templates" +msgstr "Plantillas de descripción de tareas" + +#. module: project_task_description_template +#: model:ir.actions.act_window,name:project_task_description_template.project_task_description_template_action +msgid "Task Description template" +msgstr "Plantilla de descripción de tareas" diff --git a/project_task_description_template/i18n/it.po b/project_task_description_template/i18n/it.po new file mode 100644 index 0000000000..a045b1df78 --- /dev/null +++ b/project_task_description_template/i18n/it.po @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_description_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-13 15:37+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__active +msgid "Active" +msgstr "Attivo" + +#. module: project_task_description_template +#: model_terms:ir.actions.act_window,help:project_task_description_template.project_task_description_template_action +msgid "Click to create a new description template." +msgstr "Fare clic per creare una nuovo modello descrizione." + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__company_id +msgid "Company" +msgstr "Azienda" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__description +#: model_terms:ir.ui.view,arch_db:project_task_description_template.project_task_description_template_view_form +msgid "Description" +msgstr "Descrizione" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task__description_template_id +msgid "Description Template" +msgstr "Modello descrizione" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__id +msgid "ID" +msgstr "ID" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__name +msgid "Name" +msgstr "Nome" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task_description_template +msgid "Project Task Description Template" +msgstr "Modello descrizione lavoro progetto" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_description_template +#: model:ir.ui.menu,name:project_task_description_template.project_task_description_template_menu +msgid "Task Description Templates" +msgstr "Modelli descrizione lavoro" + +#. module: project_task_description_template +#: model:ir.actions.act_window,name:project_task_description_template.project_task_description_template_action +msgid "Task Description template" +msgstr "Modello descrizione lavoro" diff --git a/project_task_description_template/i18n/project_task_description_template.pot b/project_task_description_template/i18n/project_task_description_template.pot new file mode 100644 index 0000000000..31cbb9d0fc --- /dev/null +++ b/project_task_description_template/i18n/project_task_description_template.pot @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_description_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__active +msgid "Active" +msgstr "" + +#. module: project_task_description_template +#: model_terms:ir.actions.act_window,help:project_task_description_template.project_task_description_template_action +msgid "Click to create a new description template." +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__company_id +msgid "Company" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_uid +msgid "Created by" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__create_date +msgid "Created on" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__description +#: model_terms:ir.ui.view,arch_db:project_task_description_template.project_task_description_template_view_form +msgid "Description" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task__description_template_id +msgid "Description Template" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__id +msgid "ID" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model.fields,field_description:project_task_description_template.field_project_task_description_template__name +msgid "Name" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task_description_template +msgid "Project Task Description Template" +msgstr "" + +#. module: project_task_description_template +#: model:ir.model,name:project_task_description_template.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_description_template +#: model:ir.ui.menu,name:project_task_description_template.project_task_description_template_menu +msgid "Task Description Templates" +msgstr "" + +#. module: project_task_description_template +#: model:ir.actions.act_window,name:project_task_description_template.project_task_description_template_action +msgid "Task Description template" +msgstr "" diff --git a/project_task_description_template/models/__init__.py b/project_task_description_template/models/__init__.py new file mode 100644 index 0000000000..690fd3d029 --- /dev/null +++ b/project_task_description_template/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2023 - Jarsa +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). + +from . import project_task +from . import project_task_description_template diff --git a/project_task_description_template/models/project_task.py b/project_task_description_template/models/project_task.py new file mode 100644 index 0000000000..3b40f1b677 --- /dev/null +++ b/project_task_description_template/models/project_task.py @@ -0,0 +1,18 @@ +# Copyright 2023 - Jarsa +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). + +from odoo import api, fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + description_template_id = fields.Many2one( + "project.task.description.template", store=False + ) + + @api.onchange("description_template_id") + def _onchange_description_template_id(self): + if self.description_template_id: + description = self.description if self.description else "" + self.description = description + self.description_template_id.description diff --git a/project_task_description_template/models/project_task_description_template.py b/project_task_description_template/models/project_task_description_template.py new file mode 100644 index 0000000000..e99348c9e1 --- /dev/null +++ b/project_task_description_template/models/project_task_description_template.py @@ -0,0 +1,14 @@ +# Copyright 2023 - Jarsa +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). + +from odoo import fields, models + + +class ProjectTaskDescriptionTemplate(models.Model): + _name = "project.task.description.template" + _description = "Project Task Description Template" + + name = fields.Char(required=True) + description = fields.Html(required=True) + active = fields.Boolean(default=True) + company_id = fields.Many2one("res.company", default=lambda self: self.env.company) diff --git a/project_task_description_template/pyproject.toml b/project_task_description_template/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/project_task_description_template/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/project_task_description_template/readme/CONTRIBUTORS.md b/project_task_description_template/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..bf0e88a2e6 --- /dev/null +++ b/project_task_description_template/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- Alan Ramos \<\> +- `Heliconia Solutions Pvt. Ltd. `_ +- Nils Coenen \<\> diff --git a/project_task_description_template/readme/DESCRIPTION.md b/project_task_description_template/readme/DESCRIPTION.md new file mode 100644 index 0000000000..014870214d --- /dev/null +++ b/project_task_description_template/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module allow to define description templates for a task and use +them to generate the description of the task. diff --git a/project_task_description_template/readme/USAGE.md b/project_task_description_template/readme/USAGE.md new file mode 100644 index 0000000000..1331187f9d --- /dev/null +++ b/project_task_description_template/readme/USAGE.md @@ -0,0 +1,3 @@ +To use this module: + +Select the description template you want to use in a task. diff --git a/project_task_description_template/security/ir.model.access.csv b/project_task_description_template/security/ir.model.access.csv new file mode 100644 index 0000000000..e739cc0d26 --- /dev/null +++ b/project_task_description_template/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_model_project_task_description_template,access_model_project_task_description_template,model_project_task_description_template,project.group_project_manager,1,1,1,1 +access_model_project_task_description_template_user,access_model_project_task_description_template_user,model_project_task_description_template,project.group_project_user,1,0,0,0 diff --git a/project_task_description_template/security/ir_rule_data.xml b/project_task_description_template/security/ir_rule_data.xml new file mode 100644 index 0000000000..4c7936e294 --- /dev/null +++ b/project_task_description_template/security/ir_rule_data.xml @@ -0,0 +1,14 @@ + + + + Project Task Description Template Company Rule + + ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] + + + + + + diff --git a/project_task_description_template/static/description/icon.png b/project_task_description_template/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/project_task_description_template/static/description/icon.png differ diff --git a/project_task_description_template/static/description/index.html b/project_task_description_template/static/description/index.html new file mode 100644 index 0000000000..21c685117b --- /dev/null +++ b/project_task_description_template/static/description/index.html @@ -0,0 +1,438 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Project Task Description Template

+ +

Beta License: LGPL-3 OCA/project Translate me on Weblate Try me on Runboat

+

This module allow to define description templates for a task and use +them to generate the description of the task.

+

Table of contents

+ +
+

Usage

+

To use this module:

+

Select the description template you want to use in a task.

+
+
+

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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Jarsa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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.

+

This module is part of the OCA/project project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/project_task_description_template/tests/__init__.py b/project_task_description_template/tests/__init__.py new file mode 100644 index 0000000000..0d764e32c8 --- /dev/null +++ b/project_task_description_template/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_task diff --git a/project_task_description_template/tests/test_project_task.py b/project_task_description_template/tests/test_project_task.py new file mode 100644 index 0000000000..0a2c466588 --- /dev/null +++ b/project_task_description_template/tests/test_project_task.py @@ -0,0 +1,36 @@ +from markupsafe import Markup + +from odoo.addons.base.tests.common import BaseCommon + + +class TestDescriptionTemplate(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.model = cls.env["project.task"] + cls.description_template = cls.env["project.task.description.template"].create( + { + "name": "Test Template", + "description": " - Sample Description", + } + ) + + def test_onchange_description_template_id(self): + record = self.model.new({"description": "

Existing Description

"}) + record.description_template_id = self.description_template + record._onchange_description_template_id() + self.assertEqual( + record.description, + Markup("

Existing Description

- Sample Description

"), + "Onchange method failed to append description correctly.", + ) + + def test_onchange_with_empty_description(self): + record = self.model.new({}) + record.description_template_id = self.description_template + record._onchange_description_template_id() + self.assertEqual( + record.description, + Markup("

- Sample Description

"), + "Onchange method failed with empty initial description.", + ) diff --git a/project_task_description_template/views/project_task_description_template_view.xml b/project_task_description_template/views/project_task_description_template_view.xml new file mode 100644 index 0000000000..2aaa7bae95 --- /dev/null +++ b/project_task_description_template/views/project_task_description_template_view.xml @@ -0,0 +1,61 @@ + + + + project.task.description.template.view.form + project.task.description.template + +
+ + + + + + + + + + + + + + + + +
+
+
+ + project.task.description.template.view.tree + project.task.description.template + + + + + + + + + + Task Description template + project.task.description.template + list,form + +

+ Click to create a new description template. +

+
+
+ +
diff --git a/project_task_description_template/views/project_task_view.xml b/project_task_description_template/views/project_task_view.xml new file mode 100644 index 0000000000..f73e784cd1 --- /dev/null +++ b/project_task_description_template/views/project_task_view.xml @@ -0,0 +1,13 @@ + + + + project.task.view.form + project.task + + + + + + + +