mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 08:38:32 +02:00
Add tag to XML file when edited DayOne entry and is searchable afterward (#1648)
* Add tag to XML file when edited DayOne entry * Remove forbidden change * undo edits * Tags working for DayOne journal * Correction doentries to prevent time-error * Add sorting to tags * Delete test statements * Revert time changes
This commit is contained in:
parent
7229d77bda
commit
907566b39f
2 changed files with 24 additions and 1 deletions
|
@ -74,6 +74,7 @@ class DayOne(Journal.Journal):
|
||||||
self.config["tagsymbols"][0] + tag.lower()
|
self.config["tagsymbols"][0] + tag.lower()
|
||||||
for tag in dict_entry.get("Tags", [])
|
for tag in dict_entry.get("Tags", [])
|
||||||
]
|
]
|
||||||
|
if entry._tags: entry._tags.sort()
|
||||||
|
|
||||||
"""Extended DayOne attributes"""
|
"""Extended DayOne attributes"""
|
||||||
# just ignore it if the keys don't exist
|
# just ignore it if the keys don't exist
|
||||||
|
@ -167,7 +168,7 @@ class DayOne(Journal.Journal):
|
||||||
return "\n".join([f"{str(e)}\n# {e.uuid}\n" for e in self.entries])
|
return "\n".join([f"{str(e)}\n# {e.uuid}\n" for e in self.entries])
|
||||||
|
|
||||||
def _update_old_entry(self, entry: Entry, new_entry: Entry) -> None:
|
def _update_old_entry(self, entry: Entry, new_entry: Entry) -> None:
|
||||||
for attr in ("title", "body", "date"):
|
for attr in ("title", "body", "date", "tags"):
|
||||||
old_attr = getattr(entry, attr)
|
old_attr = getattr(entry, attr)
|
||||||
new_attr = getattr(new_entry, attr)
|
new_attr = getattr(new_entry, attr)
|
||||||
if old_attr != new_attr:
|
if old_attr != new_attr:
|
||||||
|
@ -195,6 +196,7 @@ class DayOne(Journal.Journal):
|
||||||
|
|
||||||
for entry in entries_from_editor:
|
for entry in entries_from_editor:
|
||||||
entry = self._get_and_remove_uuid_from_entry(entry)
|
entry = self._get_and_remove_uuid_from_entry(entry)
|
||||||
|
if entry._tags: entry._tags.sort()
|
||||||
|
|
||||||
# Remove deleted entries
|
# Remove deleted entries
|
||||||
edited_uuids = [e.uuid for e in entries_from_editor]
|
edited_uuids = [e.uuid for e in entries_from_editor]
|
||||||
|
@ -204,5 +206,9 @@ class DayOne(Journal.Journal):
|
||||||
for entry in entries_from_editor:
|
for entry in entries_from_editor:
|
||||||
for old_entry in self.entries:
|
for old_entry in self.entries:
|
||||||
if entry.uuid == old_entry.uuid:
|
if entry.uuid == old_entry.uuid:
|
||||||
|
if old_entry._tags:
|
||||||
|
tags_not_in_body = [tag for tag in old_entry._tags if(tag not in entry._body)]
|
||||||
|
if tags_not_in_body:
|
||||||
|
entry._tags.extend(tags_not_in_body.sort())
|
||||||
self._update_old_entry(old_entry, entry)
|
self._update_old_entry(old_entry, entry)
|
||||||
break
|
break
|
||||||
|
|
|
@ -334,3 +334,20 @@ Feature: Writing new entries.
|
||||||
When we run "jrnl work This is a new entry"
|
When we run "jrnl work This is a new entry"
|
||||||
Then the output should contain "Entry added to work journal"
|
Then the output should contain "Entry added to work journal"
|
||||||
And we should get no error
|
And we should get no error
|
||||||
|
|
||||||
|
Scenario Outline: Tags are saved when an entry is edited with --edit and can be searched afterward
|
||||||
|
Given we use the config "<config_file>"
|
||||||
|
And we use the password "test" if prompted
|
||||||
|
And we append to the editor if opened
|
||||||
|
@newtag
|
||||||
|
When we run "jrnl --edit -1"
|
||||||
|
When we run "jrnl --tags @newtag"
|
||||||
|
Then the output should contain
|
||||||
|
1 entry found
|
||||||
|
|
||||||
|
Examples: configs
|
||||||
|
| config_file |
|
||||||
|
| basic_onefile.yaml |
|
||||||
|
| basic_encrypted.yaml |
|
||||||
|
| basic_folder.yaml |
|
||||||
|
| basic_dayone.yaml |
|
||||||
|
|
Loading…
Add table
Reference in a new issue