From 8394b861a0a05a4256eee265f2ed19e92930667d Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 25 Mar 2017 13:47:23 +0200 Subject: Refactor: Reorder methods for clarity --- distixlib/plugins/import_mail_plugin.py | 64 ++++++++++++++++----------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/distixlib/plugins/import_mail_plugin.py b/distixlib/plugins/import_mail_plugin.py index d9dd3d5..6742ed2 100644 --- a/distixlib/plugins/import_mail_plugin.py +++ b/distixlib/plugins/import_mail_plugin.py @@ -68,6 +68,38 @@ class ImportMailPlugin(cliapp.Plugin): if filenames: repo.commit_changes(filenames, self.commit_msg) + def import_mbox(self, args): + self._import_folder(args, mailbox.mbox) + + def import_maildir(self, args): + def maildir_factory(filename): + return mailbox.Maildir(filename, factory=None) + self._import_folder(args, maildir_factory) + + def _import_folder(self, args, folder_factory): + repo_dirname, folder_filename, keyvalue = self._parse_command_line( + args) + key, value = self._parse_keyvalue(keyvalue) + folder = folder_factory(folder_filename) + repo = distixlib.Repository(repo_dirname) + repo.require_clean_working_tree() + ticket_store = repo.open_ticket_store(distixlib.tickets_dir_name) + all_ticket_ids = ticket_store.get_ticket_ids() + cache = _MessageIdCache() + filenames = [] + if self.app.settings['quiet']: + progress = _QuietProgressReporter() + else: + progress = _MboxProgressReporter(len(folder)) + with contextlib.closing(folder), progress: + for msg in folder: + progress.next_msg() + filenames += self._import_msg_to_ticket_store( + repo, ticket_store, all_ticket_ids, msg, cache, key, value) + filenames += ticket_store.save_changes() + if filenames: + repo.commit_changes(filenames, self.commit_msg) + def _parse_command_line(self, args): if len(args) == 2: return args[0], args[1], None @@ -209,38 +241,6 @@ class ImportMailPlugin(cliapp.Plugin): ticket.set_title(title) return ticket - def import_mbox(self, args): - self._import_folder(args, mailbox.mbox) - - def import_maildir(self, args): - def maildir_factory(filename): - return mailbox.Maildir(filename, factory=None) - self._import_folder(args, maildir_factory) - - def _import_folder(self, args, folder_factory): - repo_dirname, folder_filename, keyvalue = self._parse_command_line( - args) - key, value = self._parse_keyvalue(keyvalue) - folder = folder_factory(folder_filename) - repo = distixlib.Repository(repo_dirname) - repo.require_clean_working_tree() - ticket_store = repo.open_ticket_store(distixlib.tickets_dir_name) - all_ticket_ids = ticket_store.get_ticket_ids() - cache = _MessageIdCache() - filenames = [] - if self.app.settings['quiet']: - progress = _QuietProgressReporter() - else: - progress = _MboxProgressReporter(len(folder)) - with contextlib.closing(folder), progress: - for msg in folder: - progress.next_msg() - filenames += self._import_msg_to_ticket_store( - repo, ticket_store, all_ticket_ids, msg, cache, key, value) - filenames += ticket_store.save_changes() - if filenames: - repo.commit_changes(filenames, self.commit_msg) - class _MessageIdCache(object): -- cgit v1.2.1