from django import forms from gestion_projet.models import Projet from .models import ( ActiviteProjet, Bailleur, DocumentProjet, FinancementProjet, LivrablesLivres, DomaineDeRecherche ) class ProjetForm(forms.ModelForm): """Formulaire de création et de modification d'un projet, avec validation des dates et personnalisation des champs.""" class Meta: model = Projet fields = ( 'id_projet', 'nom_projet', 'date_debut', 'date_fin', 'numero_convention', 'domaine_recherche', 'type_projet', 'budget', 'budget_RH', 'description' ) # domaine_recherche = forms.ModelMultipleChoiceField( # queryset=DomaineDeRecherche.objects.all(), # to_field_name="nom", # required=False # ) widgets = { 'id_projet': forms.TextInput(attrs={'class': "form-control"}), '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"}), 'date_debut': forms.DateInput(attrs={'type': 'date', 'class': "form-control"}), 'date_fin': forms.DateInput(attrs={'type': 'date', 'class': "form-control"}), } class BailleurForm(forms.ModelForm): """ Formulaire de création et de modification d'un bailleur, avec validation des champs et personnalisation des labels. """ class Meta: model = Bailleur fields = ('nom_organisme', 'contact', 'email', 'pays') widgets = { 'nom_organisme':forms.TextInput(attrs={ 'class':'form-control', }), 'contact':forms.TextInput(attrs={ 'class':'form-control', }), 'email':forms.TextInput(attrs={ 'class':'form-control', }), 'pays':forms.TextInput(attrs={ 'class':'form-control', }), } class DocumentProjetForm(forms.ModelForm): """ Formulaire pour ajouter ou modifier un document associé à un projet, avec validation des champs et personnalisation des labels. """ class Meta: model = DocumentProjet fields = [ 'nom_document', 'numero', 'date_validite', 'fichier', 'description' ] widgets = { 'nom_document': forms.Select(attrs={'class': 'form-select'}), 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), 'numero': forms.TextInput(attrs={'class': 'form-control'}), 'date_validite': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), 'fichier': forms.ClearableFileInput(attrs={'class': 'form-control'}), } class ActiviteProjetForm(forms.ModelForm): """Formulaire pour créer ou modifier une activité de projet, avec validation des champs et personnalisation des widgets.""" class Meta: model = ActiviteProjet fields = ( 'titre', 'date_debut', 'date_fin', 'besoin_ressource_materielle', 'budget_prevu', 'description', ) widgets = { 'titre':forms.TextInput(attrs={ 'class':'form-control', 'placeholder':'Titre de l’activité' }), 'description':forms.Textarea(attrs={ 'class':'form-control', 'rows':3, 'placeholder':'Description de l’activité' }), 'date_debut':forms.DateInput(attrs={ 'class':'form-control', 'type':'date' }), 'date_fin':forms.DateInput(attrs={ 'class':'form-control', 'type':'date' }), 'besoin_ressource_materielle': forms.Textarea(attrs={ 'class':'form-control', 'rows':3, 'placeholder':'Besoin de ressources matérielles' }), 'budget_prevu': forms.NumberInput(attrs={ 'class':'form-control', 'placeholder':'Budget prévu' }), } class FinancementProjetFrom(forms.ModelForm): """Formulaire pour créer ou modifier le financement relatif à un projet.""" class Meta: model = FinancementProjet fields = ( 'projet', 'bailleur', 'pourcentage', ) widgets = { 'projet':forms.Select(attrs={ 'class':'form-select', }), 'bailleur':forms.Select(attrs={ 'class':'form-select', }), 'pourcentage':forms.NumberInput(attrs={ 'class':'form-control', }), } class LivrablesLivresForm(forms.ModelForm): """Formulaire pour créer ou modifier un livrable livré dans le cadre d'une activité de projet.""" class Meta: model = LivrablesLivres fields = ( 'activite', 'nom', 'fichier', ) widgets = { 'activite': forms.Select(attrs={ 'class':'form-select', }), 'nom': forms.TextInput(attrs={ 'class':'form-control', 'placeholder':'Nom du livrable' }), 'fichier': forms.ClearableFileInput(attrs={ 'class':'form-control', }), }