Fix/Correction affectation departement
Some checks failed
Organisation/sirh/pipeline/head There was a failure building this commit

This commit is contained in:
Soriba SYLLA
2026-10-07 10:30:08 +00:00
parent f061f482d9
commit 0abbb26149
59 changed files with 170 additions and 2780 deletions

View File

@@ -22,7 +22,6 @@ class ProjetForm(forms.ModelForm):
'date_fin',
'numero_convention',
'domaine_recherche',
'type_projet',
'budget',
'budget_RH',
'description'
@@ -37,7 +36,6 @@ class ProjetForm(forms.ModelForm):
'nom_projet': forms.TextInput(attrs={'class': "form-control"}),
'numero_convention': forms.TextInput(attrs={'class': "form-control"}),
'domaine_recherche': forms.SelectMultiple(attrs={'class': "form-control"}),
'type_projet': forms.Select(attrs={'class': "form-select"}),
'budget': forms.NumberInput(attrs={'class': "form-control"}),
'budget_RH': forms.NumberInput(attrs={'class': "form-control"}),
'description': forms.Textarea(attrs={'class': "form-control"}),
@@ -175,4 +173,4 @@ class LivrablesLivresForm(forms.ModelForm):
'fichier': forms.ClearableFileInput(attrs={
'class':'form-control',
}),
}
}

View File

@@ -1,5 +1,3 @@
from datetime import datetime
from django.db import models
from django.utils import timezone
@@ -33,9 +31,11 @@ class DomaineDeRecherche(models.Model):
DOMAINE_RECHERCHE = (
('sciences_sociales', 'Sciences sociales'),
('naturelles', 'Naturelles'),
('humaines', 'Humaines'),
('veterinaires', 'Vétérinaires')
('epidemiologie', 'Epidémiologie'),
('sciences_biomedicales', 'Sciences biomédicales'),
('service_pedagogique', 'Service Pédagogique'),
('recherche_clinique', 'Recherche clinique')
)
nom = models.CharField(
@@ -54,13 +54,6 @@ class DomaineDeRecherche(models.Model):
class Projet(models.Model):
"""Modèle représentant un projet de recherche avec ses caractéristiques et son bailleur associé."""
TYPE_PROJET = (
('laboratoire', 'Laboratoire'),
('épidémiologie', 'Épidémiologie'),
('sciences sociales', 'Sciences sociales'),
('cliniques', 'Cliniques'),
('autre', 'Autre'),
)
id_projet = models.CharField(
max_length=100,
@@ -86,12 +79,6 @@ class Projet(models.Model):
description = models.TextField(
verbose_name="Description"
)
type_projet = models.CharField(
max_length=100,
choices=TYPE_PROJET,
default='épidémiologie',
verbose_name="Type de projet"
)
domaine_recherche = models.ManyToManyField(DomaineDeRecherche)
budget=models.DecimalField(
max_digits=12,
@@ -114,13 +101,13 @@ class Projet(models.Model):
@property
def statut(self):
if self.date_fin < datetime.date.today():
if self.date_fin < timezone.now().date():
return "Terminé"
return "En cours"
@property
def avancement(self):
aujourd_hui = datetime.date.today()
aujourd_hui = timezone.now().date()
if (self.date_debut and self.date_fin) and (self.date_debut < self.date_fin):
duree_projet = (self.date_fin - self.date_debut).days
temps_ecoule = (aujourd_hui - self.date_debut).days
@@ -309,4 +296,4 @@ class LivrablesLivres(models.Model):
null = True
)
def __str__(self):
return self.nom
return self.nom

View File

@@ -1,5 +1,6 @@
const $ = (element) => document.getElementById(element)
const url_liste_projet = $("tableau-liste-projet").dataset.url;
const tableau_liste_projet = new Tabulator("#tableau-liste-projet", {
fitColumns: true,
responsiveLayout : true,
@@ -39,7 +40,6 @@ tableau_liste_projet.on("rowClick", function (row, rowData) {
$("detail_date_debut").value = data.date_debut;
$("detail_date_fin").value = data.date_fin;
$("detail_numero_convention").value = data.numero_convention;
$("detail_type_projet").value = data.type_projet;
Array.from($("detail_domaine_recherche").options).forEach(option => {
if (data.domaine_recherche.includes(option.value)) {
option.selected = true;
@@ -61,4 +61,4 @@ tableau_liste_projet.on("rowClick", function (row, rowData) {
// $('detail-projet-form').addEventListener('submit', (e) => {
// e.preventDefault();
// new FormData($("detail-projet-form"));
// })
// })

View File

@@ -18,4 +18,4 @@
</div>
</div>
</div>
</div>
</div>

View File

@@ -31,23 +31,15 @@
<label>Date de fin :</label>
<input type="date" class="form-control" id="detail_date_fin" name='date_fin'>
</div>
<div class="form-group mb-2">
<label> Type de projet </label>
<select class="form-select" id="detail_type_projet" name='type_projet'>
<option value="laboratoire">Laboratoire</option>
<option value="épidémiologie">Épidémiologie</option>
<option value="sciences sociales">Sciences sociales</option>
<option value="cliniques">Cliniques</option>
<option value="autre">Autre</option>
</select>
</div>
<div class="form-group mb-2">
<label> Domaine de recherche </label>
<select class="form-select" multiple id="detail_domaine_recherche" name="domaine_recherche">
<option value="sciences_sociales">Sciences sociales</option>
<option value="naturelles">Naturelles</option>
<option value="humaines">Humaines</option>
<option value="veterinaires">Vétérinaires</option>
<option value="epidemiologie">Epidémiologie</option>
<option value="sciences_biomedicales">Sciences biomédicales</option>
<option value="service_pedagogique">Service Pédagogique</option>
<option value="recherche_clinique">Recherche clinique</option>
</select>
</div>
<div class="form-group mb-2">
@@ -112,4 +104,4 @@
</div>
</div>
</div>
</div>
</div>

View File

@@ -44,7 +44,6 @@ def liste_projet(request):
"date_fin": p.date_fin,
"numero_convention": p.numero_convention,
"description": p.description,
"type_projet": p.type_projet,
"budget": p.budget,
"budget_RH": p.budget_RH,
"created_at": p.created_at,
@@ -502,4 +501,4 @@ def annuler_activite_projet(request):
activite.motif_annulation = request.POST.get("motif_annulation", "").strip()
activite.save()
messages.success(request, f"L'activité '{activite.titre}' a été annulée avec succès.")
return redirect('gestion_projet:activites-projet')
return redirect('gestion_projet:activites-projet')