Semaine 11
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from rest_framework import viewsets, status, permissions
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
|
||||
from .models import Equipment
|
||||
from .serializers import EquipmentSerializer
|
||||
from .forms import EquipmentForm
|
||||
from .permissions import IsOwner
|
||||
|
||||
@login_required
|
||||
def list_active_equipments(request):
|
||||
equipments = Equipment.objects.filter(is_active=True)
|
||||
return render(request, "parc/list.html", {"equipments": equipments})
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class EquipmentListView(ListView):
|
||||
model = Equipment
|
||||
template_name = "parc/list.html"
|
||||
context_object_name = "equipments"
|
||||
|
||||
def get_queryset(self):
|
||||
return Equipment.objects.filter(is_active=True)
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class EquipmentDetailView(DetailView):
|
||||
model = Equipment
|
||||
template_name = "parc/detail.html"
|
||||
context_object_name = "equipment"
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class EquipmentCreateView(CreateView):
|
||||
model = Equipment
|
||||
form_class = EquipmentForm
|
||||
template_name = "parc/form.html"
|
||||
success_url = reverse_lazy("equipment_list")
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class EquipmentUpdateView(UpdateView):
|
||||
model = Equipment
|
||||
form_class = EquipmentForm
|
||||
template_name = "parc/form.html"
|
||||
success_url = reverse_lazy("equipment_list")
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class EquipmentDeleteView(DeleteView):
|
||||
model = Equipment
|
||||
template_name = "parc/delete_confirm.html"
|
||||
success_url = reverse_lazy("equipment_list")
|
||||
|
||||
class EquipmentListAPIView(APIView):
|
||||
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
||||
|
||||
def get(self, request):
|
||||
equipments = Equipment.objects.all()
|
||||
serializer = EquipmentSerializer(equipments, many=True)
|
||||
|
||||
return Response(serializer.data)
|
||||
|
||||
def post(self, request):
|
||||
serializer = EquipmentSerializer(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)
|
||||
|
||||
class EquipmentViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
Ce ViewSet fournit automatiquement les actions :
|
||||
- 'list' (GET /equipments/)
|
||||
- 'retrieve' (GET /equipments/{id}/)
|
||||
- 'create' (POST /equipments/)
|
||||
- 'update' (PUT /equipments/{id}/)
|
||||
- 'destroy' (DELETE /equipments/{id}/)
|
||||
"""
|
||||
permission_classes = [permissions.IsAuthenticated, IsOwner]
|
||||
|
||||
def get_queryset(self):
|
||||
return Equipment.objects.filter(owner=self.request.user)
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(owner=self.request.user)
|
||||
|
||||
# queryset = Equipment.objects.all()
|
||||
serializer_class = EquipmentSerializer
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger("parc.auth")
|
||||
|
||||
class EquipmentViewSet(viewsets.ModelViewSet):
|
||||
permission_classes = [permissions.IsAuthenticated, IsOwner]
|
||||
|
||||
def get_queryset(self):
|
||||
return Equipment.objects.filter(owner=self.request.user)
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(owner=self.request.user)
|
||||
|
||||
def handle_exception(self, exc):
|
||||
response = super().handle_exception(exc)
|
||||
if response.status_code in (401, 403):
|
||||
logger.warning(
|
||||
"Authentication failure: user=%s path=%s method=%s status=%s",
|
||||
getattr(self.request.user, "username", "anonymous"),
|
||||
self.request.path,
|
||||
self.request.method,
|
||||
response.status_code,
|
||||
)
|
||||
return response
|
||||
|
||||
serializer_class = EquipmentSerializer
|
||||
Reference in New Issue
Block a user