Skip to content

Commit eca97d2

Browse files
committed
fix(spp_demo): optimize _get_leaf_areas to query only leaf areas
Replace the Python-level filter over all areas with a direct ORM query using the domain [('child_ids', '=', False)], which lets the database find leaf areas in a single SQL query instead of loading all records into memory.
1 parent e297aeb commit eca97d2

13 files changed

Lines changed: 243 additions & 221 deletions

spp_demo/__manifest__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"spp_vocabulary",
1919
"queue_job",
2020
"spp_security",
21+
"spp_area",
2122
],
2223
"external_dependencies": {
2324
"python": ["faker"],
@@ -34,6 +35,7 @@
3435
"views/demo_data_generator_view.xml",
3536
# Wizards
3637
"wizard/apps_wizard_view.xml",
38+
"wizard/demo_area_loader_view.xml",
3739
],
3840
"assets": {},
3941
"demo": [],
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8" ?>
22
<odoo noupdate="1">
33
<!-- Sri Lanka 4-Level Administrative Hierarchy
44
Province -> District -> Divisional Secretariat (DS) Division -> Grama Niladhari (GN) Division
@@ -10,16 +10,16 @@
1010

1111
<record id="area_kind_lka_district" model="spp.area.type">
1212
<field name="name">District</field>
13-
<field name="parent_id" ref="area_kind_lka_province"/>
13+
<field name="parent_id" ref="area_kind_lka_province" />
1414
</record>
1515

1616
<record id="area_kind_lka_ds_division" model="spp.area.type">
1717
<field name="name">DS Division</field>
18-
<field name="parent_id" ref="area_kind_lka_district"/>
18+
<field name="parent_id" ref="area_kind_lka_district" />
1919
</record>
2020

2121
<record id="area_kind_lka_gn_division" model="spp.area.type">
2222
<field name="name">GN Division</field>
23-
<field name="parent_id" ref="area_kind_lka_ds_division"/>
23+
<field name="parent_id" ref="area_kind_lka_ds_division" />
2424
</record>
2525
</odoo>
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8" ?>
22
<odoo noupdate="0">
33
<!-- Sri Lanka Curated Demo Areas
44
Focused on Western Province and Southern Province
@@ -11,160 +11,160 @@
1111
<record id="area_lka_western" model="spp.area">
1212
<field name="draft_name">Western Province</field>
1313
<field name="code">LK-1</field>
14-
<field name="area_type_id" ref="area_kind_lka_province"/>
14+
<field name="area_type_id" ref="area_kind_lka_province" />
1515
</record>
1616

1717
<record id="area_lka_southern" model="spp.area">
1818
<field name="draft_name">Southern Province</field>
1919
<field name="code">LK-3</field>
20-
<field name="area_type_id" ref="area_kind_lka_province"/>
20+
<field name="area_type_id" ref="area_kind_lka_province" />
2121
</record>
2222

2323
<record id="area_lka_central" model="spp.area">
2424
<field name="draft_name">Central Province</field>
2525
<field name="code">LK-2</field>
26-
<field name="area_type_id" ref="area_kind_lka_province"/>
26+
<field name="area_type_id" ref="area_kind_lka_province" />
2727
</record>
2828

2929
<!-- ========== DISTRICTS (Western Province) ========== -->
3030
<record id="area_lka_colombo" model="spp.area">
3131
<field name="draft_name">Colombo</field>
3232
<field name="code">LK-11</field>
33-
<field name="parent_id" ref="area_lka_western"/>
34-
<field name="area_type_id" ref="area_kind_lka_district"/>
33+
<field name="parent_id" ref="area_lka_western" />
34+
<field name="area_type_id" ref="area_kind_lka_district" />
3535
</record>
3636

3737
<record id="area_lka_gampaha" model="spp.area">
3838
<field name="draft_name">Gampaha</field>
3939
<field name="code">LK-12</field>
40-
<field name="parent_id" ref="area_lka_western"/>
41-
<field name="area_type_id" ref="area_kind_lka_district"/>
40+
<field name="parent_id" ref="area_lka_western" />
41+
<field name="area_type_id" ref="area_kind_lka_district" />
4242
</record>
4343

