# 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
'email': self.request.user.email,
}
+ def get_form_kwargs(self):
+ kwargs = super().get_form_kwargs()
+ kwargs['referer'] = self.request.META.get('HTTP_REFERER', '')
+ return kwargs
+
def form_valid(self, form):
retval = super(JoinView, self).form_valid(form)
if self.request.user.is_authenticated:
order_model = models.PayUOrder
-class MembershipView(UpdateView):
- fields = ['name']
-
- def get_success_url(self):
- # TODO: get only current schedule if multiple.
- return self.object.schedule_set.first().get_absolute_url()
-
- def get_object(self):
- return self.request.user.membership
-
-
class ScheduleThanksView(DetailView):
model = models.Schedule
slug_field = slug_url_kwarg = 'key'
).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:
+ email = email.strip()
+ 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
+ }
+ )