Update digest_directory to handle plural albums at every step.
This commit is contained in:
		
							parent
							
								
									dea746c45a
								
							
						
					
					
						commit
						4a3236babe
					
				
					 1 changed files with 28 additions and 21 deletions
				
			
		|  | @ -1355,30 +1355,36 @@ class PDBUtilMixin: | |||
|                 photos.append(photo) | ||||
|             return photos | ||||
| 
 | ||||
|         def create_or_fetch_current_album(albums_by_path, current_directory): | ||||
|             current_album = albums_by_path.get(current_directory.absolute_path, None) | ||||
|             if current_album is not None: | ||||
|                 return current_album | ||||
|         def create_or_fetch_current_albums(albums_by_path, current_directory): | ||||
|             current_albums = albums_by_path.get(current_directory.absolute_path, None) | ||||
|             if current_albums is not None: | ||||
|                 return current_albums | ||||
| 
 | ||||
|             try: | ||||
|                 current_album = self.get_album_by_path(current_directory.absolute_path) | ||||
|             except exceptions.NoSuchAlbum: | ||||
|                 current_album = self.new_album( | ||||
|                     associated_directory=current_directory.absolute_path, | ||||
|             current_albums = list(self.get_albums_by_path(current_directory.absolute_path)) | ||||
|             if not current_albums: | ||||
|                 current_albums = [self.new_album( | ||||
|                     associated_directories=current_directory.absolute_path, | ||||
|                     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 | ||||
|             album for the parent directory. If so, add the current album to it. | ||||
|             ''' | ||||
|             if not current_album.has_any_parent(): | ||||
|                 parent = albums_by_path.get(current_directory.parent.absolute_path, None) | ||||
|                 if parent is not None: | ||||
|                     parent.add_child(current_album) | ||||
|             orphans = [album for album in current_albums if not album.has_any_parent()] | ||||
|             if not orphans: | ||||
|                 return | ||||
| 
 | ||||
|             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) | ||||
|         exclude_directories = _normalize_exclude_directories(exclude_directories) | ||||
|  | @ -1388,7 +1394,7 @@ class PDBUtilMixin: | |||
| 
 | ||||
|         if make_albums: | ||||
|             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( | ||||
|             directory, | ||||
|  | @ -1407,10 +1413,11 @@ class PDBUtilMixin: | |||
|             if not make_albums: | ||||
|                 continue | ||||
| 
 | ||||
|             current_album = create_or_fetch_current_album(albums_by_path, current_directory) | ||||
|             orphan_join_parent_album(albums_by_path, current_album, current_directory) | ||||
|             current_albums = create_or_fetch_current_albums(albums_by_path, 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: | ||||
|             return main_album | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue