3
3
import math
4
4
import random
5
5
6
+ from datetime import datetime , timedelta , date
6
7
from odoo import api , fields , models
7
8
8
9
from ..tools import generate_polygon , random_location_in_laos
357
358
"implive" ,
358
359
]
359
360
361
+ EVENT_DATA_TYPES = [
362
+ "spp.event.gen.info" ,
363
+ "spp.event.poverty.indicator" ,
364
+ "spp.event.hh.labor" ,
365
+ "spp.event.hh.assets" ,
366
+ "spp.event.agri.land.ownership.use" ,
367
+ "spp.event.food.security" ,
368
+ "spp.event.agri.ws" ,
369
+ "spp.event.agri.tech.ws" ,
370
+ "spp.event.agri.ds" ,
371
+ "spp.event.agri.ds.hot" ,
372
+ "spp.event.permanent.crops" ,
373
+ "spp.event.livestock.farming" ,
374
+ "spp.event.inc.agri" ,
375
+ "spp.event.inc.non.agri" ,
376
+ "spp.event.wash.ind" ,
377
+ "spp.event.hh.resilience.index" ,
378
+ "spp.event.min.dietary.score" ,
379
+ ]
360
380
361
381
class SPPLaosGenerateFarmerData (models .Model ):
362
382
_name = "spp.laos.generate.farmer.data"
@@ -391,7 +411,7 @@ def _generate_sample_data(self, **kwargs):
391
411
# Generate Farmer Group data
392
412
farmer_group_name = f"Farmer Group { random .choice (FARMER_GROUP_NAMES )} "
393
413
farmer_group_id = res ._generate_group_data (i , kind_farmer_group_id , farmer_group_name )
394
- self ._generate_event_data_cycle (farmer_group_id )
414
+ self ._generate_event_datas (farmer_group_id )
395
415
land_record_id = res ._generate_land_record_record (farmer_group_id )
396
416
farmer_group_id .farm_land_rec_id = land_record_id .id
397
417
farmer_group_id .coordinates = land_record_id .land_coordinates
@@ -402,7 +422,7 @@ def _generate_sample_data(self, **kwargs):
402
422
# Generate Farm data
403
423
group_name = f"{ random .choice (NAMES )} Farm"
404
424
group_id = res ._generate_group_data (j , kind_farm_id , group_name )
405
- self ._generate_event_data_cycle (group_id )
425
+ self ._generate_event_datas (group_id )
406
426
land_record_id = res ._generate_land_record_record (group_id )
407
427
group_id .farm_land_rec_id = land_record_id .id
408
428
group_id .coordinates = land_record_id .land_coordinates
@@ -473,6 +493,29 @@ def _generate_farm_activity(self, group_id, product):
473
493
}
474
494
)
475
495
496
+ def _generate_random_phone_number (self ):
497
+ # Generates a random phone number of the format: (XXX) XXX-XXXX
498
+ area_code = random .randint (100 , 999 )
499
+ exchange_code = random .randint (100 , 999 )
500
+ subscriber_number = random .randint (1000 , 9999 )
501
+
502
+ phone_number = f"({ area_code } ) { exchange_code } -{ subscriber_number } "
503
+ return phone_number
504
+
505
+ def _generate_random_date (self , start_date , end_date ):
506
+ """
507
+ Generates a random date between start_date and end_date.
508
+
509
+ :param start_date: A datetime.date object representing the start date.
510
+ :param end_date: A datetime.date object representing the end date.
511
+ :return: A string representing a random date between start_date and end_date in the format 'YYYY-MM-DD'.
512
+ """
513
+ time_between_dates = end_date - start_date
514
+ days_between_dates = time_between_dates .days
515
+ random_number_of_days = random .randrange (days_between_dates )
516
+ random_date = start_date + timedelta (days = random_number_of_days )
517
+ return random_date
518
+
476
519
def _create_event_data (self , model_name , group_id ):
477
520
vals_list = {
478
521
"model" : model_name ,
@@ -481,6 +524,53 @@ def _create_event_data(self, model_name, group_id):
481
524
event_id = self .env ["spp.event.data" ].create (vals_list )
482
525
return event_id
483
526
527
+ def _generate_event_datas (self , registrant ):
528
+ for event_data in EVENT_DATA_TYPES :
529
+ event_id = self ._create_event_data (event_data , registrant )
530
+ if event_data == "spp.event.gen.info" :
531
+ self ._generate_event_gen_info (event_id )
532
+
533
+ def _generate_event_gen_info (self , event_id ):
534
+ ethnic_group = self .env ["spp.ethnic.group" ].search ([]).mapped ("id" )
535
+ # land_record_id = self._generate_land_record_record(event_id.partner_id)
536
+ vals_list = {
537
+ "interviewees_name" : f"{ random .choice (NAMES )} " ,
538
+ "ethnic_group_id" : random .choice (ethnic_group ),
539
+ "sex" : str (random .randint (1 , 2 )),
540
+ "marital_status" : str (random .randint (1 , 4 )),
541
+ "age" : random .randint (20 , 80 ),
542
+ "educational_qualification" : str (random .randint (1 , 6 )),
543
+ "head_of_household" : str (random .randint (1 , 2 )),
544
+ "poverty_status" : str (random .randint (1 , 3 )),
545
+ # "gps_location": land_record_id.land_coordinates,
546
+ "phone_number1" : self ._generate_random_phone_number (),
547
+ "phone_number2" : self ._generate_random_phone_number (),
548
+ "participating" : str (random .randint (1 , 2 )),
549
+ "date_participated" : self ._generate_random_date (date .today () - timedelta (days = 50 ), date .today ()),
550
+ "grp_act_supported_by_project_agri" : str (random .randint (0 , 16 )),
551
+ "grp_act_supported_by_project_livestock_fisheries" : random .choice (["0" , "19" , "20" , "21" ]),
552
+ "tech_supported_by_project_org_fert" : str (random .randint (1 , 2 )),
553
+ "tech_supported_by_project_greenhouse" : str (random .randint (1 , 2 )),
554
+ "tech_supported_by_project_mulching" : str (random .randint (1 , 2 )),
555
+ "tech_supported_by_project_gravity_irrig" : str (random .randint (1 , 2 )),
556
+ "tech_supported_by_project_water_pump" : str (random .randint (1 , 2 )),
557
+ "tech_supported_by_project_drip_irrig" : str (random .randint (1 , 2 )),
558
+ "tech_supported_by_project_drip_sprinkler" : str (random .randint (1 , 2 )),
559
+ "tech_supported_by_project_machine_harvest" : str (random .randint (1 , 2 )),
560
+ "tech_supported_by_project_dry_processing" : str (random .randint (1 , 2 )),
561
+ "tech_supported_by_project_agri_oth" : str (random .randint (1 , 2 )),
562
+ "tech_supported_by_project_concent_feed" : str (random .randint (1 , 2 )),
563
+ "tech_supported_by_project_grass_planting" : str (random .randint (1 , 2 )),
564
+ "tech_supported_by_project_vaccination" : str (random .randint (1 , 2 )),
565
+ "tech_supported_by_project_livestock_oth" : random .choice (FARMER_GROUP_NAMES ),
566
+ "irrigation_area_supported" : random .randint (1 , 999 ),
567
+ "participation_oth_proj" : str (random .randint (1 , 2 )),
568
+ "hhq_number_baseline_survey" : random .randint (1 , 999 ),
569
+ }
570
+
571
+ event = self .env ["spp.event.gen.info" ].create (vals_list )
572
+ event_id .res_id = event .id
573
+
484
574
def _generate_event_data_cycle (self , group_id ):
485
575
event_id = self ._create_event_data ("spp.event.cycle" , group_id )
486
576
vals = self ._generate_event_data_vals ()
0 commit comments