From b7faf8a4a4567d7eb6e98766218451a101e30ad3 Mon Sep 17 00:00:00 2001 From: Anna Sidwell Date: Mon, 19 Aug 2019 23:14:57 +0200 Subject: [PATCH] Split the API functions out into their own app --- apps/api/__init__.py | 0 apps/api/urls.py | 18 ++++++++++ apps/api/views.py | 73 +++++++++++++++++++++++++++++++++++++ ojusomap/urls.py | 85 +------------------------------------------- 4 files changed, 92 insertions(+), 84 deletions(-) create mode 100644 apps/api/__init__.py create mode 100644 apps/api/urls.py create mode 100644 apps/api/views.py diff --git a/apps/api/__init__.py b/apps/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/api/urls.py b/apps/api/urls.py new file mode 100644 index 0000000..c3db09f --- /dev/null +++ b/apps/api/urls.py @@ -0,0 +1,18 @@ +from django.conf.urls import include, url +from django.urls import reverse +from django.conf.urls.i18n import i18n_patterns +from django.contrib import admin +from django.contrib.auth.models import User +from rest_framework import routers, serializers, viewsets +from rest_framework_gis import serializers as gis_serializers + +from apps.files.models import File +from apps.map.models import CaseStudy, PointOfInterest + +from . import views + +apirouter = routers.DefaultRouter() +apirouter.register(r'case-studies', views.CaseStudyViewSet) +apirouter.register(r'points-of-interest', views.PointOfInterestViewSet) + +urlpatterns = apirouter.urls diff --git a/apps/api/views.py b/apps/api/views.py new file mode 100644 index 0000000..4348afb --- /dev/null +++ b/apps/api/views.py @@ -0,0 +1,73 @@ +from django.conf.urls import include, url +from django.urls import reverse +from django.conf.urls.i18n import i18n_patterns +from django.contrib import admin +from django.contrib.auth.models import User +from rest_framework import routers, serializers, viewsets +from rest_framework_gis import serializers as gis_serializers + +from apps.files.models import File +from apps.map.models import CaseStudy, PointOfInterest + + +class UserSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = User + fields = ('url', 'username', 'email', 'is_staff') + + +class UserViewSet(viewsets.ModelViewSet): + queryset = User.objects.all() + serializer_class = UserSerializer + + +class FileSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = File + fields = ('file',) + + +class CaseStudySerializer(gis_serializers.GeoFeatureModelSerializer): + sector_of_economy = serializers.CharField(source='get_sector_of_economy_display') + country_name = serializers.CharField(source='get_country_display') + positive_or_negative_display = serializers.CharField(source='get_positive_or_negative_display') + images = FileSerializer(many=True) + + class Meta: + model = CaseStudy + geo_field = "location" + fields = ( + 'country', + 'country_name', + 'entry_name', + 'images', + 'location', + 'positive_or_negative', + 'positive_or_negative_display', + 'sector_of_economy', + 'slug' + ) + + +class CaseStudyViewSet(viewsets.ModelViewSet): + queryset = CaseStudy.objects.approved() + serializer_class = CaseStudySerializer + + + +class PointOfInterestSerializer(gis_serializers.GeoFeatureModelSerializer): + class Meta: + model = PointOfInterest + geo_field = "location" + fields = ( + 'title', + 'synopsis', + 'link', + 'slug' + ) + + +class PointOfInterestViewSet(viewsets.ModelViewSet): + queryset = PointOfInterest.objects.approved() + serializer_class = PointOfInterestSerializer + diff --git a/ojusomap/urls.py b/ojusomap/urls.py index 7c6cc15..a890ba3 100644 --- a/ojusomap/urls.py +++ b/ojusomap/urls.py @@ -1,101 +1,18 @@ -"""ojusomap URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.11/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.conf.urls import url, include - 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) -""" from django.conf.urls import include, url from django.urls import reverse from django.conf.urls.i18n import i18n_patterns from django.contrib import admin from django.contrib.auth.models import User - from rest_framework import routers, serializers, viewsets from rest_framework_gis import serializers as gis_serializers from apps.files.models import File from apps.map.models import CaseStudy, PointOfInterest - from .views import LanguageDropdownView -class UserSerializer(serializers.HyperlinkedModelSerializer): - class Meta: - model = User - fields = ('url', 'username', 'email', 'is_staff') - - -class UserViewSet(viewsets.ModelViewSet): - queryset = User.objects.all() - serializer_class = UserSerializer - - -class FileSerializer(serializers.HyperlinkedModelSerializer): - class Meta: - model = File - fields = ('file',) - - -class CaseStudySerializer(gis_serializers.GeoFeatureModelSerializer): - sector_of_economy = serializers.CharField(source='get_sector_of_economy_display') - country_name = serializers.CharField(source='get_country_display') - positive_or_negative_display = serializers.CharField(source='get_positive_or_negative_display') - images = FileSerializer(many=True) - - class Meta: - model = CaseStudy - geo_field = "location" - fields = ( - 'country', - 'country_name', - 'entry_name', - 'images', - 'location', - 'positive_or_negative', - 'positive_or_negative_display', - 'sector_of_economy', - 'slug' - ) - - -class CaseStudyViewSet(viewsets.ModelViewSet): - queryset = CaseStudy.objects.approved() - serializer_class = CaseStudySerializer - - - -class PointOfInterestSerializer(gis_serializers.GeoFeatureModelSerializer): - class Meta: - model = PointOfInterest - geo_field = "location" - fields = ( - 'title', - 'synopsis', - 'link', - 'slug' - ) - - -class PointOfInterestViewSet(viewsets.ModelViewSet): - queryset = PointOfInterest.objects.approved() - serializer_class = PointOfInterestSerializer - - -apirouter = routers.DefaultRouter() -#apirouter.register(r'users', UserViewSet) -apirouter.register(r'case-studies', CaseStudyViewSet) -apirouter.register(r'points-of-interest', PointOfInterestViewSet) urlpatterns = [ - url(r'api/', include(apirouter.urls)), + url(r'^api/', include("apps.api.urls")), url(r'^admin/', admin.site.urls), url(r'^avatar/', include('avatar.urls')), url(r'^cas/', include('cas_server.urls', namespace='cas_server')),