def assign_rheinlandpfalz(self, *args, **options):
rp_state = State.objects.get(name='Rheinland-Pfalz')
excel_file = pd.ExcelFile(options['filename'])
df = excel_file.parse('Rheinland-Pfalz')
assigned = defaultdict(list)
for _, row in df.iterrows():
auth = SupervisionAuthority.objects.get(state=rp_state, name=row['name'])
district_names = row[u'Landkreis-Zuständigkeit'].splitlines()
for district_name in district_names:
only = None
if '|' in district_name:
district_name, only = district_name.split('|')
only = only.split(',')
districts = District.objects.filter(part_of=rp_state, name=district_name)
if len(districts) == 0:
districts = District.objects.filter(part_of=rp_state, name__contains=district_name)
if len(districts) == 0:
districts = District.objects.filter(part_of=rp_state, name__contains=district_name.split()[0])
if len(districts) == 0:
districts = District.objects.filter(part_of=rp_state, name__istartswith=re.sub('\W', '', district_name))
if len(districts) > 1:
if 'Kreis' in district_name:
districts = districts.filter(kind_detail__contains='Landkreis')
if 'Stadt' in district_name:
districts = districts.filter(kind_detail__contains='Stadt')
if len(districts) != 1:
print(districts)
print(u'District not one: %s' % district_name)
continue
assigned[auth].append((districts[0], only))
for auth, district_list in assigned.items():
for district, only in district_list:
if only is None:
NursingHome.objects.filter(state=rp_state, district=district, supervision_authority__isnull=True).update(supervision_authority=auth)
continue
for muni_name in only:
muni_name = muni_name.strip()
munis = Municipality.objects.filter(part_of=district, name__contains=muni_name)
if len(munis) > 1:
munis = Municipality.objects.filter(part_of=district, name=muni_name)
if len(munis) != 1:
print('Did not find %s' % muni_name)
continue
muni = munis[0]
NursingHome.objects.filter(state=rp_state, district=district, supervision_authority__isnull=True, geo__coveredby=muni.geom).update(supervision_authority=auth)
评论列表
文章目录