Exemple #1
0
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()
Exemple #2
0
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()
Exemple #4
0
    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
Exemple #5
0
    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)
Exemple #6
0
def get_users_region_qs(info):
    return Region.get_for(info.context.user).defer('geo_options')
Exemple #7
0
    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)