From 5fe40e03045ccbfbdf1fdfc6452bf5b69364aee9 Mon Sep 17 00:00:00 2001 From: Peter Kotyczka
_+p}ZV@?!L3P(Ca3QGznkmOp#n8}#JJ%=To zF^V^ZCyFnHH-#^iErq{|n}H!kU=C9zV-$aiV2Th>m0*f6m=pn%qM3~8EKvd}Vo`!A z;!#2=EK$NhERrG-C7L1`C6*!;%%CZ~S&p%Zk&%7!LZ<1PgPF4#H%qa0Ff#INUd-mk z$S6Mf6?^sMQjW!p?vo`sjVAkYDsZU--OC8X#jcafIb)SLgqS`sz=#IE4OV diff --git a/pyapp/pyapp/__pycache__/urls.cpython-311.pyc b/pyapp/pyapp/__pycache__/urls.cpython-311.pyc index 047a373c7560aa619397ee9ace6d1247db1b7611..e58169b6edd930fe1c504a133aebae628605dfe2 100644 GIT binary patch delta 446 zcmdnTeU)2%IWI340}z}x5lMT@%)sy%#DM`$DC6^siRw=ET)Es)Jd6xX45@4>?5Rvy zyf9@c9BVk20rjp1Vh8}M;Ywx6;)97~al=^4n1CvQ7y`g5xq+s^>|#ja!D>8c->F zD$g=TpmrdJ093=$S)%wib1@!ZvSTSN$|=6ZaEmoFFD11?lkpZyUSe))6 V= Nseu~=i^PCd0RV2(Wsd*= delta 423 zcmcc0y^mXcIWI340}%KZ@})gwW?*;>;=lk0l=1n=M0KZnj$E!NE=C3>hE%o`_EeTE zZkVzx9vEvG69dC)Acg?2N{&>fEMAyM3g;TGWk6e212K{sZlD@Ym`Dl_RyDjzKt*7u zf)u9kqAN;giQ?PL$9RCro+Gg!Gd?3fH?@i_F(o%MPyZIfE!NDul++4M##=0Ti6DuB z%EW>K{af6@8TkbTnR)4s1qHX5f%^P3`6u(R1dA1cync(NII|@67E5VSPH_>)>d9>^ zX^Md_cx@h7^V<5N1qa3}(<|y2V_aTj2+!IZBID zi}Dh4Q*Ut;Bo-H!=NF}{WcUoy`paHF6ew4$pPgS)nOv2fs9%&?kYAixl3$dWiX@s? zP*AL&l9ia3p05vN>nG>urDdk;6;%G>u*uC&Da}c>E8+l}2XarbFp&7b%*e=igIl11 O157k - {% for item in all_items %}PyApp Inventory
+PyApp Item List Inventory
diff --git a/pyapp/pyapp/urls.py b/pyapp/pyapp/urls.py index 4b81f8d..d0b1e27 100755 --- a/pyapp/pyapp/urls.py +++ b/pyapp/pyapp/urls.py @@ -18,12 +18,11 @@ from pyapp import views from django.contrib import admin from django.urls import path,include from pyapp.views import pyapp_home -from pyapp.views import api_home - +from pyapp_api import urls as pyapp_urls urlpatterns = [ -path('admin/', admin.site.urls), path("", views.index, name= "index"), -path("pyapp/", views.pyapp_home, name= "ShoppingApp"), -path("api", views.api_home, name= "api"), +path('admin/', admin.site.urls), +path("pyapp/", views.pyapp_home, name= "Item List App"), +path('api/', include(pyapp_urls)), ] \ No newline at end of file diff --git a/pyapp/pyapp/views.py b/pyapp/pyapp/views.py index e679801..deae9ce 100755 --- a/pyapp/pyapp/views.py +++ b/pyapp/pyapp/views.py @@ -9,7 +9,7 @@ class ShoppingItemViewSet(viewsets.ModelViewSet): serializer_class = ShoppingItemSerializer def index(response): - return HttpResponse("Welcome to the pyapp Shopping") + return HttpResponse("Welcome to the Pyapp Item List") def pyapp_home(request): if request.method == 'POST': diff --git a/pyapp/pyapp_api/__init__.py b/pyapp/pyapp_api/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/pyapp/pyapp_api/admin.py b/pyapp/pyapp_api/admin.py new file mode 100755 index 0000000..8c38f3f --- /dev/null +++ b/pyapp/pyapp_api/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/pyapp/pyapp/api/__pycache__/api-client.py b/pyapp/pyapp_api/api-client.py similarity index 100% rename from pyapp/pyapp/api/__pycache__/api-client.py rename to pyapp/pyapp_api/api-client.py diff --git a/pyapp/pyapp_api/apps.py b/pyapp/pyapp_api/apps.py new file mode 100755 index 0000000..533edf7 --- /dev/null +++ b/pyapp/pyapp_api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class PyappApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'pyapp_api' diff --git a/pyapp/pyapp_api/migrations/__init__.py b/pyapp/pyapp_api/migrations/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/pyapp/pyapp_api/migrations/__pycache__/__init__.cpython-311.pyc b/pyapp/pyapp_api/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5f04cf2eac4f11287a033ecda45e615d60b2ee0d GIT binary patch literal 197 zcmZ3^%ge<81THcnX(0MBh=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09tD?&fCIJKx) zKRdsqGPx={QNJj)Aip@XB)=##6-hL)prBYkB`Yy6Jzu||63By)@rebQ`nj3uMTsSu z`FX|q@$s2?nI-Y@dIgogIBatBQ%ZAE?TT1|7J-~n%nu|!Ff%eTeqewRMa)1k06A$h AfB*mh literal 0 HcmV?d00001 diff --git a/pyapp/pyapp_api/models.py b/pyapp/pyapp_api/models.py new file mode 100755 index 0000000..71a8362 --- /dev/null +++ b/pyapp/pyapp_api/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/pyapp/pyapp_api/serializers.py b/pyapp/pyapp_api/serializers.py new file mode 100644 index 0000000..88c0cbd --- /dev/null +++ b/pyapp/pyapp_api/serializers.py @@ -0,0 +1,13 @@ +from rest_framework import serializers +from pyapp.models import ShoppingItem +from pyapp.models import Product + +class ShoppingItemSerializer(serializers.ModelSerializer): + class Meta: + model = ShoppingItem + fields = '__all__' + +class ProductSerializer(serializers.ModelSerializer): + class Meta: + model = Product + fields = '__all__' \ No newline at end of file diff --git a/pyapp/pyapp_api/tests.py b/pyapp/pyapp_api/tests.py new file mode 100755 index 0000000..7ce503c --- /dev/null +++ b/pyapp/pyapp_api/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/pyapp/pyapp_api/urls.py b/pyapp/pyapp_api/urls.py new file mode 100644 index 0000000..2e27289 --- /dev/null +++ b/pyapp/pyapp_api/urls.py @@ -0,0 +1,13 @@ +from django.urls import path,include +from rest_framework import routers + +from . import views + +router = routers.DefaultRouter() +router.register(r'item', views.ShoppingItemList) +router.register(r'product', views.ProductList) + +urlpatterns = [ + path('', include(router.urls)), + path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) +] \ No newline at end of file diff --git a/pyapp/pyapp_api/views.py b/pyapp/pyapp_api/views.py new file mode 100755 index 0000000..e0302fe --- /dev/null +++ b/pyapp/pyapp_api/views.py @@ -0,0 +1,54 @@ +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status, permissions, viewsets +from rest_framework import permissions +from pyapp.models import ShoppingItem, Product +from .serializers import ShoppingItemSerializer, ProductSerializer + +class ShoppingItemList(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = ShoppingItem.objects.all().order_by('name') + serializer_class = ShoppingItemSerializer + permission_classes = [permissions.AllowAny] + + +class ProductList(viewsets.ModelViewSet): + """ + API endpoint that allows groups to be viewed or edited. + """ + queryset = Product.objects.all().order_by('title') + serializer_class = ProductSerializer + permission_classes = [permissions.IsAuthenticated] + +class ShoppingListApi(APIView): + # add permission to check if user is authenticated + permission_classes = [permissions.IsAuthenticated] + + # 1. List all + def get(self, request, *args, **kwargs): + ''' + List all the todo items for given requested user + ''' + ShoppingItemList = ShoppingItem.objects.filter(user = request.user.id) + serializer = ShoppingItemSerializer(ShoppingItemList, many=True) + return Response(serializer.data, status=status.HTTP_200_OK) + + # 2. Create + def post(self, request, *args, **kwargs): + ''' + Create the ShoppingItem with given todo data + ''' + data = { + 'name': request.data.get('name'), + 'price': request.data.get('price'), + 'quantity': request.data.get('quantity'), + 'done': False + } + serializer = ShoppingItemSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/pyapp/sql-scripts b/pyapp/sql-scripts new file mode 100644 index 0000000..23cb643 --- /dev/null +++ b/pyapp/sql-scripts @@ -0,0 +1,13 @@ +-- database: /Users/kotyczka/repositories/kotyczka/apps/django/pyapp/db.sqlite3 + +-- Drücken Sie die ▷-Schaltfläche oben rechts im Fenster, um die gesamte Datei auszuführen. + +insert into pyapp_shoppingitem +SELECT * FROM migration_shoppingitem; +commit; + +create table pyapp_shoppingitem as select * from migration_shoppingitem where 1 = 0; +commit; + +drop table pyapp_product +commit; \ No newline at end of file