Browse Source
[ADD] add ``project_assignees`` add-on
[ADD] add ``project_assignees`` add-on
Add a field in ``project.task`` to assign users to task. This completes ``user_id`` field, that is then considered as the owner of the task. Assignment becomes optional and can now target multiple users. Task: JOI-13 Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>14.0
8 changed files with 227 additions and 0 deletions
-
45project_assignees/README.rst
-
3project_assignees/__init__.py
-
92project_assignees/__manifest__.py
-
1project_assignees/i18n/README
-
48project_assignees/i18n/fr.po
-
2project_assignees/models/__init__.py
-
10project_assignees/models/project_task.py
-
26project_assignees/views/project_task.xml
@ -0,0 +1,45 @@ |
|||
================= |
|||
project_assignees |
|||
================= |
|||
|
|||
Add multiple assignees field to project task |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
Use Odoo normal procedure to install add-ons to install |
|||
``project_assignees``. |
|||
|
|||
Known issues / Roadmap |
|||
====================== |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `our issues website |
|||
<https://github.com/elabore-coop/project-tools/issues>`_. In case of |
|||
trouble, please check there if your issue has already been |
|||
reported. If you spotted it first, help us smashing it by providing a |
|||
detailed and welcomed feedback. |
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Images |
|||
------ |
|||
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_. |
|||
|
|||
Contributors |
|||
------------ |
|||
* Stéphan Sainléger <https://github.com/stephansainleger> |
|||
|
|||
Funders |
|||
------- |
|||
The development of this module has been financially supported by: |
|||
* Elabore (https://elabore.coop) |
|||
|
|||
|
|||
Maintainer |
|||
---------- |
|||
|
|||
This module is maintained by Elabore. |
@ -0,0 +1,3 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from . import models |
@ -0,0 +1,92 @@ |
|||
# Copyright 2022 Stéphan Sainléger (Elabore) |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
|||
|
|||
{ |
|||
"name": "project_assignees", |
|||
"version": "14.0.0.1.0", |
|||
"author": "Elabore", |
|||
"website": "https://github.com/elabore-coop/project-tools", |
|||
"maintainer": "Stéphan Sainléger", |
|||
"license": "AGPL-3", |
|||
"category": "Tools", |
|||
"summary": "Add multiple assignees field to project task", |
|||
"description": """ |
|||
:image: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
|||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
================= |
|||
project_assignees |
|||
================= |
|||
|
|||
Add multiple assignees field to project task. |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
Install ``project_assignees``, all dependencies will be installed by default. |
|||
|
|||
Known issues / Roadmap |
|||
====================== |
|||
|
|||
None yet. |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `our issues website |
|||
<https://github.com/elabore-coop/project-tools/issues>`_. In case of |
|||
trouble, please check there if your issue has already been |
|||
reported. If you spotted it first, help us smashing it by providing a |
|||
detailed and welcomed feedback. |
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Images |
|||
------ |
|||
|
|||
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_. |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Stéphan Sainléger <https://github.com/stephansainleger> |
|||
* Valentin Lab <valentin.lab@kalysto.org> |
|||
|
|||
Funders |
|||
------- |
|||
|
|||
The development of this module has been financially supported by: |
|||
* Elabore (https://elabore.coop) |
|||
|
|||
|
|||
Maintainer |
|||
---------- |
|||
This module is maintained by Elabore. |
|||
|
|||
""", |
|||
# any module necessary for this one to work correctly |
|||
"depends": [ |
|||
"base", |
|||
"project", |
|||
], |
|||
"qweb": [ |
|||
# "static/src/xml/*.xml", |
|||
], |
|||
"external_dependencies": { |
|||
"python": [], |
|||
}, |
|||
# always loaded |
|||
"data": [ |
|||
"views/project_task.xml", |
|||
], |
|||
# only loaded in demonstration mode |
|||
"demo": [], |
|||
"js": [], |
|||
"css": [], |
|||
"installable": True, |
|||
# Install this module automatically if all dependency have been previously |
|||
# and independently installed. Used for synergetic or glue modules. |
|||
"auto_install": False, |
|||
"application": False, |
|||
} |
@ -0,0 +1 @@ |
|||
This directory should contain the *.po for Odoo translation. |
@ -0,0 +1,48 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * project_assignees |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 14.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2022-07-26 07:38+0000\n" |
|||
"PO-Revision-Date: 2022-07-26 07:38+0000\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_assignees |
|||
#: model:ir.model.fields,field_description:project_assignees.field_project_task__assignee_ids |
|||
msgid "Assignees" |
|||
msgstr "Assignée à" |
|||
|
|||
#. module: project_assignees |
|||
#: model:ir.model.fields,field_description:project_assignees.field_project_task__display_name |
|||
msgid "Display Name" |
|||
msgstr "Nom affiché" |
|||
|
|||
#. module: project_assignees |
|||
#: model:ir.model.fields,field_description:project_assignees.field_project_task__id |
|||
msgid "ID" |
|||
msgstr "" |
|||
|
|||
#. module: project_assignees |
|||
#: model:ir.model.fields,field_description:project_assignees.field_project_task____last_update |
|||
msgid "Last Modified on" |
|||
msgstr "Dernière modification le" |
|||
|
|||
#. module: project_assignees |
|||
#: code:addons/project_assignees/models/project_task.py:0 |
|||
#: model:ir.model.fields,field_description:project_assignees.field_project_task__user_id |
|||
#, python-format |
|||
msgid "Owner" |
|||
msgstr "Demandée par" |
|||
|
|||
#. module: project_assignees |
|||
#: model:ir.model,name:project_assignees.model_project_task |
|||
msgid "Task" |
|||
msgstr "Tâche" |
@ -0,0 +1,2 @@ |
|||
|
|||
from . import project_task |
@ -0,0 +1,10 @@ |
|||
|
|||
from odoo import models, fields, _ |
|||
|
|||
|
|||
class Task(models.Model): |
|||
_inherit = "project.task" |
|||
|
|||
user_id = fields.Many2one(string=_("Owner")) |
|||
assignee_ids = fields.Many2many('res.users', 'assignee_ids_rel', string='Assignees') |
|||
|
@ -0,0 +1,26 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<record id="view_task_form2_assignees" model="ir.ui.view"> |
|||
<field name="name">project.task.form.assignees</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_form2" /> |
|||
<field name="priority" eval="99" /> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='user_id']" position="after"> |
|||
<field name="assignee_ids" widget="many2many_tags" /> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_task_search_form_assignees" model="ir.ui.view"> |
|||
<field name="name">project.task.search.form.assignees</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_search_form" /> |
|||
<field name="priority" eval="99" /> |
|||
<field name="arch" type="xml"> |
|||
<filter name="my_tasks" position="attributes"> |
|||
<attribute name="domain">['|', ('user_id', '=', uid), ('assignee_ids', 'in', uid)]</attribute> |
|||
</filter> |
|||
</field> |
|||
</record> |
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue