Skip to content

Commit 80d0676

Browse files
Merge pull request #309 from mkumar-02/17.0-rabbitmq-connector
Added rabbitmq connector module
2 parents c487c92 + ff2a772 commit 80d0676

14 files changed

Lines changed: 228 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ addon | version | maintainers | summary
4545
[g2p_program_assessment](g2p_program_assessment/) | 17.0.0.0.0 | | OpenG2P Program: Assessment
4646
[g2p_program_autoenrol](g2p_program_autoenrol/) | 17.0.0.0.0 | | OpenG2P Programs: Autoenrol
4747
[g2p_program_cycleless](g2p_program_cycleless/) | 17.0.0.0.0 | | OpenG2P Programs: Cycleless
48+
[g2p_program_datashare_rabbitmq](g2p_program_datashare_rabbitmq/) | 17.0.0.0.0 | | G2P Program Datashare: RabbitMQ
4849
[g2p_program_documents](g2p_program_documents/) | 17.0.0.0.0 | | OpenG2P Program: Documents
4950
[g2p_program_registrant_info](g2p_program_registrant_info/) | 17.0.0.0.0 | | G2P Program: Registrant Info
5051
[g2p_program_reimbursement](g2p_program_reimbursement/) | 17.0.0.0.0 | | OpenG2P Programs: Reimbursement
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# OpenG2P Program Datashare: RabbitMQ
2+
3+
Refer to https://docs.openg2p.org.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
3+
from . import models
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
{
3+
"name": "G2P Program Datashare: RabbitMQ",
4+
"category": "G2P",
5+
"version": "17.0.0.0.0",
6+
"sequence": 1,
7+
"author": "OpenG2P",
8+
"website": "https://openg2p.org",
9+
"license": "LGPL-3",
10+
"depends": [
11+
"g2p_programs",
12+
"g2p_registry_datashare_rabbitmq",
13+
],
14+
"data": [
15+
"views/datashare_config_rabbitmq.xml",
16+
],
17+
"assets": {},
18+
"demo": [],
19+
"images": [],
20+
"application": True,
21+
"installable": True,
22+
"auto_install": False,
23+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
3+
from . import datashare_config_rabbitmq
4+
from . import program_membership
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
3+
import logging
4+
5+
from odoo import fields, models
6+
7+
_logger = logging.getLogger(__name__)
8+
9+
10+
class G2PDatashareConfigRabbitMQProgram(models.Model):
11+
_inherit = "g2p.datashare.config.rabbitmq"
12+
13+
data_source = fields.Selection(
14+
selection_add=[
15+
(
16+
"beneficiary_registry",
17+
"Beneficiary Registry",
18+
)
19+
],
20+
ondelete={"beneficiary_registry": "cascade"},
21+
)
22+
23+
program_id = fields.Many2one("g2p.program")
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
3+
4+
from odoo import api, models
5+
6+
7+
class G2PProgramMembership(models.Model):
8+
_inherit = "g2p.program_membership"
9+
10+
def _push_to_rabbitmq(self):
11+
"""Push the record to RabbitMQ after applying JQ transformation."""
12+
configs = self.env["g2p.datashare.config.rabbitmq"].search(
13+
[("active", "=", True), ("data_source", "=", "beneficiary_registry")]
14+
)
15+
for rec in self:
16+
if rec.is_registrant:
17+
rec_data = rec.read()[0]
18+
rec_data.update(
19+
{"program_id": self.env["g2p.program"].browse(rec_data["program_id"][0]).read()[0]}
20+
)
21+
for config in configs:
22+
self.process_reg_id(config.id_type, rec_data)
23+
transformed = config.transform_data(rec_data)
24+
if transformed is not None:
25+
config.publish(transformed)
26+
27+
def process_reg_id(self, id_type, rec_data):
28+
reg_id = self.env["g2p.reg.id"].search(
29+
[("id_type", "=", id_type.id), ("partner_id", "=", rec_data["partner_id"][0])], limit=1
30+
)
31+
if reg_id:
32+
return rec_data.update({"reg_id_value": reg_id.value})
33+
34+
@api.model_create_multi
35+
def create(self, vals_list):
36+
"""Override create to push new records to RabbitMQ."""
37+
records = super().create(vals_list)
38+
records._push_to_rabbitmq()
39+
return records
40+
41+
def write(self, vals):
42+
"""Override write to push updated records to RabbitMQ."""
43+
res = super().write(vals)
44+
self._push_to_rabbitmq()
45+
return res
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[build-system]
2+
requires = ["whool"]
3+
build-backend = "whool.buildapi"
3.89 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
2+
3+
from . import test_datashare_config_rabbitmq

0 commit comments

Comments
 (0)