コード例 #1
0
ファイル: searcher.py プロジェクト: candela-it/sunlumo
    def search(self, params):
        # self.check_required_params(params)

        limit = 20
        search_string = params.get('search_string').strip()

        search_layers = params.get('search_layers')

        similar_results = (
            IndexData.objects
            # .filter(project=settings.QGIS_PROJECT_ID)
            .filter(index__name__in=search_layers)
        )

        if search_string.startswith('='):
            similar_results = similar_results.filter(
                text=search_string[1:].upper()
            )
        elif search_string.startswith('^'):
            similar_results = similar_results.filter(
                text__startswith=search_string[1:].upper()
            )
        else:
            similar_results = similar_results.extra(
                where=['text LIKE %s'],
                params=[self._prepare_search_string(search_string)]
            )

        # groupby (itertools) requires and ordered set
        similar_results = similar_results.order_by('index_id')[:limit]

        with change_directory(self.project_root):
            return self._get_features_for_layers(similar_results)
コード例 #2
0
ファイル: reindex.py プロジェクト: candela-it/sunlumo
    def handle(self, *args, **options):
        project = Project.objects.get(pk=settings.SUNLUMO_PROJECT_ID)

        sunlumo_project = SunlumoProject(project.project_path)
        with transaction.atomic():
            with change_directory(sunlumo_project.project_root):
                # get search indices
                indices = IndexSpecification.objects.filter(
                    project_id=settings.SUNLUMO_PROJECT_ID
                )
                for index in indices:
                    l_id = index.layer_id
                    qgs_layer = sunlumo_project.layerRegistry.mapLayer(l_id)
                    qgs_layer.dataProvider().setEncoding('UTF-8')

                    index_features(qgs_layer.getFeatures(), index)