Browse Source

[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
Valentin Lab 2 years ago
committed by Stéphan Sainléger
parent
commit
37d1c762dd
  1. 45
      project_assignees/README.rst
  2. 3
      project_assignees/__init__.py
  3. 92
      project_assignees/__manifest__.py
  4. 1
      project_assignees/i18n/README
  5. 48
      project_assignees/i18n/fr.po
  6. 2
      project_assignees/models/__init__.py
  7. 10
      project_assignees/models/project_task.py
  8. 26
      project_assignees/views/project_task.xml

45
project_assignees/README.rst

@ -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.

3
project_assignees/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

92
project_assignees/__manifest__.py

@ -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,
}

1
project_assignees/i18n/README

@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

48
project_assignees/i18n/fr.po

@ -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"

2
project_assignees/models/__init__.py

@ -0,0 +1,2 @@
from . import project_task

10
project_assignees/models/project_task.py

@ -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')

26
project_assignees/views/project_task.xml

@ -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>
Loading…
Cancel
Save