Skip to content

Commit fa2bd92

Browse files
committed
UI improvement for event data
1 parent 08fd6d4 commit fa2bd92

37 files changed

+6195
-31
lines changed

spp_farmer_registry_laos/models/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# Part of OpenSPP. See LICENSE file for full copyright and licensing details.
22

33
from . import farm_activity
4-
from . import farm
5-
from . import farmer
64
from . import ethnic_group
75
from . import event_data
86
from . import event_data_gen_info
@@ -22,4 +20,6 @@
2220
from . import event_data_wash_ind
2321
from . import event_data_hh_resilience_index
2422
from . import event_data_min_dietary_score
23+
from . import farm
24+
from . import farmer
2525
from . import generate_farmer_data

spp_farmer_registry_laos/models/event_data_agri_ds.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataAgriculturalDS(models.Model):
@@ -96,3 +96,41 @@ class OpenSPPEventDataAgriculturalDSTech(models.Model):
9696
[("1", "Selected"), ("0", "Not Selected")], string="Post Harvest Treatment (Fungicide)"
9797
)
9898
other = fields.Char("Others")
99+
100+
101+
class OpenSPPEventDataAgriculturalDSResPartner(models.Model):
102+
_inherit = "res.partner"
103+
104+
active_event_agri_ds = fields.Many2one("spp.event.agri.ds", compute="_compute_active_event_agri_ds")
105+
106+
x_survey_schedule = fields.Selection(string="Survey Schedule", related="active_event_agri_ds.survey_sched")
107+
x_agri_prod_ids = fields.One2many(
108+
"spp.event.agri.ds.prod",
109+
string="Agricultural Production During Cold DS",
110+
related="active_event_agri_ds.agri_prod_ids",
111+
)
112+
x_agri_cost_ids = fields.One2many(
113+
"spp.event.agri.ds.cost",
114+
string="Agricultural Cost During Cold DS",
115+
related="active_event_agri_ds.agri_cost_ids",
116+
)
117+
x_agri_tech_ids = fields.One2many(
118+
"spp.event.agri.ds.tech",
119+
string="Agricultural Technologies During Cold DS",
120+
related="active_event_agri_ds.agri_tech_ids",
121+
)
122+
123+
@api.depends("event_data_ids")
124+
def _compute_active_event_agri_ds(self):
125+
"""
126+
This computes the active Agricultural Production, Sales, Cost
127+
and Technologies During Cold DS event of the group
128+
"""
129+
for rec in self:
130+
event_data = rec._get_active_event_id("spp.event.agri.ds")
131+
rec.active_event_agri_ds = None
132+
if event_data:
133+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
134+
rec.active_event_agri_ds = (
135+
self.env["spp.event.agri.ds"].search([("id", "=", event_data_res_id)], limit=1).id
136+
)

spp_farmer_registry_laos/models/event_data_agri_ds_hot.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataAgriculturalDSHot(models.Model):
@@ -96,3 +96,41 @@ class OpenSPPEventDataAgriculturalDSHotTech(models.Model):
9696
[("1", "Selected"), ("0", "Not Selected")], string="Post Harvest Treatment (Fungicide)"
9797
)
9898
other = fields.Char("Others")
99+
100+
101+
class OpenSPPEventDataAgriculturalDSHotResPartner(models.Model):
102+
_inherit = "res.partner"
103+
104+
active_event_agri_ds_hot = fields.Many2one("spp.event.agri.ds.hot", compute="_compute_active_event_agri_ds_hot")
105+
106+
xia_survey_schedule = fields.Selection(string="Survey Schedule", related="active_event_agri_ds_hot.survey_sched")
107+
xia_agri_prod_ids = fields.One2many(
108+
"spp.event.agri.ds.hot.prod",
109+
string="Agricultural Production During the Hot DS",
110+
related="active_event_agri_ds_hot.agri_prod_ids",
111+
)
112+
xia_agri_cost_ids = fields.One2many(
113+
"spp.event.agri.ds.hot.cost",
114+
string="Agricultural Cost During the Hot DS",
115+
related="active_event_agri_ds_hot.agri_cost_ids",
116+
)
117+
xia_agri_tech_ids = fields.One2many(
118+
"spp.event.agri.ds.hot.tech",
119+
string="Agricultural Technologies During the Hot DS",
120+
related="active_event_agri_ds_hot.agri_tech_ids",
121+
)
122+
123+
@api.depends("event_data_ids")
124+
def _compute_active_event_agri_ds_hot(self):
125+
"""
126+
This computes the active Agricultural Production, Sales, Cost
127+
and Technologies During the Hot DS event of the group
128+
"""
129+
for rec in self:
130+
event_data = rec._get_active_event_id("spp.event.agri.ds.hot")
131+
rec.active_event_agri_ds_hot = None
132+
if event_data:
133+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
134+
rec.active_event_agri_ds_hot = (
135+
self.env["spp.event.agri.ds.hot"].search([("id", "=", event_data_res_id)], limit=1).id
136+
)

