comparison pages/association/membership/page_meta.py @ 0:09d66acc7c73

initial commit, website first draft: - presentation page - documentation (generated from backend and Libervia) - social contract (HTML generated from sat repository) - press/conferences (adapted from former website) - association page (adpated from former website) - news (a selected blog is displayed) - fr i18n
author Goffi <goffi@goffi.org>
date Sun, 26 May 2019 22:26:30 +0200
parents
children 9ce41ef66dfa
comparison
equal deleted inserted replaced
-1:000000000000 0:09d66acc7c73
1 #!/usr/bin/env python2.7
2 # -*- coding: utf-8 -*-
3
4 from collections import namedtuple
5 from twisted.internet import defer
6 from libervia.server.constants import Const as C
7 from sat.core.i18n import D_
8 from sat.tools import config
9 from sat.tools.common import email
10 from sat.core import exceptions
11 from sat.core.log import getLogger
12
13 log = getLogger(__name__)
14
15 name = u"association_membership"
16 template = u"association/membership.html"
17
18 FIELDS = (
19 'name',
20 'firstname',
21 'address',
22 'email',
23 'jid',
24 'subscription',
25 'reference',
26 'comment',
27 'mailing_list',
28 'documents_read',
29 )
30 REQUIRED = ('name', 'firstname', 'address', 'email', 'subscription')
31 FormData = namedtuple("FormData", FIELDS)
32
33 SUBJECT_ADMIN = D_(u"New subscription to the association")
34 BODY_ADMIN = D_(u"""\
35 New subscription received:
36
37 {fields_list}""").format(
38 fields_list=u"\n".join(u"- {0}: {{{0}}}".format(f) for f in FIELDS)
39 )
40
41 SUBJECT = D_(u"Your association membership request")
42 BODY = D_(u"""\
43 Hello {firstname},
44
45 you request to join the "Salut à Toi" association has been well received.
46 Thank you and welcome to the SàT community.
47
48 You can contact us at contact"""
49 # we split the address to avoid
50 # it being recognized too easily by spam bots
51 + u'@' + u'salut-a-toi' + u'.org'
52 u"""
53 or on the official XMPP chat room:
54 xmpp: sat@chat.jabberfr.org
55 web: https://chat.jabberfr.org/converse.js/sat@chat.jabberfr.org
56
57 The Salut à Toi team
58 """)
59
60 WARNING_MSG_NOT_READ = D_(
61 u"You must have read the documents to validate your membership request")
62 WARNING_MSG_MISSING_FIELDS = D_(
63 u"The form you posted is not complete, we can't validate this membership request.\n"
64 u"Please fill all the required fields, thank you!")
65
66 @defer.inlineCallbacks
67 def on_data_post(self, request):
68 data = FormData(*self.getPostedData(request, FIELDS, raise_on_missing=False))
69 if any(not getattr(data, f) for f in REQUIRED):
70 log.warning(u"missing data fields:\n{data}".format(data=data))
71 raise exceptions.DataError(WARNING_MSG_MISSING_FIELDS)
72 if not C.bool(data.documents_read or C.BOOL_FALSE):
73 log.warning(u"documents_read has not been checked:\n{data}".format(data=data))
74 raise exceptions.DataError(WARNING_MSG_NOT_READ)
75 addresses = config.getConfig(
76 self.host.main_conf,
77 None,
78 "email_admins_list",
79 default=Exception)
80 yield email.sendEmail(
81 self.host.main_conf,
82 addresses,
83 SUBJECT_ADMIN,
84 BODY_ADMIN.format(**data._asdict()),
85 )
86 yield email.sendEmail(
87 self.host.main_conf,
88 data.email,
89 SUBJECT,
90 BODY.format(**data._asdict()),
91 )
92