Persistence des filtres discipline/région partout sur le site.
authorEric Mc Sween <eric.mcsween@gmail.com>
Sun, 14 Nov 2010 23:22:39 +0000 (18:22 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Sun, 14 Nov 2010 23:22:39 +0000 (18:22 -0500)
28 files changed:
auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/savoirs/forms.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/savoirs/templatetags/sep.py
auf_savoirs_en_partage/savoirs/views.py
auf_savoirs_en_partage/sitotheque/forms.py
auf_savoirs_en_partage/sitotheque/models.py
auf_savoirs_en_partage/sitotheque/views.py
auf_savoirs_en_partage/templates/accounts/login.html
auf_savoirs_en_partage/templates/accounts/new_password.html
auf_savoirs_en_partage/templates/chercheurs/actions.html
auf_savoirs_en_partage/templates/chercheurs/index.html
auf_savoirs_en_partage/templates/chercheurs/perso.html
auf_savoirs_en_partage/templates/container_base.html
auf_savoirs_en_partage/templates/menu.html
auf_savoirs_en_partage/templates/savoirs/a-propos.html
auf_savoirs_en_partage/templates/savoirs/evenement_actions.html
auf_savoirs_en_partage/templates/savoirs/evenement_index.html
auf_savoirs_en_partage/templates/savoirs/evenement_resultat.html
auf_savoirs_en_partage/templates/savoirs/index.html
auf_savoirs_en_partage/templates/savoirs/recherche.html
auf_savoirs_en_partage/templates/savoirs/ressource_resultat.html
auf_savoirs_en_partage/templates/savoirs/ressource_retrieve.html
auf_savoirs_en_partage/templates/sites/actions.html
auf_savoirs_en_partage/templates/sites/resultat.html
auf_savoirs_en_partage/urls.py

index 056011d..4eae147 100644 (file)
@@ -228,12 +228,10 @@ class ChercheurFormGroup(object):
 class RepertoireSearchForm (forms.Form):
     mots_cles = forms.CharField(required=False, label="Rechercher dans tous les champs")
     nom = forms.CharField(required=False, label="Nom")
-    discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False, label="Discipline", empty_label="Tous")
     domaine = forms.ModelChoiceField(queryset=Groupe.objects.all(), required=False, label="Domaine de recherche", empty_label="Tous")
     groupe_recherche = forms.CharField(required=False, label="Groupe de recherche")
     statut = forms.ChoiceField(choices=(('','Tous'),)+STATUT_CHOICES+(('expert','Expert'),), required=False, label="Statut")
     pays = forms.ModelChoiceField(queryset=Pays.objects.all(), required=False, label="Pays", empty_label="Tous")
-    region = forms.ModelChoiceField(queryset=Region.objects.all(), required=False, label="Région", empty_label="Toutes")
     nord_sud = forms.ChoiceField(choices=(('', 'Tous'), ('Nord', 'Nord'), ('Sud', 'Sud')), required=False, label="Nord/Sud")
     membre_instance_auf = forms.BooleanField(required=False, label="Membre d'une instance de l'AUF")
     expert_oif = forms.BooleanField(required=False, label="Expert de l'OIF")
@@ -245,9 +243,6 @@ class RepertoireSearchForm (forms.Form):
             nom = self.cleaned_data['nom']
             if nom:
                 qs = qs.search_nom(nom)
-            discipline = self.cleaned_data["discipline"]
-            if discipline:
-                qs = qs.filter(discipline=discipline)
             domaine = self.cleaned_data["domaine"]
             if domaine:
                 qs = qs.filter(groupes=domaine)
@@ -267,9 +262,6 @@ class RepertoireSearchForm (forms.Form):
             pays = self.cleaned_data["pays"]
             if pays:
                 qs = qs.filter(Q(etablissement__pays=pays) | Q(etablissement_autre_pays=pays))
-            region = self.cleaned_data['region']
-            if region:
-                qs = qs.filter(Q(etablissement__pays__region=region) | Q(etablissement_autre_pays__region=region))
             nord_sud = self.cleaned_data['nord_sud']
             if nord_sud:
                 qs = qs.filter(Q(etablissement__pays__nord_sud=nord_sud) | Q(etablissement_autre_pays__nord_sud=nord_sud))
index 1e57821..621869a 100644 (file)
@@ -44,6 +44,12 @@ class ChercheurManager(models.Manager):
     def search_nom(self, nom):
         return self.get_query_set().search_nom(nom)
 
+    def filter_region(self, region):
+        return self.get_query_set().filter_region(region)
+
+    def filter_discipline(self, discipline):
+        return self.get_query_set().filter_discipline(discipline)
+
 class ChercheurQuerySet(models.query.QuerySet, RandomQuerySetMixin):
 
     def search(self, text):
index 75ef9fd..a5118e9 100644 (file)
@@ -29,7 +29,7 @@ from django.utils.translation import ugettext_lazy as _
 class AuthenticationForm(OriginalAuthenticationForm):
     username = forms.CharField(label='Adresse électronique', max_length=255)
 
-def send_password(request):
+def send_password(request, discipline=None, region=None):
     if request.method == "POST":
         form = SendPasswordForm(data=request.POST)
         if form.is_valid():
@@ -83,7 +83,7 @@ def new_password(request, email, code):
             context_instance = RequestContext(request))
 
 @login_required()            
-def change_password(request):
+def change_password(request, discipline=None, region=None):
     context_instance = RequestContext(request)
     u = context_instance['user_sep']
     message = ""
@@ -103,7 +103,7 @@ def change_password(request):
             Context (variables), 
             context_instance = RequestContext(request))            
              
-def chercheur_login(request):
+def chercheur_login(request, discipline=None, region=None):
     "Displays the login form and handles the login action."
     if request.method == "POST":
         form = AuthenticationForm(data=request.POST)
@@ -112,23 +112,29 @@ def chercheur_login(request):
             login(request, form.get_user())
             if request.session.test_cookie_worked():
                 request.session.delete_test_cookie()
-            return HttpResponseRedirect(url('chercheurs.views.perso'))
+            kwargs = {}
+            if discipline:
+                kwargs['discipline'] = discipline
+            if region:
+                kwargs['region'] = region
+            return HttpResponseRedirect(url('chercheurs.views.perso', kwargs=kwargs))
     else:
         form = AuthenticationForm(request)
     request.session.set_test_cookie()
-    return render_to_response('accounts/login.html', dict(form=form), context_instance=RequestContext(request))
+    return render_to_response('accounts/login.html', dict(form=form),
+                              context_instance=RequestContext(request))
     
     
-def index(request):
+def index(request, discipline=None, region=None):
     """Répertoire des chercheurs"""
     search_form = RepertoireSearchForm(request.GET)
-    chercheurs = search_form.get_query_set()
+    chercheurs = search_form.get_query_set().filter_discipline(discipline).filter_region(region)
     nb_chercheurs = chercheurs.count()
     return render_to_response("chercheurs/index.html",
                               dict(chercheurs=chercheurs, nb_chercheurs=nb_chercheurs, search_form=search_form),
                               context_instance=RequestContext(request))
 
-def inscription(request):
+def inscription(request, discipline=None, region=None):
     if request.method == 'POST':
         forms = ChercheurFormGroup(request.POST)
         if forms.is_valid():
