From 580fb79dbabdec353e964a87a2e5d7c06603697b Mon Sep 17 00:00:00 2001 From: michigg Date: Thu, 30 Nov 2017 12:37:14 +0100 Subject: [PATCH] Unfinished api refractoring --- ofu_app/api/admin.py | 3 -- ofu_app/api/apps.py | 5 ---- ofu_app/api/migrations/__init__.py | 0 ofu_app/api/models.py | 3 -- ofu_app/api/tests.py | 3 -- ofu_app/api/urls.py | 29 ------------------- ofu_app/api/views/__init__.py | 0 ofu_app/api/views/base_views.py | 10 ------- ofu_app/{ => apps/food}/api/__init__.py | 0 .../food/api/serializers.py} | 3 +- .../food_views.py => apps/food/api/views.py} | 4 +-- ofu_app/apps/food/urls.py | 24 ++++++++++++++- ofu_app/core/settings.py | 1 - ofu_app/core/urls.py | 15 +++++++++- ofu_app/requirements.txt | 2 ++ ofu_app/templates/donar/search_rooms.jinja | 1 + 16 files changed, 43 insertions(+), 60 deletions(-) delete mode 100644 ofu_app/api/admin.py delete mode 100644 ofu_app/api/apps.py delete mode 100644 ofu_app/api/migrations/__init__.py delete mode 100644 ofu_app/api/models.py delete mode 100644 ofu_app/api/tests.py delete mode 100644 ofu_app/api/urls.py delete mode 100644 ofu_app/api/views/__init__.py delete mode 100644 ofu_app/api/views/base_views.py rename ofu_app/{ => apps/food}/api/__init__.py (100%) rename ofu_app/{api/serializers/food_serializers.py => apps/food/api/serializers.py} (97%) rename ofu_app/{api/views/food_views.py => apps/food/api/views.py} (95%) create mode 100644 ofu_app/requirements.txt diff --git a/ofu_app/api/admin.py b/ofu_app/api/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/ofu_app/api/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/ofu_app/api/apps.py b/ofu_app/api/apps.py deleted file mode 100644 index d87006d..0000000 --- a/ofu_app/api/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class ApiConfig(AppConfig): - name = 'api' diff --git a/ofu_app/api/migrations/__init__.py b/ofu_app/api/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ofu_app/api/models.py b/ofu_app/api/models.py deleted file mode 100644 index 71a8362..0000000 --- a/ofu_app/api/models.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.db import models - -# Create your models here. diff --git a/ofu_app/api/tests.py b/ofu_app/api/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/ofu_app/api/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/ofu_app/api/urls.py b/ofu_app/api/urls.py deleted file mode 100644 index 11360a9..0000000 --- a/ofu_app/api/urls.py +++ /dev/null @@ -1,29 +0,0 @@ -"""ofu_app 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 url, include -from rest_framework import routers - -from api.views import food_views - -router = routers.DefaultRouter() -router.register(r'food', food_views.FoodViewSet, base_name='Food') -router.register(r'happy-hour', food_views.HappyHourViewSet, base_name='HappyHours') - -urlpatterns = [ - # url(r'^api/v1/', ), - url(r'^api/v1/', include(router.urls)), - url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')) -] diff --git a/ofu_app/api/views/__init__.py b/ofu_app/api/views/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ofu_app/api/views/base_views.py b/ofu_app/api/views/base_views.py deleted file mode 100644 index cfc0a1c..0000000 --- a/ofu_app/api/views/base_views.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from rest_framework import generics - - -class APIRoot(generics.GenericAPIView): - """ - My API documentation - """ diff --git a/ofu_app/api/__init__.py b/ofu_app/apps/food/api/__init__.py similarity index 100% rename from ofu_app/api/__init__.py rename to ofu_app/apps/food/api/__init__.py diff --git a/ofu_app/api/serializers/food_serializers.py b/ofu_app/apps/food/api/serializers.py similarity index 97% rename from ofu_app/api/serializers/food_serializers.py rename to ofu_app/apps/food/api/serializers.py index 2b97dd3..7bb6bb1 100644 --- a/ofu_app/api/serializers/food_serializers.py +++ b/ofu_app/apps/food/api/serializers.py @@ -1,7 +1,6 @@ -from tkinter.constants import ALL +from rest_framework import serializers from apps.food.models import Menu, SingleFood, HappyHour, Allergene -from rest_framework import serializers class AllergensSerializer(serializers.HyperlinkedModelSerializer): diff --git a/ofu_app/api/views/food_views.py b/ofu_app/apps/food/api/views.py similarity index 95% rename from ofu_app/api/views/food_views.py rename to ofu_app/apps/food/api/views.py index b580ebd..20b268d 100644 --- a/ofu_app/api/views/food_views.py +++ b/ofu_app/apps/food/api/views.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from datetime import datetime from datetime import timedelta -from api.serializers.food_serializers import MenuSerializer, HappyHourSerializer +from apps.food.api.serializers import MenuSerializer, HappyHourSerializer from apps.food.models import Menu, HappyHour from rest_framework import viewsets @@ -14,7 +14,7 @@ from rest_framework.permissions import AllowAny # @api_view(['GET']) @permission_classes((AllowAny,)) -class FoodViewSet(viewsets.ModelViewSet): +class FoodViewSet(viewsets.ModelViewSet, ): """ API endpoint that allows users to be viewed or edited. """ diff --git a/ofu_app/apps/food/urls.py b/ofu_app/apps/food/urls.py index c490d74..d182c0d 100644 --- a/ofu_app/apps/food/urls.py +++ b/ofu_app/apps/food/urls.py @@ -13,9 +13,30 @@ 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 url +from django.conf.urls import url, include +from rest_framework import routers from apps.food import views +from apps.food.api import views as api_views + +# API Version 1.0 +apiRouter_v1 = routers.DefaultRouter() +apiRouter_v1.register(r'food', api_views.FoodViewSet, base_name='Food') +apiRouter_v1.register(r'happy-hour', api_views.HappyHourViewSet, base_name='HappyHours') + +# API Version 1.1 +apiRouter_v1_1 = routers.DefaultRouter() +apiRouter_v1_1.register(r'foods', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'foods/food/(?P[feldkirchenstrasse, markusstrasse, erba, austrasse])/$', + api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'foods/food/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', api_views.FoodViewSet, + base_name='Food') +apiRouter_v1_1.register( + r'foods/food/(?P)[feldkirchenstrasse, markusstrasse, erba, austrasse]/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', + api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'foods/food/today/$', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'foods/food/week/$', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'happy-hour', api_views.HappyHourViewSet, base_name='HappyHours') urlpatterns = [ url(r'^$', views.food, name='food'), @@ -35,4 +56,5 @@ urlpatterns = [ # Food Rating url(r'^daily/rating/$', views.food_rating, name='rating-food'), url(r'^weekly/rating/$', views.food_rating, name='rating-food'), + ] diff --git a/ofu_app/core/settings.py b/ofu_app/core/settings.py index f8f8b01..f3b333c 100755 --- a/ofu_app/core/settings.py +++ b/ofu_app/core/settings.py @@ -40,7 +40,6 @@ INSTALLED_APPS = [ 'apps.events', 'apps.donar', 'apps.registration', - 'api', 'rest_framework', 'analytical', ] diff --git a/ofu_app/core/urls.py b/ofu_app/core/urls.py index c91ab3f..689fffb 100755 --- a/ofu_app/core/urls.py +++ b/ofu_app/core/urls.py @@ -17,8 +17,18 @@ from core import views from django.conf.urls import url, include from django.contrib import admin from django.contrib.auth import views as auth_views +from rest_framework import routers +from apps.food import urls as food_urls + +# API router +api_router_v1 = routers.DefaultRouter() +api_router_v1.registry.extend(food_urls.apiRouter_v1.registry) + +api_router_v1_1 = routers.DefaultRouter() +api_router_v1_1.registry.extend(food_urls.apiRouter_v1_1.registry) urlpatterns = [ + # -- User Managment -- url(r'^login/$', auth_views.login, {'template_name': 'registration/login.jinja'}, name='login'), url(r'^logout/$', auth_views.logout, {'next_page': 'home'}, name='logout'), url(r'^admin/', admin.site.urls), @@ -34,5 +44,8 @@ urlpatterns = [ url(r'^links/$', views.links, name='links-home'), url(r'^impressum/$', views.impressum, name='impressum'), - url(r'', include('api.urls')) + # -- API -- + url(r'^api/v1/', include(api_router_v1.urls)), + url(r'^api/v1.1/', include(api_router_v1_1.urls)), + url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')) ] diff --git a/ofu_app/requirements.txt b/ofu_app/requirements.txt new file mode 100644 index 0000000..6e5370e --- /dev/null +++ b/ofu_app/requirements.txt @@ -0,0 +1,2 @@ +django +djangorestframework diff --git a/ofu_app/templates/donar/search_rooms.jinja b/ofu_app/templates/donar/search_rooms.jinja index 731a4dc..f2a0317 100644 --- a/ofu_app/templates/donar/search_rooms.jinja +++ b/ofu_app/templates/donar/search_rooms.jinja @@ -6,6 +6,7 @@
+ {% csrf_token %}