Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from collections import defaultdict 

2from dateutil.parser import parse as date_parse 

3 

4from report.models import MostVulnerableChildrenIndicator 

5from report.utils import convert_to_int 

6 

7from .common import get_or_create_project 

8 

9 

10def extract(csv_data, _): 

11 import_data = defaultdict(lambda: defaultdict(dict)) 

12 

13 # Collect Data 

14 for row in csv_data: 

15 pj_translation = row['Project'] 

16 pj_number = convert_to_int(pj_translation.split('-')[0]) 

17 p_date = date_parse(row['Textbox271'].split(':')[1].strip()).date() 

18 import_data[pj_number][p_date] = { 

19 'mvc_count': row['MVC_Count'], 

20 'rc_not_vc_count': row['RC_not_VC'], 

21 'rc_count': row['RC_Count'], 

22 } 

23 

24 # Save Data to DB 

25 for pj_number, data in import_data.items(): 

26 project = get_or_create_project(pj_number) 

27 for p_date, counts in data.items(): 

28 obj, _ = MostVulnerableChildrenIndicator.objects.get_or_create( 

29 project=project, 

30 date=p_date, 

31 ) 

32 for field, count in counts.items(): 

33 setattr(obj, field, convert_to_int(count, 0)) 

34 obj.save()