@@ -136,7 +142,12 @@ def inscription(request):
             # login automatique
             login(request, authenticate(username=forms.personne.cleaned_data['courriel'], 
                                         password=forms.personne.cleaned_data['password']))
-            return HttpResponseRedirect(url('chercheurs.views.perso'))
+            kwargs = {}
+            if discipline:
+                kwargs['discipline'] = discipline
+            if region:
+                kwargs['region'] = region
+            return HttpResponseRedirect(url('chercheurs.views.perso', kwargs=kwargs))
     else:
         forms = ChercheurFormGroup()
     
@@ -146,7 +157,7 @@ def inscription(request):
 
 @login_required()
 @never_cache
-def edit(request):
+def edit(request, discipline=None, region=None):
     """Edition d'un chercheur"""
     context_instance = RequestContext(request)
     chercheur = context_instance['user_chercheur']    
@@ -154,7 +165,12 @@ def edit(request):
         forms = ChercheurFormGroup(request.POST, chercheur=chercheur)
         if forms.is_valid():
             forms.save()
-            return HttpResponseRedirect("/chercheurs/perso/?modification=1")
+            kwargs = {}
+            if discipline:
+                kwargs['discipline'] = discipline
+            if region:
+                kwargs['region'] = region
+            return HttpResponseRedirect(url('chercheurs.views.perso', kwargs=kwargs) + '?modification=1')
     else:
         forms = ChercheurFormGroup(chercheur=chercheur)
         
@@ -163,25 +179,29 @@ def edit(request):
                               context_instance = RequestContext(request))
             
 @login_required()
-def perso(request):
+def perso(request, discipline=None, region=None):
     """Espace chercheur (espace personnel du chercheur)"""
     context_instance = RequestContext(request)
     chercheur = context_instance['user_chercheur']
     modification = request.GET.get('modification')
     if not chercheur:
-        return HttpResponseRedirect(url('chercheurs.views.chercheur_login'))
+        kwargs = {}
+        if discipline:
+            kwargs['discipline'] = discipline
+        if region:
+            kwargs['region'] = region
+        return HttpResponseRedirect(url('chercheurs.views.chercheur_login', kwargs=kwargs))
     return render_to_response("chercheurs/perso.html",
                               dict(chercheur=chercheur, modification=modification),
                               context_instance=RequestContext(request))
             
-def retrieve(request, id):
+def retrieve(request, id, discipline=None, region=None):
     """Fiche du chercheur"""
     chercheur = get_object_or_404(Chercheur, id=id)
     return render_to_response("chercheurs/retrieve.html",
                               dict(chercheur=chercheur),
-                              context_instance = RequestContext(request))
+                              context_instance=RequestContext(request))
             
-def conversion(request):
-    return render_to_response ("chercheurs/conversion.html", \
-            Context (), \
-            context_instance = RequestContext(request))
+def conversion(request, discipline=None, region=None):
+    return render_to_response("chercheurs/conversion.html", {}, 
+                              context_instance=RequestContext(request))
index c0a6f7f..93fd320 100644 (file)
@@ -35,8 +35,6 @@ class RecordSearchForm(forms.Form):
     titre = forms.CharField(required=False, label="Titre")
     sujet = forms.CharField(required=False, label="Sujet")
     publisher = forms.CharField(required=False, label="Éditeur")
-    discipline = forms.ModelChoiceField(required=False, label="Discipline", queryset=Discipline.objects.all(), empty_label='Toutes')
-    region = forms.ModelChoiceField(required=False, label="Région", queryset=Region.objects.all(), empty_label='Toutes')
 
     def get_query_set(self):
         """Retourne l'ensemble des ressources qui correspondent aux valeurs
@@ -55,12 +53,6 @@ class RecordSearchForm(forms.Form):
             sujet = self.cleaned_data['sujet']
             if sujet:
                 records = records.search_sujet(sujet)
-            discipline = self.cleaned_data['discipline']
-            if discipline:
-                records = records.filter(disciplines=discipline)
-            region = self.cleaned_data['region']
-            if region:
-                records = records.filter(regions=region)
             publisher = self.cleaned_data['publisher']
             if publisher:
                 for word in publisher.split():
@@ -108,8 +100,6 @@ class EvenementSearchForm(forms.Form):
     q = forms.CharField(required=False, label="Rechercher dans tous les champs")
     titre = forms.CharField(required=False, label="Intitulé")
     type = forms.ChoiceField(required=False, choices=(('', 'Tous'),)+Evenement.TYPE_CHOICES)
-    discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), 
-                                        required=False, label="Discipline", empty_label="Toutes")
     date_min = SEPDateField(required=False, label="Depuis le") 
     date_max = SEPDateField(required=False, label="Jusqu'au") 
     
@@ -127,9 +117,6 @@ class EvenementSearchForm(forms.Form):
             type = self.cleaned_data['type']
             if type:
                 evenements = evenements.filter(type=type)
-            discipline = self.cleaned_data['discipline']
-            if discipline:
-                evenements = evenements.filter(Q(discipline=discipline) | Q(discipline_secondaire=discipline))
             date_min = self.cleaned_data['date_min']
             if date_min:
                 evenements = evenements.filter(debut__gte=date_min)
index dfa7cef..0ec5799 100644 (file)
@@ -51,6 +51,12 @@ class ActualiteManager(models.Manager):
     def search(self, text):
         return self.get_query_set().search(text)
 
+    def filter_region(self, region):
+        return self.get_query_set().filter_region(region)
+
+    def filter_discipline(self, discipline):
+        return self.get_query_set().filter_discipline(discipline)
+
 class ActualiteQuerySet(models.query.QuerySet, RandomQuerySetMixin):
 
     def search(self, text):
@@ -111,6 +117,12 @@ class EvenementManager(models.Manager):
     def search(self, text):
         return self.get_query_set().search(text)
 
+    def filter_region(self, region):
+        return self.get_query_set().filter_region(region)
+
+    def filter_discipline(self, discipline):
+        return self.get_query_set().filter_discipline(discipline)
+
 class EvenementQuerySet(models.query.QuerySet, RandomQuerySetMixin):
 
     def search(self, text):
@@ -340,6 +352,12 @@ class RecordManager(models.Manager):
     def validated(self):
         return self.get_query_set().validated()
 
+    def filter_region(self, region):
+        return self.get_query_set().filter_region(region)
+
+    def filter_discipline(self, discipline):
+        return self.get_query_set().filter_discipline(discipline)
+
 class RecordQuerySet(models.query.QuerySet, RandomQuerySetMixin):
 
     def search(self, text):
index 6f94699..18a6cf4 100644 (file)
@@ -1,19 +1,22 @@
 # -*- encoding: utf-8 -*-
 
+import re
 from django import template
 from django.conf import settings
+from django.template.defaultfilters import stringfilter
 from django.utils.encoding import smart_str
 from datamaster_modeles.models import Region
 from savoirs.models import Discipline
 
-def sep_menu(discipline_active, region_active):
+register = template.Library()
+
+@register.inclusion_tag('menu.html', takes_context=True)
+def sep_menu(context, discipline_active, region_active):
     regions = Region.objects.filter(actif=True).order_by('nom')
     disciplines = Discipline.objects.all()
     return dict(disciplines=disciplines, regions=regions,
-                discipline_active=discipline_active, region_active=region_active)
-
-register = template.Library()
-register.inclusion_tag('menu.html')(sep_menu)
+                discipline_active=discipline_active, region_active=region_active,
+                request=context['request'])
 
 class URLNode(template.Node):
     def __init__(self, view_name, args, kwargs, asvar):
@@ -30,18 +33,12 @@ class URLNode(template.Node):
 
         # C'est ici que nous injectons la discipline et la région courante
         # dans les arguments.
-        if kwargs.get('discipline') == 'all':
-            del kwargs['discipline']
-        else:
-            context_discipline = context.get('discipline_active')
-            if context_discipline:
-                kwargs.setdefault('discipline', context_discipline)
-        if kwargs.get('region') == 'all':
-            del kwargs['region']
-        else:
-            context_region = context.get('region_active')
-            if context_region:
-                kwargs.setdefault('region', context_region)
+        context_discipline = context.get('discipline_active')
+        if context_discipline:
+            kwargs.setdefault('discipline', context_discipline)
+        context_region = context.get('region_active')
+        if context_region:
+            kwargs.setdefault('region', context_region)
 
         # Try to look up the URL twice: once given the view name, and again
         # relative to what we guess is the "main" app. If they both fail,
@@ -72,15 +69,13 @@ class URLNode(template.Node):
         else:
             return url
 
+@register.tag
 def sep_url(parser, token):
     """
     Le tag ``url`` de Django, modifié pour SEP.
 
     Lorsque ce tag est utilisé, la discipline et la région actives sont
     automatiquement réinjectées dans les URL construites.
