mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
feat: planning events
This commit is contained in:
1
Back-End/Planning/__init__.py
Normal file
1
Back-End/Planning/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
default_app_config = 'Planning.apps.PlanningConfig'
|
||||
3
Back-End/Planning/admin.py
Normal file
3
Back-End/Planning/admin.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
7
Back-End/Planning/apps.py
Normal file
7
Back-End/Planning/apps.py
Normal file
@ -0,0 +1,7 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
class PlanningConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'Planning'
|
||||
|
||||
|
||||
38
Back-End/Planning/models.py
Normal file
38
Back-End/Planning/models.py
Normal file
@ -0,0 +1,38 @@
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.conf import settings
|
||||
|
||||
from School.models import Establishment
|
||||
|
||||
class RecursionType(models.IntegerChoices):
|
||||
RECURSION_NONE = 0, _('Aucune')
|
||||
RECURSION_DAILY = 1, _('Quotidienne')
|
||||
RECURSION_WEEKLY = 2, _('Hebdomadaire')
|
||||
RECURSION_MONTHLY = 3, _('Mensuel')
|
||||
RECURSION_CUSTOM = 4, _('Personnalisé')
|
||||
|
||||
class Planning(models.Model):
|
||||
establishment = models.ForeignKey(Establishment, on_delete=models.PROTECT)
|
||||
name = models.CharField(max_length=255)
|
||||
description = models.TextField(default="", blank=True, null=True)
|
||||
color= models.CharField(max_length=255, default="#000000")
|
||||
|
||||
def __str__(self):
|
||||
return f'Planning for {self.user.username}'
|
||||
|
||||
|
||||
class Events(models.Model):
|
||||
planning = models.ForeignKey(Planning, on_delete=models.PROTECT)
|
||||
title = models.CharField(max_length=255)
|
||||
description = models.TextField()
|
||||
start = models.DateTimeField()
|
||||
end = models.DateTimeField()
|
||||
recursionType = models.IntegerField(choices=RecursionType, default=0)
|
||||
color= models.CharField(max_length=255)
|
||||
location = models.CharField(max_length=255, default="", blank=True, null=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f'Event for {self.user.username}'
|
||||
13
Back-End/Planning/serializers.py
Normal file
13
Back-End/Planning/serializers.py
Normal file
@ -0,0 +1,13 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import Planning, Events
|
||||
|
||||
|
||||
class PlanningSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Planning
|
||||
fields = '__all__'
|
||||
class EventsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Events
|
||||
fields = '__all__'
|
||||
10
Back-End/Planning/urls.py
Normal file
10
Back-End/Planning/urls.py
Normal file
@ -0,0 +1,10 @@
|
||||
from django.urls import path, re_path
|
||||
|
||||
from Planning.views import PlanningView,PlanningWithIdView,EventsView,EventsWithIdView
|
||||
|
||||
urlpatterns = [
|
||||
re_path(r'^plannings$', PlanningView.as_view(), name="planning"),
|
||||
re_path(r'^plannings/(?P<id>[0-9]+)$', PlanningWithIdView.as_view(), name="planning"),
|
||||
re_path(r'^events$', EventsView.as_view(), name="events"),
|
||||
re_path(r'^events/(?P<id>[0-9]+)$', EventsWithIdView.as_view(), name="events"),
|
||||
]
|
||||
89
Back-End/Planning/views.py
Normal file
89
Back-End/Planning/views.py
Normal file
@ -0,0 +1,89 @@
|
||||
from django.http.response import JsonResponse
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from .models import Planning, Events
|
||||
|
||||
from .serializers import PlanningSerializer, EventsSerializer
|
||||
|
||||
from N3wtSchool import bdd
|
||||
|
||||
class PlanningView(APIView):
|
||||
def get(self, request):
|
||||
plannings=bdd.getAllObjects(Planning)
|
||||
planning_serializer=PlanningSerializer(plannings, many=True)
|
||||
|
||||
return JsonResponse(planning_serializer.data, safe=False)
|
||||
|
||||
def post(self, request):
|
||||
planning_serializer = PlanningSerializer(data=request.data)
|
||||
if planning_serializer.is_valid():
|
||||
planning_serializer.save()
|
||||
return JsonResponse(planning_serializer.data, status=201)
|
||||
return JsonResponse(planning_serializer.errors, status=400)
|
||||
|
||||
|
||||
|
||||
class PlanningWithIdView(APIView):
|
||||
def get(self, request,id):
|
||||
planning = Planning.objects.get(pk=id)
|
||||
if planning is None:
|
||||
return JsonResponse({"errorMessage":'Le dossier d\'inscription n\'a pas été trouvé'}, safe=False, status=status.HTTP_404_NOT_FOUND)
|
||||
planning_serializer=PlanningSerializer(planning)
|
||||
|
||||
return JsonResponse(planning_serializer.data, safe=False)
|
||||
|
||||
def put(self, request, id):
|
||||
try:
|
||||
planning = Planning.objects.get(pk=id)
|
||||
except Planning.DoesNotExist:
|
||||
return JsonResponse({'error': 'Planning not found'}, status=404)
|
||||
|
||||
planning_serializer = PlanningSerializer(planning, data=request.data)
|
||||
if planning_serializer.is_valid():
|
||||
planning_serializer.save()
|
||||
return JsonResponse(planning_serializer.data)
|
||||
return JsonResponse(planning_serializer.errors, status=400)
|
||||
|
||||
def delete(self, request, id):
|
||||
try:
|
||||
planning = Planning.objects.get(pk=id)
|
||||
except Planning.DoesNotExist:
|
||||
return JsonResponse({'error': 'Planning not found'}, status=404)
|
||||
|
||||
planning.delete()
|
||||
return JsonResponse({'message': 'Planning deleted'}, status=204)
|
||||
|
||||
class EventsView(APIView):
|
||||
def get(self, request):
|
||||
events = bdd.getAllObjects(Events)
|
||||
events_serializer = EventsSerializer(events, many=True)
|
||||
return JsonResponse(events_serializer.data, safe=False)
|
||||
|
||||
def post(self, request):
|
||||
events_serializer = EventsSerializer(data=request.data)
|
||||
if events_serializer.is_valid():
|
||||
events_serializer.save()
|
||||
return JsonResponse(events_serializer.data, status=201)
|
||||
return JsonResponse(events_serializer.errors, status=400)
|
||||
|
||||
class EventsWithIdView(APIView):
|
||||
def put(self, request, id):
|
||||
try:
|
||||
event = Events.objects.get(pk=id)
|
||||
except Events.DoesNotExist:
|
||||
return JsonResponse({'error': 'Event not found'}, status=404)
|
||||
|
||||
events_serializer = EventsSerializer(event, data=request.data)
|
||||
if events_serializer.is_valid():
|
||||
events_serializer.save()
|
||||
return JsonResponse(events_serializer.data)
|
||||
return JsonResponse(events_serializer.errors, status=400)
|
||||
|
||||
def delete(self, request, id):
|
||||
try:
|
||||
event = Events.objects.get(pk=id)
|
||||
except Events.DoesNotExist:
|
||||
return JsonResponse({'error': 'Event not found'}, status=404)
|
||||
|
||||
event.delete()
|
||||
return JsonResponse({'message': 'Event deleted'}, status=204)
|
||||
Reference in New Issue
Block a user