Merge branch 'dev' into test
authorEric Mc Sween <eric.mcsween@gmail.com>
Wed, 15 Dec 2010 16:44:14 +0000 (11:44 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Wed, 15 Dec 2010 16:44:14 +0000 (11:44 -0500)
1  2 
auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/savoirs/models.py

@@@ -13,6 -13,7 +13,6 @@@ class ChercheurForm(forms.ModelForm)
      genre = forms.ChoiceField(widget=forms.RadioSelect(), choices=GENRE_CHOICES)
      membre_instance_auf = forms.ChoiceField(
          label="Êtes-vous (ou avez-vous déjà été) membre d'une instance de l'AUF?",
 -        help_text="e.g. conseil scientifique, conseil associatif, commission régionale d'experts",
          choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
      )
      membre_instance_auf_nom = forms.ChoiceField(
@@@ -32,7 -33,7 +32,7 @@@
      )
      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?",
 +        label="Êtes-vous (ou avez-vous déjà été) membre des instances d'un réseau institutionnel de l'AUF?",
          choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
      )
      membre_reseau_institutionnel_nom = forms.ChoiceField(
@@@ -306,6 -307,13 +306,13 @@@ class RepertoireSearchForm (forms.Form)
                                      help_text="La région est ici définie au sens, non strictement géographique, du Bureau régional de l'AUF de référence.")
      nord_sud = forms.ChoiceField(choices=(('', 'Tous'), ('Nord', 'Nord'), ('Sud', 'Sud')), required=False, label="Nord/Sud",
                                   help_text="Distinction d'ordre géopolitique et économique, non géographique, qui conditionne souvent l'attribution de soutiens par les agences internationales: on entend par Nord les pays développés, par Sud les pays en développement (pays les moins avancés, pays émergents et pays à économies en transition)")
+     activites_francophonie = forms.ChoiceField(required=False, label="Activités en Francophonie", choices=(
+         ('', '---------'),
+         ('instance_auf', "Membre d'une instance de l'AUF"),
+         ('expert_oif', "Sollicité par l'OIF"),
+         ('association_francophone', "Membre d'une association ou d'une société savante francophone"),
+         ('reseau_institutionnel', "Membre des instances d'un réseau institutionnel de l'AUF")
+     ))
  
      def __init__(self, data=None, region=None):
          super(RepertoireSearchForm, self).__init__(data)
              nord_sud = self.cleaned_data['nord_sud']
              if nord_sud:
                  chercheurs = chercheurs.filter_nord_sud(nord_sud)
+             activites_francophonie = self.cleaned_data['activites_francophonie']
+             if activites_francophonie == 'instance_auf':
+                 chercheurs = chercheurs.filter(membre_instance_auf=True)
+             elif activites_francophonie == 'expert_oif':
+                 chercheurs = chercheurs.filter(expert_oif=True)
+             elif activites_francophonie == 'association_francophone':
+                 chercheurs = chercheurs.filter(membre_association_francophone=True)
+             elif activites_francophonie == 'reseau_institutionnel':
+                 chercheurs = chercheurs.filter(membre_reseau_institutionnel=True)
          return chercheurs.all()
      
  class SendPasswordForm(forms.Form):
@@@ -127,7 -127,8 +127,8 @@@ def edit(request)
          forms = ChercheurFormGroup(request.POST, chercheur=chercheur)
          if forms.is_valid():
              forms.save()
-             return HttpResponseRedirect(url('chercheurs.views.perso') + '?modification=1')
+             request.flash['message'] = "Votre fiche a bien été enregistrée."
+             return HttpResponseRedirect(url('chercheurs.views.perso'))
      else:
          forms = ChercheurFormGroup(chercheur=chercheur)
          
@@@ -157,7 -158,7 +158,7 @@@ def conversion(request)
  
  def etablissements_autocomplete(request, pays=None):
      term = request.GET.get('term')
 -    noms = Etablissement.objects.all()
 +    noms = Etablissement.objects.all().filter(membre=True)
      for word in term.split():
          noms = noms.filter(nom__icontains=word)
      if pays:
@@@ -18,7 -18,7 +18,7 @@@ from django.db import model
  from django.db.models import Q, Max
  from django.db.models.signals import pre_delete
  from django.utils.encoding import smart_unicode
 -from djangosphinx.models import SphinxQuerySet
 +from djangosphinx.models import SphinxQuerySet, SearchError
  from savoirs.globals import META
  from settings import CALENDRIER_URL, SITE_ROOT_URL
  
@@@ -75,22 -75,6 +75,22 @@@ class SEPSphinxQuerySet(SphinxQuerySet
             tous les champs."""
          return self.search('"%s"' % region.nom)
  
 +    def _get_sphinx_results(self):
 +        try:
 +            return SphinxQuerySet._get_sphinx_results(self)
 +        except SearchError:
 +            # Essayons d'enlever les caractères qui peuvent poser problème.
 +            for c in '|!@()~/<=^$':
 +                self._query = self._query.replace(c, ' ')
 +            try:
 +                return SphinxQuerySet._get_sphinx_results(self)
 +            except SearchError:
 +                # Ça ne marche toujours pas. Enlevons les guillemets et les
 +                # tirets.
 +                for c in '"-':
 +                    self._query = self._query.replace(c, ' ')
 +                return SphinxQuerySet._get_sphinx_results(self)
 +
  class SEPManager(models.Manager):
      """Lorsque les méthodes ``search``, ``filter_region`` et
         ``filter_discipline`` sont appelées sur ce manager, le query set
@@@ -164,14 -148,6 +164,14 @@@ class ActualiteSphinxQuerySet(SEPSphinx
          SEPSphinxQuerySet.__init__(self, model=model, index='savoirsenpartage_actualites',
                                     weights=dict(titre=3))
  
 +    def filter_date(self, min=None, max=None):
 +        qs = self
 +        if min:
 +            qs = qs.filter(date__gte=min.toordinal()+365)
 +        if max:
 +            qs = qs.filter(date__lte=max.toordinal()+365)
 +        return qs
 +        
  class ActualiteManager(SEPManager):
      
      def get_query_set(self):
@@@ -277,7 -253,7 +277,7 @@@ class Evenement(models.Model)
                      (u'Conférence', u'Conférence'),
                      (u'Appel à contribution', u'Appel à contribution'),
                      (u'Journée d\'étude', u'Journée d\'étude'),
-                     (u'None', u'Autre'))
+                     (u'Autre', u'Autre'))
      TIME_ZONE_CHOICES = build_time_zone_choices()
  
      uid = models.CharField(max_length=255, default=str(uuid.uuid1()))