Update digest_directory to handle plural albums at every step.

This commit is contained in:
voussoir 2020-09-11 15:48:26 -07:00
parent dea746c45a
commit 4a3236babe

View file

@ -1355,30 +1355,36 @@ class PDBUtilMixin:
photos.append(photo) photos.append(photo)
return photos return photos
def create_or_fetch_current_album(albums_by_path, current_directory): def create_or_fetch_current_albums(albums_by_path, current_directory):
current_album = albums_by_path.get(current_directory.absolute_path, None) current_albums = albums_by_path.get(current_directory.absolute_path, None)
if current_album is not None: if current_albums is not None:
return current_album return current_albums
try: current_albums = list(self.get_albums_by_path(current_directory.absolute_path))
current_album = self.get_album_by_path(current_directory.absolute_path) if not current_albums:
except exceptions.NoSuchAlbum: current_albums = [self.new_album(
current_album = self.new_album( associated_directories=current_directory.absolute_path,
associated_directory=current_directory.absolute_path,
title=current_directory.basename, title=current_directory.basename,
) )]
albums_by_path[current_directory.absolute_path] = current_album
return current_album
def orphan_join_parent_album(albums_by_path, current_album, current_directory): albums_by_path[current_directory.absolute_path] = current_albums
return current_albums
def orphan_join_parent_albums(albums_by_path, current_albums, current_directory):
''' '''
If the current album is an orphan, let's check if there exists an If the current album is an orphan, let's check if there exists an
album for the parent directory. If so, add the current album to it. album for the parent directory. If so, add the current album to it.
''' '''
if not current_album.has_any_parent(): orphans = [album for album in current_albums if not album.has_any_parent()]
parent = albums_by_path.get(current_directory.parent.absolute_path, None) if not orphans:
if parent is not None: return
parent.add_child(current_album)
parents = albums_by_path.get(current_directory.parent.absolute_path, None)
if not parents:
return
for parent in parents:
parent.add_children(orphans)
directory = _normalize_directory(directory) directory = _normalize_directory(directory)
exclude_directories = _normalize_exclude_directories(exclude_directories) exclude_directories = _normalize_exclude_directories(exclude_directories)
@ -1388,7 +1394,7 @@ class PDBUtilMixin:
if make_albums: if make_albums:
albums_by_path = {} albums_by_path = {}
main_album = create_or_fetch_current_album(albums_by_path, directory) main_album = create_or_fetch_current_albums(albums_by_path, directory)
walk_generator = spinal.walk_generator( walk_generator = spinal.walk_generator(
directory, directory,
@ -1407,10 +1413,11 @@ class PDBUtilMixin:
if not make_albums: if not make_albums:
continue continue
current_album = create_or_fetch_current_album(albums_by_path, current_directory) current_albums = create_or_fetch_current_albums(albums_by_path, current_directory)
orphan_join_parent_album(albums_by_path, current_album, current_directory) orphan_join_parent_albums(albums_by_path, current_albums, current_directory)
current_album.add_photos(photos) for album in current_albums:
album.add_photos(photos)
if make_albums: if make_albums:
return main_album return main_album