[ADD] create `project_request_data
` add-on
This commit is contained in:
45
project_request_data/README.rst
Normal file
45
project_request_data/README.rst
Normal file
@@ -0,0 +1,45 @@
|
||||
====================
|
||||
project_request_data
|
||||
====================
|
||||
|
||||
Add several fields in tasks, that provide several data on the request
|
||||
Installation
|
||||
============
|
||||
|
||||
Use Odoo normal module installation procedure to install ``project_request_data``.
|
||||
- To configure the services, go to Project > Configuration > Task Services
|
||||
- To configure the request types, go to Project > Configuration > Request Types
|
||||
|
||||
|
||||
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
|
||||
=======
|
||||
|
||||
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.
|
1
project_request_data/__init__.py
Normal file
1
project_request_data/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
92
project_request_data/__manifest__.py
Normal file
92
project_request_data/__manifest__.py
Normal file
@@ -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_request_data",
|
||||
"version": "14.0.1.0.0",
|
||||
"author": "Elabore",
|
||||
"website": "https://elabore.coop",
|
||||
"maintainer": "Stéphan Sainléger",
|
||||
"license": "AGPL-3",
|
||||
"category": "Project",
|
||||
"summary": "Add several fields in tasks, that provide several data on the request",
|
||||
"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_request_data
|
||||
====================
|
||||
|
||||
Add several fields in tasks, that provide several data on the request
|
||||
Installation
|
||||
============
|
||||
|
||||
Use Odoo normal module installation procedure to install ``project_request_data``.
|
||||
- To configure the services, go to Project > Configuration > Task Services
|
||||
- To configure the request types, go to Project > Configuration > Request Types
|
||||
|
||||
|
||||
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
|
||||
=======
|
||||
|
||||
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.
|
||||
|
||||
""",
|
||||
# any module necessary for this one to work correctly
|
||||
"depends": [
|
||||
"base",
|
||||
"project",
|
||||
],
|
||||
"qweb": [
|
||||
# "static/src/xml/*.xml",
|
||||
],
|
||||
"external_dependencies": {
|
||||
"python": [],
|
||||
},
|
||||
# always loaded
|
||||
"data": [
|
||||
"security/ir.model.access.csv",
|
||||
"views/project_task.xml",
|
||||
"views/request_type.xml",
|
||||
"views/task_service.xml",
|
||||
"views/portal_template.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_request_data/i18n/README
Normal file
1
project_request_data/i18n/README
Normal file
@@ -0,0 +1 @@
|
||||
This directory should contain the *.po for Odoo translation.
|
116
project_request_data/i18n/fr.po
Normal file
116
project_request_data/i18n/fr.po
Normal file
@@ -0,0 +1,116 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_request_data
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-26 12:51+0000\n"
|
||||
"PO-Revision-Date: 2022-08-26 12:51+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_request_data
|
||||
#: model_terms:ir.ui.view,arch_db:project_request_data.portal_my_task_request_data
|
||||
msgid "<strong>Request type:</strong>"
|
||||
msgstr "<strong>Type de demande :</strong>"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model_terms:ir.ui.view,arch_db:project_request_data.portal_my_task_request_data
|
||||
msgid "<strong>Service:</strong>"
|
||||
msgstr "<strong>Service :</strong>"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__create_uid
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__create_date
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__display_name
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__id
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type____last_update
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__write_uid
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__write_date
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model,name:project_request_data.model_request_type
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_project_task__request_type_id
|
||||
msgid "Request Type"
|
||||
msgstr "Type de demande"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.actions.act_window,name:project_request_data.act_request_types_list
|
||||
#: model:ir.ui.menu,name:project_request_data.menu_request_types
|
||||
#: model_terms:ir.ui.view,arch_db:project_request_data.request_type_view_tree
|
||||
msgid "Request Types"
|
||||
msgstr "Types de demande"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__sequence
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Séquence"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_project_task__service_id
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model,name:project_request_data.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Tâche"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.actions.act_window,name:project_request_data.act_task_services_list
|
||||
#: model:ir.ui.menu,name:project_request_data.menu_task_services
|
||||
#: model_terms:ir.ui.view,arch_db:project_request_data.task_service_view_tree
|
||||
msgid "Task Services"
|
||||
msgstr "Services"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model,name:project_request_data.model_task_service
|
||||
msgid "Task service"
|
||||
msgstr "Service"
|
||||
|
||||
#. module: project_request_data
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_request_type__name
|
||||
#: model:ir.model.fields,field_description:project_request_data.field_task_service__name
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
3
project_request_data/models/__init__.py
Normal file
3
project_request_data/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from . import task_service
|
||||
from . import request_type
|
||||
from . import project_task
|
9
project_request_data/models/project_task.py
Normal file
9
project_request_data/models/project_task.py
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class Task(models.Model):
|
||||
_inherit = "project.task"
|
||||
|
||||
service_id = fields.Many2one('task.service', string='Service')
|
||||
request_type_id = fields.Many2one('request.type', string='Request Type')
|
9
project_request_data/models/request_type.py
Normal file
9
project_request_data/models/request_type.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class RequestType(models.Model):
|
||||
_name = "request.type"
|
||||
_description = "Request Type"
|
||||
|
||||
name = fields.Char('name', required=True)
|
||||
sequence = fields.Integer()
|
9
project_request_data/models/task_service.py
Normal file
9
project_request_data/models/task_service.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class TaskService(models.Model):
|
||||
_name = "task.service"
|
||||
_description = "Task service"
|
||||
|
||||
name = fields.Char('name', required=True)
|
||||
sequence = fields.Integer()
|
5
project_request_data/security/ir.model.access.csv
Normal file
5
project_request_data/security/ir.model.access.csv
Normal file
@@ -0,0 +1,5 @@
|
||||
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_task_service_user,project.task_service.user,model_task_service,,1,0,0,0
|
||||
access_task_service_manager,project.task_service.manager,model_task_service,project.group_project_manager,1,1,1,1
|
||||
access_request_type_user,project.request_type.user,model_request_type,,1,0,0,0
|
||||
access_request_type_manager,project.request_type.manager,model_request_type,project.group_project_manager,1,1,1,1
|
|
17
project_request_data/views/portal_template.xml
Normal file
17
project_request_data/views/portal_template.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="portal_my_task_request_data" name="My Task: Request Data" inherit_id="project.portal_my_task" priority="40">
|
||||
<xpath expr="//t[@t-set='card_body']/div[hasclass('row','mb-4')]" position="after">
|
||||
<div id="request_data" class="row mb-4">
|
||||
<div class="col-12 col-md-6" t-if="task.service_id">
|
||||
<strong>Service:</strong>
|
||||
<span t-field="task.service_id" />
|
||||
</div>
|
||||
<div class="col-12 col-md-6" t-if="task.request_type_id">
|
||||
<strong>Request type:</strong>
|
||||
<span t-field="task.request_type_id" />
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
15
project_request_data/views/project_task.xml
Normal file
15
project_request_data/views/project_task.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_task_form2_request_data" model="ir.ui.view">
|
||||
<field name="name">project.task.form.request.data</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='tag_ids']" position="before">
|
||||
<field name="service_id" widget="selection" />
|
||||
<field name="request_type_id" widget="selection" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
23
project_request_data/views/request_type.xml
Normal file
23
project_request_data/views/request_type.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="request_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">request.type.view.tree</field>
|
||||
<field name="model">request.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Request Types" editable="top" default_order="sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_request_types_list" model="ir.actions.act_window">
|
||||
<field name="name">Request Types</field>
|
||||
<field name="res_model">request.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_request_types" action="act_request_types_list" parent="project.menu_project_config" sequence="99" name="Request Types" />
|
||||
|
||||
</odoo>
|
23
project_request_data/views/task_service.xml
Normal file
23
project_request_data/views/task_service.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="task_service_view_tree" model="ir.ui.view">
|
||||
<field name="name">task.service.view.tree</field>
|
||||
<field name="model">task.service</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Task Services" editable="top" default_order="sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_task_services_list" model="ir.actions.act_window">
|
||||
<field name="name">Task Services</field>
|
||||
<field name="res_model">task.service</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_task_services" action="act_task_services_list" parent="project.menu_project_config" sequence="99" name="Task Services" />
|
||||
|
||||
</odoo>
|
Reference in New Issue
Block a user