Coverage for apps/report/bulk_import/most_vulnerable_children_indicator.py : 21%
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
4from report.models import MostVulnerableChildrenIndicator
5from report.utils import convert_to_int
7from .common import get_or_create_project
10def extract(csv_data, _):
11 import_data = defaultdict(lambda: defaultdict(dict))
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 }
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()