diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..00a609e
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "python.testing.pytestArgs": [
+ "pyapp"
+ ],
+ "python.testing.unittestEnabled": false,
+ "python.testing.pytestEnabled": true
+}
\ No newline at end of file
diff --git a/pyapp/db.sqlite3 b/pyapp/db.sqlite3
index fdad6d0..1ae40fb 100755
Binary files a/pyapp/db.sqlite3 and b/pyapp/db.sqlite3 differ
diff --git a/pyapp/pyapp/__pycache__/settings.cpython-311.pyc b/pyapp/pyapp/__pycache__/settings.cpython-311.pyc
index 28894ec..d7c7789 100644
Binary files a/pyapp/pyapp/__pycache__/settings.cpython-311.pyc and b/pyapp/pyapp/__pycache__/settings.cpython-311.pyc differ
diff --git a/pyapp/pyapp/__pycache__/urls.cpython-311.pyc b/pyapp/pyapp/__pycache__/urls.cpython-311.pyc
index 047a373..e58169b 100644
Binary files a/pyapp/pyapp/__pycache__/urls.cpython-311.pyc and b/pyapp/pyapp/__pycache__/urls.cpython-311.pyc differ
diff --git a/pyapp/pyapp/api/__pycache__/config.cpython-311.pyc b/pyapp/pyapp/api/__pycache__/config.cpython-311.pyc
deleted file mode 100755
index 7b69ba6..0000000
Binary files a/pyapp/pyapp/api/__pycache__/config.cpython-311.pyc and /dev/null differ
diff --git a/pyapp/pyapp/settings.py b/pyapp/pyapp/settings.py
index 6c24e75..93ebb49 100755
--- a/pyapp/pyapp/settings.py
+++ b/pyapp/pyapp/settings.py
@@ -37,6 +37,8 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'rest_framework',
+ 'pyapp_api',
'pyapp',
]
@@ -50,6 +52,11 @@ MIDDLEWARE = [
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
+REST_FRAMEWORK = {
+ 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
+ 'PAGE_SIZE': 10
+}
+
ROOT_URLCONF = 'pyapp.urls'
TEMPLATES = [
diff --git a/pyapp/pyapp/templates/pyapp.html b/pyapp/pyapp/templates/pyapp.html
index 069b404..d9cae59 100755
--- a/pyapp/pyapp/templates/pyapp.html
+++ b/pyapp/pyapp/templates/pyapp.html
@@ -34,7 +34,7 @@
- PyApp Inventory
+ PyApp Item List Inventory
{% for item in all_items %}
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 0000000..5f04cf2
Binary files /dev/null and b/pyapp/pyapp_api/migrations/__pycache__/__init__.cpython-311.pyc differ
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