Move 124 sale modules to oca-sale, create oca-project with 56 project modules from oca-workflow-process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ernad Husremovic 2025-08-30 18:04:10 +02:00
parent 9eb7ae5807
commit 6094c218b2
2332 changed files with 125826 additions and 0 deletions

View file

@ -0,0 +1,96 @@
=================
Project Templates
=================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:194e0553816f0e3651d753ca8bd2eaa43f6bb892f5c13aef08173c9d3fbe0ac3
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fproject-lightgray.png?logo=github
:target: https://github.com/OCA/project/tree/16.0/project_template
:alt: OCA/project
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_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=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds templates for projects.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
#. Have Manager rights for Project group to edit projects and project templates.
#. Convert project to a project template by setting the "Is Template?" field on any project.
#. View Templates via the Template filter.
#. Use the "Create Project from Template" link in the drop down menu on each template while in the Kanban view or the button on the project template form.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/project/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 <https://github.com/OCA/project/issues/new?body=module:%20project_template%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Patrick Wilson
Contributors
~~~~~~~~~~~~
* Patrick Wilson <patrickraymondwilson@gmail.com>
* Alfadil Mustafa <alfadil.tabar@gmail.com>
* Mantas Šniukas <mantas@vialaurea.lt>
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-patrickrwilson| image:: https://github.com/patrickrwilson.png?size=40px
:target: https://github.com/patrickrwilson
:alt: patrickrwilson
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-patrickrwilson|
This module is part of the `OCA/project <https://github.com/OCA/project/tree/16.0/project_template>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,3 @@
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from . import models

View file

@ -0,0 +1,17 @@
# Copyright 2019 Patrick Wilson <patrickraymondwilson@gmail.com>
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
{
"name": "Project Templates",
"summary": """Project Templates""",
"author": "Patrick Wilson, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/project",
"category": "Project Management",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"depends": ["project"],
"data": ["views/project.xml"],
"application": False,
"development_status": "Beta",
"maintainers": ["patrickrwilson"],
}

View file

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Stvori projekt iz predloška"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Stvori projekt iz predloška"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Je predložak"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Je predložak?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Nisu predlošci"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projekt"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Predlošci"

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-11-04 14:45+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
"Language-Team: none\n"
"Language: de\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.14.1\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Projekt aus dieser Vorlage erstellen"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Projekt aus dieser Vorlage erstellen"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Projekt-Vorlage"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Projekt-Vorlage?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Keine Vorlage"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projekt"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Vorlagen"
#~ msgid "Display Name"
#~ msgstr "Anzeigename"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Zuletzt geändert am"

View file

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-11-07 18:02+0000\n"
"Last-Translator: María Asunción Daza <mariaasuncion.daza@guadaltech.es>\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 3.8\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Crear Proyecto desde Plantilla"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Crear Proyecto desde Plantilla"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Es una Plantilla"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "¿Es Una Plantilla?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "No son Plantillas"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Proyecto"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Plantillas"

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-04-01 03:48+0000\n"
"Last-Translator: Ignacio Buioli <ibuioli@gmail.com>\n"
"Language-Team: none\n"
"Language: es_AR\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.3.2\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Crear Proyecto desde Plantilla"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Crear Proyecto desde Plantilla"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Es una Plantilla"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "¿Es una Plantilla?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "No-Plantillas"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Proyecto"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Plantillas"
#~ msgid "Display Name"
#~ msgstr "Mostrar Nombre"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Última Modificación el"

View file

@ -0,0 +1,56 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-04-04 16:46+0000\n"
"Last-Translator: Yves Le Doeuff <yld@alliasys.fr>\n"
"Language-Team: none\n"
"Language: fr\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.3.2\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Créer un projet depuis le modèle"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Créer un projet depuis le modèle"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Est un modèle"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Est un modèle ?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "N'est pas un modèle"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projet"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Modèles"
#, fuzzy
#~ msgid "WBS element"
#~ msgstr "Élément SDP"

View file

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-04-11 16:46+0000\n"
"Last-Translator: Yves Le Doeuff <yld@alliasys.fr>\n"
"Language-Team: none\n"
"Language: fr_FR\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.3.2\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Créer un projet depuis le modèle"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Créer un projet depuis le modèle"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Est un modèle"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Est un modèle ?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "N'est pas un modèle"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projet"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Modèles"

View file

@ -0,0 +1,53 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-10-19 07:08+0000\n"
"Last-Translator: Yves Goldberg <admin@ygol.com>\n"
"Language-Team: none\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 3.10\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "צור תיק על פי תבנית"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "צור תיק על פי תבנית"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "האם תבנית"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "האם תבנית?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "ללא תבנית"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "פרויקט"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "תבניות"

View file

@ -0,0 +1,53 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-01-04 02:42+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Stvori projekt iz predloška"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Stvori projekt iz predloška"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Je predložak"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Je predložak?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Nisu predlošci"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projekt"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Predlošci"

View file

@ -0,0 +1,55 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-04-10 21:22+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\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.14.1\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Crea progetto da modello"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Crea progetto da modello"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "È un modello"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "È un modello?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Non modelli"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Progetto"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Modelli"
#~ msgid "WBS element"
#~ msgstr "Elemento WBS"

View file

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-10-09 02:52+0000\n"
"Last-Translator: \"Jan Tapper [Onestein]\" <j.tapper@onestein.nl>\n"
"Language-Team: none\n"
"Language: nl\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_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Project maken op basis van sjabloon"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Project maken op basis van sjabloon"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Is een sjabloon"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Is een sjabloon?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Geen sjablonen"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Sjablonen"

View file

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr ""
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr ""
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr ""

View file

@ -0,0 +1,55 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-01-10 13:13+0000\n"
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\n"
"Language-Team: none\n"
"Language: pt\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 3.10\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Criar Projeto a Partir de Modelo"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Criar Projeto a partir de Modelo"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "É um Modelo"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "É um Modelo?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Não-Modelos"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Modelos"
#~ msgid "WBS element"
#~ msgstr "Elemento WBS"

View file

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-07-31 13:10+0000\n"
"Last-Translator: Adriano Prado <adrianojprado@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\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_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Criar Projeto a Partir do Modelo"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Criar Projeto a Partir do Modelo"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "É um Modelo"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "É um Modelo?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Não é Modelo"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projeto"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Modelos"

View file

@ -0,0 +1,56 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-03-31 10:13+0000\n"
"Last-Translator: Matjaz Mozetic <matjaz@matmoz.si>\n"
"Language-Team: none\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3;\n"
"X-Generator: Weblate 3.10\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Ustvari projekt iz predloge"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Ustvari projekt iz predloge"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Je predloga"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Je predloga?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Niso predloge"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr ""
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Predloge"
#~ msgid "WBS element"
#~ msgstr "Projektni člen"

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-11-16 10:36+0000\n"
"Last-Translator: Simon S <simon.stromberg@vertel.se>\n"
"Language-Team: none\n"
"Language: sv\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.3.2\n"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Create Project From Template"
msgstr "Skapa projekt från mall"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban
msgid "Create Project from Template"
msgstr "Skapa projekt från mall"
#. module: project_template
#: model:ir.model.fields,field_description:project_template.field_project_project__is_template
msgid "Is Template"
msgstr "Är mall"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form
msgid "Is Template?"
msgstr "Är mall?"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Non-Templates"
msgstr "Icke-mallar"
#. module: project_template
#: model:ir.model,name:project_template.model_project_project
msgid "Project"
msgstr "Projekt"
#. module: project_template
#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search
msgid "Templates"
msgstr "Mallar"
#~ msgid "Display Name"
#~ msgstr "Visningsnamn"
#~ msgid "ID"
#~ msgstr "ID"
#~ msgid "Last Modified on"
#~ msgstr "Senast ändrad den"

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import project

View file

@ -0,0 +1,55 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class Project(models.Model):
_inherit = "project.project"
is_template = fields.Boolean(copy=False)
# CREATE A PROJECT FROM A TEMPLATE AND OPEN THE NEWLY CREATED PROJECT
def create_project_from_template(self):
if " (TEMPLATE)" in self.name:
new_name = self.name.replace(" (TEMPLATE)", " (COPY)")
else:
new_name = self.name + " (COPY)"
new_project = self.copy(
default={"name": new_name, "active": True, "alias_name": False}
)
# SINCE THE END DATE DOESN'T COPY OVER ON TASKS
# (Even when changed to copy=true), POPULATE END DATES ON THE TASK
for new_task_record in new_project.task_ids:
for old_task_record in self.task_ids:
if new_task_record.name == old_task_record.name:
new_task_record.date_end = old_task_record.date_end
# OPEN THE NEWLY CREATED PROJECT FORM
return {
"view_type": "form",
"view_mode": "form",
"res_model": "project.project",
"target": "current",
"res_id": new_project.id,
"type": "ir.actions.act_window",
}
# ADD "(TEMPLATE)" TO THE NAME WHEN PROJECT IS MARKED AS A TEMPLATE
@api.onchange("is_template")
def on_change_is_template(self):
# Add "(TEMPLATE)" to the Name if is_template == true
# if self.name is needed for creating projects via configuration menu
if self.name:
if self.is_template:
if "(TEMPLATE)" not in self.name:
self.name = self.name + " (TEMPLATE)"
if self.user_id:
self.user_id = False
if self.partner_id:
self.partner_id = False
if self.alias_name:
self.alias_name = False
else:
if " (TEMPLATE)" in self.name:
self.name = self.name.replace(" (TEMPLATE)", "")

View file

@ -0,0 +1,3 @@
* Patrick Wilson <patrickraymondwilson@gmail.com>
* Alfadil Mustafa <alfadil.tabar@gmail.com>
* Mantas Šniukas <mantas@vialaurea.lt>

View file

@ -0,0 +1 @@
This module adds templates for projects.

View file

@ -0,0 +1,6 @@
To use this module, you need to:
#. Have Manager rights for Project group to edit projects and project templates.
#. Convert project to a project template by setting the "Is Template?" field on any project.
#. View Templates via the Template filter.
#. Use the "Create Project from Template" link in the drop down menu on each template while in the Kanban view or the button on the project template form.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,436 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Project Templates</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="project-templates">
<h1 class="title">Project Templates</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:194e0553816f0e3651d753ca8bd2eaa43f6bb892f5c13aef08173c9d3fbe0ac3
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/project/tree/16.0/project_template"><img alt="OCA/project" src="https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_template"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/project&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module adds templates for projects.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Have Manager rights for Project group to edit projects and project templates.</li>
<li>Convert project to a project template by setting the “Is Template?” field on any project.</li>
<li>View Templates via the Template filter.</li>
<li>Use the “Create Project from Template” link in the drop down menu on each template while in the Kanban view or the button on the project template form.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/project/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/project/issues/new?body=module:%20project_template%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Patrick Wilson</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Patrick Wilson &lt;<a class="reference external" href="mailto:patrickraymondwilson&#64;gmail.com">patrickraymondwilson&#64;gmail.com</a>&gt;</li>
<li>Alfadil Mustafa &lt;<a class="reference external" href="mailto:alfadil.tabar&#64;gmail.com">alfadil.tabar&#64;gmail.com</a>&gt;</li>
<li>Mantas Šniukas &lt;<a class="reference external" href="mailto:mantas&#64;vialaurea.lt">mantas&#64;vialaurea.lt</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/patrickrwilson"><img alt="patrickrwilson" src="https://github.com/patrickrwilson.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/project/tree/16.0/project_template">OCA/project</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import test_project_template

View file

@ -0,0 +1,63 @@
# Copyright 2019 Patrick Wilson <patrickraymondwilson@gmail.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests import common
class TestProjectTemplate(common.TransactionCase):
def setUp(self):
super().setUp()
self.test_customer = self.env["res.partner"].create({"name": "TestCustomer"})
self.test_project = self.env["project.project"].create(
{
"name": "TestProject",
"alias_name": "test_alias",
"partner_id": self.test_customer.id,
}
)
self.env["project.task"].create(
{"name": "TestTask", "project_id": self.test_project.id}
)
# TEST 01: Set project to be a template and test name change
def test_on_change_is_template(self):
# Test when changing project to a template
project_01 = self.test_project
project_01.is_template = True
project_01.on_change_is_template()
self.assertEqual(project_01.name, "TestProject (TEMPLATE)")
# Test when changing template back to project
project_01.is_template = False
project_01.on_change_is_template()
self.assertEqual(project_01.name, "TestProject")
# TEST 02: Create project from template
def test_create_project_from_template(self):
# Set Project Template
project_01 = self.test_project
project_01.is_template = True
project_01.on_change_is_template()
# Create new Project from Template
project_01.create_project_from_template()
new_project = self.env["project.project"].search(
[("name", "=", "TestProject (COPY)")]
)
self.assertEqual(len(new_project), 1)
# TEST 03: Create project from template using non-standard name
def test_create_project_from_template_non_standard_name(self):
# Set Project Template
project_01 = self.test_project
project_01.is_template = True
project_01.on_change_is_template()
# Change the name of project template
project_01.name = "TestProject(TEST)"
# Create new Project from Template
project_01.create_project_from_template()
new_project = self.env["project.project"].search(
[("name", "=", "TestProject(TEST) (COPY)")]
)
self.assertEqual(len(new_project), 1)

View file

@ -0,0 +1,73 @@
<odoo>
<!-- Form View -->
<record id="project_template_view_inherit_form" model="ir.ui.view">
<field name="name">project.template.form</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project" />
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button
string="Create Project From Template"
type="object"
name="create_project_from_template"
class="oe_highlight"
attrs="{'invisible': [('is_template', '=', False)]}"
/>
</xpath>
<xpath expr="//field[@name='label_tasks']/.." position="inside">
<field name="is_template" class="oe_inline" string="Is Template?" />
</xpath>
</field>
</record>
<!-- Kanban View -->
<record id="project_template_view_inherit_kanban" model="ir.ui.view">
<field name="name">project.template.kanban</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project_kanban" />
<field name="arch" type="xml">
<xpath
expr="//div[hasclass('o_kanban_card_manage_section')]"
position="inside"
>
<field name="is_template" invisible="1" />
<div t-if="record.is_template.raw_value" role="menuitem">
<a
name="create_project_from_template"
type="object"
>Create Project from Template</a>
</div>
</xpath>
</field>
</record>
<!-- Search View -->
<record id="project_template_view_inherit_search" model="ir.ui.view">
<field name="name">project.template.filter</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project_project_filter" />
<field name="arch" type="xml">
<filter name="inactive" position="before">
<filter
string="Templates"
name="templates"
domain="[('is_template', '=', True)]"
/>
<filter
string="Non-Templates"
name="projects"
domain="[('is_template', '=', False)]"
/>
<separator />
</filter>
</field>
</record>
<record model="ir.actions.act_window" id="project.open_view_project_all">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="view_id" ref="project.view_project_kanban" />
<field name="view_mode">kanban,form,tree</field>
<field
name="context"
>{"search_default_projects":1, "search_default_not_closed":1}</field>
</record>
</odoo>