From 7965ecf779ec4c04d94b09d041d5460fafa050bd Mon Sep 17 00:00:00 2001 From: Faraphel Date: Thu, 30 Nov 2023 22:00:00 +0100 Subject: [PATCH] import the namespace with the models --- Palto/Palto/admin.py | 21 +++++----- Palto/Palto/api/v1/permissions.py | 23 ++++++----- Palto/Palto/api/v1/serializers.py | 21 +++++----- Palto/Palto/api/v1/tests.py | 2 +- Palto/Palto/api/v1/urls.py | 21 +++++----- Palto/Palto/api/v1/views.py | 65 ++++++++++++++----------------- 6 files changed, 72 insertions(+), 81 deletions(-) diff --git a/Palto/Palto/admin.py b/Palto/Palto/admin.py index 57e6fb5..64cd5fc 100644 --- a/Palto/Palto/admin.py +++ b/Palto/Palto/admin.py @@ -6,64 +6,63 @@ The admin is the admin page configuration, describing which model should be visi from django.contrib import admin -from .models import (Department, StudentGroup, TeachingUnit, StudentCard, TeachingSession, Attendance, Absence, - AbsenceAttachment, User) +from . import models # Register your models here. -@admin.register(User) +@admin.register(models.User) class AdminUser(admin.ModelAdmin): list_display = ("id", "username", "email", "first_name", "last_name", "is_staff") search_fields = ("id", "username", "email", "first_name", "last_name", "is_staff") list_filter = ("is_staff",) -@admin.register(Department) +@admin.register(models.Department) class AdminDepartment(admin.ModelAdmin): list_display = ("id", "name", "email") search_fields = ("id", "name", "email") -@admin.register(StudentGroup) +@admin.register(models.StudentGroup) class AdminStudentGroup(admin.ModelAdmin): list_display = ("id", "name", "owner", "department") search_fields = ("id", "name", "owner", "department") -@admin.register(TeachingUnit) +@admin.register(models.TeachingUnit) class AdminTeachingUnit(admin.ModelAdmin): list_display = ("id", "name") search_fields = ("id", "name") -@admin.register(StudentCard) +@admin.register(models.StudentCard) class AdminStudentCard(admin.ModelAdmin): list_display = ("id", "uid", "owner") search_fields = ("id", "uid", "owner") readonly_fields = ("uid",) -@admin.register(TeachingSession) +@admin.register(models.TeachingSession) class AdminTeachingSession(admin.ModelAdmin): list_display = ("id", "start", "end", "duration", "teacher") search_fields = ("id", "start", "end", "duration", "teacher") list_filter = ("start", "duration") -@admin.register(Attendance) +@admin.register(models.Attendance) class AdminAttendance(admin.ModelAdmin): list_display = ("id", "date", "student") search_fields = ("id", "date", "student") list_filter = ("date",) -@admin.register(Absence) +@admin.register(models.Absence) class AdminAbsence(admin.ModelAdmin): list_display = ("id", "message", "student") search_fields = ("id", "message", "student") -@admin.register(AbsenceAttachment) +@admin.register(models.AbsenceAttachment) class AdminAbsenceAttachment(admin.ModelAdmin): list_display = ("id", "content", "absence") search_fields = ("id", "content", "absence") diff --git a/Palto/Palto/api/v1/permissions.py b/Palto/Palto/api/v1/permissions.py index b538656..85ad32d 100644 --- a/Palto/Palto/api/v1/permissions.py +++ b/Palto/Palto/api/v1/permissions.py @@ -6,26 +6,25 @@ A permission describe which user is allowed to see and modify which objet with t from rest_framework import permissions -from Palto.Palto.models import (Department, TeachingUnit, StudentCard, StudentGroup, User, TeachingSession, Attendance, - Absence, AbsenceAttachment) +from Palto.Palto import models class UserPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: User) -> bool: + def has_object_permission(self, request, view, obj: models.User) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True if request.method in permissions.SAFE_METHODS: # if the user is in one of the same department as the requesting user, allow read - if obj in Department.multiple_related_users(request.user.related_departments): + if obj in models.Department.multiple_related_users(request.user.related_departments): return True return False class DepartmentPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: Department) -> bool: + def has_object_permission(self, request, view, obj: models.Department) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -42,7 +41,7 @@ class DepartmentPermission(permissions.BasePermission): class StudentGroupPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: StudentGroup) -> bool: + def has_object_permission(self, request, view, obj: models.StudentGroup) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -68,7 +67,7 @@ class StudentGroupPermission(permissions.BasePermission): class TeachingUnitPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: TeachingUnit) -> bool: + def has_object_permission(self, request, view, obj: models.TeachingUnit) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -90,7 +89,7 @@ class TeachingUnitPermission(permissions.BasePermission): class StudentCardPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: StudentCard) -> bool: + def has_object_permission(self, request, view, obj: models.StudentCard) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -108,7 +107,7 @@ class StudentCardPermission(permissions.BasePermission): class TeachingSessionPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: TeachingSession) -> bool: + def has_object_permission(self, request, view, obj: models.TeachingSession) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -134,7 +133,7 @@ class TeachingSessionPermission(permissions.BasePermission): class AttendancePermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: Attendance) -> bool: + def has_object_permission(self, request, view, obj: models.Attendance) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -160,7 +159,7 @@ class AttendancePermission(permissions.BasePermission): class AbsencePermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: Absence) -> bool: + def has_object_permission(self, request, view, obj: models.Absence) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True @@ -186,7 +185,7 @@ class AbsencePermission(permissions.BasePermission): class AbsenceAttachmentPermission(permissions.BasePermission): - def has_object_permission(self, request, view, obj: AbsenceAttachment) -> bool: + def has_object_permission(self, request, view, obj: models.AbsenceAttachment) -> bool: # if the requesting user is admin, allow all if request.user.is_superuser: return True diff --git a/Palto/Palto/api/v1/serializers.py b/Palto/Palto/api/v1/serializers.py index c2d8cc7..035e6d8 100644 --- a/Palto/Palto/api/v1/serializers.py +++ b/Palto/Palto/api/v1/serializers.py @@ -6,8 +6,7 @@ A serializers tell the API how should a model should be serialized to be used by from rest_framework import serializers -from Palto.Palto.models import (User, Department, TeachingUnit, StudentCard, TeachingSession, Attendance, Absence, - AbsenceAttachment, StudentGroup) +from Palto.Palto import models # TODO(Raphaƫl): Voir pour les related_name @@ -15,56 +14,56 @@ from Palto.Palto.models import (User, Department, TeachingUnit, StudentCard, Tea class UserSerializer(serializers.ModelSerializer): class Meta: - model = User + model = models.User fields = ['id', 'username', 'first_name', 'last_name', 'email'] class DepartmentSerializer(serializers.ModelSerializer): class Meta: - model = Department + model = models.Department fields = ['id', 'name', 'email', 'managers'] # NOTE: teachers, students class StudentGroupSerializer(serializers.ModelSerializer): class Meta: - model = StudentGroup + model = models.StudentGroup fields = ['id', 'name', 'owner', 'department'] # NOTE: students class TeachingUnitSerializer(serializers.ModelSerializer): class Meta: - model = TeachingUnit + model = models.TeachingUnit fields = ['id', 'name', 'department'] # NOTE: managers, teachers, student_groups class StudentCardSerializer(serializers.ModelSerializer): class Meta: - model = StudentCard + model = models.StudentCard fields = ['id', 'uid', 'department', 'owner'] class TeachingSessionSerializer(serializers.ModelSerializer): class Meta: - model = TeachingSession + model = models.TeachingSession fields = ['id', 'start', 'duration', 'note', 'unit', 'group', 'teacher'] class AttendanceSerializer(serializers.ModelSerializer): class Meta: - model = Attendance + model = models.Attendance fields = ['id', 'date', 'student', 'session'] class AbsenceSerializer(serializers.ModelSerializer): class Meta: - model = Absence + model = models.Absence fields = ['id', 'message', 'student', 'session'] class AbsenceAttachmentSerializer(serializers.ModelSerializer): class Meta: - model = AbsenceAttachment + model = models.AbsenceAttachment fields = ['id', 'content', 'absence'] diff --git a/Palto/Palto/api/v1/tests.py b/Palto/Palto/api/v1/tests.py index 7cb58de..6a85b2e 100644 --- a/Palto/Palto/api/v1/tests.py +++ b/Palto/Palto/api/v1/tests.py @@ -6,7 +6,7 @@ Everything to test the API v1 is described here. from django import test -from Palto.Palto.models import User +from Palto.Palto import models class UserTestCase(test.TestCase): diff --git a/Palto/Palto/api/v1/urls.py b/Palto/Palto/api/v1/urls.py index 48a7310..221ea5f 100644 --- a/Palto/Palto/api/v1/urls.py +++ b/Palto/Palto/api/v1/urls.py @@ -7,20 +7,19 @@ All the urls for every model of the API are described here. from rest_framework import routers -from .views import (UserViewSet, AbsenceAttachmentViewSet, AbsenceViewSet, AttendanceViewSet, TeachingSessionViewSet, - StudentCardViewSet, TeachingUnitViewSet, StudentGroupViewSet, DepartmentViewSet) +from . import views router = routers.DefaultRouter() -router.register(r'users', UserViewSet, basename="User") -router.register(r'departments', DepartmentViewSet, basename="Department") -router.register(r'student_groups', StudentGroupViewSet, basename="StudentGroup") -router.register(r'teaching_units', TeachingUnitViewSet, basename="TeachingUnit") -router.register(r'student_cards', StudentCardViewSet, basename="StudentCard") -router.register(r'teaching_sessions', TeachingSessionViewSet, basename="TeachingSession") -router.register(r'attendances', AttendanceViewSet, basename="Attendance") -router.register(r'absences', AbsenceViewSet, basename="Absence") -router.register(r'absence_attachments', AbsenceAttachmentViewSet, basename="AbsenceAttachment") +router.register(r'users', views.UserViewSet, basename="User") +router.register(r'departments', views.DepartmentViewSet, basename="Department") +router.register(r'student_groups', views.StudentGroupViewSet, basename="StudentGroup") +router.register(r'teaching_units', views.TeachingUnitViewSet, basename="TeachingUnit") +router.register(r'student_cards', views.StudentCardViewSet, basename="StudentCard") +router.register(r'teaching_sessions', views.TeachingSessionViewSet, basename="TeachingSession") +router.register(r'attendances', views.AttendanceViewSet, basename="Attendance") +router.register(r'absences', views.AbsenceViewSet, basename="Absence") +router.register(r'absence_attachments', views.AbsenceAttachmentViewSet, basename="AbsenceAttachment") urlpatterns = router.urls diff --git a/Palto/Palto/api/v1/views.py b/Palto/Palto/api/v1/views.py index acdd217..1efdcc0 100644 --- a/Palto/Palto/api/v1/views.py +++ b/Palto/Palto/api/v1/views.py @@ -7,65 +7,60 @@ An API view describe which models should display which files to user with which from rest_framework import viewsets from rest_framework.permissions import IsAuthenticated -from .permissions import (UserPermission, DepartmentPermission, StudentGroupPermission, TeachingUnitPermission, - StudentCardPermission, TeachingSessionPermission, AttendancePermission, AbsencePermission, - AbsenceAttachmentPermission) -from .serializers import (UserSerializer, AbsenceAttachmentSerializer, AbsenceSerializer, AttendanceSerializer, - TeachingSessionSerializer, StudentCardSerializer, StudentGroupSerializer, - DepartmentSerializer, TeachingUnitSerializer) -from ...models import (User, AbsenceAttachment, Absence, Attendance, TeachingSession, StudentCard, TeachingUnit, - StudentGroup, Department) +from . import permissions +from . import serializers +from ... import models class UserViewSet(viewsets.ModelViewSet): - serializer_class = UserSerializer - queryset = User.objects.all() - permission_classes = [IsAuthenticated, UserPermission] + serializer_class = serializers.UserSerializer + queryset = models.User.objects.all() + permission_classes = [IsAuthenticated, permissions.UserPermission] class DepartmentViewSet(UserViewSet): - serializer_class = DepartmentSerializer - queryset = Department.objects.all() - permission_classes = [DepartmentPermission] + serializer_class = serializers.DepartmentSerializer + queryset = models.Department.objects.all() + permission_classes = [permissions.DepartmentPermission] class StudentGroupViewSet(UserViewSet): - serializer_class = StudentGroupSerializer - queryset = StudentGroup.objects.all() - permission_classes = [IsAuthenticated, StudentGroupPermission] + serializer_class = serializers.StudentGroupSerializer + queryset = models.StudentGroup.objects.all() + permission_classes = [IsAuthenticated, permissions.StudentGroupPermission] class TeachingUnitViewSet(UserViewSet): - serializer_class = TeachingUnitSerializer - queryset = TeachingUnit.objects.all() - permission_classes = [IsAuthenticated, TeachingUnitPermission] + serializer_class = serializers.TeachingUnitSerializer + queryset = models.TeachingUnit.objects.all() + permission_classes = [IsAuthenticated, permissions.TeachingUnitPermission] class StudentCardViewSet(UserViewSet): - serializer_class = StudentCardSerializer - queryset = StudentCard.objects.all() - permission_classes = [IsAuthenticated, StudentCardPermission] + serializer_class = serializers.StudentCardSerializer + queryset = models.StudentCard.objects.all() + permission_classes = [IsAuthenticated, permissions.StudentCardPermission] class TeachingSessionViewSet(UserViewSet): - serializer_class = TeachingSessionSerializer - queryset = TeachingSession.objects.all() - permission_classes = [IsAuthenticated, TeachingSessionPermission] + serializer_class = serializers.TeachingSessionSerializer + queryset = models.TeachingSession.objects.all() + permission_classes = [IsAuthenticated, permissions.TeachingSessionPermission] class AttendanceViewSet(UserViewSet): - serializer_class = AttendanceSerializer - queryset = Attendance.objects.all() - permission_classes = [IsAuthenticated, AttendancePermission] + serializer_class = serializers.AttendanceSerializer + queryset = models.Attendance.objects.all() + permission_classes = [IsAuthenticated, permissions.AttendancePermission] class AbsenceViewSet(UserViewSet): - serializer_class = AbsenceSerializer - queryset = Absence.objects.all() - permission_classes = [IsAuthenticated, AbsencePermission] + serializer_class = serializers.AbsenceSerializer + queryset = models.Absence.objects.all() + permission_classes = [IsAuthenticated, permissions.AbsencePermission] class AbsenceAttachmentViewSet(UserViewSet): - serializer_class = AbsenceAttachmentSerializer - queryset = AbsenceAttachment.objects.all() - permission_classes = [IsAuthenticated, AbsenceAttachmentPermission] + serializer_class = serializers.AbsenceAttachmentSerializer + queryset = models.AbsenceAttachment.objects.all() + permission_classes = [IsAuthenticated, permissions.AbsenceAttachmentPermission]