From cb3a64ec43e6f7b37e6abd772f0d60aca691494a Mon Sep 17 00:00:00 2001 From: Orabis Date: Fri, 18 Oct 2024 15:07:11 +0200 Subject: [PATCH] class userinfo, createproduct, listproduct created --- StockSeeker/models.py | 2 ++ StockSeeker/urls.py | 5 ++++- StockSeeker/views.py | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/StockSeeker/models.py b/StockSeeker/models.py index be80ace..e3867e2 100644 --- a/StockSeeker/models.py +++ b/StockSeeker/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.contrib.auth.models import User class Product(models.Model): @@ -7,6 +8,7 @@ class Product(models.Model): quantity = models.IntegerField(null=False, default=0, blank=False) creation_date = models.DateTimeField(auto_now_add=True) modification_date = models.DateTimeField(auto_now=True) + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="products") def __str__(self): return self.name diff --git a/StockSeeker/urls.py b/StockSeeker/urls.py index 11204f6..7916827 100644 --- a/StockSeeker/urls.py +++ b/StockSeeker/urls.py @@ -11,7 +11,10 @@ router = routers.DefaultRouter() urlpatterns = [ path('', include(router.urls)), path('admin/', admin.site.urls), - path('create/', UserCreate.as_view(), name="user-create"), + path('api/user/create/', CreateUser.as_view(), name="create-user"), + path('api/user/info', UserInfo.as_view(), name="user-info"), + path('api/product/create/', CreateProduct.as_view(), name="create-product"), + path('api/product/list/', ListProduct.as_view(), name="list-product"), path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh', TokenRefreshView.as_view(), name="token_refresh") ] diff --git a/StockSeeker/views.py b/StockSeeker/views.py index b659d37..2364703 100644 --- a/StockSeeker/views.py +++ b/StockSeeker/views.py @@ -8,7 +8,7 @@ from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework_simplejwt.tokens import RefreshToken -class UserCreate(generics.CreateAPIView): +class CreateUser(generics.CreateAPIView): permission_classes = [AllowAny] throttle_classes = [UserRateThrottle] serializer_class = UserSerializer @@ -19,7 +19,7 @@ class UserCreate(generics.CreateAPIView): return Response({"detail:" "Deconnecte toi ??"}, status=status.HTTP_403_FORBIDDEN) serializers = self.get_serializer(data=request.data) serializers.is_valid(raise_exception=True) - user = serializers.save() + serializers.save() refresh = RefreshToken.for_user(user) access_token = refresh.access_token @@ -29,3 +29,32 @@ class UserCreate(generics.CreateAPIView): "refresh": str(refresh), "access": str(access_token) }, status=status.HTTP_201_CREATED) + + +class UserInfo(generics.ListAPIView): + permission_classes = [IsAuthenticated] + serializer_class = UserSerializer + + def get_queryset(self): + return User.objects.filter(username=self.request.user) + + +class CreateProduct(generics.CreateAPIView): + permission_classes = [IsAuthenticated] + throttle_classes = [UserRateThrottle] + serializer_class = ProductSerializer + queryset = Product.objects.all() + + def create(self, request): + serializers = self.get_serializer(data=request.data) + serializers.is_valid(raise_exception=True) + serializers.save(user=request.user) + return Response(serializers.data, status=status.HTTP_201_CREATED) + + +class ListProduct(generics.ListAPIView): + permission_classes = [IsAuthenticated] + serializer_class = ProductSerializer + + def get_queryset(self): + return Product.objects.filter(user_id=self.request.user)