Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't save templated journal entries if the received raw text is the same as the template itself #1653

Merged
merged 8 commits into from
Feb 11, 2023
3 changes: 3 additions & 0 deletions jrnl/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ def write_mode(args: "Namespace", config: dict, journal: Journal, **kwargs) -> N
if not raw or raw.isspace():
logging.error("Write mode: couldn't get raw text or entry was empty")
raise JrnlException(Message(MsgText.NoTextReceived, MsgStyle.NORMAL))
if config["template"] and raw == _get_editor_template(config):
logging.error("Write mode: raw text was the same as the template")
raise JrnlException(Message(MsgText.NoChangesToTemplate, MsgStyle.NORMAL))

logging.debug(
'Write mode: appending raw text to journal "%s": %s', args.journal_name, raw
Expand Down
4 changes: 3 additions & 1 deletion jrnl/messages/MsgText.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@ def __str__(self) -> str:
NoTextReceived = """
No entry to save, because no text was received
"""

NoChangesToTemplate = """
No entry to save, because the template was not changed
"""
# --- Upgrade --- #
JournalFailedUpgrade = """
The following journal{s} failed to upgrade:
Expand Down
15 changes: 15 additions & 0 deletions tests/bdd/features/template.feature
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ Feature: Using templates
Scenario Outline: Template contents should be used in new entry
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we append to the editor if opened
This is an addition to a templated entry
When we run "jrnl --config-override template features/templates/basic.template"
And we run "jrnl -1"
Then the output should contain "This text is in the basic template"
Then the output should contain "This is an addition to a templated entry"

Examples: configs
| config_file |
Expand All @@ -17,3 +20,15 @@ Feature: Using templates
| basic_folder.yaml |
| basic_dayone.yaml |

Scenario Outline: Templated entry should not be saved if template is unchanged
Given we use the config "<config_file>"
And we use the password "test" if prompted
When we run "jrnl --config-override template features/templates/basic.template"
Then the output should contain "No entry to save, because the template was not changed"

Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
| basic_dayone.yaml |