ed18e2240b1601a7b6fe317edbf6710aaa170758
[wolnelektury.git] / src / club / forms.py
1 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
3 #
4 from decimal import Decimal
5 from django import forms
6 from django.utils.translation import ugettext as _
7 from newsletter.forms import NewsletterForm
8 from . import models
9 from .payu.forms import CardTokenForm
10
11
12 class ScheduleForm(forms.ModelForm, NewsletterForm):
13     class Meta:
14         model = models.Schedule
15         fields = ['monthly', 'amount', 'email']
16         widgets = {
17             'amount': forms.HiddenInput,
18             'monthly': forms.HiddenInput,
19         }
20
21     def clean_amount(self):
22         value = self.cleaned_data['amount']
23         club = models.Club.objects.first()
24         if club and value < club.min_amount:
25             raise forms.ValidationError(
26                 _('Minimal amount is %(amount)d PLN.') % {
27                     'amount': club.min_amount
28                 }
29             )
30         return value
31
32     def save(self, *args, **kwargs):
33         NewsletterForm.save(self, *args, **kwargs)
34         return super().save(*args, **kwargs)
35
36
37 class PayUCardTokenForm(CardTokenForm):
38     def get_queryset(self, view):
39         return view.get_schedule().payucardtoken_set