Ajout de questions à la section "Activités en Francophonie"
authorEric Mc Sween <eric.mcsween@gmail.com>
Tue, 14 Dec 2010 20:54:06 +0000 (15:54 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Tue, 14 Dec 2010 20:54:06 +0000 (15:54 -0500)
Demande #874

auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/sql/2010-12-14.sql [new file with mode: 0644]
auf_savoirs_en_partage/templates/chercheurs/chercheur_form.html
auf_savoirs_en_partage/templates/chercheurs/fiche.html

index 6230bcc..0ecd853 100644 (file)
@@ -16,7 +16,11 @@ class ChercheurForm(forms.ModelForm):
         help_text="e.g. conseil scientifique, conseil associatif, commission régionale d'experts",
         choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
     )
-    membre_instance_auf_details = forms.CharField(label="Préciser laquelle et votre fonction", required=False)
+    membre_instance_auf_nom = forms.ChoiceField(
+        choices = (('', '---------'),) + Chercheur.INSTANCE_AUF_CHOICES,
+        label="Préciser laquelle", required=False
+    )
+    membre_instance_auf_fonction = forms.CharField(label="Préciser votre fonction", required=False)
     membre_instance_auf_dates = forms.CharField(label="Préciser les dates", required=False)
     expert_oif = forms.ChoiceField(label="Avez-vous déjà été sollicité par l'OIF?", choices=OUI_NON_CHOICES, widget=forms.RadioSelect())
     expert_oif_details = forms.CharField(label="Préciser à quel titre", required=False,
@@ -30,10 +34,14 @@ class ChercheurForm(forms.ModelForm):
     membre_association_francophone_details = forms.CharField(label="Préciser laquelle", required=False)
     membre_reseau_institutionnel = forms.ChoiceField(
         label="Avez-vous fait partie des instances d'un réseau institutionnel de l'AUF?",
-        help_text="e.g. AFELSH, RIFFEF, CIDMEF, etc.",
         choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
     )
-    membre_reseau_institutionnel_details = forms.CharField(required=False, label="Préciser lesquelles et votre fonction")
+    membre_reseau_institutionnel_nom = forms.ChoiceField(
+        label="Préciser le réseau institutionnel",
+        choices=(('', '---------'),) + Chercheur.RESEAU_INSTITUTIONNEL_CHOICES,
+        required=False
+    )
+    membre_reseau_institutionnel_fonction = forms.CharField(required=False, label="Préciser votre fonction")
     membre_reseau_institutionnel_dates = forms.CharField(required=False, label="Préciser les dates")
 
     pays_etablissement = forms.ModelChoiceField(label="Pays de l'établissement", queryset=Pays.objects.all(), required=True)
@@ -56,17 +64,18 @@ class ChercheurForm(forms.ModelForm):
 
     class Meta:
         model = Chercheur
-        fields = ('nom', 'prenom', 'genre',
-                  'statut', 'diplome', 'discipline', 'theme_recherche',
-                  'groupe_recherche', 'mots_cles', 'url_site_web',
-                  'url_blog', 'url_reseau_social', 'attestation',
-                  'membre_instance_auf', 'membre_instance_auf_details',
+        fields = ('nom', 'prenom', 'genre', 'statut', 'diplome',
+                  'discipline', 'theme_recherche', 'groupe_recherche',
+                  'mots_cles', 'url_site_web', 'url_blog',
+                  'url_reseau_social', 'attestation', 'membre_instance_auf',
+                  'membre_instance_auf_nom', 'membre_instance_auf_fonction',
                   'membre_instance_auf_dates', 'expert_oif',
                   'expert_oif_details', 'expert_oif_dates',
                   'membre_association_francophone',
                   'membre_association_francophone_details',
                   'membre_reseau_institutionnel',
-                  'membre_reseau_institutionnel_details',
+                  'membre_reseau_institutionnel_nom',
+                  'membre_reseau_institutionnel_fonction',
                   'membre_reseau_institutionnel_dates', 'expertises_auf')
         
     def __init__(self, data=None, prefix=None, instance=None):
@@ -110,12 +119,19 @@ class ChercheurForm(forms.ModelForm):
     def clean_membre_instance_auf(self):
         return bool(int(self.cleaned_data['membre_instance_auf']))
     
-    def clean_membre_instance_auf_details(self):
+    def clean_membre_instance_auf_nom(self):
         membre = self.cleaned_data.get('membre_instance_auf')
-        details = self.cleaned_data.get('membre_instance_auf_details')
-        if membre and not details:
+        nom = self.cleaned_data.get('membre_instance_auf_nom')
+        if membre and not nom:
             raise forms.ValidationError('Veuillez préciser')
-        return details
+        return nom
+
+    def clean_membre_instance_auf_fonction(self):
+        membre = self.cleaned_data.get('membre_instance_auf')
+        fonction = self.cleaned_data.get('membre_instance_auf_fonction')
+        if membre and not fonction:
+            raise forms.ValidationError('Veuillez préciser')
+        return fonction
 
     def clean_membre_instance_auf_dates(self):
         membre = self.cleaned_data.get('membre_instance_auf')
@@ -154,12 +170,19 @@ class ChercheurForm(forms.ModelForm):
     def clean_membre_reseau_institutionnel(self):
         return bool(int(self.cleaned_data['membre_reseau_institutionnel']))
 
-    def clean_membre_reseau_institutionnel_details(self):
+    def clean_membre_reseau_institutionnel_nom(self):
         membre = self.cleaned_data.get('membre_reseau_institutionnel')
-        details = self.cleaned_data.get('membre_reseau_institutionnel_details')
-        if membre and not details:
+        nom = self.cleaned_data.get('membre_reseau_institutionnel_nom')
+        if membre and not nom:
             raise forms.ValidationError('Veuillez préciser')
-        return details
+        return nom
+
+    def clean_membre_reseau_institutionnel_fonction(self):
+        membre = self.cleaned_data.get('membre_reseau_institutionnel')
+        fonction = self.cleaned_data.get('membre_reseau_institutionnel_fonction')
+        if membre and not fonction:
+            raise forms.ValidationError('Veuillez préciser')
+        return fonction
 
     def clean_membre_reseau_institutionnel_dates(self):
         membre = self.cleaned_data.get('membre_reseau_institutionnel')
index 1334ab0..96c5d6f 100644 (file)
@@ -152,8 +152,34 @@ class ChercheurManager(SEPManager):
     def order_by_pays(self, direction=''):
         return self.get_query_set().order_by_pays(self, direction=direction)
 
-STATUT_CHOICES = (('enseignant', 'Enseignant-chercheur dans un établissement'), ('etudiant', 'Étudiant-chercheur doctorant'), ('independant', 'Chercheur indépendant docteur'))
+STATUT_CHOICES = (
+    ('enseignant', 'Enseignant-chercheur dans un établissement'), 
+    ('etudiant', 'Étudiant-chercheur doctorant'), 
+    ('independant', 'Chercheur indépendant docteur')
+)
+
 class Chercheur(Personne):
+    RESEAU_INSTITUTIONNEL_CHOICES = (
+        ('AFELSH', 'Association des facultés ou établissements de lettres et sciences humaines des universités d’expression française (AFELSH)'),
+        ('CIDEGEF', 'Conférence internationale des dirigeants des institutions d’enseignement supérieur et de recherche de gestion d’expression française (CIDEGEF)'),
+        ('RIFEFF', 'Réseau international francophone des établissements de formation de formateurs (RIFEFF)'),
+        ('CIDMEF', 'Conférence internationale des doyens des facultés de médecine d’expression française (CIDMEF)'),
+        ('CIDCDF', 'Conférence internationale des doyens des facultés de chirurgie dentaire d’expression totalement ou partiellement française (CIDCDF)'),
+        ('CIFDUF', 'Conférence internationale des facultés de droit ayant en commun l’usage du français (CIFDUF)'),
+        ('CIRUISEF', 'Conférence internationale des responsables des universités et institutions à dominante scientifique et technique d’expression française (CIRUISEF)'),
+        ('Theophraste', 'Réseau Théophraste (Réseau de centres francophones de formation au journalisme)'),
+        ('CIDPHARMEF', 'Conférence internationale des doyens des facultés de pharmacie d’expression française (CIDPHARMEF)'),
+        ('CIDEFA', 'Conférence internationale des directeurs et doyens des établissements supérieurs d’expression française des sciences de l’agriculture et de l’alimentation (CIDEFA)'),
+        ('CITEF', 'Conférence internationale des formations d’ingénieurs et techniciens d’expression française (CITEF)'),
+        ('APERAU', 'Association pour la promotion de l’enseignement et de la recherche en aménagement et urbanisme (APERAU)'),
+    )
+    INSTANCE_AUF_CHOICES = (
+        ('CASSOC', 'Conseil associatif'),
+        ('CA', "Conseil d'administration"),
+        ('CS', 'Conseil scientifique'),
+        ('CRE', "Commission régionale d'experts")
+    )
+
     nationalite = models.ForeignKey(Pays, null = True, db_column='nationalite', to_field='code', 
                                     verbose_name = 'nationalité', related_name='nationalite')
     statut = models.CharField(max_length=36, choices=STATUT_CHOICES)
@@ -185,7 +211,8 @@ class Chercheur(Personne):
     
     # Activités en francophonie
     membre_instance_auf = models.BooleanField(default=False, verbose_name="est ou a déjà été membre d'une instance de l'AUF")
-    membre_instance_auf_details = models.CharField(max_length=255, blank=True, verbose_name="détails")
+    membre_instance_auf_nom = models.CharField(max_length=10, blank=True, choices=INSTANCE_AUF_CHOICES, verbose_name="instance")
+    membre_instance_auf_fonction = models.CharField(max_length=255, blank=True, verbose_name="fonction")
     membre_instance_auf_dates = models.CharField(max_length=255, blank=True, verbose_name="dates")
     expert_oif = models.BooleanField(default=False, verbose_name="a été sollicité par l'OIF")
     expert_oif_details = models.CharField(max_length=255, blank=True, verbose_name="détails")
@@ -193,10 +220,14 @@ class Chercheur(Personne):
     membre_association_francophone = models.BooleanField(default=False, verbose_name="est membre d'une association francophone")
     membre_association_francophone_details = models.CharField(max_length=255, blank=True, verbose_name="nom de l'association")
     membre_reseau_institutionnel = models.BooleanField(
-        default=False, verbose_name="a fait partie des instances d'un réseau institutionnel de l'AUF"
+        default=False, verbose_name="est membre des instances d'un réseau institutionnel de l'AUF"
+    )
+    membre_reseau_institutionnel_nom = models.CharField(
+        max_length=15, choices=RESEAU_INSTITUTIONNEL_CHOICES, blank=True,
+        verbose_name="réseau institutionnel"
     )
-    membre_reseau_institutionnel_details = models.CharField(
-        max_length=255, blank=True, verbose_name="instances et fonction"
+    membre_reseau_institutionnel_fonction = models.CharField(
+        max_length=255, blank=True, verbose_name="fonction"
     )
     membre_reseau_institutionnel_dates = models.CharField(
         max_length=255, blank=True, verbose_name="dates"
diff --git a/auf_savoirs_en_partage/sql/2010-12-14.sql b/auf_savoirs_en_partage/sql/2010-12-14.sql
new file mode 100644 (file)
index 0000000..3a37afa
--- /dev/null
@@ -0,0 +1,7 @@
+ALTER TABLE `chercheurs_chercheur`
+    ADD COLUMN `membre_reseau_institutionnel_nom` varchar(15) NOT NULL,
+    CHANGE COLUMN membre_reseau_institutionnel_details `membre_reseau_institutionnel_fonction` varchar(255) NOT NULL;
+
+ALTER TABLE `chercheurs_chercheur`
+    ADD COLUMN `membre_instance_auf_nom` varchar(10) NOT NULL,
+    CHANGE COLUMN membre_instance_auf_details `membre_instance_auf_fonction` varchar(255) NOT NULL;
index 209e8bc..630a340 100644 (file)
@@ -57,7 +57,8 @@
     <fieldset>
         <table>
             {% form_field forms.chercheur.membre_instance_auf %}
-            {% form_field forms.chercheur.membre_instance_auf_details %}
+            {% form_field forms.chercheur.membre_instance_auf_nom %}
+            {% form_field forms.chercheur.membre_instance_auf_fonction %}
             {% form_field forms.chercheur.membre_instance_auf_dates %}
         </table>
     </fieldset>
@@ -77,7 +78,8 @@
     <fieldset>
         <table>
             {% form_field forms.chercheur.membre_reseau_institutionnel %}
-            {% form_field forms.chercheur.membre_reseau_institutionnel_details %}
+            {% form_field forms.chercheur.membre_reseau_institutionnel_nom %}
+            {% form_field forms.chercheur.membre_reseau_institutionnel_fonction %}
             {% form_field forms.chercheur.membre_reseau_institutionnel_dates %}
         </table>
     </fieldset>
index 57043b3..47a679a 100644 (file)
         {% if chercheur.membre_instance_auf %}
         <tr>
             <td class="label">Membre d'une instance de l'AUF</td>
-            <td>{{ chercheur.membre_instance_auf_details }}, {{ chercheur.membre_instance_auf_dates }}</td>
+            <td>
+                {{ chercheur.get_membre_instance_auf_nom_display }},
+                {{ chercheur.membre_instance_auf_fonction }}, 
+                {{ chercheur.membre_instance_auf_dates }}
+            </td>
         </tr>
         {% endif %}
         {% if chercheur.expert_oif %}
         {% if chercheur.membre_reseau_institutionnel %}
         <tr>
             <td class="label">Membre d'instances d'un réseau institutionnel de l'AUF</td>
-            <td>{{ chercheur.membre_reseau_institutionnel_details }},
-                {{ chercheur.membre_reseau_institutionnel_dates }}</td>
+            <td>
+                {{ chercheur.get_membre_reseau_institutionnel_nom_display }},
+                {{ chercheur.membre_reseau_institutionnel_fonction }},
+                {{ chercheur.membre_reseau_institutionnel_dates }}
+            </td>
         </tr>
         {% endif %}
     </table>