Skip to content
Snippets Groups Projects
Commit 30f4a476 authored by alrwasheda's avatar alrwasheda :speech_balloon:
Browse files

Merge branch '30-implement-rest-api-in-django-for-the-admin-frontend' into 'master'

Set Up API, add Views for Sports and Criterions

Closes #30

See merge request swp-unisport/team-warumkeinrust/unisport-o-mat!38
parents 73c17cc7 e4931f2d
No related branches found
No related tags found
No related merge requests found
...@@ -9,4 +9,6 @@ requests==2.25.1 ...@@ -9,4 +9,6 @@ requests==2.25.1
soupsieve==2.2.1 soupsieve==2.2.1
sqlparse==0.4.1 sqlparse==0.4.1
urllib3==1.26.4 urllib3==1.26.4
Pillow==8.2.0 Pillow==8.2.0
\ No newline at end of file django-cors-headers==3.7.0
djangorestframework==3.12.4
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
from django.contrib import admin from django.contrib import admin
# Register your models here. # Register your models here.
from .models import Sport from .models import Sport, Criterion, CriterionRating
admin.site.register(Sport) admin.site.register(Sport)
admin.site.register(Criterion)
admin.site.register(CriterionRating)
"""
Serializers creating JSONs for every Model from .models
"""
from rest_framework import serializers
from .models import Sport, Criterion
class SportListSerializer(serializers.ModelSerializer):
"""
Serializes all sports.
"""
class Meta:
model = Sport
fields = ("id", "name", "url", "criteria_ratings")
class CriterionListSerializer(serializers.ModelSerializer):
"""
Serializes Criterions
"""
class Meta:
model = Criterion
fields = ("id", "name")
""" Defines the views for the quiz app """ """
Defines the views for the API
"""
# from django.shortcuts import render
from rest_framework import viewsets
from .serializers import SportListSerializer, CriterionListSerializer
from .models import Sport, Criterion
# Create your views here. # Create your views here.
class SportListView(viewsets.ModelViewSet): # pylint: disable=too-many-ancestors
"""
A View returning every Sport Object
"""
serializer_class = SportListSerializer
queryset = Sport.objects.all()
class CriterionListView(viewsets.ModelViewSet): # pylint: disable=too-many-ancestors
"""
A View returning every Criterion Object
"""
serializer_class = CriterionListSerializer
queryset = Criterion.objects.all()
...@@ -32,13 +32,16 @@ ALLOWED_HOSTS = [] ...@@ -32,13 +32,16 @@ ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
"quiz.apps.QuizConfig", # "quiz.apps.QuizConfig",
"django.contrib.admin", "django.contrib.admin",
"django.contrib.auth", "django.contrib.auth",
"django.contrib.contenttypes", "django.contrib.contenttypes",
"django.contrib.sessions", "django.contrib.sessions",
"django.contrib.messages", "django.contrib.messages",
"django.contrib.staticfiles", "django.contrib.staticfiles",
"rest_framework",
"corsheaders",
"quiz",
] ]
MIDDLEWARE = [ MIDDLEWARE = [
...@@ -49,6 +52,7 @@ MIDDLEWARE = [ ...@@ -49,6 +52,7 @@ MIDDLEWARE = [
"django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware", "django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware",
"corsheaders.middleware.CorsMiddleware",
] ]
ROOT_URLCONF = "unisportomat.urls" ROOT_URLCONF = "unisportomat.urls"
...@@ -121,3 +125,8 @@ STATIC_URL = "/static/" ...@@ -121,3 +125,8 @@ STATIC_URL = "/static/"
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
CORS_ORITIN_WHITELIST = [
"http://localhost:3000", # User Frontend
"http://localhost:4000", # Admin Frontend
]
...@@ -14,8 +14,15 @@ Including another URLconf ...@@ -14,8 +14,15 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import path, include
from rest_framework import routers
from quiz import views
router = routers.DefaultRouter()
router.register(r"sport-list", views.SportListView, "sport-list")
router.register(r"criterion-list", views.CriterionListView, "criterion-list")
urlpatterns = [ urlpatterns = [
path("admin/", admin.site.urls), path("admin/", admin.site.urls),
path("api/admin/", include(router.urls)),
] ]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment