nursinghomes.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:correctiv-nursinghomes 作者: correctiv 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号