-
-    On peut annuler cette réinjection en spécifiant l'argument
-    ``region='all'`` ou ``discipline='all'``.
     """
     bits = token.split_contents()
     if len(bits) < 2:
@@ -106,4 +101,25 @@ def sep_url(parser, token):
                     elif arg:
                         args.append(parser.compile_filter(arg))
     return URLNode(viewname, args, kwargs, asvar)
-sep_url = register.tag(sep_url)
+
+DISCIPLINE_REGION_RE = re.compile(r'(/discipline/\d+)?(/region/\d+)?')
+
+@register.filter
+@stringfilter
+def change_region(path, region):
+    """Modifie la région dans le chemin donné."""
+    match = DISCIPLINE_REGION_RE.match(path)
+    discipline_bit = match.group(1) or ''
+    region_bit = '/region/%d' % region if region != 'all' else ''
+    rest = path[match.end():]
+    return discipline_bit + region_bit + rest
+        
+@register.filter
+@stringfilter
+def change_discipline(path, discipline):
+    """Modifie la discipline dans le chemin donné."""
+    match = DISCIPLINE_REGION_RE.match(path)
+    discipline_bit = '/discipline/%d' % discipline if discipline != 'all' else ''
+    region_bit = match.group(2) or ''
+    rest = path[match.end():]
+    return discipline_bit + region_bit + rest
index 92d1801..64e5019 100644 (file)
@@ -27,9 +27,9 @@ def index (request, discipline=None, region=None):
     oldest = datetime.date.today() - delta
     actualites = Actualite.objects.filter(visible=True, date__gt=oldest).filter_discipline(discipline).filter_region(region)[:4]
     evenements = Evenement.objects.filter(approuve=True).filter_discipline(discipline).filter_region(region)[:4]
-    ressources = Record.objects.all().filter_discipline(discipline).filter_region(region).random(4)
-    chercheurs = Chercheur.objects.all().filter_discipline(discipline).filter_region(region).random(10)
-    sites = Site.objects.all().filter_discipline(discipline).filter_region(region).random(4)
+    ressources = Record.objects.filter_discipline(discipline).filter_region(region).random(4)
+    chercheurs = Chercheur.objects.filter_discipline(discipline).filter_region(region).random(10)
+    sites = Site.objects.filter_discipline(discipline).filter_region(region).random(4)
     return render_to_response(
         "savoirs/index.html",
         dict(actualites=actualites, evenements=evenements,
@@ -38,31 +38,31 @@ def index (request, discipline=None, region=None):
         context_instance = RequestContext(request))
 
 # sous-menu droite
-def a_propos (request):
+def a_propos (request, discipline=None, region=None):
     return render_to_response ("savoirs/a-propos.html", \
             Context (), \
             context_instance = RequestContext(request))
 
-def nous_contacter (request):
+def nous_contacter (request, discipline=None, region=None):
     return render_to_response ("savoirs/contact.html", \
             Context ({'courriel':settings.CONTACT_EMAIL}), \
             context_instance = RequestContext(request))
             
-def legal(request):
+def legal(request, discipline=None, region=None):
     return render_to_response ("savoirs/legal.html", \
             Context (), \
             context_instance = RequestContext(request))
 
 # recherche
-def recherche(request):
+def recherche(request, discipline=None, region=None):
     query = request.GET.get("q", "")
     if not query.strip():
         return redirect('/')
-    ressources = Record.objects.validated().search(query)
-    actualites = Actualite.objects.filter(visible=1).search(query)
-    evenements = Evenement.objects.filter(approuve=1).search(query)
-    chercheurs = Chercheur.objects.search(query)
-    sites = Site.objects.search(query)
+    ressources = Record.objects.validated().filter_discipline(discipline).filter_region(region).search(query)
+    actualites = Actualite.objects.filter(visible=1).filter_discipline(discipline).filter_region(region).search(query)
+    evenements = Evenement.objects.filter(approuve=1).filter_discipline(discipline).filter_region(region).search(query)
+    chercheurs = Chercheur.objects.filter_discipline(discipline).filter_region(region).search(query)
+    sites = Site.objects.filter_discipline(discipline).filter_region(region).search(query)
     try:
         sites_auf = google_search(0, query)['results']
     except:
@@ -80,7 +80,7 @@ def recherche(request):
         context_instance = RequestContext(request)
     )
 
-def sites_auf(request):
+def sites_auf(request, discipline=None, region=None):
     q = request.GET.get('q')
     page = int(request.GET.get('page', 0))
     try:
@@ -92,9 +92,9 @@ def sites_auf(request):
                               context_instance=RequestContext(request))
 
 # ressources
-def ressource_index(request):
+def ressource_index(request, discipline=None, region=None):
     search_form = RecordSearchForm(request.GET)
-    ressources = search_form.get_query_set()
+    ressources = search_form.get_query_set().filter_discipline(discipline).filter_region(region)
     nb_resultats = ressources.count()
     search_regexp = search_form.get_search_regexp()
     return render_to_response(
@@ -104,16 +104,15 @@ def ressource_index(request):
         context_instance = RequestContext(request)
     )
 
-def ressource_retrieve(request, id):
+def ressource_retrieve(request, id, discipline=None, region=None):
     """Notice OAI de la ressource"""
     ressource = get_object_or_404(Record, id=id)
-    variables = { 'ressource': ressource,
-                  'disciplines': ressource.disciplines.all(),
-                  'regions': ressource.regions.all()
-                }
-    return render_to_response ("savoirs/ressource_retrieve.html", \
-            Context (variables), 
-            context_instance = RequestContext(request))
+    return render_to_response(
+        "savoirs/ressource_retrieve.html",
+        dict(ressource=ressource, disciplines=resource.disciplines.all(),
+             regions=ressource.regions.all()),
+        context_instance=RequestContext(request)
+    )
             
 def informations (request):
     s = sep.SEP()
@@ -128,41 +127,39 @@ def informations (request):
             context_instance = RequestContext(request))
 
 # actualités
-def actualite_index(request):
+def actualite_index(request, discipline=None, region=None):
     search_form = ActualiteSearchForm(request.GET)
-    actualites = search_form.get_query_set()
+    actualites = search_form.get_query_set().filter_discipline(discipline).filter_region(region)
     search_regexp = search_form.get_search_regexp()
-    return render_to_response("savoirs/actualite_index.html",
-                              dict(actualites=actualites,
-                                   search_form=search_form,
-                                   search_regexp=search_regexp,
-                                   nb_resultats=actualites.count()),
-                              context_instance = RequestContext(request))
+    return render_to_response(
+        "savoirs/actualite_index.html",
+        dict(actualites=actualites, search_form=search_form,
+             search_regexp=search_regexp, nb_resultats=actualites.count()),
+        context_instance = RequestContext(request))
 
 # agenda
-def evenement_index(request):
+def evenement_index(request, discipline=None, region=None):
     search_form = EvenementSearchForm(request.GET)
-    evenements = search_form.get_query_set()
+    evenements = search_form.get_query_set().filter_discipline(discipline).filter_region(region)
     search_regexp = search_form.get_search_regexp()
-    return render_to_response("savoirs/evenement_index.html",
-                              dict(evenements=evenements,
-                                   search_form=search_form,
-                                   search_regexp=search_regexp,
-                                   nb_resultats=evenements.count()),
-                              context_instance=RequestContext(request))
+    return render_to_response(
+        "savoirs/evenement_index.html",
+        dict(evenements=evenements, search_form=search_form,
+             search_regexp=search_regexp, nb_resultats=evenements.count()),
+        context_instance=RequestContext(request)
+    )
                               
-def evenement_utilisation(request):
-    return render_to_response ("savoirs/evenement_utilisation.html", \
-            Context (), \
-            context_instance = RequestContext(request))
+def evenement_utilisation(request, discipline=None, region=None):
+    return render_to_response("savoirs/evenement_utilisation.html", {},
+                              context_instance = RequestContext(request))
             
-def evenement(request, id):
+def evenement(request, id, discipline=None, region=None):
     evenement = get_object_or_404(Evenement, pk=id)
     return render_to_response("savoirs/evenement.html",
                               dict(evenement=evenement),
                               context_instance=RequestContext(request))
 
-def evenement_ajout(request):
+def evenement_ajout(request, discipline=None, region=None):
     template = "savoirs/evenement_ajout.html"
     if request.method == "POST":
         form = EvenementForm(request.POST)
@@ -171,9 +168,8 @@ def evenement_ajout(request):
             template = "savoirs/evenement_confirmation.html"
     else:
         form = EvenementForm()
-    return render_to_response (template, \
-                               Context ({'form': form}), \
-                               context_instance = RequestContext(request))
+    return render_to_response(template, dict(form=form),
+                              context_instance=RequestContext(request))
 
 @login_required
 def evenement_moderation(request):
index f7dc08a..a83e36c 100644 (file)
@@ -5,7 +5,6 @@ from savoirs.lib.recherche import build_search_regexp
 
 class SiteSearchForm(forms.Form):
     mots_cles = forms.CharField (required = False, label="Rechercher dans tous les champs")
-    discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False, label="Discipline", empty_label="Tous")
     pays = forms.ModelChoiceField(queryset=Pays.objects.all(), required=False, label="Pays", empty_label="Tous")
 
     def get_query_set(self):
@@ -16,9 +15,6 @@ class SiteSearchForm(forms.Form):
             pays = self.cleaned_data["pays"]
             if pays:
                 sites = sites.filter(pays=pays.pk)
-            discipline = self.cleaned_data["discipline"]
-            if discipline:
-                sites = sites.filter(discipline=discipline)
             mots_cles = self.cleaned_data["mots_cles"]
             if mots_cles:
                 sites = sites.search(mots_cles)
index a99ce72..ed610ae 100644 (file)
@@ -25,6 +25,12 @@ class SiteManager(models.Manager):
     def search(self, text):
         return self.get_query_set().search(text)
 
+    def filter_region(self, region):
+        return self.get_query_set().filter_region(region)
+
+    def filter_discipline(self, discipline):
+        return self.get_query_set().filter_discipline(discipline)
+
 class SiteQuerySet(models.query.QuerySet, RandomQuerySetMixin):
 
     def search(self, text):
index 5081668..3522531 100644 (file)
@@ -6,9 +6,9 @@ from django.db.models import Q
 from models import Site
 from forms import SiteSearchForm
 
-def index(request):
+def index(request, discipline=None, region=None):
     search_form = SiteSearchForm(request.GET)
-    sites = search_form.get_query_set()
+    sites = search_form.get_query_set().filter_discipline(discipline).filter_region(region)
     search_regexp = search_form.get_search_regexp()
     nb_sites = sites.count()
     return render_to_response("sites/index.html",
@@ -16,11 +16,8 @@ def index(request):
                                    search_regexp=search_regexp, nb_sites=nb_sites), 
                               context_instance = RequestContext(request))
             
-def retrieve(request, id):
+def retrieve(request, id, discipline=None, region=None):
     """Fiche du site"""
     site = Site.objects.get(id=id)
-    variables = { 'site': site,
-                }
-    return render_to_response ("sites/retrieve.html", \
-            Context (variables), 
-            context_instance = RequestContext(request))
+    return render_to_response("sites/retrieve.html", dict(site=site),
+                              context_instance = RequestContext(request))
index 4914f1a..2815c14 100644 (file)
@@ -1,4 +1,5 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 
@@ -7,7 +8,7 @@
     {% if form.errors %}
     <p class="message">Login ou mot de passe invalide.</p>
     {% endif %}
-    <form method="post" action="{% url chercheurs.views.chercheur_login %}">
+    <form method="post" action="{% sep_url chercheurs.views.chercheur_login %}">
       <table>
         <tr>
           <td>{{ form.username.label_tag }}</td>
@@ -20,9 +21,9 @@
       </table>
       <input type="submit" value="Connexion" />
     </form>
-    <p><a href="{% url chercheurs.views.send_password %}">Mot de passe oublié ?</a></p>
+    <p><a href="{% sep_url chercheurs.views.send_password %}">Mot de passe oublié ?</a></p>
     <p>Vous n'avez pas encore de compte? 
-    <a href="{% url chercheurs.views.inscription %}">Inscrivez-vous</a>.</p>
+    <a href="{% sep_url chercheurs.views.inscription %}">Inscrivez-vous</a>.</p>
 </div>
 
 {% endblock %}
index d30caa8..4369560 100644 (file)
@@ -1,11 +1,12 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 <h4>Demande de changement de mot de passe</h4>
 <div class="contenu-wrapper">
     {% if message %}
         <span class="message">{{message}}</span>
-        <p>Cliquez <a href="{% url chercheurs.views.chercheur_login %}">ici</a> pour accéder à votre <a href="{% url chercheurs.views.chercheur_login %}">espace chercheur.</a> </p>
+        <p>Cliquez <a href="{% sep_url chercheurs.views.chercheur_login %}">ici</a> pour accéder à votre <a href="{% url chercheurs.views.chercheur_login %}">espace chercheur.</a> </p>
     {% endif %}
     <form method="post">
         <fieldset>
index 4c93b28..be5b0c0 100644 (file)
@@ -1,6 +1,7 @@
+{% load sep %}
 {% if user_chercheur %}
-<li><a href="{% url chercheurs.views.perso %}">Espace chercheur</a></li>
+<li><a href="{% sep_url chercheurs.views.perso %}">Espace chercheur</a></li>
 {% else %}
-<li><a href="{% url chercheurs.views.chercheur_login %}">Se connecter</a></li>
-<li><a href="{% url chercheurs.views.inscription %}">S'inscrire</a></li>
+<li><a href="{% sep_url chercheurs.views.chercheur_login %}">Se connecter</a></li>
+<li><a href="{% sep_url chercheurs.views.inscription %}">S'inscrire</a></li>
 {% endif %}
index 77bdebd..1d295e6 100644 (file)
@@ -2,6 +2,7 @@
 {% load pagination_tags %}
 {% load sorting_tags %}
 {% load form_tags %}
+{% load sep %}
 
 {% block contenu %}
 {% autosort chercheurs %}
@@ -28,7 +29,7 @@
     Dans le cadre de la programmation quadriennale, la politique scientifique de
     l'AUF s'appuie sur la mise en œuvre de projets inter-universitaires
     régionaux ou internationaux. Les <i>réseaux de chercheurs</i> ne sont plus
-    le critère d'organisation du répertoire (consulter la <a href="{% url chercheurs.views.conversion %}">table de passage</a>). 
+    le critère d'organisation du répertoire (consulter la <a href="{% sep_url chercheurs.views.conversion %}">table de passage</a>). 
     Les chercheurs précisent leur discipline et choissent leurs centres
     d'intérêt dans des listes prédéfinies, et ajoutent des mots-clés pour
     affiner leur profil scientifique.
     <table id="repertoire_recherche">
         {% form_field search_form.mots_cles %}
         {% form_field search_form.nom %}
-        {% form_field search_form.discipline %}
         {% form_field search_form.domaine %}
         {% form_field search_form.groupe_recherche %}
         {% form_field search_form.statut %}
         {% form_field search_form.pays %}
-        {% form_field search_form.region %}
         {% form_field search_form.nord_sud %}
         <tr>
             <td><label>Activités en francophonie</label></td>
@@ -72,7 +71,7 @@
         </tr>
     {% for chercheur in chercheurs %}
         <tr class="{% cycle 'odd' 'notodd' %}">
-            <td><a href="{% url chercheurs.views.retrieve chercheur.id %}">{{ chercheur }}</a></td>
+            <td><a href="{% sep_url chercheurs.views.retrieve id=chercheur.id %}">{{ chercheur }}</a></td>
             <td>{% firstof chercheur.etablissement chercheur.etablissement_autre_nom %}</td>
             <td>{% firstof chercheur.etablissement.pays chercheur.etablissement_autre_pays %}</td>
         </tr>
index ad949c0..18cc9a6 100644 (file)
@@ -1,4 +1,5 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 
@@ -8,9 +9,9 @@
     
 <h4>{{ chercheur }}</h4>
 <ul class="actions">
-    <li><a href="{% url chercheurs.views.index %}">Tous les chercheurs</a></li>
-    <li><a href="{% url chercheurs.views.edit %}">Éditer votre fiche</a></li>
-    <li><a href="{% url chercheurs.views.change_password %}">Modifier votre mot de passe</a></li>
+    <li><a href="{% sep_url chercheurs.views.index %}">Tous les chercheurs</a></li>
+    <li><a href="{% sep_url chercheurs.views.edit %}">Éditer votre fiche</a></li>
+    <li><a href="{% sep_url chercheurs.views.change_password %}">Modifier votre mot de passe</a></li>
     <li><a href="{% url django.contrib.auth.views.logout %}">Déconnexion</a></li>
 </ul>
 
index 87409eb..97d0c46 100644 (file)
                     {% if user.is_authenticated %}
                     <a href="{% url django.contrib.auth.views.logout %}" class="bout-droit">Déconnexion</a>
                     {% else %}
-                    <a href="{% url chercheurs.views.chercheur_login %}" class="bout-droit">Connexion</a>
+                    <a href="{% sep_url chercheurs.views.chercheur_login %}" class="bout-droit">Connexion</a>
                     {% endif %}
                     <span>|</span>
-                    <a href="{% url savoirs.views.legal %}">Légal</a>
+                    <a href="{% sep_url savoirs.views.legal %}">Légal</a>
                     <span>|</span>
-                    <a href="{% url savoirs.views.nous_contacter %}">Contact</a>
+                    <a href="{% sep_url savoirs.views.nous_contacter %}">Contact</a>
                     <span>|</span>
-                    <a href="{% url savoirs.views.a_propos %}" class="bout-gauche">À propos</a>
+                    <a href="{% sep_url savoirs.views.a_propos %}" class="bout-gauche">À propos</a>
                 </div>
                 
                 <div class="sous-menu gauche">
-                    <a href="{% url savoirs.views.actualite_index %}" class="bout-droit">Actualités</a>
+                    <a href="{% sep_url savoirs.views.actualite_index %}" class="bout-droit">Actualités</a>
                     <span>|</span>
-                    <a href="{% url savoirs.views.evenement_index %}">Agenda</a>
+                    <a href="{% sep_url savoirs.views.evenement_index %}">Agenda</a>
                     <span>|</span>
-                    <a href="{% url sitotheque.views.index %}">Sites</a>
+                    <a href="{% sep_url sitotheque.views.index %}">Sites</a>
                     <span>|</span>
-                    <a href="{% url savoirs.views.ressource_index %}">Ressources</a>
+                    <a href="{% sep_url savoirs.views.ressource_index %}">Ressources</a>
                     <span>|</span>
-                    <a href="{% url chercheurs.views.index %}">Répertoire</a>
+                    <a href="{% sep_url chercheurs.views.index %}">Répertoire</a>
                     <span>|</span>
-                    <a href="{% url savoirs.views.index %}" class="bout-gauche">Accueil</a>
+                    <a href="{% sep_url savoirs.views.index %}" class="bout-gauche">Accueil</a>
                 </div>
                 
                 <div id="logo" style="clear:both;">
@@ -83,7 +83,7 @@
                     <div class="boite-recherche">
                         <h3>Recherche</h3>
 
-                        <form name="fRecherche" id="fRecherche" action="{% url savoirs.views.recherche %}" method="get">
+                        <form name="fRecherche" id="fRecherche" action="{% sep_url savoirs.views.recherche %}" method="get">
                             <input name="q" id="recherche" type="text" value="{{ q|default:"" }}" />
                             <button title="Lancer la recherche" type="submit">&nbsp;</button>
                         </form>
index 7f92f5e..565a81c 100644 (file)
@@ -2,19 +2,19 @@
 <h4>Régions</h4>
 <ul>
     <li{% if not region_active %} class="active"{% endif %}
-    ><a href="{% sep_url savoirs.views.index region='all' %}">Toutes les régions</a</li>
+    ><a href="{{ request.get_full_path|change_region:'all' }}">Toutes les régions</a</li>
     {% for r in regions %}
     <li{% ifequal r.id region_active %} class="active"{% endifequal %}
-    ><a href="{% sep_url savoirs.views.index region=r.id %}">{{ r.nom }}</a></li>
+    ><a href="{{ request.get_full_path|change_region:r.id }}">{{ r.nom }}</a></li>
     {% endfor %}
 </ul>
 
 <h4>Disciplines</h4>
 <ul>
     <li{% if not discipline_active %} class="active"{% endif %}
-    ><a href="{% sep_url savoirs.views.index discipline='all' %}">Toutes les disciplines</a></li>
+    ><a href="{{ request.get_full_path|change_discipline:'all' }}">Toutes les disciplines</a></li>
     {% for d in disciplines %}
     <li{% ifequal d.id discipline_active %} class="active"{% endifequal %}
-    ><a href="{% sep_url savoirs.views.index discipline=d.id %}">{{ d.nom }}</a></li>
+    ><a href="{{ request.get_full_path|change_discipline:d.id }}">{{ d.nom }}</a></li>
     {% endfor %}
 </ul>
index 0e1ed5b..d3d7bf9 100644 (file)
@@ -1,4 +1,5 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 <h4>À propos de</h4>
@@ -14,7 +15,7 @@ Ainsi, vous pourrez accéder depuis ce portail à :
 </p>
 </div>
 
-<h5><a href="{% url chercheurs.views.index %}">... un répertoire des chercheurs</a></h5>
+<h5><a href="{% sep_url chercheurs.views.index %}">... un répertoire des chercheurs</a></h5>
 
 <div class="texte">
 <p>
@@ -22,7 +23,7 @@ Le répertoire présente une base de données de plus de 7000 chercheurs, étudi
 </p>
 </div>
 
-<h5><a href="{% url savoirs.views.evenement_index %}">... un agenda scientifique</a></h5>
+<h5><a href="{% sep_url savoirs.views.evenement_index %}">... un agenda scientifique</a></h5>
 
 <div class="texte">
 <p> 
@@ -31,7 +32,7 @@ C'est aussi un outil de communication et de veille au service des universitaires
 </p>
 </div>
 
-<h5><a href="{% url savoirs.views.ressource_index %}">... des ressources scientifiques</a></h5>
+<h5><a href="{% sep_url savoirs.views.ressource_index %}">... des ressources scientifiques</a></h5>
 
 <div class="texte">
 <p>
@@ -39,7 +40,7 @@ Le portail « Savoirs en partage » s'inscrit dans la continuité des différe
 </p>
 </div>
 
-<h5><a href="{% url sitotheque.views.index %}">... une sitothèque</a></h5>
+<h5><a href="{% sep_url sitotheque.views.index %}">... une sitothèque</a></h5>
 
 <div class="texte">
 <p>
@@ -47,7 +48,7 @@ Les sites retenus ici ont été créés en partenariat par l'AUF et des universi
 </p>
 </div>
 
-<h5><a href="{% url savoirs.views.actualite_index %}">... des actualités scientifiques</a></h5>
+<h5><a href="{% sep_url savoirs.views.actualite_index %}">... des actualités scientifiques</a></h5>
 
 <div class="texte">
 <p>
index 0f095a4..69a46de 100644 (file)
@@ -1,2 +1,3 @@
-<li><a href="{% url savoirs.views.evenement_ajout %}">Soumettre un évènement</a></li>
+{% load sep %}
+<li><a href="{% sep_url savoirs.views.evenement_ajout %}">Soumettre un évènement</a></li>
 {% comment %}<li><a href="{{ caldav_url }}">S'abonner</a></li>{% endcomment %}
index adfd6b0..3b39acb 100644 (file)
@@ -1,5 +1,6 @@
 {% extends "container_base.html" %}
 {% load pagination_tags %}
+{% load sep %}
 
 {% block contenu %}
 {% autopaginate evenements 10 %}
@@ -16,7 +17,7 @@
     C'est aussi un outil de communication et de veille au service des universitaires et scientifiques francophones qui leur permet de se tenir informés des manifestations scientifiques et de répondre aux appels à communications et contributions ainsi qu'aux appels à projets. 
     </p>
     <p>
-    Consulter les <a href="{% url savoirs.views.evenement_utilisation %}">conditions d'utilisation</a>.
+    Consulter les <a href="{% sep_url savoirs.views.evenement_utilisation %}">conditions d'utilisation</a>.
     </p>
 </div>
 
index 428d087..a76ef2b 100644 (file)
@@ -1,7 +1,8 @@
 {% load search %}
+{% load sep %}
 
 <div class="resultatRecherche">
   <div class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</div>
-  <div><a href="{% url savoirs.views.evenement evenement.pk %}" class="le-titre">{{ evenement.titre|highlight:search_regexp }}</a></div>
+  <div><a href="{% sep_url savoirs.views.evenement id=evenement.pk %}" class="le-titre">{{ evenement.titre|highlight:search_regexp }}</a></div>
   <div class="le-resume">{{ evenement.description|excerpt:search_regexp|highlight:search_regexp }}</div>
 </div>
index 161dcbb..d2f3019 100644 (file)
@@ -1,13 +1,14 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 <div class="demi-gauche clearfix">
     <div id="actualites" class="box">
-        <h4><a href="{% url savoirs.views.actualite_index %}">Actualités</a></h4>
+        <h4><a href="{% sep_url savoirs.views.actualite_index %}">Actualités</a></h4>
         <a id="rss-actualites" href="/rss/actualites"><img src="/media/img/feed.png" /></a>
         
         <ul class="sous-menu">
-            <li><a href="{% url savoirs.views.actualite_index %}">Toutes les actualités</a></li>
+            <li><a href="{% sep_url savoirs.views.actualite_index %}">Toutes les actualités</a></li>
         </ul>
         
         <ul class="liste-de-l-accueil">
         </ul>
     </div>
     <div id="chercheurs" class="box">
-        <h4><a href="{% url chercheurs.views.index %}">Répertoire</a></h4>
+        <h4><a href="{% sep_url chercheurs.views.index %}">Répertoire</a></h4>
         
         <ul class="sous-menu">
-            <li><a href="{% url chercheurs.views.index %}">Tous les chercheurs</a></li>
+            <li><a href="{% sep_url chercheurs.views.index %}">Tous les chercheurs</a></li>
             {% include "chercheurs/actions.html" %}
         </ul>
         
         <ul class="liste-de-l-accueil">
         {% for chercheur in chercheurs %}
             <li>
-            <a href="{% url chercheurs.views.retrieve chercheur.id %}" class="le-titre">{{ chercheur }}</a>
+            <a href="{% sep_url chercheurs.views.retrieve id=chercheur.id %}" class="le-titre">{{ chercheur }}</a>
             {% if chercheur.discipline %}<span class="la-date">Discipline : {{ chercheur.discipline }}</span>{% endif %}
             </li>
         {% endfor %}
 </div>
 <div class="demi-droite clearfix">
     <div id="agenda" class="box">
-        <h4><a href="{% url savoirs.views.evenement_index %}">Agenda</a></h4>
+        <h4><a href="{% sep_url savoirs.views.evenement_index %}">Agenda</a></h4>
         <a id="rss-agenda" href="/rss/agenda"><img src="/media/img/feed.png" /></a>
 
         <ul class="sous-menu">
-          <li><a href="{% url savoirs.views.evenement_index %}">Tous les évènements</a></li>
+          <li><a href="{% sep_url savoirs.views.evenement_index %}">Tous les évènements</a></li>
           {% include "savoirs/evenement_actions.html" %}
         </ul>
 
           {% for evenement in evenements %}
           <li>
           <span class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</span>
-          <a href="{% url savoirs.views.evenement evenement.id %}" class="le-titre">{{ evenement.titre|truncatewords:20 }}</a>
+          <a href="{% sep_url savoirs.views.evenement id=evenement.id %}" class="le-titre">{{ evenement.titre|truncatewords:20 }}</a>
           <span class="le-resume">{{ evenement.description|truncatewords:20 }}</span>
           </li>
           {% endfor %}
         </ul>
     </div>
     <div  id="ressources" class="box">
-        <h4><a href="{% url savoirs.views.ressource_index %}">Ressources</a></h4>
+        <h4><a href="{% sep_url savoirs.views.ressource_index %}">Ressources</a></h4>
         
         <ul class="sous-menu">
-            <li><a href="{% url savoirs.views.ressource_index %}">Toutes les ressources</a></li>
+            <li><a href="{% sep_url savoirs.views.ressource_index %}">Toutes les ressources</a></li>
         </ul>
         
         <ul class="liste-de-l-accueil">
         {% for ressource in ressources %}
             <li>
-            <a href="{% url savoirs.views.ressource_retrieve ressource.id %}" class="le-titre">{{ ressource.title|safe|truncatewords:20 }}</a>
+            <a href="{% sep_url savoirs.views.ressource_retrieve id=ressource.id %}" class="le-titre">{{ ressource.title|safe|truncatewords:20 }}</a>
             {% if resssource.creator %}
                 Auteur : {{ ressource.creator }}<br />
             {% endif %}
         </ul>
     </div>
     <div  id="sites" class="box">
-        <h4><a href="{% url sitotheque.views.index %}">Sites</a></h4>
+        <h4><a href="{% sep_url sitotheque.views.index %}">Sites</a></h4>
         
         <ul class="sous-menu">
-            <li><a href="{% url sitotheque.views.index %}">Sitothèque</a></li>
+            <li><a href="{% sep_url sitotheque.views.index %}">Sitothèque</a></li>
             {% include "sites/actions.html" %}
         </ul>
         
         <ul class="liste-de-l-accueil">
         {% for site in sites %}
             <li>
-            <a href="{% url sitotheque.views.retrieve site.id %}" class="le-titre">{{ site|truncatewords:20 }}</a>
+            <a href="{% sep_url sitotheque.views.retrieve id=site.id %}" class="le-titre">{{ site|truncatewords:20 }}</a>
             <a href="{{ site.url }}" class="la-date">{{ site.url }}</a>
             {% if site.discipline.all.count %}<span class="la-date">Disciplines : {{ site.discipline.all|join:", " }}</span>{% endif %}
             </li>
index 249e710..58c0a8f 100644 (file)
@@ -1,4 +1,5 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 <script>
@@ -27,7 +28,7 @@
         {% include "savoirs/ressource_resultat.html" %} 
     {% endfor %}
     {% ifnotequal ressources|length total_ressources %}
-        <p class="pad"><a href="{% url savoirs.views.ressource_index %}?q={{ q|urlencode }}">Toutes les {{ total_ressources }} ressources pour cette recherche</a></p>
+        <p class="pad"><a href="{% sep_url savoirs.views.ressource_index %}?q={{ q|urlencode }}">Toutes les {{ total_ressources }} ressources pour cette recherche</a></p>
     {% endifnotequal %}
 {% endif %}
 
@@ -37,7 +38,7 @@
         {% include "savoirs/actualite_resultat.html" %} 
     {% endfor %}
     {% ifnotequal actualites|length total_actualites %}
-        <p class="pad"><a href="{% url savoirs.views.actualite_index %}?q={{ q|urlencode }}">Toutes les {{ total_actualites }} actualités pour cette recherche</a></p>
+        <p class="pad"><a href="{% sep_url savoirs.views.actualite_index %}?q={{ q|urlencode }}">Toutes les {{ total_actualites }} actualités pour cette recherche</a></p>
     {% endifnotequal %}
 {% endif %}
 
@@ -47,7 +48,7 @@
         {% include "savoirs/evenement_resultat.html" %}
     {% endfor %}
     {% ifnotequal evenements|length total_evenements %}
-        <p class="pad"><a href="{% url savoirs.views.evenement_index %}?q={{ q|urlencode }}">Tous les {{ total_evenements }} évènements pour cette recherche</a></p>
+        <p class="pad"><a href="{% sep_url savoirs.views.evenement_index %}?q={{ q|urlencode }}">Tous les {{ total_evenements }} évènements pour cette recherche</a></p>
     {% endifnotequal %}
 {% endif %}
 
     <h5>Chercheurs ({{ chercheurs|length }} sur {{ total_chercheurs }})</h5>
     <ul>
     {% for chercheur in chercheurs %}
-        <li><a href="{% url chercheurs.views.retrieve chercheur.id %}">{{ chercheur }}</a></li>
+        <li><a href="{% sep_url chercheurs.views.retrieve id=chercheur.id %}">{{ chercheur }}</a></li>
     {% endfor %}
     </ul>
     {% ifnotequal chercheurs|length total_chercheurs %}
-        <p class="pad"><a href="{% url chercheurs.views.index %}?mots_cles={{ q|urlencode }}">Tous les {{ total_chercheurs }} chercheurs pour cette recherche</a></p>
+        <p class="pad"><a href="{% sep_url chercheurs.views.index %}?mots_cles={{ q|urlencode }}">Tous les {{ total_chercheurs }} chercheurs pour cette recherche</a></p>
     {% endifnotequal %}
 {% endif %}
 
@@ -69,7 +70,7 @@
         {% include "sites/resultat.html" %}
     {% endfor %}
     {% ifnotequal sites|length total_sites %}
-        <p class="pad"><a href="{% url sitotheque.views.index %}?mots_cles={{ q|urlencode }}">Tous les {{ total_sites }} sites pour cette recherche</a></p>
+        <p class="pad"><a href="{% sep_url sitotheque.views.index %}?mots_cles={{ q|urlencode }}">Tous les {{ total_sites }} sites pour cette recherche</a></p>
     {% endifnotequal %}
 {% endif %}
 
     {% for r in sites_auf %}
         {% include "savoirs/sites_auf_resultat.html" %}
     {% endfor %}
-    <p class="pad"><a href="{% url savoirs.views.sites_auf %}?q={{ q|urlencode }}">Tous les sites AUF pour cette recherche</a></p>
+    <p class="pad"><a href="{% sep_url savoirs.views.sites_auf %}?q={{ q|urlencode }}">Tous les sites AUF pour cette recherche</a></p>
 {% endif %}
 
 {% if not ressources and not actualites and not evenements and not chercheurs and not sites %}
     <h5>Aucune résultat</h5>
-    <p class="pad"><a href="{% url savoirs.views.index %}">Retour à la page d'accueil</a></p>
+    <p class="pad"><a href="{% sep_url savoirs.views.index %}">Retour à la page d'accueil</a></p>
 {% endif %}
 </div>
 
index 8992f9a..d0582e6 100644 (file)
@@ -1,14 +1,15 @@
 {% load search %}
+{% load sep %}
 
 <div class="resultatRecherche">
-    <a class="le-titre" href="{% url savoirs.views.ressource_retrieve ressource.id %}">{{ ressource.title|highlight:search_regexp }}</a>
+    <a class="le-titre" href="{% sep_url savoirs.views.ressource_retrieve id=ressource.id %}">{{ ressource.title|highlight:search_regexp }}</a>
     {% if ressource.creator %}
     <div><span class="lbl">Auteur:</span> {{ ressource.creator|highlight:search_regexp }}</div>
     {% endif %}
     {% if ressource.description %}
     <div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description|excerpt:search_regexp|highlight:search_regexp }}</div>
     {% endif %}
-    <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+    <div class="fiche"><span>Fiche: </span><a href="{% sep_url savoirs.views.ressource_retrieve id=ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
     <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
     <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
 </div>
index c0ac3a6..fc4afe2 100644 (file)
@@ -1,4 +1,5 @@
 {% extends "container_base.html" %}
+{% load sep %}
 
 {% block contenu %}
 <h4>Ressource</h4>
@@ -45,7 +46,7 @@
     <div><span class="lbl">Régions:</span> {{ regions|join:", " }}</div>
     {% endif %}
 
-    <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+    <div class="fiche"><span>Fiche: </span><a href="{% sep_url savoirs.views.ressource_retrieve id=ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
     <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
     <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
 
index e3463d5..fff453a 100644 (file)
@@ -1 +1,2 @@
-<li><a href="{% url savoirs.views.sites_auf %}">Sites AUF</a></li>
+{% load sep %}
+<li><a href="{% sep_url savoirs.views.sites_auf %}">Sites AUF</a></li>
index 25f734c..edbb136 100644 (file)
@@ -1,7 +1,8 @@
 {% load search %}
+{% load sep %}
 
 <div class="resultatRecherche">
-  <div><a class="le-titre" href="{% url sitotheque.views.retrieve site.id %}">{{ site|highlight:search_regexp }}</a></div>
+  <div><a class="le-titre" href="{% sep_url sitotheque.views.retrieve id=site.id %}">{{ site|highlight:search_regexp }}</a></div>
   <div class="resultatResume">{{ site.description|excerpt:search_regexp|highlight:search_regexp }}</div>
   <div><span class="lbl">URL:</span> <a href="{{ site.url }}">{{ site.url }}</a></div>
 </div>
index 57f1295..f7ad16a 100644 (file)
@@ -21,30 +21,22 @@ sep_patterns = patterns(
 
     # accueil
     (r'^$', 'savoirs.views.index'),
-)
-
-urlpatterns = sep_patterns + patterns(
-    '',
 
     # recherche
     (r'^recherche/$', 'savoirs.views.recherche'),
-    
+
     # ressources
     (r'^ressources/$', 'savoirs.views.ressource_index'),
     (r'^ressources/(?P<id>\d+)/$', 'savoirs.views.ressource_retrieve'),
-    (r'^informations/$', 'savoirs.views.informations'),
     
     # actualités
     (r'^actualites/$', 'savoirs.views.actualite_index'),
-    
+
     # agenda
     (r'^agenda/$', 'savoirs.views.evenement_index'),
     (r'^agenda/evenements/utilisation/$', 'savoirs.views.evenement_utilisation'),
     (r'^agenda/evenements/creer/$', 'savoirs.views.evenement_ajout'),
-    (r'^agenda/evenements/moderer/$', 'savoirs.views.evenement_moderation'),
-    (r'^agenda/evenements/moderer/(.+)/accepter/$', 'savoirs.views.evenement_accepter'),
-    (r'^agenda/evenements/moderer/(.+)/refuser/$', 'savoirs.views.evenement_refuser'),
-    (r'^agenda/evenements/(.+)/$', 'savoirs.views.evenement'),
+    (r'^agenda/evenements/(?P<id>.+)/$', 'savoirs.views.evenement'),
 
     # chercheurs
     (r'^chercheurs/$', 'chercheurs.views.index'),
@@ -53,6 +45,9 @@ urlpatterns = sep_patterns + patterns(
     (r'^chercheurs/perso/$', 'chercheurs.views.perso'),
     (r'^chercheurs/edit/$', 'chercheurs.views.edit'),
     (r'^chercheurs/conversion$', 'chercheurs.views.conversion'),
+    (r'^accounts/login/$', 'chercheurs.views.chercheur_login'),
+    (r'^accounts/change_password/$', 'chercheurs.views.change_password'),
+    (r'^accounts/send_password/$', 'chercheurs.views.send_password'),
 
     # sites
     (r'^sites/$', 'sitotheque.views.index'),
@@ -61,6 +56,23 @@ urlpatterns = sep_patterns + patterns(
     # sites AUF
     (r'^sites-auf/$', 'savoirs.views.sites_auf'),
 
+    # sous-menu droite
+    (r'^a-propos/$', 'savoirs.views.a_propos'),
+    (r'^legal/$', 'savoirs.views.legal'),
+    (r'^nous-contacter/$', 'savoirs.views.nous_contacter'),
+
+)
+
+urlpatterns = sep_patterns + patterns(
+    '',
+
+    (r'^informations/$', 'savoirs.views.informations'),
+
+    # agenda
+    (r'^agenda/evenements/moderer/$', 'savoirs.views.evenement_moderation'),
+    (r'^agenda/evenements/moderer/(.+)/accepter/$', 'savoirs.views.evenement_accepter'),
+    (r'^agenda/evenements/moderer/(.+)/refuser/$', 'savoirs.views.evenement_refuser'),
+
     # section par discipline et/ou région
     (r'^discipline/(?P<discipline>\d+)/', include(sep_patterns)),
     (r'^region/(?P<region>\d+)/', include(sep_patterns)),
@@ -78,17 +90,9 @@ urlpatterns = sep_patterns + patterns(
     (r'^admin/(?P<app_name>[^/]*)/(?P<model_name>[^/]*)/assigner_disciplines', 'savoirs.admin_views.assigner_disciplines', {}, 'assigner_disciplines'),
     (r'^admin/(.*)', admin.site.root),
 
-    (r'^accounts/login/$', 'chercheurs.views.chercheur_login'),
     (r'^accounts/logout/$', 'django.contrib.auth.views.logout', {'template_name': 'accounts/logout.html'}),
-    (r'^accounts/change_password/$', 'chercheurs.views.change_password'),
-    (r'^accounts/send_password/$', 'chercheurs.views.send_password'),
     (r'^accounts/new_password/(.+)/(.+)/$', 'chercheurs.views.new_password'),
 
-    # sous-menu droite
-    (r'^a-propos/$', 'savoirs.views.a_propos'),
-    (r'^legal/$', 'savoirs.views.legal'),
-    (r'^nous-contacter/$', 'savoirs.views.nous_contacter'),
-
     # rss
     (r'^rss/(.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict':site_feeds}),
     (r'^json/get/$', 'savoirs.views.json_get'),