From 9fe47229fd01e463277921c10842b5a8f673637a Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby <comby@crans.org> Date: Thu, 15 Aug 2019 21:49:59 +0200 Subject: [PATCH] Detail view of club: member list and history --- apps/member/views.py | 19 ++++++++++ templates/member/club_detail.html | 61 +++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git a/apps/member/views.py b/apps/member/views.py index 4c0900ab..f915d4e8 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -9,9 +9,15 @@ from django.views.generic import CreateView, ListView, DetailView from django.http import HttpResponseRedirect from django.contrib.auth.forms import UserCreationForm from django.urls import reverse_lazy +from django.db.models import Q + +from django_tables2.views import SingleTableView + from .models import Profile, Club, Membership from .forms import ProfileForm, ClubForm,MembershipForm, MemberFormSet,FormSetHelper +from .tables import ClubTable +from note.models.transactions import Transaction class UserCreateView(CreateView): """ @@ -63,7 +69,20 @@ class ClubListView(LoginRequiredMixin,SingleTableView): class ClubDetailView(LoginRequiredMixin,DetailView): model = Club + context_object_name="club" + def get_context_data(self,**kwargs): + context = super().get_context_data(**kwargs) + club = context["club"] + club_transactions = \ + Transaction.objects.all().filter(Q(source=club.note) | Q(destination=club.note)) + context['history_list'] = club_transactions + club_member = \ + Membership.objects.all().filter(club=club) + #TODO: consider only valid Membership + context['member_list'] = club_member + return context + class ClubAddMemberView(LoginRequiredMixin,CreateView): model = Membership form_class = MembershipForm diff --git a/templates/member/club_detail.html b/templates/member/club_detail.html index ddac22aa..d8e6f805 100644 --- a/templates/member/club_detail.html +++ b/templates/member/club_detail.html @@ -1,8 +1,61 @@ {% extends "base.html" %} {% load static %} +{% load i18n %} +{% load render_table from django_tables2 %} {% block content %} -<p><a class="btn btn-default" href="{% url 'member:club_list' %}">Clubs</a></p> -<h5>{{ object.name }}</h5> +<p><a class="btn btn-primary" href="{% url 'member:club_list' %}">Clubs</a></p> +<h3 class="text-center"> Club {{ object.name }}</h3> +<dl> + <dt>{% trans 'Membership starts on' %}</dt> + <dd>{{ club.membership_start }}</dd> + <dt>{% trans 'Membership ends on' %}</dt> + <dd>{{ club.membership_end }}</dd> + <dt>{% trans 'Membership duration' %}</dt> + <dd>{{ club.membership_duration }}</dd> + <dt> Aliases </dt> + <dd>{{ club.note.aliases_set.all }}</dd> + <dt>{% trans 'balance' %}</dt> + <dd>{{ club.note.balance }}</dd> -<a class="btn btn-default" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des membres </a> -{% endblock %} +</dl> + + +<div class="btn-group" role="group"> + <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des membres </a> + <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Modifier les informations </a> + <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des roles </a> +</div> + +<div class="accordion" id="accordionExample"> + <div class="card"> + <div class="card-header" id="headingOne"> + <h5 class="mb-0"> + <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> + <i class="fa fa-users"></i> Membres du club + </button> + </h5> + </div> + + <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample"> + <div class="card-body"> + + {% render_table member_list %} + </div> + </div> + </div> + <div class="card"> + <div class="card-header" id="headingTwo"> + <h5 class="mb-0"> + <button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> + <i class="fa fa-euro"></i> Historique des transactions + </button> + </h5> + </div> + <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample"> + <div class="card-body"> + {% render_table history_list %} + </div> + </div> + </div> +</div> + {% endblock %} -- GitLab