summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-03-25 13:47:23 +0200
committerLars Wirzenius <liw@liw.fi>2017-03-25 14:33:02 +0200
commit8394b861a0a05a4256eee265f2ed19e92930667d (patch)
tree60d93305907d45e6e7ccf09366726e5f113a7051
parent12e5b3fa9ee56c3cb68149a155b36aa1c2ba5c85 (diff)
downloaddistix-8394b861a0a05a4256eee265f2ed19e92930667d.tar.gz
Refactor: Reorder methods for clarity
-rw-r--r--distixlib/plugins/import_mail_plugin.py64
1 files 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):