From ba27511b97a9182e4080ba88ef80ac1233282ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 25 Jan 2023 12:05:37 +0100 Subject: [PATCH] Add django-rest-framework --- games/serializers.py | 0 poetry.lock | 39 ++++++++++++++++++++++++++- pyproject.toml | 1 + timetracker/settings.py | 7 +++++ timetracker/urls.py | 58 +++++++++++++++++++++++++++++++++++++++-- 5 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 games/serializers.py diff --git a/games/serializers.py b/games/serializers.py new file mode 100644 index 0000000..e69de29 diff --git a/poetry.lock b/poetry.lock index fbab599..23988d5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -235,6 +235,36 @@ files = [ [package.dependencies] Django = ">=3.2" +[[package]] +name = "django-rest-framework" +version = "0.1.0" +description = "alias." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "django-rest-framework-0.1.0.tar.gz", hash = "sha256:47a8f496fa69e3b6bd79f68dd7a1527d907d6b77f009e9db7cf9bb21cc565e4a"}, +] + +[package.dependencies] +djangorestframework = "*" + +[[package]] +name = "djangorestframework" +version = "3.14.0" +description = "Web APIs for Django, made easy." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"}, + {file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"}, +] + +[package.dependencies] +django = ">=3.0" +pytz = "*" + [[package]] name = "djhtml" version = "1.5.2" @@ -828,6 +858,13 @@ files = [ {file = "Pillow-9.4.0-1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858"}, {file = "Pillow-9.4.0-1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab"}, {file = "Pillow-9.4.0-1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9"}, + {file = "Pillow-9.4.0-2-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0"}, + {file = "Pillow-9.4.0-2-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f"}, + {file = "Pillow-9.4.0-2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c"}, + {file = "Pillow-9.4.0-2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848"}, + {file = "Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1"}, + {file = "Pillow-9.4.0-2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33"}, + {file = "Pillow-9.4.0-2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9"}, {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, @@ -1297,4 +1334,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "bf02e951b8c14fbe6f2709b6df7f9664f99ad5fbf7195d8e7b18c8574d00e683" +content-hash = "4ca6b31c654012f0d2b72bd44d3f40d986b183d6dd731c3a2aaed9a733032c08" diff --git a/pyproject.toml b/pyproject.toml index 08aff55..0fbf0c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ gunicorn = "^20.1.0" uvicorn = "^0.20.0" pandas = "^1.5.2" matplotlib = "^3.6.3" +django-rest-framework = "^0.1.0" [tool.poetry.group.dev.dependencies] black = "^22.12.0" diff --git a/timetracker/settings.py b/timetracker/settings.py index 55ee615..efb55a3 100644 --- a/timetracker/settings.py +++ b/timetracker/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "rest_framework", ] if DEBUG: @@ -149,3 +150,9 @@ if _csrf_trusted_origins: CSRF_TRUSTED_ORIGINS = _csrf_trusted_origins.split(",") else: CSRF_TRUSTED_ORIGINS = [] + +REST_FRAMEWORK = { + "DEFAULT_PERMISSION_CLASSES": [ + "rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly" + ] +} diff --git a/timetracker/urls.py b/timetracker/urls.py index 8e47b34..7077354 100644 --- a/timetracker/urls.py +++ b/timetracker/urls.py @@ -17,10 +17,64 @@ from django.conf import settings from django.contrib import admin from django.urls import include, path from django.views.generic import RedirectView +from rest_framework import routers, serializers, viewsets +from games.models import Game, Purchase, Platform, Session + + +class GameSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Game + fields = "__all__" + + +class PlatformSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Platform + fields = "__all__" + + +class PurchaseSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Purchase + fields = "__all__" + + +class SessionSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Session + fields = "__all__" + + +class GameViewSet(viewsets.ModelViewSet): + queryset = Game.objects.all() + serializer_class = GameSerializer + + +class PlatformViewSet(viewsets.ModelViewSet): + queryset = Platform.objects.all() + serializer_class = PlatformSerializer + + +class PurchaseViewSet(viewsets.ModelViewSet): + queryset = Purchase.objects.all() + serializer_class = PurchaseSerializer + + +class SessionViewSet(viewsets.ModelViewSet): + queryset = Session.objects.all() + serializer_class = SessionSerializer + + +router = routers.DefaultRouter() +router.register(r"games", GameViewSet) +router.register(r"platforms", PlatformViewSet) +router.register(r"purchases", PurchaseViewSet) +router.register(r"sessions", SessionViewSet) + urlpatterns = [ - path("", RedirectView.as_view(url="/tracker/list-sessions")), - path("tracker/", include("games.urls")), + path("", include(router.urls)), + path("api-auth/", include("rest_framework.urls", namespace="rest_framework")), ] if settings.DEBUG: