Initial commit: OCA Workflow Process packages (456 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:00 +02:00
commit d366e42934
18799 changed files with 1284507 additions and 0 deletions

View file

@ -0,0 +1,46 @@
# Project Templates
Odoo addon: project_template
## Installation
```bash
pip install odoo-bringout-oca-project-project_template
```
## Dependencies
This addon depends on:
- project
## Manifest Information
- **Name**: Project Templates
- **Version**: 16.0.1.0.0
- **Category**: Project Management
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_template`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Project_template Module - project_template
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for project_template. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [project](../../odoo-bringout-oca-ocb-project)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon project_template or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-project-project_template"
# or
uv pip install odoo-bringout-oca-project-project_template"
```

View file

@ -0,0 +1,12 @@
# Models
Detected core models and extensions in project_template.
```mermaid
classDiagram
class project_project
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: project_template. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon project_template
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,8 @@
# Security
This module does not define custom security rules or access controls beyond Odoo defaults.
Default Odoo security applies:
- Base user access through standard groups
- Model access inherited from dependencies
- No custom row-level security rules

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_template
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

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>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-project-project_template"
version = "16.0.0"
description = "Project Templates - Project Templates"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-project>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["project_template"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]