Ajout et début de l'API REST

This commit is contained in:
Ambulance Clerc
2023-12-14 13:55:25 +01:00
parent e7ca33031b
commit b9c93b53a9
16 changed files with 170 additions and 3 deletions

0
apilog/__init__.py Normal file
View File

15
apilog/admin.py Normal file
View File

@@ -0,0 +1,15 @@
from django.contrib import admin
from .models import APILog
@admin.register(APILog)
class APILogAdmin(admin.ModelAdmin):
list_display = ('user', 'request_url', 'request_params', 'request_method', 'request_body', 'request_timestamp')
list_filter = ('user', 'request_method')
search_fields = ('request_url',)
ordering = ('-request_timestamp',)
actions = None
def has_delete_permission(self, request, obj=None):
return False

6
apilog/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class ApilogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apilog'

27
apilog/middleware.py Normal file
View File

@@ -0,0 +1,27 @@
from .models import APILog
class APILogMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.path.startswith('/admin'):
user = request.user if request.user.is_authenticated else None
request_url = request.path
request_params = request.GET if request.GET else None
request_method = request.method
request_body = request.body.decode('utf-8')
APILog.objects.create(user=user, request_url=request_url, request_params=request_params, request_method=request_method, request_body=request_body)
response = self.get_response(request)
return response

22
apilog/models.py Normal file
View File

@@ -0,0 +1,22 @@
from django.db import models
from django.conf import settings
from django.db.models.signals import pre_delete
from django.dispatch import receiver
class APILog(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True)
request_url = models.URLField()
request_params = models.CharField(max_length=255, null=True, blank=True)
request_method = models.CharField(max_length=10)
request_body = models.TextField()
request_timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.user} - {self.request_url}"
@receiver(pre_delete, sender=APILog)
def prevent_delete(sender, instance, **kwargs):
# Empêchez la suppression en levant une exception, par exemple ValueError
raise ValueError("Vous n'êtes pas autorisé à supprimer cet enregistrement.")

3
apilog/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
apilog/views.py Normal file
View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.