Repository
OCA/edi-framework · module folder · Try on Runboat
Module version
1.0.0
Category
Uncategorized
Folder size
0.05 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/edi-framework
Last tracking update
2026-08-07 08:23:14
Authors
Camptocamp, Odoo Community Association (OCA)
Maintainers
Camptocamp, Odoo Community Association (OCA)
Committers
SilvioC2C, Weblate, OCA-git-bot, oca-ci
Odoo dependencies
OCA/connector:
OCA/edi:
OCA/edi-framework:
OCA/queue:
odoo/odoo:
- web
- bus
- uom
Python dependencies
cachetools, PyYAML, requests
System dependencies
None
Required by
None
Description
This module intends to create a base to be extended by local EDI rules
for project management.

In order to add customizations for projects, create a listener:

```python
from odoo.addons.component.core import Component


class ProjectEventListenerExample(Component):
    _name = "project.project.event.listener.example"
    _inherit = "base.event.listener"
    _apply_on = ["project.project"]

    def on_record_create(self, record, fields=None):
        """Do stuff after the project has been created"""

    def on_record_write(self, record, fields=None):
        """Do stuff after the project has been updated"""

    def on_record_unlink(self, record):
        """Do stuff before the project gets deleted"""
```

In order to add customizations for tasks, create a listener:

```python
from odoo.addons.component.core import Component


class ProjectTaskEventListenerExample(Component):
    _name = "project.task.event.listener.example"
    _inherit = "base.event.listener"
    _apply_on = ["project.task"]

    def on_record_create(self, record, fields=None):
      """Do stuff after the task has been created"""

    def on_record_write(self, record, fields=None):
      """Do stuff after the task has been updated"""

    def on_record_unlink(self, record):
      """Do stuff before the task gets deleted"""
```

Use ``@skip_if()`` decorator to avoid triggering a listener's method if necessary:

```python
from odoo.addons.component.core import Component
from odoo.addons.component_event import skip_if


class ProjectTaskEventListenerExample(Component):
    _name = "project.task.event.listener.example"
    _inherit = "base.event.listener"
    _apply_on = ["project.task"]

    @skip_if(lambda self, task: not task.stage_id)  # Do nothing if the task has no stage
    def on_record_update(self, record, fields=None):
        """Do stuff after the task has been created"""
```

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
edit_project_inherit project.project Inherits project.edit_project
project_project_view_form_simplified_inherit project.project form Inherits project.project_project_view_form_simplified
quick_create_task_form_inherit project.task form Inherits project.quick_create_task_form
view_task_form2_inherit project.task Inherits project.view_task_form2
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.