Fix failure to import into directory journal (#1314)

* Re-enable failing directory journal import tests
* Appropriately track journal name and modified entries in FolderJournal when importing
* Run make format
This commit is contained in:
Micah Jerome Ellison 2021-08-21 14:42:31 -07:00 committed by GitHub
parent 08350b884b
commit 7109374d42
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 10 deletions

View file

@ -22,11 +22,11 @@ def get_files(journal_config):
class Folder(Journal.Journal): class Folder(Journal.Journal):
"""A Journal handling multiple files in a folder""" """A Journal handling multiple files in a folder"""
def __init__(self, **kwargs): def __init__(self, name="default", **kwargs):
self.entries = [] self.entries = []
self._diff_entry_dates = [] self._diff_entry_dates = []
self.can_be_encrypted = False self.can_be_encrypted = False
super(Folder, self).__init__(**kwargs) super().__init__(name, **kwargs)
def open(self): def open(self):
filenames = [] filenames = []
@ -44,10 +44,12 @@ class Folder(Journal.Journal):
# Create a list of dates of modified entries. Start with diff_entry_dates # Create a list of dates of modified entries. Start with diff_entry_dates
modified_dates = self._diff_entry_dates modified_dates = self._diff_entry_dates
seen_dates = set(self._diff_entry_dates) seen_dates = set(self._diff_entry_dates)
for e in self.entries: for e in self.entries:
if e.modified: if e.modified:
if e.date not in seen_dates: if e.date not in modified_dates:
modified_dates.append(e.date) modified_dates.append(e.date)
if e.date not in seen_dates:
seen_dates.add(e.date) seen_dates.add(e.date)
# For every date that had a modified entry, write to a file # For every date that had a modified entry, write to a file

View file

@ -67,9 +67,11 @@ class Journal:
return new_journal return new_journal
def import_(self, other_journal_txt): def import_(self, other_journal_txt):
self.entries = list( imported_entries = self._parse(other_journal_txt)
frozenset(self.entries) | frozenset(self._parse(other_journal_txt)) for entry in imported_entries:
) entry.modified = True
self.entries = list(frozenset(self.entries) | frozenset(imported_entries))
self.sort() self.sort()
def open(self, filename=None): def open(self, filename=None):
@ -414,7 +416,7 @@ def open_journal(journal_name, config, legacy=False):
else: else:
from . import FolderJournal from . import FolderJournal
return FolderJournal.Folder(**config).open() return FolderJournal.Folder(journal_name, **config).open()
if not config["encrypt"]: if not config["encrypt"]:
if legacy: if legacy:

View file

@ -11,7 +11,7 @@ Feature: Importing data
| config_file | | config_file |
| basic_onefile.yaml | | basic_onefile.yaml |
| basic_encrypted.yaml | | basic_encrypted.yaml |
# | basic_folder.yaml | @todo | basic_folder.yaml |
# | basic_dayone.yaml | @todo # | basic_dayone.yaml | @todo
Scenario Outline: --import allows new large entry from stdin Scenario Outline: --import allows new large entry from stdin
@ -34,7 +34,7 @@ Feature: Importing data
| config_file | | config_file |
| basic_onefile.yaml | | basic_onefile.yaml |
| basic_encrypted.yaml | | basic_encrypted.yaml |
# | basic_folder.yaml | @todo | basic_folder.yaml |
# | basic_dayone.yaml | @todo # | basic_dayone.yaml | @todo
Scenario Outline: --import allows multiple new entries from stdin Scenario Outline: --import allows multiple new entries from stdin
@ -56,7 +56,7 @@ Feature: Importing data
| config_file | | config_file |
| basic_onefile.yaml | | basic_onefile.yaml |
| basic_encrypted.yaml | | basic_encrypted.yaml |
# | basic_folder.yaml | @todo | basic_folder.yaml |
# | basic_dayone.yaml | @todo # | basic_dayone.yaml | @todo
Scenario: --import allows import new entries from file Scenario: --import allows import new entries from file