Let digest_directory act as a generator, yielding photos & albums.
This commit is contained in:
parent
37c784982a
commit
50ecc4c1c1
3 changed files with 20 additions and 8 deletions
|
@ -367,6 +367,10 @@ def remove_path_badchars(filepath, allowed=''):
|
|||
filepath = filepath.replace('\\', os.sep)
|
||||
return filepath
|
||||
|
||||
def run_generator(g):
|
||||
for x in g:
|
||||
pass
|
||||
|
||||
def seconds_to_hms(seconds):
|
||||
'''
|
||||
Convert integer number of seconds to an hh:mm:ss string.
|
||||
|
|
|
@ -1344,6 +1344,8 @@ class PDBUtilMixin:
|
|||
new_photo_kwargs={},
|
||||
new_photo_ratelimit=None,
|
||||
recurse=True,
|
||||
yield_albums=True,
|
||||
yield_photos=True,
|
||||
):
|
||||
'''
|
||||
Walk the directory and create Photos for every file.
|
||||
|
@ -1398,6 +1400,12 @@ class PDBUtilMixin:
|
|||
recurse:
|
||||
If True, walk the whole directory tree. If False, only digest the
|
||||
photos from the given directory and not its subdirectories.
|
||||
|
||||
yield_albums:
|
||||
If True, yield Albums as they are processed, new or not.
|
||||
|
||||
yield_photos:
|
||||
If True, yield Photos as they are processed, new or not.
|
||||
'''
|
||||
def _normalize_directory(directory):
|
||||
directory = pathclass.Path(directory)
|
||||
|
@ -1486,9 +1494,7 @@ class PDBUtilMixin:
|
|||
new_photo_kwargs = _normalize_new_photo_kwargs(new_photo_kwargs)
|
||||
new_photo_ratelimit = _normalize_new_photo_ratelimit(new_photo_ratelimit)
|
||||
|
||||
if make_albums:
|
||||
albums_by_path = {}
|
||||
main_album = create_or_fetch_current_albums(albums_by_path, directory)
|
||||
albums_by_path = {}
|
||||
|
||||
walk_generator = spinal.walk_generator(
|
||||
directory,
|
||||
|
@ -1504,6 +1510,9 @@ class PDBUtilMixin:
|
|||
|
||||
photos = create_or_fetch_photos(files, new_photo_kwargs=new_photo_kwargs)
|
||||
|
||||
if yield_photos:
|
||||
yield from photos
|
||||
|
||||
if not make_albums:
|
||||
continue
|
||||
|
||||
|
@ -1513,10 +1522,8 @@ class PDBUtilMixin:
|
|||
for album in current_albums:
|
||||
album.add_photos(photos)
|
||||
|
||||
if make_albums:
|
||||
return main_album
|
||||
else:
|
||||
return None
|
||||
if yield_albums:
|
||||
yield from current_albums
|
||||
|
||||
@decorators.transaction
|
||||
def easybake(self, ebstring, author=None):
|
||||
|
|
|
@ -75,7 +75,8 @@ def post_album_remove_child(album_id):
|
|||
def post_album_refresh_directories(album_id):
|
||||
album = common.P_album(album_id, response_type='json')
|
||||
for directory in album.get_associated_directories():
|
||||
common.P.digest_directory(directory, new_photo_ratelimit=0.1)
|
||||
digest = common.P.digest_directory(directory, new_photo_ratelimit=0.1)
|
||||
etiquette.helpers.run_generator(digest)
|
||||
common.P.commit(message='refresh album directories endpoint')
|
||||
return jsonify.make_json_response({})
|
||||
|
||||
|
|
Loading…
Reference in a new issue