diff options
-rwxr-xr-x | jt | 27 |
1 files changed, 14 insertions, 13 deletions
@@ -54,10 +54,20 @@ class DraftsDirectory(object): def get_draft_attachments_dirname(self, draft_number): return os.path.join(self.dirname, '%s' % draft_number) - def create_draft(self, draft_number, content): + def create_draft(self, content): + draft_number = self._pick_available_draft_number() pathname = self.get_draft_pathname(draft_number) with open(pathname, 'w') as f: f.write(content) + return draft_number + + def _pick_available_draft_number(self): + for i in range(1000): + pathname = self.get_draft_pathname(i) + if not os.path.exists(pathname): + return i + else: + raise cliapp.AppException('ERROR: too many existing drafts') def get_drafts(self): for basename in os.listdir(self.dirname): @@ -94,25 +104,16 @@ class NewCommand(Command): drafts_dir = DraftsDirectory(self._app.drafts_dir()) drafts_dir.create_if_missing() - draft_number = self._pick_draft_number(drafts_dir) - self._create_draft(drafts_dir, draft_number, args[0]) + draft_number = self._create_draft(drafts_dir, args[0]) self._app.edit_file(drafts_dir.get_draft_pathname(draft_number)) - def _pick_draft_number(self, drafts_dir): - for i in range(1000): - pathname = drafts_dir.get_draft_pathname(i) - if not os.path.exists(pathname): - return i - else: - raise cliapp.AppException('ERROR: too many existing drafts') - - def _create_draft(self, drafts_dir, draft_number, title): + def _create_draft(self, drafts_dir, title): values = { 'title': title, 'date': time.strftime('%Y-%m-%d %H:%M') } content = template % values - drafts_dir.create_draft(draft_number, content) + return drafts_dir.create_draft(content) class ListCommand(Command): |