Mercurial > libervia-website
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 |