Parcourir la source

Add basic breadcrumbs for navigation

Factorized a bit templates
Jocelyn Delande il y a 9 ans
Parent
commit
e72643b32f

+ 19 - 0
costs/templates/costs/base.html

@@ -0,0 +1,19 @@
+
+<h1>{% block title %}Transparency!{% endblock %}</h1>
+
+<nav>
+  <ul>
+{% for title, url in breadcrumbs %}
+    <li>
+  {% if url %}<a href="{{ url }}" >{% endif %}
+      {{ title }}
+  {% if url %}</a>{% endif %}
+    </li>
+{% endfor %}
+
+  </ul>
+</nav>
+
+{% block content %}
+
+{% endblock %}

+ 7 - 1
costs/templates/costs/document_detail.html

@@ -1,6 +1,11 @@
+{% extends "costs/base.html" %}
+
 {% load costs %}
 
-<h1>{{ document.name  }}</h1>
+{% block title %}{{ document.name }}{% endblock %}
+
+
+{% block content %}
 <aside>
   <p><em>{{ document.date|date:"M Y" }}</em></p>
 </aside>
@@ -83,3 +88,4 @@
   <tr><td>Pas de matériel pour l'instant.</td></tr>
 {% endfor %}
 </table>
+{% endblock %}

+ 5 - 1
costs/templates/costs/documents_list.html

@@ -1,3 +1,6 @@
+{% extends "costs/base.html" %}
+
+{% block content %}
 {% if documents.count > 0 %}
 <ul>
 {% for doc in documents %}
@@ -14,4 +17,5 @@
 <p>
 Pas de documents pour l'heure.
 </p>
-{% endif %}
+{% endif %}
+{% endblock %}

+ 9 - 2
costs/templates/costs/service_detail.html

@@ -1,6 +1,11 @@
+{% extends "costs/base.html" %}
+
 {% load costs %}
 
-<h1>Service {{ service.name }}</h1>
+{% block title %}Service {{ service.name }}{% endblock %}
+
+
+{% block content %}
 <p><em>({{ service.document }}, {{ service.subscriptions_count }} abonnements)</em></p>
 
 <h2>Coût récurent (mensuel, par abonnement)</h2>
@@ -61,4 +66,6 @@
 <p>
 La mise en place lissée sur 12 mois, elle équivaut à
 {{ monthly_fas|price }}/mois.
-</p>
+</p>
+
+{% endblock %}

+ 23 - 2
costs/views.py

@@ -1,5 +1,6 @@
 from itertools import chain
 
+from django.core.urlresolvers import reverse
 from django.shortcuts import render, get_object_or_404
 
 from .models import Document, Service, Cost, Good, CostUse, GoodUse
@@ -26,22 +27,41 @@ def list_resources(request):
 
 
 def list_documents(request):
+    breadcrumbs = (
+        ('Documents', reverse('list-documents')),
+    )
     docs = Document.objects.all().prefetch_related('service_set')
 
     return render(
-        request, 'costs/documents_list.html', {'documents': docs})
+        request, 'costs/documents_list.html', {
+            'documents': docs,
+            'breadcrumbs': breadcrumbs,
+        })
 
 
 def detail_document(request, pk):
     doc = get_object_or_404(Document, pk=pk)
 
+    breadcrumbs = (
+        ('Documents', reverse('list-documents')),
+        (doc.name, doc.get_absolute_url())
+    )
     return render(
-        request, 'costs/document_detail.html', {'document': doc})
+        request, 'costs/document_detail.html', {
+            'document': doc,
+            'breadcrumbs': breadcrumbs,
+        })
 
 
 def detail_service(request, pk):
     service = Service.objects.get(pk=pk)
 
+    doc = service.document
+    breadcrumbs = (
+        ('Documents', reverse('list-documents')),
+        (doc.name, doc.get_absolute_url()),
+        (service.name, service.get_absolute_url())
+    )
     costs_uses = CostUse.objects.filter(service=service)
     goods_uses = GoodUse.objects.filter(service=service)
 
@@ -60,6 +80,7 @@ def detail_service(request, pk):
         unit_goods_value_share = total_goods_value_share/service.subscriptions_count
 
     context = {
+        'breadcrumbs': breadcrumbs,
         'service': service,
         'costs_uses': costs_uses,
         'goods_uses': goods_uses,