article serializer
This commit is contained in:
parent
90715a0cb9
commit
26dadfbb4f
|
|
@ -3,7 +3,7 @@ import json
|
||||||
from django.utils.translation import gettext, gettext_lazy as _
|
from django.utils.translation import gettext, gettext_lazy as _
|
||||||
from rest_framework.generics import get_object_or_404
|
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):
|
class TarifsSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -15,7 +15,31 @@ class TarifsSerializer(serializers.ModelSerializer):
|
||||||
"prix",
|
"prix",
|
||||||
"reservation_par_user_max",
|
"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):
|
class EventSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -38,7 +62,7 @@ class EventSerializer(serializers.ModelSerializer):
|
||||||
'reservations',
|
'reservations',
|
||||||
'complet',
|
'complet',
|
||||||
]
|
]
|
||||||
read_only_fields = ['reservations']
|
read_only_fields = ['uuid', 'reservations']
|
||||||
depth = 1
|
depth = 1
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
|
|
@ -47,7 +71,7 @@ class EventSerializer(serializers.ModelSerializer):
|
||||||
if tarifs:
|
if tarifs:
|
||||||
try:
|
try:
|
||||||
tarifs_list = json.loads(tarifs)
|
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}'))
|
raise serializers.ValidationError(_(f'tarifs doit être un json valide : {e}'))
|
||||||
|
|
||||||
self.tarif_to_db = []
|
self.tarif_to_db = []
|
||||||
|
|
@ -60,10 +84,11 @@ class EventSerializer(serializers.ModelSerializer):
|
||||||
def save(self, **kwargs):
|
def save(self, **kwargs):
|
||||||
instance = super().save(**kwargs)
|
instance = super().save(**kwargs)
|
||||||
instance.tarifs.clear()
|
instance.tarifs.clear()
|
||||||
for tarif in self.tarif_to_db :
|
for tarif in self.tarif_to_db:
|
||||||
instance.tarifs.add(tarif)
|
instance.tarifs.add(tarif)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ from rest_framework import routers
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(r'events', api_view.EventsViewSet, basename='event')
|
router.register(r'events', api_view.EventsViewSet, basename='event')
|
||||||
router.register(r'tarifs', api_view.TarifBilletViewSet, basename='billet')
|
router.register(r'tarifs', api_view.TarifBilletViewSet, basename='billet')
|
||||||
|
router.register(r'articles', api_view.ArticleViewSet, basename='article')
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
|
||||||
|
|
@ -4,29 +4,29 @@ from django.shortcuts import render
|
||||||
from rest_framework.generics import get_object_or_404
|
from rest_framework.generics import get_object_or_404
|
||||||
from rest_framework.response import Response
|
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 AuthBillet.models import TenantAdminPermission
|
||||||
from Customers.models import Client, Domain
|
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
|
from rest_framework import viewsets, permissions, status
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
def new_tenants(schema_name):
|
def new_tenants(schema_name):
|
||||||
tenant = Client.objects.get_or_create(schema_name=schema_name,
|
tenant = Client.objects.get_or_create(schema_name=schema_name,
|
||||||
name=schema_name,
|
name=schema_name,
|
||||||
paid_until='2200-12-05',
|
paid_until='2200-12-05',
|
||||||
on_trial=False)[0]
|
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_domain = Domain.objects.get_or_create(domain=f'{schema_name}.{os.getenv("DOMAIN")}',
|
||||||
tenant=tenant,
|
tenant=tenant,
|
||||||
is_primary=True,
|
is_primary=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
return tenant, tenant_domain
|
return tenant, tenant_domain
|
||||||
|
|
||||||
|
|
||||||
class TarifBilletViewSet(viewsets.ViewSet):
|
class TarifBilletViewSet(viewsets.ViewSet):
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
queryset = TarifBillet.objects.all().order_by('prix')
|
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)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def get_permissions(self):
|
def get_permissions(self):
|
||||||
"""
|
if self.action in ['list', 'retrieve']:
|
||||||
Instantiates and returns the list of permissions that this view requires.
|
|
||||||
"""
|
|
||||||
if self.action in ['list','retrieve']:
|
|
||||||
permission_classes = [permissions.AllowAny]
|
permission_classes = [permissions.AllowAny]
|
||||||
else:
|
else:
|
||||||
permission_classes = [TenantAdminPermission]
|
permission_classes = [TenantAdminPermission]
|
||||||
return [permission() for permission in permission_classes]
|
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):
|
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)
|
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):
|
def retrieve(self, request, pk=None):
|
||||||
print(f"retrieve : {pk}")
|
queryset = Event.objects.all().order_by('-datetime')
|
||||||
event = get_object_or_404(self.queryset, pk=pk)
|
event = get_object_or_404(queryset, pk=pk)
|
||||||
serializer = EventSerializer(event)
|
serializer = EventSerializer(event)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
@ -72,35 +91,25 @@ class EventsViewSet(viewsets.ViewSet):
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def update(self, request, pk=None):
|
def update(self, request, pk=None):
|
||||||
|
queryset = Event.objects.all().order_by('-datetime')
|
||||||
print(f"update : {pk}")
|
print(f"update : {pk}")
|
||||||
event = get_object_or_404(self.queryset, pk=pk)
|
event = get_object_or_404(queryset, pk=pk)
|
||||||
print(event)
|
print(event)
|
||||||
serializer = EventSerializer(event, data=request.data)
|
serializer = EventSerializer(event, data=request.data)
|
||||||
if serializer.is_valid(raise_exception=True):
|
if serializer.is_valid(raise_exception=True):
|
||||||
# import ipdb; ipdb.set_trace()
|
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def destroy(self, request, pk=None):
|
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()
|
event.delete()
|
||||||
return Response(('deleted'), status=status.HTTP_200_OK)
|
return Response(('deleted'), status=status.HTTP_200_OK)
|
||||||
|
|
||||||
def get_permissions(self):
|
def get_permissions(self):
|
||||||
"""
|
if self.action in ['list', 'retrieve']:
|
||||||
Instantiates and returns the list of permissions that this view requires.
|
|
||||||
"""
|
|
||||||
if self.action in ['list','retrieve']:
|
|
||||||
permission_classes = [permissions.AllowAny]
|
permission_classes = [permissions.AllowAny]
|
||||||
else:
|
else:
|
||||||
permission_classes = [TenantAdminPermission]
|
permission_classes = [TenantAdminPermission]
|
||||||
return [permission() for permission in permission_classes]
|
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]
|
|
||||||
|
|
|
||||||
|
|
@ -152,8 +152,7 @@ class VAT(models.Model):
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True)
|
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True)
|
||||||
|
|
||||||
name = models.CharField(max_length=50,
|
name = models.CharField(max_length=50)
|
||||||
blank=True, null=True)
|
|
||||||
prix = models.FloatField()
|
prix = models.FloatField()
|
||||||
stock = models.SmallIntegerField(blank=True, null=True)
|
stock = models.SmallIntegerField(blank=True, null=True)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue