Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions vbos/datasets/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
from rest_framework_gis.serializers import GeoFeatureModelSerializer

from .models import (
AreaCouncil,
Cluster,
Province,
RasterDataset,
TabularDataset,
TabularItem,
Expand All @@ -17,6 +19,22 @@ class Meta:
fields = ["id", "name"]


class ProvinceSerializer(GeoFeatureModelSerializer):

class Meta:
model = Province
geo_field = "geometry"
fields = "__all__"


class AreaCouncilSerializer(GeoFeatureModelSerializer):

class Meta:
model = AreaCouncil
geo_field = "geometry"
fields = "__all__"


class RasterDatasetSerializer(serializers.ModelSerializer):
file = serializers.ReadOnlyField(source="file.file.url")
cluster = serializers.ReadOnlyField(source="cluster.name")
Expand Down
23 changes: 23 additions & 0 deletions vbos/datasets/test/test_area_council_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from django.urls.base import reverse
from rest_framework import status
from rest_framework.test import APITestCase


class TestAreaCouncilListView(APITestCase):
def test_cluster_list_view(self):
url = reverse("datasets:area-council-list", args=["TORBA"])
req = self.client.get(url)
assert req.status_code == status.HTTP_200_OK
assert req.data.get("count") == 9
assert req.data.get("features")[0]["properties"]["name"] == "East Gaua"
assert req.data.get("features")[0]["geometry"]["type"] == "MultiPolygon"

# get penama councils
url = reverse("datasets:area-council-list", args=["penama"])
req = self.client.get(url)
assert req.status_code == status.HTTP_200_OK
assert req.data.get("count") == 12
assert (
req.data.get("features")[0]["properties"]["name"] == "Central Pentecost 1"
)
assert req.data.get("features")[0]["geometry"]["type"] == "MultiPolygon"
15 changes: 15 additions & 0 deletions vbos/datasets/test/test_province_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django.urls.base import reverse
from rest_framework import status
from rest_framework.test import APITestCase

from vbos.datasets.models import Cluster


class TestProvinceListView(APITestCase):
def test_cluster_list_view(self):
self.url = reverse("datasets:province-list")
req = self.client.get(self.url)
assert req.status_code == status.HTTP_200_OK
assert req.data.get("count") == 6
assert req.data.get("features")[0]["properties"]["name"] == "MALAMPA"
assert req.data.get("features")[0]["geometry"]["type"] == "MultiPolygon"
6 changes: 6 additions & 0 deletions vbos/datasets/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
urlpatterns = [
# raster
path("cluster/", views.ClusterListView.as_view(), name="cluster-list"),
path("province/", views.ProvinceListView.as_view(), name="province-list"),
path(
"area-council/<str:province>/",
views.AreaCouncilListView.as_view(),
name="area-council-list",
),
path("raster/", views.RasterDatasetListView.as_view(), name="raster-list"),
path(
"raster/<int:pk>/",
Expand Down
22 changes: 22 additions & 0 deletions vbos/datasets/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
)

from .models import (
AreaCouncil,
Cluster,
Province,
RasterDataset,
TabularDataset,
TabularItem,
Expand All @@ -23,7 +25,9 @@
)
from .pagination import StandardResultsSetPagination
from .serializers import (
AreaCouncilSerializer,
ClusterSerializer,
ProvinceSerializer,
RasterDatasetSerializer,
TabularDatasetSerializer,
TabularItemExcelSerializer,
Expand All @@ -40,6 +44,24 @@ class ClusterListView(ListAPIView):
pagination_class = StandardResultsSetPagination


class ProvinceListView(ListAPIView):
queryset = Province.objects.all()
serializer_class = ProvinceSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
pagination_class = GeoJsonPagination


class AreaCouncilListView(ListAPIView):
serializer_class = AreaCouncilSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
pagination_class = GeoJsonPagination

def get_queryset(self):
return AreaCouncil.objects.filter(
province__name__iexact=self.kwargs.get("province")
)


class RasterDatasetListView(ListAPIView):
queryset = RasterDataset.objects.all()
serializer_class = RasterDatasetSerializer
Expand Down