def set_regions(apps, schema_editor): with open('geo.txt', 'r', encoding='utf-8') as f: for line in f.readlines(): data = line.split('%%') print('-' * 20, data[0], data[1].replace('\n', '')) region = Region( title=data[0], code=data[1].replace('\n', ''), ) region.save()
def fill_dicts(): ContainerType(title="Обычный").save() ContainerType(title="Увеличенный").save() Region(title="Москва").save() Region(title="Московская область").save() Region(title="Ленинградская область").save() City(title="Москва", region_id=1).save() Station(title="Ярославский вокзал", city_id=1) Station(title="Ленинградский вокзал", city_id=1) City(title="Коломна", region_id=1).save() Station(title="Коломна", city_id=2).save()
def update_regions(self, input_dir): """Update Region model""" regions = {x.id: x for x in Region.objects.all()} json_regions = json.loads( open('{}/regions.json'.format(input_dir)).read()) for region in json_regions: if region['id'] not in regions: new_region = Region(id=region['id'], name=region['name'], shortcut=region['shortcut']) new_region.save()
def setUp(self): super().setUp() # Create a dummy region region = Region(code='NPL', title='Nepal') region.save() # Load a shape file from a test shape file and create admin level 0 admin_level0 = AdminLevel(region=region, parent=None, title='Zone', name_prop='ZONE_NAME', code_prop='HRPCode') shape_data = open( os.path.join(settings.TEST_DIR, 'nepal-geo-json/admin_level2.geo.json'), 'rb', ).read() admin_level0.geo_shape_file = File.objects.create( title='al2', file=SimpleUploadedFile( name='al2.geo.json', content=shape_data, ) ) admin_level0.save() # Load admin level 1 similarly admin_level1 = AdminLevel(region=region, parent=None, title='District', name_prop='DISTRICT', code_prop='HRPCode', parent_name_prop='ZONE', parent_code_prop='HRParent') shape_data = open( os.path.join(settings.TEST_DIR, 'nepal-geo-json/admin_level3.geo.json'), 'rb', ).read() admin_level1.geo_shape_file = File.objects.create( title='al3', file=SimpleUploadedFile( name='al3.geo.json', content=shape_data, ) ) admin_level1.parent = admin_level0 admin_level1.save() self.region = region self.admin_level0 = admin_level0 self.admin_level1 = admin_level1
def get(self, request, version=None): project_query = request.GET.get('project') fields_query = request.GET.get('fields') projects = None if project_query: projects = Project.get_for( request.user).filter(id__in=project_query.split(',')) fields = None if fields_query: fields = fields_query.split(',') options = {} def _filter_by_projects(qs, projects): for p in projects: qs = qs.filter(project=p) return qs if (fields is None or 'regions' in fields): if projects: regions1 = _filter_by_projects(Region.objects, projects) else: regions1 = Region.objects.none() regions2 = Region.get_for(request.user).distinct() regions = regions1.union(regions2) options['regions'] = [{ 'key': region.id, 'value': region.get_verbose_title(), } for region in regions.distinct()] if (fields is None or 'user_groups' in fields): if projects: user_groups1 = _filter_by_projects(UserGroup.objects, projects) else: user_groups1 = UserGroup.objects.none() user_groups2 = UserGroup.get_modifiable_for(request.user)\ .distinct() user_groups = user_groups1.union(user_groups2) options['user_groups'] = [{ 'key': user_group.id, 'value': user_group.title, } for user_group in user_groups.distinct()] return response.Response(options)
def get_users_region_qs(info): return Region.get_for(info.context.user).defer('geo_options')
def get(self, request, version=None): project_query = request.GET.get('project') fields_query = request.GET.get('fields') projects = None if project_query: projects = Project.get_for(request.user).filter( id__in=project_query.split(',') ) fields = None if fields_query: fields = fields_query.split(',') options = { 'project_organization_types': [ { 'key': s[0], 'value': s[1], } for s in ProjectOrganization.Type.choices ], } def _filter_by_projects(qs, projects): for p in projects: qs = qs.filter(project=p) return qs if (fields is None or 'regions' in fields): if projects: project_regions = _filter_by_projects(Region.objects, projects).distinct() else: project_regions = Region.objects.none() user_regions = Region.get_for(request.user) regions = Region.objects.filter(id__in=(project_regions | user_regions).values('id')).distinct() # regions = regions1.union(regions2).distinct() options['regions'] = [ { 'key': region.id, 'value': region.get_verbose_title(), } for region in regions ] if (fields is None or 'user_groups' in fields): if projects: project_user_groups = _filter_by_projects(UserGroup.objects, projects).distinct() else: project_user_groups = UserGroup.objects.none() user_user_groups = UserGroup.get_modifiable_for(request.user)\ .distinct() user_groups = UserGroup.objects.filter(id__in=(project_user_groups | user_user_groups).values('id')).distinct() # user_groups = user_groups1.union(user_groups2) options['user_groups'] = user_groups.distinct().annotate( key=models.F('id'), value=models.F('title') ).values('key', 'value') if (fields is None or 'involvement' in fields): options['involvement'] = [ {'key': 'my_projects', 'value': 'My projects'}, {'key': 'not_my_projects', 'value': 'Not my projects'} ] options['project_status'] = [ { 'key': value, 'value': label } for value, label in Project.Status.choices ] return response.Response(options)