Case "Je ne souhaite pas être sollicité par l'AUF pour des missions d'expertises"
authorEric Mc Sween <eric.mcsween@gmail.com>
Tue, 15 Feb 2011 19:30:50 +0000 (14:30 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Tue, 15 Feb 2011 19:30:50 +0000 (14:30 -0500)
Demande #1126

auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/media/js/chercheur_edit.js
auf_savoirs_en_partage/templates/chercheurs/chercheur_form.html
auf_savoirs_en_partage/templates/chercheurs/fiche.html

index 2c5c43a..1eac472 100644 (file)
@@ -49,9 +49,9 @@ class ChercheurForm(forms.ModelForm):
         help_text="Après avoir sélectionné un pays, une liste d'établissement apparaît dès la saisie partielle du nom de l'établissement."
     )
 
-    expertises_auf = forms.ChoiceField(
-        label="Êtes-vous disposé à réaliser des expertises pour l'AUF?",
-        choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
+    pas_de_sollicitation_expertises = forms.BooleanField(
+        required=False,
+        label="Je ne souhaite pas être sollicité par l'AUF pour des missions d'expertise"
     )
 
     theme_recherche = forms.CharField(
@@ -92,7 +92,7 @@ class ChercheurForm(forms.ModelForm):
                   'membre_reseau_institutionnel',
                   'membre_reseau_institutionnel_nom',
                   'membre_reseau_institutionnel_fonction',
-                  'membre_reseau_institutionnel_dates', 'expertises_auf')
+                  'membre_reseau_institutionnel_dates')
         
     def __init__(self, data=None, prefix=None, instance=None):
         if instance is not None:
@@ -103,6 +103,7 @@ class ChercheurForm(forms.ModelForm):
             else:
                 initial['etablissement'] = instance.etablissement_autre_nom
                 initial['pays_etablissement'] = instance.etablissement_autre_pays_id
+            initial['pas_de_sollicitation_expertises'] = not instance.expertises_auf
         else:
             initial = None
         super(ChercheurForm, self).__init__(data=data, prefix=prefix, instance=instance, initial=initial)
@@ -119,6 +120,7 @@ class ChercheurForm(forms.ModelForm):
             self.instance.etablissement = None
             self.instance.etablissement_autre_nom = nom_etablissement
             self.instance.etablissement_autre_pays = pays_etablissement
+        self.instance.expertises_auf = not self.cleaned_data['pas_de_sollicitation_expertises']
         super(ChercheurForm, self).save()
 
     def clean_courriel(self):
@@ -207,9 +209,6 @@ class ChercheurForm(forms.ModelForm):
             raise forms.ValidationError('Veuillez préciser les dates')
         return dates
 
-    def clean_expertises_auf(self):
-        return bool(int(self.cleaned_data['expertises_auf']))
-
 class ChercheurInscriptionForm(ChercheurForm):
 
     class Meta(ChercheurForm.Meta):
index 40f26e5..6853bf5 100644 (file)
@@ -1,4 +1,24 @@
 (function() {
+    var nom_expertise_selector = 'input[name^="expertise"][name$="nom"]';
+
+    function expertise_added($row) {
+        $row.find(nom_expertise_selector).change(show_or_hide_sollicitation_expert);
+    }
+    
+    function expertise_removed($row) {
+        show_or_hide_sollicitation_expert();
+    }
+    
+    function show_or_hide_sollicitation_expert() {
+        var $sollicitation_field = $('input[name$="pas_de_sollicitation_expertises"]').closest('table');
+        var $non_empty_fields = $(nom_expertise_selector + '[value!=""]:visible');
+        if ($non_empty_fields.size() > 0) {
+            $sollicitation_field.show();
+        }
+        else {
+            $sollicitation_field.hide();
+        }
+    }
 
     $(document).ready(function() {
 
@@ -7,7 +27,9 @@
             prefix: 'expertise',
             addText: 'ajouter une expertise',
             deleteText: 'supprimer cette expertise',
-            formCssClass: 'dynamic-form-expertises'
+            formCssClass: 'dynamic-form-expertises',
+            added: expertise_added,
+            removed: expertise_removed
         });
         $('#publications fieldset').formset({
             prefix: 'publication',
         var $additional_fields = $('.publication_affichage').next();
         $additional_fields.after($edit_publication_link).hide();
         $edit_publication_link.click(function() { $additional_fields.show(); $(this).hide(); });
+
+        // Montrer ou cacher la case à cocher "sollicitation pour expertise"
+        show_or_hide_sollicitation_expert();
+        $(nom_expertise_selector).change(show_or_hide_sollicitation_expert);
+
     });
 
 })();
index 374b3ce..2f39b5f 100644 (file)
     </fieldset>
     {% endfor %}
     <table>
-        {% form_field forms.chercheur.expertises_auf %}
+        <tr>
+            <th>{{ forms.chercheur.pas_de_sollicitation_expertises.label }}</th>
+            <td>{{ forms.chercheur.pas_de_sollicitation_expertises }}</td>
+        </tr>
     </table>
 </fieldset>
 
index 976cac1..4a582b7 100644 (file)
     </table>
     {% endif %}
 
-    {% if chercheur.expertises.count or chercheur.expertises_auf %}
+    {% if chercheur.expertises.count %}
     <h2>Expertises</h2>
     {% for expertise in chercheur.expertises.all %}
     <table>
     </table>
     <hr>
     {% endfor %}
-    {% if chercheur.expertises_auf %}
     <table>
         <tr>
             <td class="label">Est disposé à réaliser des expertises pour l'AUF</td>
-            <td>Oui</td>
+            <td>{{ chercheur.expertises_auf|yesno:"Oui,Non" }}</td>
         </tr>
     </table>
     {% endif %}
-    {% endif %}
 
     {% if chercheur.publications.count %}
     <h2>Publications</h2>