107 lines
4.1 KiB
Python
107 lines
4.1 KiB
Python
from django.shortcuts import render
|
|
|
|
# Create your views here.
|
|
from rest_framework.generics import get_object_or_404
|
|
from rest_framework.response import Response
|
|
|
|
from ApiBillet.serializers import EventSerializer, TarifsSerializer
|
|
from AuthBillet.models import TenantAdminPermission
|
|
from Customers.models import Client, Domain
|
|
from BaseBillet.models import Event, TarifBillet
|
|
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,
|
|
)
|
|
|
|
return tenant, tenant_domain
|
|
|
|
class TarifBilletViewSet(viewsets.ViewSet):
|
|
def list(self, request):
|
|
queryset = TarifBillet.objects.all().order_by('prix')
|
|
serializer = TarifsSerializer(queryset, many=True, context={'request': request})
|
|
return Response(serializer.data)
|
|
|
|
def create(self, request):
|
|
serializer = TarifsSerializer(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):
|
|
"""
|
|
Instantiates and returns the list of permissions that this view requires.
|
|
"""
|
|
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')
|
|
|
|
def list(self, request):
|
|
serializer = EventSerializer(self.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)
|
|
serializer = EventSerializer(event)
|
|
return Response(serializer.data)
|
|
|
|
def create(self, request):
|
|
serializer = EventSerializer(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 update(self, request, pk=None):
|
|
print(f"update : {pk}")
|
|
event = get_object_or_404(self.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)
|
|
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']:
|
|
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]
|