article serializer

This commit is contained in:
Jonas 12t 2021-10-23 16:09:48 +04:00
parent 90715a0cb9
commit 26dadfbb4f
4 changed files with 75 additions and 41 deletions

View File

@ -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
'''
[
{

View File

@ -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 = [

View File

@ -4,22 +4,21 @@ 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
tenant_domain = Domain.objects.get_or_create(domain=f'{schema_name}.{os.getenv("DOMAIN")}',
tenant=tenant,
is_primary=True,
@ -27,6 +26,7 @@ def new_tenants(schema_name):
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]

View File

@ -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)