From 96ce1b5810ed1a1a9c6072ed2ed57fdb8f44360b Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Wed, 14 Oct 2015 19:21:44 -0300 Subject: issue #484 - Add welcome mail for new accounts Make a logic to add the welcome mail in INBOX when the user log into account at the first time --- service/pixelated/adapter/services/mail_service.py | 11 ----------- service/pixelated/application.py | 21 +++++++++++++++++++-- service/pixelated/config/leap.py | 19 ++++++++++++++++++- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py index 9fd5589f..e2614d4e 100644 --- a/service/pixelated/adapter/services/mail_service.py +++ b/service/pixelated/adapter/services/mail_service.py @@ -129,14 +129,3 @@ class MailService(object): @defer.inlineCallbacks def delete_permanent(self, mail_id): yield self.mail_store.delete_mail(mail_id) - - @defer.inlineCallbacks - def add_welcome_mail_to_inbox(self): - current_path = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(current_path, '..', '..', 'assets', 'welcome.mail')) as mail_template_file: - mail_template = message_from_file(mail_template_file) - - input_mail = InputMail.from_python_mail(mail_template) - - mail = yield self.mail_store.add_mail('INBOX', input_mail.raw) - defer.returnValue(mail) diff --git a/service/pixelated/application.py b/service/pixelated/application.py index 528b55d7..aa48135f 100644 --- a/service/pixelated/application.py +++ b/service/pixelated/application.py @@ -19,10 +19,13 @@ from twisted.internet import defer from twisted.internet import ssl from OpenSSL import SSL from OpenSSL import crypto +from email import message_from_file +import os +from pixelated.adapter.model.mail import InputMail from pixelated.config import arguments from pixelated.config.services import Services -from pixelated.config.leap import initialize_leap +from pixelated.config.leap import initialize_leap, CREATE_WELCOME_MAIL from pixelated.config import logger from pixelated.config.site import PixelatedSite from pixelated.resources.loading_page import LoadingResource @@ -74,10 +77,23 @@ def _ssl_options(sslkey, sslcert): return options +def welcome_mail(leap_session): + print 'CREATE_WELCOME_MAIL e %s' % str(CREATE_WELCOME_MAIL()) + + if CREATE_WELCOME_MAIL(): + current_path = os.path.dirname(os.path.abspath(__file__)) + with open(os.path.join(current_path, 'assets', 'welcome.mail')) as mail_template_file: + mail_template = message_from_file(mail_template_file) + + input_mail = InputMail.from_python_mail(mail_template) + + leap_session.mail_store.add_mail('INBOX', input_mail.raw) + return leap_session + + def initialize(): args = arguments.parse_user_agent_args() logger.init(debug=args.debug) - loading_app = reactor.listenTCP(args.port, PixelatedSite(LoadingResource()), interface=args.host) deferred = initialize_leap(args.leap_provider_cert, @@ -86,6 +102,7 @@ def initialize(): args.organization_mode, args.leap_home) + deferred.addCallback(welcome_mail) deferred.addCallback( lambda leap_session: start_user_agent( loading_app, diff --git a/service/pixelated/config/leap.py b/service/pixelated/config/leap.py index 4dcb18f4..83b913a8 100644 --- a/service/pixelated/config/leap.py +++ b/service/pixelated/config/leap.py @@ -1,6 +1,6 @@ from __future__ import absolute_import from pixelated.config import credentials -from leap.common.events import server as events_server +from leap.common.events import server as events_server, register, catalog as events from pixelated.bitmask_libraries.config import LeapConfig from pixelated.bitmask_libraries.certs import LeapCertificate from pixelated.bitmask_libraries.provider import LeapProvider @@ -8,6 +8,13 @@ from pixelated.bitmask_libraries.session import LeapSessionFactory from twisted.internet import defer +_CREATE_WELCOME_MAIL = False + + +def CREATE_WELCOME_MAIL(): + return _CREATE_WELCOME_MAIL + + @defer.inlineCallbacks def initialize_leap(leap_provider_cert, leap_provider_cert_fingerprint, @@ -17,6 +24,7 @@ def initialize_leap(leap_provider_cert, initial_sync=True): init_monkeypatches() events_server.ensure_server() + check_new_account() provider, username, password = credentials.read(organization_mode, credentials_file) LeapCertificate.set_cert_and_fingerprint(leap_provider_cert, leap_provider_cert_fingerprint) @@ -33,3 +41,12 @@ def initialize_leap(leap_provider_cert, def init_monkeypatches(): import pixelated.extensions.requests_urllib3 + + +def mark_to_create_welcome_mail(_, x): + global _CREATE_WELCOME_MAIL + _CREATE_WELCOME_MAIL = True + + +def check_new_account(): + register(events.KEYMANAGER_FINISHED_KEY_GENERATION, mark_to_create_welcome_mail) -- cgit v1.2.3