From 74a2462f89d21a3182c78511ce665c5ec337f200 Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Tue, 28 Apr 2015 12:00:56 -0300 Subject: #337 Made some refactors to make the code more readable --- service/pixelated/maintenance.py | 141 +++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 64 deletions(-) (limited to 'service/pixelated/maintenance.py') diff --git a/service/pixelated/maintenance.py b/service/pixelated/maintenance.py index 2cb50dfe..9a2d615d 100644 --- a/service/pixelated/maintenance.py +++ b/service/pixelated/maintenance.py @@ -50,51 +50,26 @@ import pixelated.support.ext_keymanager_fetch_key import pixelated.support.ext_requests_urllib3 -def delete_all_mails(args): - leap_session, soledad = args - generation, docs = soledad.get_all_docs() - - for doc in docs: - if doc.content.get('type', None) in ['head', 'cnt', 'flags']: - soledad.delete_doc(doc) - - return args - - -@defer.inlineCallbacks -def load_mails(args, mail_paths): - leap_session, soledad = args - account = leap_session.account - - for path in mail_paths: - print 'Loading mails from %s' % path - for root, dirs, files in os.walk(path): - mbx = account.getMailbox('INBOX') - for f in files: - with open(join(root, f), 'r') as fp: - m = email.message_from_file(fp) - flags = ("\\RECENT",) - r = yield mbx.addMessage(m.as_string(), flags=flags, notify_on_disk=False) - print 'Added message %s' % m.get('subject') - print m.as_string() - - defer.returnValue(args) - return - +def initialize(): + args = parse_args() + app = App() -def dump_soledad(args): - leap_session, soledad = args + init_logging(args) + init_leap_cert(args) - generation, docs = soledad.get_all_docs() + if args.dispatcher or args.dispatcher_stdin: + config_dispatcher(app, args) + else: + config_user_agent(app, args) - for doc in docs: - print doc - print '\n' + init_events_server() + execute_command = create_execute_command(args, app) - return args + reactor.callWhenRunning(execute_command) + reactor.run() -def initialize(): +def parse_args(): parser = argparse.ArgumentParser(description='pixelated maintenance') parser_add_default_arguments(parser) subparsers = parser.add_subparsers(help='commands', dest='command') @@ -105,19 +80,10 @@ def initialize(): subparsers.add_parser('dump-soledad', help='dump the soledad database') subparsers.add_parser('sync', help='sync the soledad database') - args = parser.parse_args() - app = App() - - init_logging(args) - init_leap_cert(args) - - if args.dispatcher or args.dispatcher_stdin: - config_dispatcher(app, args) - else: - config_user_agent(app, args) + return parser.parse_args() - init_events_server() +def create_execute_command(args, app): def execute_command(): def init_soledad(): @@ -138,23 +104,70 @@ def initialize(): d = deferToThread(init_soledad) d.addCallback(get_soledad_handle) d.addCallback(soledad_sync) - if args.command == 'reset': - d.addCallback(delete_all_mails) - elif args.command == 'load-mails': - d.addCallback(load_mails, args.file) - elif args.command == 'dump-soledad': - d.addCallback(dump_soledad) - elif args.command == 'sync': - # nothing to do here, sync is already part of the chain - pass - else: - print 'Unsupported command: %s' % args.command + add_command_callback(args, d) d.addCallback(soledad_sync) d.addCallback(shutdown) d.addErrback(shutdown_on_error) - reactor.callWhenRunning(execute_command) - reactor.run() + return execute_command + + +def add_callback(args, defer): + if args.command == 'reset': + defer.addCallback(delete_all_mails) + elif args.command == 'load-mails': + defer.addCallback(load_mails, args.file) + elif args.command == 'dump-soledad': + defer.addCallback(dump_soledad) + elif args.command == 'sync': + # nothing to do here, sync is already part of the chain + pass + else: + print 'Unsupported command: %s' % args.command + + +def delete_all_mails(args): + leap_session, soledad = args + generation, docs = soledad.get_all_docs() + + for doc in docs: + if doc.content.get('type', None) in ['head', 'cnt', 'flags']: + soledad.delete_doc(doc) + + return args + + +@defer.inlineCallbacks +def load_mails(args, mail_paths): + leap_session, soledad = args + account = leap_session.account + + for path in mail_paths: + print 'Loading mails from %s' % path + for root, dirs, files in os.walk(path): + mbx = account.getMailbox('INBOX') + for f in files: + with open(join(root, f), 'r') as fp: + m = email.message_from_file(fp) + flags = ("\\RECENT",) + r = yield mbx.addMessage(m.as_string(), flags=flags, notify_on_disk=False) + print 'Added message %s' % m.get('subject') + print m.as_string() + + defer.returnValue(args) + return + + +def dump_soledad(args): + leap_session, soledad = args + + generation, docs = soledad.get_all_docs() + + for doc in docs: + print doc + print '\n' + + return args def shutdown(args): @@ -163,7 +176,7 @@ def shutdown(args): def shutdown_on_error(error): print error - reactor.stop() + shutdown(None) if __name__ == '__main__': initialize() -- cgit v1.2.3