6
6
import random
7
7
8
8
from dateutil .relativedelta import relativedelta
9
- from faker import Faker
10
9
11
10
from odoo import api , fields , models
12
11
13
12
from odoo .addons .queue_job .delay import group
13
+ from odoo .addons .spp_base_demo .locale_providers import create_faker
14
14
15
15
_logger = logging .getLogger (__name__ )
16
16
17
17
18
18
class OpenG2PGenerateData (models .Model ):
19
19
_name = "g2p.generate.data"
20
20
21
+ LOCALE_SELECTION = [
22
+ ("en_US" , "United States (English)" ),
23
+ ("en_KE" , "Kenya (English)" ),
24
+ ("sw_KE" , "Kenya (Swahili)" ),
25
+ ("si_LK" , "Sri Lanka (Sinhala)" ),
26
+ ("ta_LK" , "Sri Lanka (Tamil)" ),
27
+ ("lo_LA" , "Laos (Lao)" ),
28
+ ]
29
+
21
30
name = fields .Char ()
22
31
num_groups = fields .Integer ("Number of Groups" , default = 1 )
23
32
state = fields .Selection (
@@ -27,6 +36,11 @@ class OpenG2PGenerateData(models.Model):
27
36
],
28
37
default = "draft" ,
29
38
)
39
+ locale = fields .Selection (
40
+ LOCALE_SELECTION ,
41
+ default = "en_KE" ,
42
+ required = True ,
43
+ )
30
44
31
45
def generate_sample_data (self ):
32
46
batches = math .ceil (self .num_groups / 1000 )
@@ -45,25 +59,7 @@ def _generate_sample_data(self, **kwargs):
45
59
"""
46
60
res_id = kwargs .get ("res_id" )
47
61
res = self .browse (res_id )
48
- locales = [
49
- # "cs_CZ",
50
- # "en_US",
51
- "id_ID" ,
52
- # "de_CH",
53
- # "ar_AA",
54
- # "de_DE",
55
- # "en_GB",
56
- # "en_IE",
57
- # "en_TH",
58
- # "es_ES",
59
- # "es_MX",
60
- # "fr_FR",
61
- # "hi_IN",
62
- # "hr_HR",
63
- # "it_IT",
64
- # "zh_CN",
65
- ]
66
- fake = Faker (locales )
62
+ fake = create_faker (res .locale )
67
63
68
64
# sex_choice_range = ["Female", "Male"] * 50 + ["Other"]
69
65
sex_choices = self .env ["gender.type" ].search ([]).mapped ("value" )
@@ -90,21 +86,16 @@ def _generate_sample_data(self, **kwargs):
90
86
center_area_ids = center_areas .mapped ("id" )
91
87
92
88
for i in range (0 , num_groups ):
93
- locale = random .choice (locales )
94
89
group_size = random .choice (group_size_range )
95
- last_name = fake [ locale ] .last_name ()
90
+ last_name = fake .last_name ()
96
91
97
- registration_date = (
98
- fake [locale ]
99
- .date_between_dates (
100
- date_start = datetime .datetime .now () - relativedelta (weeks = 4 ),
101
- date_end = datetime .datetime .now (),
102
- )
103
- .isoformat ()
104
- )
92
+ registration_date = fake .date_between_dates (
93
+ date_start = datetime .datetime .now () - relativedelta (weeks = 4 ),
94
+ date_end = datetime .datetime .now (),
95
+ ).isoformat ()
105
96
106
97
head = res ._generate_individual_data (
107
- fake [ locale ] ,
98
+ fake ,
108
99
last_name ,
109
100
sex_choice_range ,
110
101
["A" , "E" ],
@@ -138,10 +129,10 @@ def _generate_sample_data(self, **kwargs):
138
129
"is_registrant" : True ,
139
130
"registration_date" : registration_date ,
140
131
"kind" : group_kind ,
141
- "street" : fake [ locale ] .street_address (),
142
- "street2" : fake [ locale ] .street_name (),
143
- "city" : fake [ locale ] .city (),
144
- "zip" : fake [ locale ] .postcode (),
132
+ "street" : fake .street_address (),
133
+ "street2" : fake .street_name (),
134
+ "city" : fake .city (),
135
+ "zip" : fake .postcode (),
145
136
"area_id" : random .choice (center_area_ids ),
146
137
"bank_ids" : bank_ids ,
147
138
}
@@ -153,7 +144,7 @@ def _generate_sample_data(self, **kwargs):
153
144
154
145
for i in range (group_size - 1 ):
155
146
data = res ._generate_individual_data (
156
- fake [ locale ] ,
147
+ fake ,
157
148
last_name ,
158
149
sex_choice_range ,
159
150
age_group_range ,
0 commit comments