Ajout d'une vue : membres d'un club

- Liste des membres inscrits à un club.
- Vue accessible aux membres du burô et aux respos des clubs concernés.
This commit is contained in:
Martin Pépin 2016-08-23 18:57:59 +02:00
parent c07cf654fb
commit f25243b082
4 changed files with 42 additions and 3 deletions

View file

@ -16,7 +16,8 @@ from django.contrib.auth import views as django_views
from django_cas_ng import views as django_cas_views
from gestioncof import views as gestioncof_views, csv_views
from gestioncof.urls import export_patterns, petitcours_patterns, \
surveys_patterns, events_patterns, calendar_patterns
surveys_patterns, events_patterns, calendar_patterns, \
clubs_patterns
from gestioncof.autocomplete import autocomplete
@ -38,6 +39,8 @@ urlpatterns = [
url(r'^event/', include(events_patterns)),
# Calendrier
url(r'^calendar/', include(calendar_patterns)),
# Clubs
url(r'^clubs/', include(clubs_patterns)),
# Authentification
url(r'^cof/denied$', TemplateView.as_view(template_name='cof-denied.html'),
name="cof-denied"),

View file

@ -0,0 +1,20 @@
{% extends "base_title.html" %}
{% block realcontent %}
<h2>{{ club }}</h2>
{% if club.membres.exists %}
<h3>Liste des membres</h3>
<table class="table table-striped">
{% for member in club.membres.all %}
<tr>
<td>{{ member }}</td>
<td>{{ member.email }}</td>
</tr>
{% endfor %}
</ul>
{% else %}
Ce club ne contient actuellement aucun membre.
{% endif %}
{% endblock %}

View file

@ -52,3 +52,7 @@ calendar_patterns = [
url(r'^(?P<token>[a-z0-9-]+)/calendar.ics$',
'gestioncof.views.calendar_ics')
]
clubs_patterns = [
url(r'^membres/(?P<name>\w+)', views.membres_club)
]

View file

@ -10,7 +10,7 @@ from datetime import timedelta
from icalendar import Calendar, Event as Vevent
from django.shortcuts import redirect, get_object_or_404, render
from django.http import Http404, HttpResponse
from django.http import Http404, HttpResponse, HttpResponseForbidden
from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import login as django_login_view
from django.contrib.auth.models import User
@ -24,7 +24,7 @@ from gestioncof.models import Event, EventRegistration, EventOption, \
from gestioncof.models import EventCommentField, EventCommentValue, \
CalendarSubscription
from gestioncof.shared import send_custom_mail
from gestioncof.models import CofProfile, Clipper
from gestioncof.models import CofProfile, Clipper, Club
from gestioncof.decorators import buro_required, cof_required
from gestioncof.forms import UserProfileForm, EventStatusFilterForm, \
SurveyForm, SurveyStatusFilterForm, RegistrationUserForm, \
@ -483,6 +483,18 @@ def registration(request):
return render(request, "registration.html")
@login_required
def membres_club(request, name):
# Vérification des permissions : l'utilisateur doit être membre du burô
# ou respo du club.
user = request.user
club = get_object_or_404(Club, name=name)
if not request.user.profile.is_buro \
and club not in user.clubs_geres.all():
return HttpResponseForbidden('<h1>Permission denied</h1>')
return render(request, 'membres_clubs.html', {'club': club})
@buro_required
def export_members(request):
response = HttpResponse(content_type='text/csv')