Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions spp_change_request_event_data/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions spp_change_request_event_data/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "OpenSPP Change Request Event Data",
"category": "OpenSPP",
"version": "17.0.1.0.0",
"sequence": 1,
"author": "OpenSPP.org",
"website": "https://github.com/OpenSPP/openspp-modules",
"license": "LGPL-3",
"development_status": "Beta",
"maintainers": ["shashikala1998"],
"depends": [
"spp_event_data",
"spp_change_request",
],
"data": [
"security/ir.model.access.csv",
"views/change_request_view.xml",
],
"application": False,
"installable": True,
"auto_install": False,
}
2 changes: 2 additions & 0 deletions spp_change_request_event_data/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import change_request
from . import event_data
63 changes: 63 additions & 0 deletions spp_change_request_event_data/models/change_request.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import logging

from odoo import fields, models

_logger = logging.getLogger(__name__)


class ChangeRequest(models.Model):
_inherit = "spp.change.request"

event_data_ids = fields.One2many(
"spp.event.data",
"change_request_id",
string="Event History",
)

def write(self, vals):
"""Override to track state changes and create event data"""
_logger.info("Writing change request: %s with vals: %s", self.name, vals)

Check warning on line 19 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L19

Added line #L19 was not covered by tests

res = super().write(vals)

Check warning on line 21 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L21

Added line #L21 was not covered by tests

# If state is changing to validated or applied, create/update event data
new_state = vals.get("state")

Check warning on line 24 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L24

Added line #L24 was not covered by tests
if new_state in ["validated", "applied"]:
for record in self:
if record.request_type_ref_id:
_logger.info("Creating/Updating event data for state change to %s", new_state)

Check warning on line 28 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L28

Added line #L28 was not covered by tests

# Get model and res_id from request_type_ref_id
ref_model = record.request_type_ref_id._name
ref_id = record.request_type_ref_id.id

Check warning on line 32 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L31-L32

Added lines #L31 - L32 were not covered by tests

# Get the user who performed the action
user = self.env.user.name

Check warning on line 35 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L35

Added line #L35 was not covered by tests

# Check if an event already exists for this change request
existing_event = self.env["spp.event.data"].search(

Check warning on line 38 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L38

Added line #L38 was not covered by tests
[("change_request_id", "=", record.id), ("model", "=", ref_model), ("res_id", "=", ref_id)],
limit=1,
)

event_vals = {

Check warning on line 43 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L43

Added line #L43 was not covered by tests
"model": ref_model,
"res_id": ref_id,
"partner_id": record.registrant_id.id,
"registrar": user,
"state": "active",
"change_request_id": record.id,
"collection_date": fields.Date.today(),
"event_type": new_state.capitalize(), # 'Validated' or 'Applied'
}

if existing_event:
# Update existing event
existing_event.write(event_vals)
_logger.info("Updated event data: %s", existing_event.id)

Check warning on line 57 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L56-L57

Added lines #L56 - L57 were not covered by tests
else:
# Create new event
event = self.env["spp.event.data"].create(event_vals)
_logger.info("Created event data: %s", event.id)

Check warning on line 61 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L60-L61

Added lines #L60 - L61 were not covered by tests

return res

Check warning on line 63 in spp_change_request_event_data/models/change_request.py

View check run for this annotation

Codecov / codecov/patch

spp_change_request_event_data/models/change_request.py#L63

Added line #L63 was not covered by tests
11 changes: 11 additions & 0 deletions spp_change_request_event_data/models/event_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from odoo import fields, models


class EventData(models.Model):
_inherit = "spp.event.data"

change_request_id = fields.Many2one(
"spp.change.request",
string="Change Request",
ondelete="set null",
)
3 changes: 3 additions & 0 deletions spp_change_request_event_data/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
4 changes: 4 additions & 0 deletions spp_change_request_event_data/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_spp_event_data_change_request_validator,SPP Event Data Change Request Validator Access,spp_event_data.model_spp_event_data,spp_change_request.group_spp_change_request_validator,1,1,1,0
access_spp_event_data_change_request_hq_validator,SPP Event Data Change Request HQ Validator Access,spp_event_data.model_spp_event_data,spp_change_request.group_spp_change_request_hq_validator,1,1,1,0
access_spp_event_data_change_request_applicator,SPP Event Data Change Request Applicator Access,spp_event_data.model_spp_event_data,spp_change_request.group_spp_change_request_applicator,1,1,1,0
30 changes: 30 additions & 0 deletions spp_change_request_event_data/views/change_request_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Inherit change request form view to add event data tab -->
<record id="view_change_request_form_inherit_event_data" model="ir.ui.view">
<field name="name">spp.change.request.form.inherit.event.data</field>
<field name="model">spp.change.request</field>
<field name="inherit_id" ref="spp_change_request.view_change_request_form" />
<field name="arch" type="xml">
<xpath expr="//sheet" position="inside">
<notebook>
<page string="Event History" name="event_history">
<field
name="event_data_ids"
readonly="1"
context="{'default_change_request_id': active_id}"
>
<tree>
<field name="partner_id" />
<field name="event_type" />
<field name="collection_date" />
<field name="registrar" />
<field name="state" widget="badge" />
</tree>
</field>
</page>
</notebook>
</xpath>
</field>
</record>
</odoo>
Loading