spp_farmer_registry_laos/models/event_data_agri_land_ownership_use.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataAgriLandOwnershipAndUse(models.Model):
@@ -55,3 +55,39 @@ class OpenSPPEventDataAgriLandOwnershipAndUseLines(models.Model):
5555
land_rent_oth_hh = fields.Float("Area of Land for Rent to Other HH (ha)")
5656
oth_agri_land_owned_by_hh = fields.Float("Area of Other Agriculture Land Owned by the HH (ha)")
5757
total = fields.Float("Total (ha)")
58+
59+
60+
class OpenSPPEventDataAgriLandOwnershipAndUseResPartner(models.Model):
61+
_inherit = "res.partner"
62+
63+
active_event_agri_land_ownership_use = fields.Many2one(
64+
"spp.event.agri.land.ownership.use", compute="_compute_active_event_agri_land_ownership_use"
65+
)
66+
67+
vi_survey_schedule = fields.Selection(
68+
string="Survey Schedule", related="active_event_agri_land_ownership_use.survey_sched"
69+
)
70+
vi_land_ownership_ids = fields.One2many(
71+
"spp.event.agri.land.ownership.use.lines", related="active_event_agri_land_ownership_use.land_ownership_ids"
72+
)
73+
vi_crops_in_irrigated_land = fields.Selection(
74+
string="Rice or any other crops in the irrigated/rainfed paddy field during dry season",
75+
related="active_event_agri_land_ownership_use.crops_in_irrigated_land",
76+
)
77+
vi_crops_in_irrigated_land_ha = fields.Float(
78+
"Area of planting (ha)", related="active_event_agri_land_ownership_use.crops_in_irrigated_land_ha"
79+
)
80+
81+
@api.depends("event_data_ids")
82+
def _compute_active_event_agri_land_ownership_use(self):
83+
"""
84+
This computes the active Agriculture Land Ownership and Use event of the group
85+
"""
86+
for rec in self:
87+
event_data = rec._get_active_event_id("spp.event.agri.land.ownership.use")
88+
rec.active_event_agri_land_ownership_use = None
89+
if event_data:
90+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
91+
rec.active_event_agri_land_ownership_use = (
92+
self.env["spp.event.agri.land.ownership.use"].search([("id", "=", event_data_res_id)], limit=1).id
93+
)

spp_farmer_registry_laos/models/event_data_agricultural_tech_ws.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataAgriculturalTechWS(models.Model):
@@ -46,3 +46,30 @@ class OpenSPPEventDataAgriculturalTechWSLines(models.Model):
4646
[("1", "Selected"), ("0", "Not Selected")], string="Post Harvest Treatment (Fungicide"
4747
)
4848
other = fields.Char("Others")
49+
50+
51+
class OpenSPPEventDataAgriculturalTechWSResPartner(models.Model):
52+
_inherit = "res.partner"
53+
54+
active_event_agri_tech_ws = fields.Many2one("spp.event.agri.tech.ws", compute="_compute_active_event_agri_tech_ws")
55+
56+
ix_survey_schedule = fields.Selection(string="Survey Schedule", related="active_event_agri_tech_ws.survey_sched")
57+
ix_agri_prod_sales_cost_tech_ids = fields.One2many(
58+
"spp.event.agri.tech.ws.lines",
59+
related="active_event_agri_tech_ws.agri_prod_sales_cost_tech_ids",
60+
string="Agricultural Technologies During WS",
61+
)
62+
63+
@api.depends("event_data_ids")
64+
def _compute_active_event_agri_tech_ws(self):
65+
"""
66+
This computes the active Agricultural Technologies During the WS event of the group
67+
"""
68+
for rec in self:
69+
event_data = rec._get_active_event_id("spp.event.agri.tech.ws")
70+
rec.active_event_agri_tech_ws = None
71+
if event_data:
72+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
73+
rec.active_event_agri_tech_ws = (
74+
self.env["spp.event.agri.tech.ws"].search([("id", "=", event_data_res_id)], limit=1).id
75+
)

