Skip to content

Commit 3b4b8a2

Browse files
committed
Merge branch '17.0' of https://github.com/OpenSPP/openspp-modules into spp_attendance
2 parents d5b03b7 + 0501c8e commit 3b4b8a2

File tree

3 files changed

+61
-5
lines changed

3 files changed

+61
-5
lines changed

spp_farmer_registry_base/models/agricultural_activity.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ class AgriculturalActivity(models.Model):
3131
],
3232
)
3333

34-
species_id = fields.Many2one("spp.farm.species", string="Species", domain="[('species_type', '=', activity_type)]")
34+
species_id = fields.Many2one(
35+
"spp.farm.species", ondelete="restrict", string="Species", domain="[('species_type', '=', activity_type)]"
36+
)
3537

3638
@api.onchange("crop_farm_id")
3739
def _onchange_farm_id(self):

spp_farmer_registry_demo/models/generate_farmer_data.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from odoo import Command, api, fields, models
99

10+
from odoo.addons.queue_job.delay import group
1011
from odoo.addons.spp_base_demo.locale_providers import create_faker
1112

1213
from .. import tools
@@ -57,16 +58,52 @@ class SPPGenerateFarmerData(models.Model):
5758
required=True,
5859
)
5960

61+
locked = fields.Boolean(default=False)
62+
locked_reason = fields.Char(readonly=True)
63+
64+
GROUPS_PER_BATCH = 100
65+
6066
def generate_sample_data(self):
61-
batches = math.ceil(self.num_groups / 1000)
67+
batches = math.ceil(self.num_groups / self.GROUPS_PER_BATCH)
68+
69+
self.locked = True
70+
self.locked_reason = "Generating Sample Data"
71+
num_groups = self.num_groups
72+
73+
jobs = []
6274

6375
for _ in range(0, batches):
76+
jobs.append(self.delayable()._generate_sample_data(res=self, num_groups=num_groups))
77+
batch_num_groups = min(num_groups, self.GROUPS_PER_BATCH)
78+
num_groups -= batch_num_groups
6479
# self.with_delay()._generate_sample_data(res_id=self.id)
65-
self._generate_sample_data(res=self)
80+
# self._generate_sample_data(res=self)
81+
82+
main_job = group(*jobs)
83+
main_job.on_done(self.delayable()._mark_done())
84+
main_job.delay()
85+
86+
def _mark_done(self):
87+
self.ensure_one()
88+
self.locked = False
89+
self.locked_reason = ""
90+
91+
def refresh_page(self):
92+
"""
93+
The function `refresh_page` returns a dictionary with the type and tag values to reload the
94+
page.
95+
:return: The code is returning a dictionary with two key-value pairs. The "type" key has the
96+
value "ir.actions.client" and the "tag" key has the value "reload".
97+
"""
98+
return {
99+
"type": "ir.actions.client",
100+
"tag": "reload",
101+
}
66102

67103
@api.model
68104
def _generate_sample_data(self, **kwargs):
69105
res = kwargs.get("res")
106+
num_groups = kwargs.get("num_groups")
70107

71108
kind_farm_id = self.env.ref("spp_farmer_registry_base.kind_farm").id
72109

@@ -77,7 +114,7 @@ def _generate_sample_data(self, **kwargs):
77114
sex_choices = [option.value for option in options]
78115
sex_choice_range = sex_choices * 50
79116

80-
num_groups = min(res.num_groups, 1000)
117+
num_groups = min(num_groups, self.GROUPS_PER_BATCH)
81118

82119
for i in range(0, num_groups):
83120
group_id = res._generate_group_data(i, fake, sex_choice_range, kind_farm_id)

spp_farmer_registry_demo/views/generate_farmer_data_view.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,25 @@
2424
<header>
2525
<field name="state" widget="statusbar" statusbar_visible="draft,generate" />
2626
</header>
27+
<field name="locked" invisible="True" />
28+
<div
29+
class="alert alert-warning text-center o_form_header"
30+
role="status"
31+
invisible="not locked"
32+
>
33+
<span>Warning: Operation in progress: </span>
34+
<field name="locked_reason" class="o_stat_value" />
35+
<button
36+
name="refresh_page"
37+
type="object"
38+
class="btn_warning"
39+
icon="fa-refresh"
40+
title="Refresh Page"
41+
string="Refresh"
42+
/>
43+
</div>
2744
<sheet>
28-
<div class="oe_button_box" name="button_box">
45+
<div class="oe_button_box" name="button_box" invisible="locked">
2946
<button
3047
type="object"
3148
class="oe_stat_button"

0 commit comments

Comments
 (0)