diff --git a/StockSeeker/serializers.py b/StockSeeker/serializers.py index 8cc9a9b..849b8d7 100644 --- a/StockSeeker/serializers.py +++ b/StockSeeker/serializers.py @@ -24,9 +24,11 @@ class UserSerializer(serializers.ModelSerializer): class ProductSerializer(serializers.ModelSerializer): + user = serializers.PrimaryKeyRelatedField(read_only=True) + class Meta: model = Product - fields = ["id", "name", "description", "quantity", "creation_date", "modification_date"] + fields = ["id", "name", "description", "quantity", "creation_date", "modification_date", "user"] class AlerteSerializer(serializers.ModelSerializer): diff --git a/StockSeeker/urls.py b/StockSeeker/urls.py index 7916827..852f764 100644 --- a/StockSeeker/urls.py +++ b/StockSeeker/urls.py @@ -8,13 +8,13 @@ from rest_framework_simplejwt.views import * ##juge pas les noms d'acces OK ?## router = routers.DefaultRouter() +router.register(r'products', ProductView, basename='product') + urlpatterns = [ - path('', include(router.urls)), + path('api/', include(router.urls)), path('admin/', admin.site.urls), - 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/users', CreateUser.as_view(), name="create-user"), + path('api/users/me/', UserInfo.as_view(), name="user-info"), 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 2364703..1e92f9d 100644 --- a/StockSeeker/views.py +++ b/StockSeeker/views.py @@ -16,10 +16,12 @@ class CreateUser(generics.CreateAPIView): def create(self, request): if request.user.is_authenticated: - return Response({"detail:" "Deconnecte toi ??"}, status=status.HTTP_403_FORBIDDEN) + return Response({"detail": ["Toujours connecté"]}, status=status.HTTP_403_FORBIDDEN) + if not request.data.get("email"): + return Response({"email": ["Saisissez une adresse e-mail valide."]}, status=status.HTTP_400_BAD_REQUEST) serializers = self.get_serializer(data=request.data) serializers.is_valid(raise_exception=True) - serializers.save() + user = serializers.save() refresh = RefreshToken.for_user(user) access_token = refresh.access_token @@ -39,22 +41,19 @@ class UserInfo(generics.ListAPIView): return User.objects.filter(username=self.request.user) -class CreateProduct(generics.CreateAPIView): +class ProductView(viewsets.ModelViewSet): permission_classes = [IsAuthenticated] throttle_classes = [UserRateThrottle] serializer_class = ProductSerializer queryset = Product.objects.all() - def create(self, request): + def perform_create(self, request): + if not request.data.get("quantity"): + return Response({"quantity": ["give a quantity"]}, status=status.HTTP_400_BAD_REQUEST) serializers = self.get_serializer(data=request.data) serializers.is_valid(raise_exception=True) - serializers.save(user=request.user) + serializers.save(user=self.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)