From 33ac29beffa23c844900ae0b8f189e955bbde9d2 Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Tue, 20 Oct 2015 21:08:29 -0200 Subject: Refactored the welcome mail logic and add a test --- service/pixelated/application.py | 18 +-------------- service/pixelated/config/leap.py | 49 +++++++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 33 deletions(-) (limited to 'service/pixelated') diff --git a/service/pixelated/application.py b/service/pixelated/application.py index 51763fa2..dfeb8d82 100644 --- a/service/pixelated/application.py +++ b/service/pixelated/application.py @@ -19,13 +19,10 @@ 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, CREATE_WELCOME_MAIL +from pixelated.config.leap import initialize_leap from pixelated.config import logger from pixelated.config.site import PixelatedSite from pixelated.resources.loading_page import LoadingResource @@ -77,18 +74,6 @@ def _ssl_options(sslkey, sslcert): return options -def welcome_mail(leap_session): - 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) @@ -100,7 +85,6 @@ 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 83b913a8..0409e54f 100644 --- a/service/pixelated/config/leap.py +++ b/service/pixelated/config/leap.py @@ -1,18 +1,19 @@ from __future__ import absolute_import +from leap.common.events import (server as events_server, + register, catalog as events) +from email import message_from_file from pixelated.config import credentials -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 from pixelated.bitmask_libraries.session import LeapSessionFactory +from pixelated.adapter.model.mail import InputMail from twisted.internet import defer +import os +import logging -_CREATE_WELCOME_MAIL = False - - -def CREATE_WELCOME_MAIL(): - return _CREATE_WELCOME_MAIL +fresh_account = False @defer.inlineCallbacks @@ -24,9 +25,12 @@ 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) + register(events.KEYMANAGER_FINISHED_KEY_GENERATION, + set_fresh_account) + provider, username, password = credentials.read(organization_mode, + credentials_file) + LeapCertificate.set_cert_and_fingerprint(leap_provider_cert, + leap_provider_cert_fingerprint) config = LeapConfig(leap_home=leap_home, start_background_jobs=True) provider = LeapProvider(provider, config) @@ -36,17 +40,30 @@ def initialize_leap(leap_provider_cert, if initial_sync: leap_session = yield leap_session.initial_sync() + global fresh_account + if fresh_account: + add_welcome_mail(leap_session.mail_store) + defer.returnValue(leap_session) -def init_monkeypatches(): - import pixelated.extensions.requests_urllib3 +def add_welcome_mail(mail_store): + 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) + logging.getLogger('pixelated.config.leap').info('Adding the welcome mail') + mail_store.add_mail('INBOX', input_mail.raw) -def mark_to_create_welcome_mail(_, x): - global _CREATE_WELCOME_MAIL - _CREATE_WELCOME_MAIL = True +def init_monkeypatches(): + import pixelated.extensions.requests_urllib3 -def check_new_account(): - register(events.KEYMANAGER_FINISHED_KEY_GENERATION, mark_to_create_welcome_mail) +def set_fresh_account(_, x): + global fresh_account + fresh_account = True -- cgit v1.2.3