Inversé la saisie de l'établissement et du pays de l'établissement
authorEric Mc Sween <eric.mcsween@gmail.com>
Mon, 6 Dec 2010 22:39:30 +0000 (17:39 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Mon, 6 Dec 2010 22:39:30 +0000 (17:39 -0500)
Demande #788

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

index b03736c..e119e89 100644 (file)
@@ -72,8 +72,8 @@ class ChercheurForm(forms.ModelForm):
     membre_reseau_institutionnel_details = forms.CharField(required=False, label="Préciser lesquelles et votre fonction")
     membre_reseau_institutionnel_dates = forms.CharField(required=False, label="Préciser les dates")
 
-    etablissement = forms.CharField(label='Etablissement', required=True)
-    pays_etablissement = forms.ModelChoiceField(label='Pays', queryset=Pays.objects.all(), required=True)
+    pays_etablissement = forms.ModelChoiceField(label="Pays de l'établissement", queryset=Pays.objects.all(), required=True)
+    etablissement = forms.CharField(label="Nom de l'établissement", required=True)
 
     expertises_auf = forms.ChoiceField(
         label="Êtes-vous disposé à réaliser des expertises pour l'AUF?",
index fca6638..0fabd3c 100644 (file)
@@ -221,17 +221,13 @@ def conversion(request):
     return render_to_response("chercheurs/conversion.html", {}, 
                               context_instance=RequestContext(request))
 
-def etablissements_autocomplete(request):
+def etablissements_autocomplete(request, pays=None):
     term = request.GET.get('term')
-    noms = list(Etablissement.objects.filter(nom__icontains=term).values_list('nom', flat=True)[:20])
+    noms = Etablissement.objects.all()
+    for word in term.split():
+        noms = noms.filter(nom__icontains=word)
+    if pays:
+        noms = noms.filter(pays=pays)
+    noms = list(noms.values_list('nom', flat=True)[:20])
     json = simplejson.dumps(noms)
     return HttpResponse(json, mimetype='application/json')
-
-def etablissements_pays(request):
-    etablissement = request.GET.get('etablissement')
-    try:
-        pays = Etablissement.objects.get(nom=etablissement).pays_id
-    except Etablissement.DoesNotExist:
-        pays = None
-    json = simplejson.dumps(pays)
-    return HttpResponse(json, mimetype='application/json')
index 16ff92c..40f26e5 100644 (file)
@@ -1,6 +1,8 @@
 (function() {
 
     $(document).ready(function() {
+
+        // Fieldsets
         $('#expertises fieldset').formset({
             prefix: 'expertise',
             addText: 'ajouter une expertise',
             deleteText: 'supprimer cette publication',
             formCssClass: 'dynamic-form-publications'
         });
-        $('input[name=chercheur-etablissement]').autocomplete({ 
-            source: '/etablissements/autocomplete/',
-            select: function(event, ui) {
-                var etablissement = ui.item.value;
-                $.getJSON(
-                    '/etablissements/pays/', 
-                    { etablissement: etablissement },
-                    function(pays) {
-                        $('select[name=chercheur-pays_etablissement]').val(pays);
-                    }
-                );
-            }
-        });
+
+        // Auto-complete des établissements
+        var $etablissement = $('input[name=chercheur-etablissement]');
+        $etablissement.autocomplete({ source: '/etablissements/autocomplete/' });
+        $('select[name=chercheur-pays_etablissement]').change(function() {
+            $etablissement.autocomplete('option', 'source', '/etablissements/autocomplete/' + $(this).val() + '/');
+        }).change();
+
+        // Publications legacy
         var $edit_publication_link = $('<a class="edit-publication">éditer cette publication</a>');
         var $additional_fields = $('.publication_affichage').next();
         $additional_fields.after($edit_publication_link).hide();
index 2ad6daa..936323e 100644 (file)
@@ -22,8 +22,8 @@
 <fieldset>
     <legend>Etablissement de rattachement <span style="color:red">*</span></legend>
     <table>
-        {% form_field forms.chercheur.etablissement %}
         {% form_field forms.chercheur.pays_etablissement %}
+        {% form_field forms.chercheur.etablissement %}
     </table>
 </fieldset>
 
index 6505039..ef32438 100644 (file)
@@ -73,7 +73,7 @@ urlpatterns = sep_patterns + patterns(
     (r'^accounts/change_password/$', 'chercheurs.views.change_password'),
     (r'^accounts/send_password/$', 'chercheurs.views.send_password'),
     (r'^etablissements/autocomplete/$', 'chercheurs.views.etablissements_autocomplete'),
-    (r'^etablissements/pays/$', 'chercheurs.views.etablissements_pays'),
+    (r'^etablissements/autocomplete/(?P<pays>.*)/$', 'chercheurs.views.etablissements_autocomplete'),
 
     # section par discipline et/ou région
     (r'^discipline/(?P<discipline>\d+)/', include(sep_patterns)),