Skip to content

Commit

Permalink
69 api ignores filter params (#72)
Browse files Browse the repository at this point in the history
* filter_class -> filterset_class does the trick (hopefully)

* tests for shapes-filter

* minor
  • Loading branch information
csae8092 authored Jul 27, 2024
1 parent f33f982 commit f894b93
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 21 deletions.
1 change: 1 addition & 0 deletions histogis/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
CRISPY_TEMPLATE_PACK = "bootstrap5"

REST_FRAMEWORK = {
"DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"],
"DEFAULT_PERMISSION_CLASSES": (
"rest_framework.permissions.IsAuthenticatedOrReadOnly",
),
Expand Down
25 changes: 10 additions & 15 deletions shps/api_views.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import coreapi
import coreschema
from dateutil.parser import parse
import rest_framework
from django.contrib.gis.geos import Point
from django_filters.rest_framework import DjangoFilterBackend

from rest_framework.schemas import AutoSchema
from rest_framework import generics
from rest_framework import viewsets
from rest_framework.filters import OrderingFilter
from rest_framework.pagination import PageNumberPagination
from rest_framework_gis.pagination import GeoJsonPagination
from django_filters import rest_framework as df_rest_framework

from .models import TempSpatial, Source
from .filters import TempSpatialListFilter
from .filters import TempSpatialListFilter, SourceListFilter
from .api_serializers import TempSpatialSerializer, SourceSerializer, SimpleSerializer


Expand All @@ -34,12 +35,8 @@ class TempSpatialViewSet(viewsets.ModelViewSet):
queryset = TempSpatial.objects.all()
serializer_class = TempSpatialSerializer
pagination_class = StandardResultsSetPagination
filter_backends = (df_rest_framework.DjangoFilterBackend,)
filter_class = TempSpatialListFilter
renderer_classes = (
rest_framework.renderers.BrowsableAPIRenderer,
rest_framework.renderers.JSONRenderer,
)
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_class = TempSpatialListFilter


class SimpleViewSet(viewsets.ModelViewSet):
Expand All @@ -50,12 +47,8 @@ class SimpleViewSet(viewsets.ModelViewSet):
queryset = TempSpatial.objects.all()
serializer_class = SimpleSerializer
pagination_class = SimpledResultsSetPagination
filter_backends = (df_rest_framework.DjangoFilterBackend,)
filter_class = TempSpatialListFilter
renderer_classes = (
rest_framework.renderers.BrowsableAPIRenderer,
rest_framework.renderers.JSONRenderer,
)
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_class = TempSpatialListFilter


class SourceViewSet(viewsets.ModelViewSet):
Expand All @@ -65,6 +58,8 @@ class SourceViewSet(viewsets.ModelViewSet):

queryset = Source.objects.all()
serializer_class = SourceSerializer
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_class = SourceListFilter


class TemporalizedSpatialQuery(generics.ListAPIView):
Expand Down
3 changes: 1 addition & 2 deletions shps/filters.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import django_filters
from django.db.models import Q
from rest_framework_gis.filterset import GeoFilterSet
from rest_framework_gis.filters import GeometryFilter

from vocabs.models import SkosConcept
Expand All @@ -21,7 +20,7 @@ class Meta:
]


class TempSpatialListFilter(GeoFilterSet):
class TempSpatialListFilter(django_filters.FilterSet):
all_name = django_filters.CharFilter(
method="all_name_filter",
label="Name",
Expand Down
11 changes: 11 additions & 0 deletions shps/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,14 @@ def test_007_where_was(self):
params = {"lat": "48.36", "lng": "14.3", "when": "187110-01-01"}
r = client.get(url, params)
self.assertTrue(r.json()["features"])

def test_008_shps_api_filters(self):
url = "/api/tempspatial/"
params = {
"name": "Linz",
}
r = client.get(url)
all_shapes = r.json()["count"]
r = client.get(url, params)
some_shapes = r.json()["count"]
self.assertTrue(all_shapes > some_shapes)
2 changes: 1 addition & 1 deletion vocabs/api_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class SkosConceptViewSet(viewsets.ModelViewSet):
queryset = SkosConcept.objects.all()
serializer_class = SkosConceptSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = SkosConceptFilter
filterset_class = SkosConceptFilter
pagination_class = LargeResultsSetPagination

renderer_classes = tuple(api_settings.DEFAULT_RENDERER_CLASSES) + (RDFRenderer,)
20 changes: 17 additions & 3 deletions webpage/templates/webpage/partials/navbar.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,13 @@
Info
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="{% url 'webpage:staticpage' template='about' %}">About </a></li>
<li><a class="dropdown-item" href="{% url 'webpage:staticpage' template='team' %}">Team </a></li>
<li><a class="dropdown-item" href="{% url 'webpage:staticpage' template='shp-samples' %}">Shape File Samples </a></li>
<li><a class="dropdown-item" href="{% url 'webpage:staticpage' template='about' %}">About
</a></li>
<li><a class="dropdown-item" href="{% url 'webpage:staticpage' template='team' %}">Team </a>
</li>
<li><a class="dropdown-item"
href="{% url 'webpage:staticpage' template='shp-samples' %}">Shape File Samples </a>
</li>
<li>
<hr class="dropdown-divider">
</li>
Expand All @@ -42,6 +46,16 @@
{% endfor %}
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
Data
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="/api-docs/">API-Docs</a></li>
<li><a class="dropdown-item" href="/api/">API</a></li>
</ul>
</li>
</ul>
{% if user.is_authenticated %}
<a href="{% url 'webpage:user_logout' %}"><i class="bi bi-person-check"></i></a>
Expand Down

0 comments on commit f894b93

Please sign in to comment.