Display error when trying to encrypt folder/DayOne journal types (#1315)

* Raise exception when trying to commit folder-based journal (including DayOne)
* Add test to ensure this doesn't mess with encrypting normal journals
* Consolidate and standardized tests
This commit is contained in:
Micah Jerome Ellison 2021-08-21 13:46:29 -07:00 committed by GitHub
parent 9de723d014
commit 3e5a55b1e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 2 deletions

View file

@ -32,6 +32,7 @@ class DayOne(Journal.Journal):
def __init__(self, **kwargs):
self.entries = []
self._deleted_entries = []
self.can_be_encrypted = False
super().__init__(**kwargs)
def open(self):

View file

@ -25,6 +25,7 @@ class Folder(Journal.Journal):
def __init__(self, **kwargs):
self.entries = []
self._diff_entry_dates = []
self.can_be_encrypted = False
super(Folder, self).__init__(**kwargs)
def open(self):

View file

@ -13,6 +13,7 @@ avoid any possible overhead for these standalone commands.
"""
import platform
import sys
from .exception import JrnlError
def preconfig_diagnostic(_):
@ -68,6 +69,13 @@ def postconfig_encrypt(args, config, original_config, **kwargs):
# Open the journal
journal = open_journal(args.journal_name, config)
if hasattr(journal, "can_be_encrypted") and not journal.can_be_encrypted:
raise JrnlError(
"CannotEncryptJournalType",
journal_name=args.journal_name,
journal_type=journal.__class__.__name__,
)
journal.config["encrypt"] = True
new_journal = EncryptedJournal.from_journal(journal)

View file

@ -38,6 +38,13 @@ class JrnlError(Exception):
by at least {columns} in the configuration file or by using
--config-override at the command line
""",
"CannotEncryptJournalType": """
The journal {journal_name} can't be encrypted because it is a
{journal_type} journal.
To encrypt it, create a new journal referencing a file, export
this journal to the new journal, then encrypt the new journal.
""",
}
msg = error_messages[self.error_type].format(**kwargs)