spp_farmer_registry_laos/models/event_data_agricultural_ws.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataAgriculturalWS(models.Model):
@@ -64,3 +64,51 @@ class OpenSPPEventDataAgriculturalWSCost(models.Model):
6464
tool_equipment = fields.Integer()
6565
other_fees = fields.Integer()
6666
total_production = fields.Integer("Total Production Cost")
67+
68+
69+
class OpenSPPEventDataAgriculturalWSResPartner(models.Model):
70+
_inherit = "res.partner"
71+
72+
active_event_agri_ws = fields.Many2one("spp.event.agri.ws", compute="_compute_active_event_agri_ws")
73+
74+
viii_survey_schedule = fields.Selection(string="Survey Schedule", related="active_event_agri_ws.survey_sched")
75+
viii_agri_ws_produce_ids = fields.One2many(
76+
"spp.event.agri.ws.produce", related="active_event_agri_ws.agri_ws_produce_ids", string="Crops produce"
77+
)
78+
viii_agri_ws_cost_ids = fields.One2many(
79+
"spp.event.agri.ws.cost", related="active_event_agri_ws.agri_ws_cost_ids", string="Production cost per crop"
80+
)
81+
viii_experience_dryspell_flood = fields.Integer(
82+
"Experience any dry spell / flood / hailstorm / storm during the WS 2022 cropping season",
83+
related="active_event_agri_ws.experience_dryspell_flood",
84+
)
85+
viii_experience_dryspell_flood_dates = fields.Char(
86+
"If yes, when?", related="active_event_agri_ws.experience_dryspell_flood_dates"
87+
)
88+
viii_experience_pest_disease_outbreak = fields.Integer(
89+
"Experience any pest or disease outbreak on your farmland during the WS 2022 cropping season",
90+
related="active_event_agri_ws.experience_pest_disease_outbreak",
91+
)
92+
viii_experience_pest_disease_outbreak_dates = fields.Char(
93+
"If yes, when?", related="active_event_agri_ws.experience_pest_disease_outbreak_dates"
94+
)
95+
viii_experience_pest_disease_outbreak_type = fields.Char(
96+
"Type of pest or disease", related="active_event_agri_ws.experience_pest_disease_outbreak_type"
97+
)
98+
viii_experience_pest_disease_outbreak_affected = fields.Char(
99+
"Affected crops (crop's code)", related="active_event_agri_ws.experience_pest_disease_outbreak_affected"
100+
)
101+
102+
@api.depends("event_data_ids")
103+
def _compute_active_event_agri_ws(self):
104+
"""
105+
This computes the active Agricultural Production and Costs During the WS event of the group
106+
"""
107+
for rec in self:
108+
event_data = rec._get_active_event_id("spp.event.agri.ws")
109+
rec.active_event_agri_ws = None
110+
if event_data:
111+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
112+
rec.active_event_agri_ws = (
113+
self.env["spp.event.agri.ws"].search([("id", "=", event_data_res_id)], limit=1).id
114+
)

spp_farmer_registry_laos/models/event_data_food_security.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class OpenSPPEventDataFoodSecurity(models.Model):
@@ -28,3 +28,42 @@ def get_view_id(self):
2828
This retrieves the View ID of this model
2929
"""
3030
return self.env["ir.ui.view"].search([("model", "=", self._name), ("type", "=", "form")], limit=1).id
31+
32+
33+
class OpenSPPEventDataFoodSecurityResPartner(models.Model):
34+
_inherit = "res.partner"
35+
36+
active_event_food_security = fields.Many2one(
37+
"spp.event.food.security", compute="_compute_active_event_food_security"
38+
)
39+
40+
vii_survey_schedule = fields.Selection(string="Survey Schedule", related="active_event_food_security.survey_sched")
41+
vii_hungry_season_past_12 = fields.Integer(
42+
"Experience a Hungry season in the past 12 months", related="active_event_food_security.hungry_season_past_12"
43+
)
44+
vii_shortage_january = fields.Integer("January", related="active_event_food_security.shortage_january")
45+
vii_shortage_february = fields.Integer("February", related="active_event_food_security.shortage_february")
46+
vii_shortage_march = fields.Integer("March", related="active_event_food_security.shortage_march")
47+
vii_shortage_april = fields.Integer("April", related="active_event_food_security.shortage_april")
48+
vii_shortage_may = fields.Integer("May", related="active_event_food_security.shortage_may")
49+
vii_shortage_june = fields.Integer("June", related="active_event_food_security.shortage_june")
50+
vii_shortage_july = fields.Integer("July", related="active_event_food_security.shortage_july")
51+
vii_shortage_august = fields.Integer("August", related="active_event_food_security.shortage_august")
52+
vii_shortage_september = fields.Integer("September", related="active_event_food_security.shortage_september")
53+
vii_shortage_october = fields.Integer("October", related="active_event_food_security.shortage_october")
54+
vii_shortage_november = fields.Integer("November", related="active_event_food_security.shortage_november")
55+
vii_shortage_december = fields.Integer("December", related="active_event_food_security.shortage_december")
56+
57+
@api.depends("event_data_ids")
58+
def _compute_active_event_food_security(self):
59+
"""
60+
This computes the active Food Security event of the group
61+
"""
62+
for rec in self:
63+
event_data = rec._get_active_event_id("spp.event.food.security")
64+
rec.active_event_food_security = None
65+
if event_data:
66+
event_data_res_id = self.env["spp.event.data"].search([("id", "=", event_data)], limit=1).res_id
67+
rec.active_event_food_security = (
68+
self.env["spp.event.food.security"].search([("id", "=", event_data_res_id)], limit=1).id
69+
)

0 commit comments

Comments
 (0)