From af3da1eafb8a420c25dfbe977b6c9a5b4a5de0b6 Mon Sep 17 00:00:00 2001 From: grisel-davy Date: Sun, 18 Oct 2020 15:22:48 +0200 Subject: [PATCH] Move facture list to cotisation, add paginator --- .../templates/cotisations/aff_profil.html | 131 ++++++++++++++++++ cotisations/views.py | 24 ++++ users/templates/users/profil.html | 41 +----- users/views.py | 10 +- 4 files changed, 162 insertions(+), 44 deletions(-) create mode 100644 cotisations/templates/cotisations/aff_profil.html diff --git a/cotisations/templates/cotisations/aff_profil.html b/cotisations/templates/cotisations/aff_profil.html new file mode 100644 index 00000000..7e01a93a --- /dev/null +++ b/cotisations/templates/cotisations/aff_profil.html @@ -0,0 +1,131 @@ +{% comment %} +Re2o est un logiciel d'administration développé initiallement au rezometz. Il +se veut agnostique au réseau considéré, de manière à être installable en +quelques clics. + +Copyright © 2017 Gabriel Détraz +Copyright © 2017 Lara Kermarec +Copyright © 2017 Augustin Lemesle + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +{% endcomment %} + +{% load acl %} +{% load i18n %} +{% load logs_extra %} + + +
+
+

+ + {% trans "Subscriptions" %} +

+
+
+
+ {% can_create Facture %} + + + {% trans "Add a subscription" %} + + {% if user_solde %} + + + {% trans "Edit the balance" %} + + {% endif%} + {% acl_end %} +
+
+ {% if facture_list %} +
+ {% if facture_list.paginator %} + {% include 'pagination.html' with list=facture_list %} + {% endif %} + + + + + + + + + + + + + + + {% for facture in facture_list %} + + + + + + + + + + + {% endfor %} +
+ {% trans "User" as tr_user %} + {% include 'buttons/sort.html' with prefix='cotis' col='user' text=tr_user %} + {% trans "Designation" %}{% trans "Total price" %} + {% trans "Payment method" as tr_payment_method %} + {% include 'buttons/sort.html' with prefix='cotis' col='paiement' text=tr_payment_method %} + + {% trans "Date" as tr_date %} + {% include 'buttons/sort.html' with prefix='cotis' col='date' text=tr_date %} + + {% trans "Invoice ID" as tr_invoice_id %} + {% include 'buttons/sort.html' with prefix='cotis' col='id' text=tr_invoice_id %} +
{{ facture.user }}{{ facture.name }}{{ facture.prix_total }}{{ facture.paiement }}{{ facture.date }}{{ facture.id }} + {% can_edit facture %} + {% include 'buttons/edit.html' with href='cotisations:edit-facture' id=facture.id %} + {% acl_else %} + {% trans "Controlled invoice" %} + {% acl_end %} + {% can_delete facture %} + {% include 'buttons/suppr.html' with href='cotisations:del-facture' id=facture.id %} + {% acl_end %} + {% history_button facture %} + + {% if facture.valid %} + + {% trans "PDF" %} + + {% else %} + {% trans "Invalidated invoice" %} + {% endif %} + {% if facture.control and facture.is_subscription %} + + {% trans "Voucher" %} + + {% endif %} +
+ + {% if facture_list.paginator %} + {% include 'pagination.html' with list=facture_list %} + {% endif %} +
+ {% else %} +

{% trans "No invoice" %}

+ {% endif %} +
+
+
diff --git a/cotisations/views.py b/cotisations/views.py index b90b39e4..800c9df8 100644 --- a/cotisations/views.py +++ b/cotisations/views.py @@ -33,6 +33,7 @@ import os from django.urls import reverse from django.shortcuts import render, redirect, get_object_or_404 +from django.template.loader import render_to_string from django.contrib.auth.decorators import login_required from django.contrib import messages from django.db.models import ProtectedError @@ -1060,3 +1061,26 @@ def voucher_pdf(request, invoice, **_kwargs): "date_begin": invoice.date, }, ) + +def aff_profil(request,user): + """View used to display the cotisations on a user's profil.""" + + factures = Facture.objects.filter(user=user) + factures = SortTable.sort( + factures, + request.GET.get("col"), + request.GET.get("order"), + SortTable.COTISATIONS_INDEX, + ) + + pagination_large_number = GeneralOption.get_cached_value("pagination_large_number") + factures = re2o_paginator(request, factures,pagination_large_number) + + context = { + "users":user, + "facture_list": factures, + } + + return render_to_string( + "cotisations/aff_profil.html",context=context,request=request,using=None + ) diff --git a/users/templates/users/profil.html b/users/templates/users/profil.html index b9fbc621..a676b416 100644 --- a/users/templates/users/profil.html +++ b/users/templates/users/profil.html @@ -407,38 +407,12 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endif %} -
-
-

- - {% trans "Subscriptions" %} -

-
-
-
- {% can_create Facture %} - - - {% trans "Add a subscription" %} - - {% if user_solde %} - - - {% trans "Edit the balance" %} - - {% endif%} - {% acl_end %} -
-
- {% if facture_list %} - {% include 'cotisations/aff_cotisations.html' with facture_list=facture_list %} - {% else %} -

{% trans "No invoice" %}

- {% endif %} -
-
-
+ + + {% for template in apps_templates_list %} + {{ template }} + {% endfor %} +

@@ -544,9 +518,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,

- {% for template in apps_templates_list %} - {{ template }} - {% endfor %} {% endblock %} diff --git a/users/views.py b/users/views.py index 96d32136..ffa1344e 100644 --- a/users/views.py +++ b/users/views.py @@ -1357,14 +1357,7 @@ def profil(request, users, **_kwargs): ] nb_machines = users.user_interfaces().count() - - factures = Facture.objects.filter(user=users) - factures = SortTable.sort( - factures, - request.GET.get("col"), - request.GET.get("order"), - SortTable.COTISATIONS_INDEX, - ) + bans = Ban.objects.filter(user=users) bans = SortTable.sort( bans, @@ -1392,7 +1385,6 @@ def profil(request, users, **_kwargs): "users": users, "nb_machines":nb_machines, "apps_templates_list": apps_templates_list, - "facture_list": factures, "ban_list": bans, "white_list": whitelists, "user_solde": user_solde,