diff --git a/Back-End/School/models.py b/Back-End/School/models.py
index f03a19a..7af9f7e 100644
--- a/Back-End/School/models.py
+++ b/Back-End/School/models.py
@@ -21,7 +21,6 @@ class Speciality(models.Model):
name = models.CharField(max_length=100)
updated_date = models.DateTimeField(auto_now=True)
color_code = models.CharField(max_length=7, default='#FFFFFF')
- school_year = models.CharField(max_length=9, blank=True)
establishment = models.ForeignKey('Establishment.Establishment', on_delete=models.CASCADE, related_name='specialities')
def __str__(self):
@@ -32,7 +31,6 @@ class Teacher(models.Model):
first_name = models.CharField(max_length=100)
specialities = models.ManyToManyField(Speciality, blank=True)
profile_role = models.OneToOneField('Auth.ProfileRole', on_delete=models.CASCADE, related_name='teacher_profile', null=True, blank=True)
- school_year = models.CharField(max_length=9, blank=True)
updated_date = models.DateTimeField(auto_now=True)
def __str__(self):
diff --git a/Back-End/School/views.py b/Back-End/School/views.py
index 9a1531e..7ca25eb 100644
--- a/Back-End/School/views.py
+++ b/Back-End/School/views.py
@@ -73,15 +73,12 @@ class SpecialityListCreateView(APIView):
def get(self, request):
establishment_id = request.GET.get('establishment_id', None)
- school_year = request.GET.get('school_year', None)
if establishment_id is None:
return JsonResponse({'error': 'establishment_id est requis'}, safe=False, status=status.HTTP_400_BAD_REQUEST)
specialities_list = getAllObjects(Speciality)
if establishment_id:
specialities_list = specialities_list.filter(establishment__id=establishment_id).distinct()
- if school_year:
- specialities_list = specialities_list.filter(school_year=school_year)
specialities_serializer = SpecialitySerializer(specialities_list, many=True)
return JsonResponse(specialities_serializer.data, safe=False)
diff --git a/Front-End/src/components/Structure/Configuration/SpecialitiesSection.js b/Front-End/src/components/Structure/Configuration/SpecialitiesSection.js
index 0bc02f5..2a7e7ee 100644
--- a/Front-End/src/components/Structure/Configuration/SpecialitiesSection.js
+++ b/Front-End/src/components/Structure/Configuration/SpecialitiesSection.js
@@ -1,14 +1,12 @@
-import { Trash2, Edit3, Check, X, BookOpen, Download } from 'lucide-react';
+import { Trash2, Edit3, Check, X, BookOpen, Download } from 'lucide-react';
import { useState, useEffect } from 'react';
import Table from '@/components/Table';
import Popup from '@/components/Popup';
import InputTextWithColorIcon from '@/components/Form/InputTextWithColorIcon';
-import SelectChoice from '@/components/Form/SelectChoice';
import { DndProvider } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import SpecialityItem from '@/components/Structure/Configuration/SpecialityItem';
import { useEstablishment } from '@/context/EstablishmentContext';
-import { useSchoolYearFilter } from '@/context/SchoolYearFilterContext';
import logger from '@/utils/logger';
import SectionHeader from '@/components/SectionHeader';
import AlertMessage from '@/components/AlertMessage';
@@ -34,47 +32,39 @@ const SpecialitiesSection = ({
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
const ITEMS_PER_PAGE = 10;
const [currentPage, setCurrentPage] = useState(1);
- useEffect(() => { setCurrentPage(1); }, [specialities]);
- useEffect(() => { if (newSpeciality) setCurrentPage(1); }, [newSpeciality]);
+
+ useEffect(() => {
+ setCurrentPage(1);
+ }, [specialities]);
+
+ useEffect(() => {
+ if (newSpeciality) setCurrentPage(1);
+ }, [newSpeciality]);
+
const totalPages = Math.ceil(specialities.length / ITEMS_PER_PAGE);
- const pagedSpecialities = specialities.slice((currentPage - 1) * ITEMS_PER_PAGE, currentPage * ITEMS_PER_PAGE);
+ const pagedSpecialities = specialities.slice(
+ (currentPage - 1) * ITEMS_PER_PAGE,
+ currentPage * ITEMS_PER_PAGE
+ );
const { selectedEstablishmentId, profileRole } = useEstablishment();
- const { selectedSchoolYear } = useSchoolYearFilter();
- // Fonction pour générer les années scolaires
- const getSchoolYearChoices = () => {
- const currentDate = new Date();
- const currentYear = currentDate.getFullYear();
- const currentMonth = currentDate.getMonth() + 1;
- const startYear = currentMonth >= 9 ? currentYear : currentYear - 1;
- const choices = [];
- for (let i = 0; i < 3; i++) {
- const year = startYear + i;
- choices.push({ value: `${year}-${year + 1}`, label: `${year}-${year + 1}` });
- }
- return choices;
- };
-
- // Récupération des messages d'erreur
const getError = (field) => {
return localErrors?.[field]?.[0];
};
const handleAddSpeciality = () => {
- setNewSpeciality({ id: Date.now(), name: '', color_code: '', school_year: selectedSchoolYear });
+ setNewSpeciality({ id: Date.now(), name: '', color_code: '' });
};
- // Export CSV
const handleExportCSV = () => {
const exportColumns = [
{ key: 'id', label: 'ID' },
{ key: 'name', label: 'Nom' },
{ key: 'color_code', label: 'Code couleur' },
- { key: 'school_year', label: 'Année scolaire' },
{ key: 'updated_date_formatted', label: 'Date de mise à jour' },
];
- const filename = `specialites_${selectedSchoolYear || 'toutes'}_${new Date().toISOString().split('T')[0]}`;
+ const filename = `specialites_${new Date().toISOString().split('T')[0]}`;
exportToCSV(specialities, exportColumns, filename);
};
@@ -92,10 +82,9 @@ const SpecialitiesSection = ({
const handleSaveNewSpeciality = () => {
if (newSpeciality.name) {
- // Ajouter l'ID de l'établissement à la nouvelle spécialité
const specialityData = {
...newSpeciality,
- establishment: selectedEstablishmentId, // Inclure l'ID de l'établissement
+ establishment: selectedEstablishmentId,
};
handleCreate(specialityData)
@@ -120,10 +109,10 @@ const SpecialitiesSection = ({
const handleUpdateSpeciality = (id, updatedSpeciality) => {
if (updatedSpeciality.name) {
handleEdit(id, updatedSpeciality)
- .then((updatedSpeciality) => {
+ .then((updatedItem) => {
setSpecialities(
specialities.map((speciality) =>
- speciality.id === id ? updatedSpeciality : speciality
+ speciality.id === id ? updatedItem : speciality
)
);
setEditingSpeciality(null);
@@ -144,21 +133,17 @@ const SpecialitiesSection = ({
const handleChange = (e) => {
const { name, value } = e.target;
- let parsedValue = value;
- if (name.includes('_color')) {
- parsedValue = value;
- }
-
const fieldName = name.includes('_color') ? 'color_code' : name;
+
if (editingSpeciality) {
setFormData((prevData) => ({
...prevData,
- [fieldName]: parsedValue,
+ [fieldName]: value,
}));
} else if (newSpeciality) {
setNewSpeciality((prevData) => ({
...prevData,
- [fieldName]: parsedValue,
+ [fieldName]: value,
}));
}
};
@@ -182,20 +167,6 @@ const SpecialitiesSection = ({
errorMsg={getError('name')}
/>
);
- case 'ANNÉE SCOLAIRE':
- return (
-