Mercurial > sat_legacy_website
annotate sat_website/forms.py @ 147:d0cd185f9b61
replace apayer with liberapay
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 17 Oct 2017 06:01:01 +0200 |
parents | c868187b8d00 |
children | 75a95a1dfeb6 |
rev | line source |
---|---|
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
4 """ |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
5 SàT website: Salut à Toi's presentation website |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
6 Copyright (C) 2012 Jérôme Poisson (goffi@goffi.org) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
7 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 This file is part of SàT website. |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
10 SàT website is free software: you can redistribute it and/or modify |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
11 it under the terms of the GNU Affero General Public License as published by |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 the Free Software Foundation, either version 3 of the License, or |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 (at your option) any later version. |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 Foobar is distributed in the hope that it will be useful, |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 but WITHOUT ANY WARRANTY; without even the implied warranty of |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 GNU Affero General Public License for more details. |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
20 You should have received a copy of the GNU Affero General Public License |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 along with Foobar. If not, see <http://www.gnu.org/licenses/>. |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
22 """ |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
23 |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
24 from django.utils.translation import ugettext_lazy as _, ugettext, string_concat, get_language |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
25 from django.core.mail import send_mail |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
26 from django import forms |
40
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
27 from django.conf import settings |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
28 from collections import OrderedDict |
96
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
29 from time import strftime |
60 | 30 import unicodecsv |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
31 import utils |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
32 import re |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
33 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
34 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 ## Fields ## |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 class Section(forms.Field): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
39 def __init__(self, *args, **kwargs): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 kwargs['required'] = False |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 super(Section, self).__init__(*args, **kwargs) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
42 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
43 class BooleanField(forms.BooleanField): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
44 def __init__(self, *args, **kwargs): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
45 super(BooleanField, self).__init__(*args, **kwargs) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
46 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
47 class CharField(forms.CharField): |
95
dc8a30f6c369
fixes the display of form results which was ignoring some labels
souliane <souliane@mailoo.org>
parents:
94
diff
changeset
|
48 def __init__(self, *args, **kwargs): |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 try: |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
50 placeholder = kwargs.pop('placeholder') |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
51 except KeyError: |
95
dc8a30f6c369
fixes the display of form results which was ignoring some labels
souliane <souliane@mailoo.org>
parents:
94
diff
changeset
|
52 placeholder = kwargs['label'] |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
53 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 super(CharField, self).__init__(*args, **kwargs) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 self.widget.attrs.update({'class': "form-control", |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
56 'placeholder': placeholder}) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 class EmailField(forms.EmailField): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 def __init__(self, *args, **kwargs): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
60 super(EmailField, self).__init__(*args, **kwargs) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
61 self.widget.attrs.update({'class': "form-control", |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
62 'placeholder': self.label}) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
64 class ChoiceField(forms.ChoiceField): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 def __init__(self, *args, **kwargs): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 super(ChoiceField, self).__init__(*args, **kwargs) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 self.widget.attrs.update({'class': "form-control"}) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
68 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
69 def choice_label(self, value): |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
70 """Return the label corresponding to the given value. |
65 | 71 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
72 @param value (unicode): a choice value |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
73 @return: unicode |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
74 """ |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
75 for current_value, label in self.choices: |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
76 if unicode(current_value) == unicode(value): |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
77 return unicode(label) |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
78 return u'' |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
79 |
65 | 80 |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
81 ## Forms ## |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
82 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
83 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
84 class RegistrationForm(forms.Form): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
85 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
86 section_1 = Section(label=_(u'Identity')) |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
87 name = CharField(label=_(u'Given name')) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
88 surname = CharField(label=_(u'Family name')) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
89 address = CharField(label=_(u"Address, postal code, municipality"), widget=forms.Textarea(attrs={'rows': 3})) |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
90 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
91 section_2 = Section(label=_(u'Contacts')) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
92 email = EmailField(label=_(u'Email address')) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
93 email_confirmation = EmailField(label=_(u'Email address confirmation')) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
94 jid = EmailField(required=False, label=_(u'Jabber ID (for example your SàT login)')) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
95 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
96 section_3 = Section(label=_(u'Subscription')) |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
97 subscription_amount = ChoiceField(choices=[(amount, u"%s €" % amount) for amount in utils.get_asso_subscr_amounts()]) |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
98 |
147
d0cd185f9b61
replace apayer with liberapay
souliane <souliane@mailoo.org>
parents:
96
diff
changeset
|
99 section_4 = Section(label=_(u'Reference')) |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
100 reference = CharField(required=False, label=_(u"Reference"), placeholder=_(u"Adherent number in case of a renewal")) |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
101 |
147
d0cd185f9b61
replace apayer with liberapay
souliane <souliane@mailoo.org>
parents:
96
diff
changeset
|
102 section_5 = Section(label=_(u'Comment')) |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
103 comment = CharField(required=False, label=_(u"Comment"), placeholder="", widget=forms.Textarea(attrs={'rows': 3})) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
104 |
74
651c4049f32b
rename "Newsletter" to "Mailing list" in the adhesion form
souliane <souliane@mailoo.org>
parents:
66
diff
changeset
|
105 mailing = BooleanField(required=False, label=_(u"I would like to subscribe to the adherents' mailing list.")) |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
106 |
40
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
107 def html_link(url, label): |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
108 return string_concat('<a target="#" href="', url, '">', label, '</a>') |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
109 |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
110 agreement_label = [_(u"I read the "), |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
111 html_link(settings.ASSO_URL_STATUTES, _(u"Statutes")), |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
112 _(u" and "), |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
113 html_link(settings.ASSO_URL_RULES, _(u"Rules")), |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
114 _(u" of the association, and agree to both of them."), |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
115 ] |
dfe7139dae0a
add links to the statutes and rules of the association in the adhesion form
souliane <souliane@mailoo.org>
parents:
34
diff
changeset
|
116 agreement_confirmation = BooleanField(label=string_concat(*agreement_label)) |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
117 |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
118 def sections(self): |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
119 """Get the fields grouped in sections. |
65 | 120 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
121 @return: OrderedDict binding section name to a list of fields |
65 | 122 """ |
34
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
123 sections = OrderedDict() |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
124 current_section = None |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
125 for field in self: |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
126 if isinstance(field.field, Section): |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
127 current_section = sections.setdefault(field.label, []) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
128 else: |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
129 current_section.append(field) |
9d553570cc61
add adhesion_form.html and thank_you.html
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
130 return sections |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
131 |
44 | 132 def clean(self): |
133 cleaned_data = super(RegistrationForm, self).clean() | |
134 email = cleaned_data.get("email") | |
135 email_confirmation = cleaned_data.get("email_confirmation") | |
136 | |
137 if email and email_confirmation and email != email_confirmation: | |
138 msg = _(u"Passwords don't match.") | |
139 self.add_error('email_confirmation', msg) | |
140 | |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
141 |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
142 def results(self, user_readable=True): |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
143 """Get the results submitted by the user as a list. |
65 | 144 |
60 | 145 @param user_readable: (bool) set to True to prefer the fields' labels |
146 to their names, also filter out the empty fields. | |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
147 @return: list of couple (name, value) or (label, value) |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
148 """ |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
149 if not self.is_valid(): |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
150 return None |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
151 results = [] |
96
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
152 |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
153 date = strftime("%Y-%m-%d") |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
154 if user_readable: |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
155 results.append((_(u"Date"), date)) |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
156 else: |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
157 results.append(('date', date)) |
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
158 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
159 for field in self: |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
160 if isinstance(field.field, Section): |
60 | 161 continue # filter out section fields |
162 if field.name in ('email_confirmation', 'agreement_confirmation'): | |
163 continue # filter out confirmation fields | |
164 if user_readable and not field.value(): | |
165 continue # filter out empty value | |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
166 key = field.name |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
167 if isinstance(field.field, BooleanField) and user_readable: |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
168 value = ugettext(u"yes") if field.value() else ugettext(u"no") |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
169 else: |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
170 value = re.sub(r"[\n\r]+", ", ", unicode(field.value())) |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
171 if user_readable: |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
172 if isinstance(field.field, BooleanField): |
74
651c4049f32b
rename "Newsletter" to "Mailing list" in the adhesion form
souliane <souliane@mailoo.org>
parents:
66
diff
changeset
|
173 key = key.capitalize() # to get Mailing instead of "I would like..." |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
174 else: |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
175 key = field.label |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
176 if isinstance(field.field, ChoiceField): |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
177 value = field.field.choice_label(value) |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
178 results.append((key, value)) |
96
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
179 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
180 if user_readable: |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
181 results.append((_(u'Language'), utils.get_language_name_local(get_language()))) |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
182 else: |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
183 results.append(('lang', get_language())) |
96
c868187b8d00
add the current date in the subscription form's results
souliane <souliane@mailoo.org>
parents:
95
diff
changeset
|
184 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
185 return results |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
186 |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
187 def result_as_dict(self, user_readable=True): |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
188 """Get the results submitted by the user as an OrderedDict. |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
189 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
190 @param user_readable (bool): set to True to prefer the field labels to their names |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
191 @return: dict {name: value} or {label: value} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
192 """ |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
193 return {key: value for key, value in self.results(user_readable)} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
194 |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
195 def result_as_string(self, user_readable=True): |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
196 """Get the result as a string to be sent for example via email. |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
197 |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
198 @param user_readable (bool): set to True to prefer the field labels to their names |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
199 @return: unicode |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
200 """ |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
201 return '\n'.join([name + ': ' + value for name, value in self.results(user_readable)]) |
65 | 202 |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
203 def prepareResultForUser(self): |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
204 """Get the email body to send to the subscriber. |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
205 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
206 @return: unicode |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
207 """ |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
208 ref = self['reference'].value() |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
209 data = {'name': self['name'].value(), |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
210 'surname': self['surname'].value(), |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
211 'amount': self['subscription_amount'].value(), |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
212 'ref_info': '(ref. {ref})'.format(ref=ref) if ref else '', |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
213 'iban': settings.ASSO_IBAN, |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
214 'bic': settings.ASSO_BIC, |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
215 'result': self.result_as_string(True) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
216 } |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
217 |
66 | 218 HEADER = ugettext(u"""Thank you, {name}! |
65 | 219 |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
220 We received your submission and we are happy to count you in the members of the association. |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
221 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
222 """) |
77
13ebb548f234
use membership instead of adhesion in English (also rename the files)
souliane <souliane@mailoo.org>
parents:
74
diff
changeset
|
223 PAYMENT = ugettext(u"""You chose to support Salut à Toi with a subscription of {amount} euros. Please complete your membership with a bank transfer to: |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
224 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
225 Payee: Salut à Toi |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
226 IBAN: {iban} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
227 BIC: {bic} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
228 Reason: subscription of {name} {surname} {ref_info} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
229 |
147
d0cd185f9b61
replace apayer with liberapay
souliane <souliane@mailoo.org>
parents:
96
diff
changeset
|
230 If you prefer, you can use the open funding platform Liberapay (since the donations there are anonymous, please reply to this email to inform us if you select this option): |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
231 |
147
d0cd185f9b61
replace apayer with liberapay
souliane <souliane@mailoo.org>
parents:
96
diff
changeset
|
232 https://liberapay.com/salut_a_toi |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
233 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
234 """) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
235 FOOTER = ugettext(u"""Below a copy of the information we received: |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
236 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
237 {result} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
238 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
239 If you have any question, feel free to contact us. |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
240 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
241 Association Salut à Toi |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
242 http://salut-a-toi.org""") |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
243 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
244 return (HEADER + (PAYMENT if int(data['amount']) > 0 else "") + FOOTER).format(**data) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
245 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
246 def prepareResultForAdmin(self): |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
247 """Get the email body to send to the admins. |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
248 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
249 @return: unicode |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
250 """ |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
251 data = {'name': self['name'].value(), |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
252 'result': self.result_as_string(False) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
253 } |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
254 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
255 MSG = ugettext(u"""New subscription received! |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
256 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
257 {result} |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
258 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
259 An email has been automatically sent to {name}, no additional action is required from your side.""") |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
260 |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
261 return MSG.format(**data) |
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
262 |
60 | 263 def writeResultToCSV(self): |
264 result = [unicode(value) for key, value in self.results(False)] | |
265 with open(settings.ASSO_SUBSCR_CSV, 'a+') as csvfile: | |
94
c1b77f07f644
replace shipped file unicodecsv.py with the module of the same name
souliane <souliane@mailoo.org>
parents:
77
diff
changeset
|
266 writer = unicodecsv.writer(csvfile, delimiter=';') |
60 | 267 writer.writerow(result) |
268 | |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
269 def process_submitted_data(self): |
57
bfa8009f0769
improve the subscription form
souliane <souliane@mailoo.org>
parents:
55
diff
changeset
|
270 """Send emails to the subscriber and the admins.""" |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
271 if not self.is_valid(): |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
272 return |
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
273 # send email to user |
65 | 274 send_mail(_(u'Subscription to Salut à Toi'), self.prepareResultForUser(), settings.FORM_FROM_EMAIL, [self['email'].value()], fail_silently=False) |
41
1a0f24401866
send adhesion form results via email to the admins and the new member
souliane <souliane@mailoo.org>
parents:
40
diff
changeset
|
275 # send email to admins |
65 | 276 send_mail(_(u'Subscription to Salut à Toi'), self.prepareResultForAdmin(), settings.FORM_FROM_EMAIL, settings.FORM_TO_EMAILS, fail_silently=False) |
60 | 277 # save to a CSV file |
278 self.writeResultToCSV() |