diff --git a/DjangoFiles/ApiBillet/serializers.py b/DjangoFiles/ApiBillet/serializers.py index 45c3063..5feb7ef 100644 --- a/DjangoFiles/ApiBillet/serializers.py +++ b/DjangoFiles/ApiBillet/serializers.py @@ -3,7 +3,7 @@ import json from django.utils.translation import gettext, gettext_lazy as _ from rest_framework.generics import get_object_or_404 -from BaseBillet.models import Event, TarifBillet +from BaseBillet.models import Event, TarifBillet, Article class TarifsSerializer(serializers.ModelSerializer): @@ -15,7 +15,31 @@ class TarifsSerializer(serializers.ModelSerializer): "prix", "reservation_par_user_max", ] - extra_kwargs = {'event': {'required': False}} + read_only_fields = ['uuid'] + + +class ArticleSerializer(serializers.ModelSerializer): + class Meta: + model = Article + fields = [ + 'uuid', + 'name', + 'prix', + 'stock', + 'reservation_par_user_max', + 'vat', + 'publish', + 'img', + 'categorie_article', + 'id_product_stripe', + 'id_price_stripe', + ] + read_only_fields = [ + 'uuid', + 'id_product_stripe', + 'id_price_stripe', + ] + depth = 1 class EventSerializer(serializers.ModelSerializer): @@ -38,7 +62,7 @@ class EventSerializer(serializers.ModelSerializer): 'reservations', 'complet', ] - read_only_fields = ['reservations'] + read_only_fields = ['uuid', 'reservations'] depth = 1 def validate(self, attrs): @@ -47,7 +71,7 @@ class EventSerializer(serializers.ModelSerializer): if tarifs: try: tarifs_list = json.loads(tarifs) - except json.decoder.JSONDecodeError as e : + except json.decoder.JSONDecodeError as e: raise serializers.ValidationError(_(f'tarifs doit ĂȘtre un json valide : {e}')) self.tarif_to_db = [] @@ -60,10 +84,11 @@ class EventSerializer(serializers.ModelSerializer): def save(self, **kwargs): instance = super().save(**kwargs) instance.tarifs.clear() - for tarif in self.tarif_to_db : + for tarif in self.tarif_to_db: instance.tarifs.add(tarif) return instance + ''' [ { diff --git a/DjangoFiles/ApiBillet/urls.py b/DjangoFiles/ApiBillet/urls.py index 96aca7e..95fde65 100644 --- a/DjangoFiles/ApiBillet/urls.py +++ b/DjangoFiles/ApiBillet/urls.py @@ -7,6 +7,7 @@ from rest_framework import routers router = routers.DefaultRouter() router.register(r'events', api_view.EventsViewSet, basename='event') router.register(r'tarifs', api_view.TarifBilletViewSet, basename='billet') +router.register(r'articles', api_view.ArticleViewSet, basename='article') urlpatterns = [ diff --git a/DjangoFiles/ApiBillet/views.py b/DjangoFiles/ApiBillet/views.py index 658bc7b..e5d5d2d 100644 --- a/DjangoFiles/ApiBillet/views.py +++ b/DjangoFiles/ApiBillet/views.py @@ -4,29 +4,29 @@ from django.shortcuts import render from rest_framework.generics import get_object_or_404 from rest_framework.response import Response -from ApiBillet.serializers import EventSerializer, TarifsSerializer +from ApiBillet.serializers import EventSerializer, TarifsSerializer, ArticleSerializer from AuthBillet.models import TenantAdminPermission from Customers.models import Client, Domain -from BaseBillet.models import Event, TarifBillet +from BaseBillet.models import Event, TarifBillet, Article from rest_framework import viewsets, permissions, status import os + def new_tenants(schema_name): tenant = Client.objects.get_or_create(schema_name=schema_name, - name=schema_name, - paid_until='2200-12-05', - on_trial=False)[0] - - # Add one or more domains for the tenant + name=schema_name, + paid_until='2200-12-05', + on_trial=False)[0] tenant_domain = Domain.objects.get_or_create(domain=f'{schema_name}.{os.getenv("DOMAIN")}', - tenant=tenant, - is_primary=True, - ) + tenant=tenant, + is_primary=True, + ) return tenant, tenant_domain + class TarifBilletViewSet(viewsets.ViewSet): def list(self, request): queryset = TarifBillet.objects.all().order_by('prix') @@ -41,26 +41,45 @@ class TarifBilletViewSet(viewsets.ViewSet): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def get_permissions(self): - """ - Instantiates and returns the list of permissions that this view requires. - """ - if self.action in ['list','retrieve']: + if self.action in ['list', 'retrieve']: permission_classes = [permissions.AllowAny] else: permission_classes = [TenantAdminPermission] return [permission() for permission in permission_classes] -class EventsViewSet(viewsets.ViewSet): - queryset = Event.objects.all().order_by('-datetime') + +class ArticleViewSet(viewsets.ViewSet): def list(self, request): - serializer = EventSerializer(self.queryset, many=True, context={'request': request}) + serializer = ArticleSerializer(Article.objects.all(), many=True, context={'request': request}) + print(serializer.data) return Response(serializer.data) + def create(self, request): + serializer = ArticleSerializer(data=request.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) + + def get_permissions(self): + if self.action in ['list', 'retrieve']: + permission_classes = [permissions.AllowAny] + else: + permission_classes = [TenantAdminPermission] + return [permission() for permission in permission_classes] + + +class EventsViewSet(viewsets.ViewSet): + + def list(self, request): + queryset = Event.objects.all().order_by('-datetime') + serializer = EventSerializer(queryset, many=True, context={'request': request}) + return Response(serializer.data) def retrieve(self, request, pk=None): - print(f"retrieve : {pk}") - event = get_object_or_404(self.queryset, pk=pk) + queryset = Event.objects.all().order_by('-datetime') + event = get_object_or_404(queryset, pk=pk) serializer = EventSerializer(event) return Response(serializer.data) @@ -72,35 +91,25 @@ class EventsViewSet(viewsets.ViewSet): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def update(self, request, pk=None): + queryset = Event.objects.all().order_by('-datetime') print(f"update : {pk}") - event = get_object_or_404(self.queryset, pk=pk) + event = get_object_or_404(queryset, pk=pk) print(event) serializer = EventSerializer(event, data=request.data) if serializer.is_valid(raise_exception=True): - # import ipdb; ipdb.set_trace() serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def destroy(self, request, pk=None): - event = get_object_or_404(self.queryset, pk=pk) + queryset = Event.objects.all().order_by('-datetime') + event = get_object_or_404(queryset, pk=pk) event.delete() return Response(('deleted'), status=status.HTTP_200_OK) def get_permissions(self): - """ - Instantiates and returns the list of permissions that this view requires. - """ - if self.action in ['list','retrieve']: + if self.action in ['list', 'retrieve']: permission_classes = [permissions.AllowAny] else: permission_classes = [TenantAdminPermission] return [permission() for permission in permission_classes] - -class EventViewSet(viewsets.ModelViewSet): - """ - API endpoint that allows users to be viewed or edited. - """ - queryset = Event.objects.all().order_by('-datetime') - serializer_class = EventSerializer - permission_classes = [permissions.AllowAny] diff --git a/DjangoFiles/BaseBillet/models.py b/DjangoFiles/BaseBillet/models.py index 00b55ee..030c040 100644 --- a/DjangoFiles/BaseBillet/models.py +++ b/DjangoFiles/BaseBillet/models.py @@ -152,8 +152,7 @@ class VAT(models.Model): class Article(models.Model): uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True) - name = models.CharField(max_length=50, - blank=True, null=True) + name = models.CharField(max_length=50) prix = models.FloatField() stock = models.SmallIntegerField(blank=True, null=True)