Coverage for apps/report/bulk_import/language_people_group_disability.py : 96%
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 report.models import LanguagePeopleGroupDisability
2from report.utils import convert_to_int
4from .common import get_or_create_project
7def increment(obj, keys, value=1):
8 _dict = obj
9 for key in keys[:-1]:
10 if _dict.get(key) is None:
11 _dict[key] = {}
12 _dict = _dict[key]
13 _dict[keys[-1]] = _dict.get(keys[-1], 0) + value
16def extract(csv_data, generated_on):
17 import_data = {}
19 # Collect Data
20 for row in csv_data:
21 pj_number = convert_to_int(row['ProjectID'])
22 language = row['Language']
23 people_group = row['PeopleGroup']
24 disability = row['Disability']
26 increment(
27 import_data,
28 (pj_number, language, people_group, disability)
29 )
31 # Clear database for given date
32 LanguagePeopleGroupDisability.objects.filter(date=generated_on).all().delete()
34 # Save Data to DB
35 for pj_number, language_data in import_data.items():
36 project = get_or_create_project(pj_number)
37 for language, people_group_data in language_data.items():
38 for people_group, disability_data in people_group_data.items():
39 for disability, count in disability_data.items():
40 if count == 0: 40 ↛ 41line 40 didn't jump to line 41, because the condition on line 40 was never true
41 continue
42 lpgd, _ = LanguagePeopleGroupDisability.objects.get_or_create(
43 project=project,
44 date=generated_on,
45 language=language,
46 people_group=people_group,
47 disability=disability,
48 )
49 lpgd.count = count
50 lpgd.save()