4444
<record id="area_lka_kalutara" model="spp.area">
4545
<field name="draft_name">Kalutara</field>
4646
<field name="code">LK-13</field>
47-
<field name="parent_id" ref="area_lka_western"/>
48-
<field name="area_type_id" ref="area_kind_lka_district"/>
47+
<field name="parent_id" ref="area_lka_western" />
48+
<field name="area_type_id" ref="area_kind_lka_district" />
4949
</record>
5050

5151
<!-- ========== DISTRICTS (Southern Province) ========== -->
5252
<record id="area_lka_galle" model="spp.area">
5353
<field name="draft_name">Galle</field>
5454
<field name="code">LK-31</field>
55-
<field name="parent_id" ref="area_lka_southern"/>
56-
<field name="area_type_id" ref="area_kind_lka_district"/>
55+
<field name="parent_id" ref="area_lka_southern" />
56+
<field name="area_type_id" ref="area_kind_lka_district" />
5757
</record>
5858

5959
<record id="area_lka_matara" model="spp.area">
6060
<field name="draft_name">Matara</field>
6161
<field name="code">LK-32</field>
62-
<field name="parent_id" ref="area_lka_southern"/>
63-
<field name="area_type_id" ref="area_kind_lka_district"/>
62+
<field name="parent_id" ref="area_lka_southern" />
63+
<field name="area_type_id" ref="area_kind_lka_district" />
6464
</record>
6565

6666
<!-- ========== DISTRICTS (Central Province) ========== -->
6767
<record id="area_lka_kandy" model="spp.area">
6868
<field name="draft_name">Kandy</field>
6969
<field name="code">LK-21</field>
70-
<field name="parent_id" ref="area_lka_central"/>
71-
<field name="area_type_id" ref="area_kind_lka_district"/>
70+
<field name="parent_id" ref="area_lka_central" />
71+
<field name="area_type_id" ref="area_kind_lka_district" />
7272
</record>
7373

7474
<!-- ========== DS DIVISIONS (Colombo) ========== -->
7575
<record id="area_lka_colombo_ds" model="spp.area">
7676
<field name="draft_name">Colombo</field>
7777
<field name="code">LK-1103</field>
78-
<field name="parent_id" ref="area_lka_colombo"/>
79-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
78+
<field name="parent_id" ref="area_lka_colombo" />
79+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
8080
</record>
8181

8282
<record id="area_lka_dehiwala" model="spp.area">
8383
<field name="draft_name">Dehiwala Mount Lavinia</field>
8484
<field name="code">LK-1106</field>
85-
<field name="parent_id" ref="area_lka_colombo"/>
86-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
85+
<field name="parent_id" ref="area_lka_colombo" />
86+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
8787
</record>
8888

8989
<record id="area_lka_moratuwa" model="spp.area">
9090
<field name="draft_name">Moratuwa</field>
9191
<field name="code">LK-1107</field>
92-
<field name="parent_id" ref="area_lka_colombo"/>
93-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
92+
<field name="parent_id" ref="area_lka_colombo" />
93+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
9494
</record>
9595

9696
<record id="area_lka_kolonnawa" model="spp.area">
9797
<field name="draft_name">Kolonnawa</field>
9898
<field name="code">LK-1108</field>
99-
<field name="parent_id" ref="area_lka_colombo"/>
100-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
99+
<field name="parent_id" ref="area_lka_colombo" />
100+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
101101
</record>
102102

103103
<!-- ========== DS DIVISIONS (Galle) ========== -->
104104
<record id="area_lka_galle_ds" model="spp.area">
105105
<field name="draft_name">Galle Four Gravets</field>
106106
<field name="code">LK-3109</field>
107-
<field name="parent_id" ref="area_lka_galle"/>
108-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
107+
<field name="parent_id" ref="area_lka_galle" />
108+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
109109
</record>
110110

111111
<record id="area_lka_hikkaduwa" model="spp.area">
112112
<field name="draft_name">Hikkaduwa</field>
113113
<field name="code">LK-3110</field>
114-
<field name="parent_id" ref="area_lka_galle"/>
115-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
114+
<field name="parent_id" ref="area_lka_galle" />
115+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
116116
</record>
117117

