Example #1
0
 def build_search_query(
         self, search_filters: models.GeonodeApiSearchFilters
 ) -> QtCore.QUrlQuery:
     query = QtCore.QUrlQuery()
     query.addQueryItem("limit", str(self.page_size))
     query.addQueryItem("offset",
                        str((search_filters.page - 1) * self.page_size))
     if search_filters.title is not None:
         query.addQueryItem("title__icontains", search_filters.title)
     if search_filters.abstract is not None:
         query.addQueryItem("abstract__icontains", search_filters.abstract)
     if search_filters.layer_types is None:
         types = [
             models.GeonodeResourceType.VECTOR_LAYER,
             models.GeonodeResourceType.RASTER_LAYER,
         ]
     else:
         types = search_filters.layer_types
     is_vector = models.GeonodeResourceType.VECTOR_LAYER in types
     is_raster = models.GeonodeResourceType.RASTER_LAYER in types
     if is_vector:
         query.addQueryItem("type__in", "vector")
     if is_raster:
         query.addQueryItem("type__in", "raster")
     if search_filters.ordering_field is not None:
         query.addQueryItem(
             "order_by",
             (f"{'-' if search_filters.reverse_ordering else ''}"
              f"{search_filters.ordering_field}"),
         )
     return query
 def detect_wfs_version(self):
     for widget in self._widgets_to_toggle_during_connection_test:
         widget.setEnabled(False)
     current_settings = self.get_connection_settings()
     query = QtCore.QUrlQuery()
     query.addQueryItem("service", "WFS")
     query.addQueryItem("request", "GetCapabilities")
     url = QtCore.QUrl(f"{current_settings.base_url}/gs/ows")
     url.setQuery(query)
     self.discovery_task = network.NetworkRequestTask(
         [network.RequestToPerform(url)],
         network_task_timeout=current_settings.network_requests_timeout,
         authcfg=current_settings.auth_config,
         description="Detect WFS version",
     )
     self.discovery_task.task_done.connect(
         self.handle_wfs_version_detection_test)
     utils.show_message(self.bar,
                        tr("Detecting WFS version..."),
                        add_loading_widget=True)
     qgis.core.QgsApplication.taskManager().addTask(self.discovery_task)
Example #3
0
 def build_search_query(
         self, search_filters: models.GeonodeApiSearchFilters
 ) -> QtCore.QUrlQuery:
     query = QtCore.QUrlQuery()
     query.addQueryItem("page", str(search_filters.page))
     query.addQueryItem("page_size", str(self.page_size))
     if search_filters.title is not None:
         query.addQueryItem("filter{title.icontains}", search_filters.title)
     if search_filters.abstract is not None:
         query.addQueryItem("filter{abstract.icontains}",
                            search_filters.abstract)
     if search_filters.keyword is not None:
         query.addQueryItem("filter{keywords.name.icontains}",
                            search_filters.keyword)
     if search_filters.topic_category is not None:
         query.addQueryItem(
             "filter{category.identifier}",
             search_filters.topic_category.name.lower(),
         )
     if search_filters.temporal_extent_start is not None:
         query.addQueryItem(
             "filter{temporal_extent_start.gte}",
             search_filters.temporal_extent_start.toString(
                 QtCore.Qt.ISODate),
         )
     if search_filters.temporal_extent_end is not None:
         query.addQueryItem(
             "filter{temporal_extent_end.lte}",
             search_filters.temporal_extent_end.toString(QtCore.Qt.ISODate),
         )
     if search_filters.publication_date_start is not None:
         query.addQueryItem(
             "filter{date.gte}",
             search_filters.publication_date_start.toString(
                 QtCore.Qt.ISODate),
         )
     if search_filters.publication_date_end is not None:
         query.addQueryItem(
             "filter{date.lte}",
             search_filters.publication_date_end.toString(
                 QtCore.Qt.ISODate),
         )
     # TODO revisit once the support for spatial extent is available on
     # GeoNode API V2
     if (search_filters.spatial_extent is not None
             and not search_filters.spatial_extent.isNull()):
         pass
     if search_filters.layer_types is None:
         types = [
             models.GeonodeResourceType.VECTOR_LAYER,
             models.GeonodeResourceType.RASTER_LAYER,
         ]
     else:
         types = list(search_filters.layer_types)
     is_vector = models.GeonodeResourceType.VECTOR_LAYER in types
     is_raster = models.GeonodeResourceType.RASTER_LAYER in types
     if is_vector:
         query.addQueryItem("filter{subtype.in}", "vector")
     if is_raster:
         query.addQueryItem("filter{subtype.in}", "raster")
     if search_filters.ordering_field is not None:
         query.addQueryItem(
             "sort[]",
             f"{'-' if search_filters.reverse_ordering else ''}name")
     return query
Example #4
0
 def _build_search_query(
     self, search_params: models.GeonodeApiSearchFilters
 ) -> QtCore.QUrlQuery:
     query = QtCore.QUrlQuery()
     query.addQueryItem("page", str(search_params.page))
     query.addQueryItem("page_size", str(search_params.page_size))
     if search_params.title is not None:
         query.addQueryItem("filter{title.icontains}", search_params.title)
     if search_params.abstract is not None:
         query.addQueryItem("filter{abstract.icontains}", search_params.abstract)
     if search_params.selected_keyword is not None:
         query.addQueryItem(
             "filter{keywords.name.icontains}", search_params.selected_keyword
         )
     if search_params.topic_category is not None:
         query.addQueryItem(
             "filter{category.identifier}", search_params.topic_category
         )
     if search_params.temporal_extent_start is not None:
         query.addQueryItem(
             "filter{temporal_extent_start.gte}",
             search_params.temporal_extent_start.toString(QtCore.Qt.ISODate),
         )
     if search_params.temporal_extent_end is not None:
         query.addQueryItem(
             "filter{temporal_extent_end.lte}",
             search_params.temporal_extent_end.toString(QtCore.Qt.ISODate),
         )
     if search_params.publication_date_start is not None:
         query.addQueryItem(
             "filter{date.gte}",
             search_params.publication_date_start.toString(QtCore.Qt.ISODate),
         )
     if search_params.publication_date_end is not None:
         query.addQueryItem(
             "filter{date.lte}",
             search_params.publication_date_end.toString(QtCore.Qt.ISODate),
         )
     # TODO revisit once the support for spatial extent is available on
     # GeoNode API V2
     if (
         search_params.spatial_extent is not None
         and not search_params.spatial_extent.isNull()
     ):
         pass
     if search_params.layer_types is None:
         types = [
             models.GeonodeResourceType.VECTOR_LAYER,
             models.GeonodeResourceType.RASTER_LAYER,
             models.GeonodeResourceType.MAP,
         ]
     else:
         types = list(search_params.layer_types)
     is_vector = models.GeonodeResourceType.VECTOR_LAYER in types
     is_raster = models.GeonodeResourceType.RASTER_LAYER in types
     is_map = models.GeonodeResourceType.MAP in types
     if is_vector and is_raster:
         pass
     elif is_vector:
         query.addQueryItem("filter{subtype}", "vector")
     elif is_raster:
         query.addQueryItem("filter{subtype}", "raster")
     else:
         raise NotImplementedError
     if search_params.ordering_field is not None:
         ordering_field_value = self.get_ordering_filter_name(
             search_params.ordering_field,
             reverse_sort=search_params.reverse_ordering,
         )
         query.addQueryItem("sort[]", ordering_field_value)
     return query