[templates] Build url using build_url given as context
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Fri, 03 Mar 2017 16:22:51 +0100
changeset 208 13f6c2ee54eb
parent 207 80eb000ff2ea
child 209 c2bd83f29bd6
[templates] Build url using build_url given as context instead of by concatenating strings manually, which may be error prone (e.g. depending on the '/' suffix of base_url). Stop giving base_url to make things clear.
cubicweb_sherpa/views/__init__.py
cubicweb_sherpa/views/templates.py
cubicweb_sherpa/views/templates/index.jinja2.html
cubicweb_sherpa/views/templates/index_authenticated.jinja2.html
cubicweb_sherpa/views/templates/maintemplate.jinja2.html
--- a/cubicweb_sherpa/views/__init__.py	Fri Mar 03 16:21:03 2017 +0100
+++ b/cubicweb_sherpa/views/__init__.py	Fri Mar 03 16:22:51 2017 +0100
@@ -46,7 +46,7 @@
     def build_context(self):
         return {
             'title': self._cw._(self.title),
-            'base_url': self._cw.build_url(''),
+            'build_url': self._cw.build_url,
             'data_url': self._cw.datadir_url,
         }
 
--- a/cubicweb_sherpa/views/templates.py	Fri Mar 03 16:21:03 2017 +0100
+++ b/cubicweb_sherpa/views/templates.py	Fri Mar 03 16:22:51 2017 +0100
@@ -140,7 +140,7 @@
             'page_id': 'contentmain',
             '_': req._,
             'user': req.user.login,
-            'base_url': req.build_url(''),
+            'build_url': req.build_url,
             'data_url': req.datadir_url,
             'current_url': req.relative_path(),
         }
--- a/cubicweb_sherpa/views/templates/index.jinja2.html	Fri Mar 03 16:21:03 2017 +0100
+++ b/cubicweb_sherpa/views/templates/index.jinja2.html	Fri Mar 03 16:22:51 2017 +0100
@@ -31,8 +31,8 @@
       <span class="underline ml"></span>
     </div>
     <div id="buttons-wrapper">
-      <a href="{{base_url}}/sedaarchivetransfer" class="btn btn-default">Voir les profils d'archivage déja existants</a>
-      <a href="{{base_url}}/register" class="btn btn-default">Créer un compte et ajouter mes propres profils</a>
+      <a href="{{ build_url('sedaarchivetransfer') }}" class="btn btn-default">Voir les profils d'archivage déja existants</a>
+      <a href="{{ build_url('register') }}" class="btn btn-default">Créer un compte et ajouter mes propres profils</a>
     </div>
   </section>
 
@@ -61,7 +61,7 @@
         exporter dans un format utilisable par le SAE. Il permet également d’obtenir une documentation
         du profil, lisible par un humain.
       </p>
-      <p><a href="{{ base_url}}/project">En savoir plus</a></p>
+      <p><a href="{{ build_url('project') }}">En savoir plus</a></p>
     </div>
     <div class="col-md-4">
       <img class="img-responsive project-image" src="{{ data_url }}images/sherpa_general.png"/>
@@ -95,7 +95,7 @@
     <p>
       Des agents (personnes ou collectivités) sont associés afin de décrire les archives échangées
       ou de spécifier des informations de gestion les concernant. SHERPA propose de gérer un seul
-      référentiel <a href="{{ base_url}}/authorityrecord">« Agents »</a> dont les notices peuvent
+      référentiel <a href="{{ build_url('authorityrecord') }}">« Agents »</a> dont les notices peuvent
       être utilisées dans tous les profils d’archivage rédigés dans l’application. Le rédacteur peut
       ainsi alimenter et maintenir une seule liste de référence pour l’ensemble de son corpus de
       profils.
@@ -104,10 +104,10 @@
       Des termes d'indexations et des listes de valeurs contrôlées sont utilisées pour échanger les
       métadonnées techniques (format, encodage…), descriptives (niveaux de description, langues…) et
       de gestion (sorts finaux, les délais de communicabilité…). SHERPA fournit un référentiel <a
-      href="{{ base_url}}/conceptscheme">« Vocabulaires »</a> dont les références et les valeurs
+      href="{{  build_url('conceptscheme') }}">« Vocabulaires »</a> dont les références et les valeurs
       peuvent être utilisées dans l’ensemble des profils rédigés dans l’application.
     </p>
-    <p><a href="{{ base_url}}/project">En savoir plus</a></p>
+    <p><a href="{{  build_url('project') }}">En savoir plus</a></p>
   </section>
 
 
@@ -139,8 +139,8 @@
       <p>
         Le SEDA 2 s'appuie sur des référentiels externes qu’il convient donc de définir à
         l’extérieur du profil. SHERPA met en œuvre ce principe en proposant des zones permettant