118118
<!-- ========== DS DIVISIONS (Kandy) ========== -->
119119
<record id="area_lka_kandy_ds" model="spp.area">
120120
<field name="draft_name">Kandy Four Gravets</field>
121121
<field name="code">LK-2105</field>
122-
<field name="parent_id" ref="area_lka_kandy"/>
123-
<field name="area_type_id" ref="area_kind_lka_ds_division"/>
122+
<field name="parent_id" ref="area_lka_kandy" />
123+
<field name="area_type_id" ref="area_kind_lka_ds_division" />
124124
</record>
125125

126126
<!-- ========== GN DIVISIONS (Colombo DS) ========== -->
127127
<record id="area_lka_colombo_fort" model="spp.area">
128128
<field name="draft_name">Fort</field>
129129
<field name="code">LK-1103-001</field>
130-
<field name="parent_id" ref="area_lka_colombo_ds"/>
131-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
130+
<field name="parent_id" ref="area_lka_colombo_ds" />
131+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
132132
</record>
133133

134134
<record id="area_lka_colombo_pettah" model="spp.area">
135135
<field name="draft_name">Pettah</field>
136136
<field name="code">LK-1103-002</field>
137-
<field name="parent_id" ref="area_lka_colombo_ds"/>
138-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
137+
<field name="parent_id" ref="area_lka_colombo_ds" />
138+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
139139
</record>
140140

141141
<record id="area_lka_colombo_slave_island" model="spp.area">
142142
<field name="draft_name">Slave Island</field>
143143
<field name="code">LK-1103-003</field>
144-
<field name="parent_id" ref="area_lka_colombo_ds"/>
145-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
144+
<field name="parent_id" ref="area_lka_colombo_ds" />
145+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
146146
</record>
147147

148148
<!-- ========== GN DIVISIONS (Dehiwala DS) ========== -->
149149
<record id="area_lka_dehiwala_gn" model="spp.area">
150150
<field name="draft_name">Dehiwala East</field>
151151
<field name="code">LK-1106-001</field>
152-
<field name="parent_id" ref="area_lka_dehiwala"/>
153-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
152+
<field name="parent_id" ref="area_lka_dehiwala" />
153+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
154154
</record>
155155

156156
<record id="area_lka_mount_lavinia_gn" model="spp.area">
157157
<field name="draft_name">Mount Lavinia</field>
158158
<field name="code">LK-1106-002</field>
159-
<field name="parent_id" ref="area_lka_dehiwala"/>
160-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
159+
<field name="parent_id" ref="area_lka_dehiwala" />
160+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
161161
</record>
162162

163163
<!-- ========== GN DIVISIONS (Galle DS) ========== -->
164164
<record id="area_lka_galle_fort" model="spp.area">
165165
<field name="draft_name">Galle Fort</field>
166166
<field name="code">LK-3109-001</field>
167-
<field name="parent_id" ref="area_lka_galle_ds"/>
168-
<field name="area_type_id" ref="area_kind_lka_gn_division"/>
167+
<field name="parent_id" ref="area_lka_galle_ds" />
168+
<field name="area_type_id" ref="area_kind_lka_gn_division" />
169169
</record>
170170
</odoo>

spp_demo/data/countries/phl/area_kinds.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8" ?>
22
<odoo noupdate="1">
33
<!-- Philippines 4-Level Administrative Hierarchy
44
Based on Philippine Standard Geographic Code (PSGC)
@@ -11,16 +11,16 @@
1111

1212
<record id="area_kind_phl_province" model="spp.area.type">
1313
<field name="name">Province</field>
14-
<field name="parent_id" ref="area_kind_phl_region"/>
14+
<field name="parent_id" ref="area_kind_phl_region" />
1515
</record>
1616

1717
<record id="area_kind_phl_municipality" model="spp.area.type">
1818
<field name="name">City/Municipality</field>
19-
<field name="parent_id" ref="area_kind_phl_province"/>
19+
<field name="parent_id" ref="area_kind_phl_province" />
2020
</record>
2121

2222
<record id="area_kind_phl_barangay" model="spp.area.type">
2323
<field name="name">Barangay</field>
24-
<field name="parent_id" ref="area_kind_phl_municipality"/>
24+
<field name="parent_id" ref="area_kind_phl_municipality" />
2525
</record>
2626
</odoo>

0 commit comments

Comments
 (0)