Use class-based views

See #94
This commit is contained in:
Martin Pépin 2017-02-05 17:35:41 +01:00
parent 9aa4782d57
commit 45eb384cfd
3 changed files with 22 additions and 27 deletions

View file

@ -7,8 +7,7 @@ from django.shortcuts import render, get_object_or_404, redirect
from django.core import mail
from django.core.mail import EmailMessage
from django.contrib.auth.models import User
from django.views.generic import ListView
from django.utils.decorators import method_decorator
from django.views.generic import ListView, DetailView
from django.views.decorators.csrf import csrf_exempt
from django.template import loader
from django.conf import settings
@ -32,18 +31,16 @@ class DemandeListView(ListView):
def get_queryset(self):
return PetitCoursDemande.objects.order_by('traitee', '-id').all()
@method_decorator(buro_required)
def dispatch(self, *args, **kwargs):
return super(DemandeListView, self).dispatch(*args, **kwargs)
class DemandeDetailView(DetailView):
model = PetitCoursDemande
template_name = "details_demande_petit_cours.html"
@buro_required
def details(request, demande_id):
demande = get_object_or_404(PetitCoursDemande, id=demande_id)
attributions = PetitCoursAttribution.objects.filter(demande=demande).all()
return render(request, "details_demande_petit_cours.html",
{"demande": demande,
"attributions": attributions})
def get_context_data(self, **kwargs):
context = super(DemandeDetailView, self).get_context_data(**kwargs)
obj = context['object']
context['attributions'] = obj.petitcoursattribution_set.all()
return context
@buro_required

View file

@ -8,10 +8,10 @@
{% include "details_demande_petit_cours_infos.html" %}
<hr />
<table class="table table-striped">
<tr><td><strong>Traitée</strong></td><td> <img src="{% if demande.traitee %}{% static "images/yes.png" %}{% else %}{% static "images/no.png" %}{% endif %}" /></td></tr>
{% if demande.traitee %}
<tr><td><strong>Traitée par</strong></td><td> {{ demande.traitee_par }}</td></tr>
<tr><td><strong>Traitée le</strong></td><td> {{ demande.processed }}</td></tr>
<tr><td><strong>Traitée</strong></td><td> <img src="{% if object.traitee %}{% static "images/yes.png" %}{% else %}{% static "images/no.png" %}{% endif %}" /></td></tr>
{% if object.traitee %}
<tr><td><strong>Traitée par</strong></td><td> {{ object.traitee_par }}</td></tr>
<tr><td><strong>Traitée le</strong></td><td> {{ object.processed }}</td></tr>
<tr><td>
<strong>Attributions</strong></td><td>
<ul>
@ -23,15 +23,15 @@
</tr>
{% endif %}
</table>
{% if demande.traitee %}
{% if object.traitee %}
<div style="text-align: right;">
<form action="{% url "petits-cours-demande-retraitement" demande.id %}">
<form action="{% url "petits-cours-demande-retraitement" object.id %}">
<input class="btn btn-primary" type="submit" value="Retraiter">
</form>
</div>
{% else %}
<div style="text-align: right;">
<form action="{% url "petits-cours-demande-traitement" demande.id %}">
<form action="{% url "petits-cours-demande-traitement" object.id %}">
<input class="btn btn-primary" type="submit" value="Traiter">
</form>
</div>

View file

@ -1,12 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from django.conf.urls import url
from gestioncof.petits_cours_views import DemandeListView
from gestioncof.petits_cours_views import DemandeListView, DemandeDetailView
from gestioncof import views, petits_cours_views
from gestioncof.decorators import buro_required
export_patterns = [
url(r'^members$', views.export_members),
@ -24,10 +21,11 @@ petitcours_patterns = [
name='petits-cours-demande'),
url(r'^demande-raw$', petits_cours_views.demande_raw,
name='petits-cours-demande-raw'),
url(r'^demandes$', DemandeListView.as_view(),
url(r'^demandes$',
buro_required(DemandeListView.as_view()),
name='petits-cours-demandes-list'),
url(r'^demandes/(?P<demande_id>\d+)$',
petits_cours_views.details,
url(r'^demandes/(?P<pk>\d+)$',
buro_required(DemandeDetailView.as_view()),
name='petits-cours-demande-details'),
url(r'^demandes/(?P<demande_id>\d+)/traitement$',
petits_cours_views.traitement,