-        d’alimenter et de mettre à jour les <a href="{{ base_url}}/authorityrecord">agents</a> et
-        les <a href="{{ base_url}}/conceptscheme">vocabulaires</a>.
+        d’alimenter et de mettre à jour les <a href="{{ build_url('authorityrecord') }}">agents</a> et
+        les <a href="{{ build_url('conceptscheme') }}">vocabulaires</a>.
       </p>
     </div>
     <div>
@@ -154,7 +154,7 @@
         droits de modifications à d’autres utilisateurs s’il le souhaite.
       </p>
     </div>
-    <p><a href="{{ base_url}}/project">En savoir plus</a></p>
+    <p><a href="{{  build_url('project') }}">En savoir plus</a></p>
   </section>
 
 </div>
--- a/cubicweb_sherpa/views/templates/index_authenticated.jinja2.html	Fri Mar 03 16:21:03 2017 +0100
+++ b/cubicweb_sherpa/views/templates/index_authenticated.jinja2.html	Fri Mar 03 16:22:51 2017 +0100
@@ -1,9 +1,9 @@
 <div class="col-md-2" id="actions">
   <section>
     <div id="actions-buttons-wrapper">
-      <a href="{{base_url}}/add/sedaarchivetransfer" class="btn btn-default">créer un nouveau profil</a>
-      <a href="{{base_url}}/add/sedaarchiveunit?unit_type=unit_content" class="btn btn-default">créer une nouvelle unité d'archive</a>
-      <a href="{{base_url}}/add/authorityrecord" class="btn btn-default">créer une nouvelle notice d'autorité</a>
+      <a href="{{ build_url('add/sedaarchivetransfer') }}" class="btn btn-default">créer un nouveau profil</a>
+      <a href="{{ build_url('add/sedaarchiveunit?unit_type=unit_content') }}" class="btn btn-default">créer une nouvelle unité d'archive</a>
+      <a href="{{ build_url('add/authorityrecord') }}" class="btn btn-default">créer une nouvelle notice d'autorité</a>
     </div>
   </section>
 </div>
@@ -16,7 +16,7 @@
       <span class="underline mr"></span><span class="losange"></span><span class="underline ml"></span>
     </div>
     <p>
-      Les profils d'archivage définissent la structure et le contenu attendu pour un bordereau de versement. Ils sont généralements associés à un flux d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+      Les profils d'archivage définissent la structure et le contenu attendu pour un bordereau de versement. Ils sont généralements associés à un flux d'archivage. <a href="{{ build_url('project') }}">En savoir plus</a>
     </p>
     {% if my_profiles_html %}
     <p>
@@ -33,7 +33,7 @@
     </div>
     <p>
       Les unités d'archives sont des morceaux de profils réutilisables ensuite dans les profils
-      d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+      d'archivage. <a href="{{ build_url('project') }}">En savoir plus</a>
     </p>
     {% if my_units_html %}
     <p>
@@ -51,7 +51,7 @@
     </div>
     <p>
       Les notices d'autorité permettent de décrire les agents (personnes ou organisation)
-      intervenant dans la vie d'un document ou dans le processus d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+      intervenant dans la vie d'un document ou dans le processus d'archivage. <a href="{{ build_url('project') }}">En savoir plus</a>
     </p>
     {% if my_records_html %}
     <p>
--- a/cubicweb_sherpa/views/templates/maintemplate.jinja2.html	Fri Mar 03 16:21:03 2017 +0100
+++ b/cubicweb_sherpa/views/templates/maintemplate.jinja2.html	Fri Mar 03 16:22:51 2017 +0100
@@ -2,7 +2,7 @@
   <nav class="navbar-default header-sherpa" role="banner">
     <div class="container-fluid">
       <div class="col-md-2 hidden-xs hidden-sm">
-        <a href="{{ base_url }}"><img src="{{ data_url }}images/logo_SIAF.png" class="logoSIAF" /></a>
+        <a href="{{ build_url('') }}"><img src="{{ data_url }}images/logo_SIAF.png" class="logoSIAF" /></a>
       </div>
       <div class="col-md-7 col-xs-8">
         <a href="/">
@@ -69,8 +69,8 @@
         </div>
       </section>
       <div id="footer-links">
-        <span><a href="{{ base_url }}/apropos">À propos</a></span>
-        <span><a href="{{ base_url }}/contact">Contact</a></span>
+        <span><a href="{{ build_url('apropos') }}">À propos</a></span>
+        <span><a href="{{ build_url('contact') }}">Contact</a></span>
         <span>© Service Interministériel des Archives de France</span>
       </div>
     </footer>