Browse Source

page détail d’un service

Élie Bouttier 8 years ago
parent
commit
26387a2d34

+ 0 - 0
djadhere/templatetags/__init__.py


+ 9 - 0
djadhere/templatetags/djadhere.py

@@ -0,0 +1,9 @@
+from django import template
+
+
+register = template.Library()
+
+
+@register.filter
+def count(queryset):
+    return queryset.count()

+ 48 - 0
services/templates/services/service_detail.html

@@ -0,0 +1,48 @@
+{% extends 'base.html' %}
+
+{% load bootstrap3 %}
+
+{% block servicestab %} class="active"{% endblock %}
+
+{% block content %}
+<a href="{% url 'service-list' %}" class="btn btn-primary"><span class="glyphicon glyphicon-arrow-left"></span>&nbsp;Retour à la liste de mes services</a>
+
+<br /><br />
+
+<div class="panel panel-default">
+    <div class="panel-heading">
+        <h3>{{ service.service_type }}</h3>
+        {% if service.label %}
+        <h4>{{ service.label }}</h4>
+        {% endif %}
+    </div>
+    <div class="panel-body">
+        {% if service.contribution.count == 0 %}
+        <p>Contribution : pas de contribution</p>
+        {% elif service.contribution.count == 1 %}
+        <p>Contribution : {{ service.contribution.first }}</p>
+        <p>
+            Ressources IP :
+            {% for ip in service.ip_resources.all %}
+            {% if forloop.first %}<ul>{% endif %}
+                <li>{{ ip }}</li>
+            {% if forloop.last %}</ul>{% endif %}
+            {% empty %}
+            aucune IP allouée
+            {% endfor %}
+        </p>
+        <p>
+            Période d’activation du service :
+            {% if not service.start and not service.end %}
+            indéfinie
+            {% else %}
+            {{ service.start|default:"depuis toujours" }}
+            –
+            {{ service.end|default:"pour toujours" }}
+            ({% if service.is_ongoing %}<span class="text-success">actuellement actif</span>{% else %}<span class="text-danger">actuellement inactif</span>{% endif %})
+            {% endif %}
+        </p>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 21 - 9
services/templates/services/service_list.html

@@ -1,18 +1,30 @@
 {% extends 'base.html' %}
 
-{% load bootstrap3 %}
+{% load bootstrap3 djadhere services %}
 
 {% block servicestab %} class="active"{% endblock %}
 
 {% block content %}
+<div class="well">
+    {% if object_list %}
+    <h3>Mes services</h3>
+    <p>Services actifs : {{ object_list|active|count }}</p>
+    <p>Services inactifs : {{ object_list|inactive|count }}</p>
+    {% else %}
+    <h3>Vous n’avez aucun service :-(</h3>
+    {% endif %}
+</div>
+
+{% for service in object_list %}
+{% if forloop.first %}
 <div class="list-group">
-    {% for service in object_list %}
-    <div class="list-group-item {% if service.is_ongoing %}list-group-item-success{% else %}list-group-item-danger{% endif %}">
+{% endif %}
+    <a href="{% url 'service-detail' service.pk %}" class="list-group-item {% if service.is_ongoing %}list-group-item-success{% else %}list-group-item-danger{% endif %}">
         <h4 class="list-group-item-heading">
-            #{{ service.pk }} <b>{{ service.service_type }}</b> {{ service.label }}
+            <b>{{ service.service_type }}</b> {{ service.label }}
         </h4>
         <p class="list-group-item-text">
-            {{ service.start|default:"depuis toujours" }} – {{ service.end|default:"présent" }}
+            {{ service.start|default:"…" }} – {{ service.end|default:"…" }}
         </p>
         {% if service.contribution.count == 1 %}
         <p class="list-group-item-text">
@@ -26,9 +38,9 @@
         <p class="list-group-item-text">
             {{ service.ip_resources.all|join:", " }}
         </p>
-    </div>
-    {% empty %}
-    <div class="list-group-item">Vous n’avez aucun service.</div>
-    {% endfor %}
+    </a>
+{% if forloop.last %}
 </div>
+{% endif %}
+{% endfor %}
 {% endblock %}

+ 0 - 0
services/templatetags/__init__.py


+ 16 - 0
services/templatetags/services.py

@@ -0,0 +1,16 @@
+from django import template
+
+from services.models import Service
+
+
+register = template.Library()
+
+
+@register.filter
+def active(services):
+    return services.filter(Service.get_ongoing_filter())
+
+
+@register.filter
+def inactive(services):
+    return services.exclude(Service.get_ongoing_filter())

+ 1 - 1
services/urls.py

@@ -1,9 +1,9 @@
 from django.conf.urls import url
 
-
 from . import views
 
 
 urlpatterns = [
     url(r'^list/$', views.ServiceList.as_view(), name='service-list'),
+    url(r'^(?P<pk>[0-9]+)/$', views.ServiceDetail.as_view(), name='service-detail'),
 ]

+ 10 - 2
services/views.py

@@ -1,11 +1,19 @@
 from django.shortcuts import render
-from django.views.generic import ListView
+from django.views.generic import ListView, DetailView
 from django.contrib.auth.mixins import LoginRequiredMixin
 
 from .models import Service
 
 
-class ServiceList(LoginRequiredMixin, ListView):
+class ServiceMixin:
     def get_queryset(self):
         return Service.objects.filter(adherent__pk__in=self.request.user.profile.adhesions.values_list('pk')) \
                     .order_by('-start')
+
+
+class ServiceList(LoginRequiredMixin, ServiceMixin, ListView):
+    pass
+
+
+class ServiceDetail(LoginRequiredMixin, ServiceMixin, DetailView):
+    pass