From 6509b5cd1935677b4fc24ebf2f40f8fc2221dac5 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 1 Sep 2021 14:44:43 +0200 Subject: [PATCH] Quick membership verifier. --- src/club/templates/club/member_verify.html | 8 +++++ src/club/urls.py | 2 ++ src/club/views.py | 41 +++++++++++++++++++++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/club/templates/club/member_verify.html diff --git a/src/club/templates/club/member_verify.html b/src/club/templates/club/member_verify.html new file mode 100644 index 000000000..7c6442584 --- /dev/null +++ b/src/club/templates/club/member_verify.html @@ -0,0 +1,8 @@ + + +
+ {% csrf_token %} + + +
+ diff --git a/src/club/urls.py b/src/club/urls.py index 8bbb849b2..d55ef171f 100644 --- a/src/club/urls.py +++ b/src/club/urls.py @@ -24,4 +24,6 @@ urlpatterns = [ path('notify//', views.PayUNotifyView.as_view(), name='club_payu_notify'), path('czlonek/', views.MembershipView.as_view(), name='club_membership'), + + path('weryfikacja/', views.member_verify, name='club_member_verify'), ] diff --git a/src/club/views.py b/src/club/views.py index 6a5c7d725..ce76d6b76 100644 --- a/src/club/views.py +++ b/src/club/views.py @@ -2,7 +2,7 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django.conf import settings -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import login_required, permission_required from django.db.models import Sum from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render @@ -185,3 +185,42 @@ class YearSummaryView(DetailView): ).order_by('completed_at') ctx['total_amount'] = ctx['payments'].aggregate(s=Sum('schedule__amount'))['s'] return ctx + + +@permission_required('club.schedule_view') +def member_verify(request): + if request.method == 'POST': + emails = request.POST.get('emails').strip().split('\n') + rows = ['email;członek;nazwa użytkownika;aktywny;co najmniej do'] + for email in emails: + row = [email] + schedules = models.Schedule.objects.filter(email=email).exclude(payed_at=None) + if schedules.exists(): + row.append('tak') + akt = False + unames = set() + exp = None + for s in schedules: + if s.is_active(): + akt = True + if s.membership: + unames.add(s.membership.user.username) + if exp is None or s.expires_at > exp: + exp = s.expires_at + row.append(','.join(sorted(unames))) + row.append('tak' if akt else 'nie') + row.append(exp.date().isoformat()) + else: + row.append('nie') + rows.append(';'.join(row)) + rows = '\n'.join(rows) + else: + rows = '' + + return render( + request, + 'club/member_verify.html', + { + 'result': rows + } + ) -- 2.20.1