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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
132 def clean(self):
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
133 cleaned_data = super(RegistrationForm, self).clean()
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
134 email = cleaned_data.get("email")
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
135 email_confirmation = cleaned_data.get("email_confirmation")
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
136
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
137 if email and email_confirmation and email != email_confirmation:
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
138 msg = _(u"Passwords don't match.")
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
139 self.add_error('email_confirmation', msg)
d721c8ffa22a misc updates:
souliane <souliane@mailoo.org>
parents: 41
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
144
60
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
145 @param user_readable: (bool) set to True to prefer the fields' labels
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
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
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
161 continue # filter out section fields
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
162 if field.name in ('email_confirmation', 'agreement_confirmation'):
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
163 continue # filter out confirmation fields
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
164 if user_readable and not field.value():
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
64977f537e9b fixes typo
souliane <souliane@mailoo.org>
parents: 65
diff changeset
218 HEADER = ugettext(u"""Thank you, {name}!
65
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
263 def writeResultToCSV(self):
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
264 result = [unicode(value) for key, value in self.results(False)]
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
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
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
267 writer.writerow(result)
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
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
26353615cc2e fixed email sending in form
Goffi <goffi@goffi.org>
parents: 60
diff changeset
276 send_mail(_(u'Subscription to Salut à Toi'), self.prepareResultForAdmin(), settings.FORM_FROM_EMAIL, settings.FORM_TO_EMAILS, fail_silently=False)
60
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
277 # save to a CSV file
0d20fb28c32e many small changes:
souliane <souliane@mailoo.org>
parents: 57
diff changeset
278 self.writeResultToCSV()