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)
|
filepath = filepath.replace('\\', os.sep)
|
||||||
return filepath
|
return filepath
|
||||||
|
|
||||||
|
def run_generator(g):
|
||||||
|
for x in g:
|
||||||
|
pass
|
||||||
|
|
||||||
def seconds_to_hms(seconds):
|
def seconds_to_hms(seconds):
|
||||||
'''
|
'''
|
||||||
Convert integer number of seconds to an hh:mm:ss string.
|
Convert integer number of seconds to an hh:mm:ss string.
|
||||||
|
|
|
@ -1344,6 +1344,8 @@ class PDBUtilMixin:
|
||||||
new_photo_kwargs={},
|
new_photo_kwargs={},
|
||||||
new_photo_ratelimit=None,
|
new_photo_ratelimit=None,
|
||||||
recurse=True,
|
recurse=True,
|
||||||
|
yield_albums=True,
|
||||||
|
yield_photos=True,
|
||||||
):
|
):
|
||||||
'''
|
'''
|
||||||
Walk the directory and create Photos for every file.
|
Walk the directory and create Photos for every file.
|
||||||
|
@ -1398,6 +1400,12 @@ class PDBUtilMixin:
|
||||||
recurse:
|
recurse:
|
||||||
If True, walk the whole directory tree. If False, only digest the
|
If True, walk the whole directory tree. If False, only digest the
|
||||||
photos from the given directory and not its subdirectories.
|
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):
|
def _normalize_directory(directory):
|
||||||
directory = pathclass.Path(directory)
|
directory = pathclass.Path(directory)
|
||||||
|
@ -1486,9 +1494,7 @@ class PDBUtilMixin:
|
||||||
new_photo_kwargs = _normalize_new_photo_kwargs(new_photo_kwargs)
|
new_photo_kwargs = _normalize_new_photo_kwargs(new_photo_kwargs)
|
||||||
new_photo_ratelimit = _normalize_new_photo_ratelimit(new_photo_ratelimit)
|
new_photo_ratelimit = _normalize_new_photo_ratelimit(new_photo_ratelimit)
|
||||||
|
|
||||||
if make_albums:
|
albums_by_path = {}
|
||||||
albums_by_path = {}
|
|
||||||
main_album = create_or_fetch_current_albums(albums_by_path, directory)
|
|
||||||
|
|
||||||
walk_generator = spinal.walk_generator(
|
walk_generator = spinal.walk_generator(
|
||||||
directory,
|
directory,
|
||||||
|
@ -1504,6 +1510,9 @@ class PDBUtilMixin:
|
||||||
|
|
||||||
photos = create_or_fetch_photos(files, new_photo_kwargs=new_photo_kwargs)
|
photos = create_or_fetch_photos(files, new_photo_kwargs=new_photo_kwargs)
|
||||||
|
|
||||||
|
if yield_photos:
|
||||||
|
yield from photos
|
||||||
|
|
||||||
if not make_albums:
|
if not make_albums:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -1513,10 +1522,8 @@ class PDBUtilMixin:
|
||||||
for album in current_albums:
|
for album in current_albums:
|
||||||
album.add_photos(photos)
|
album.add_photos(photos)
|
||||||
|
|
||||||
if make_albums:
|
if yield_albums:
|
||||||
return main_album
|
yield from current_albums
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@decorators.transaction
|
@decorators.transaction
|
||||||
def easybake(self, ebstring, author=None):
|
def easybake(self, ebstring, author=None):
|
||||||
|
|
|
@ -75,7 +75,8 @@ def post_album_remove_child(album_id):
|
||||||
def post_album_refresh_directories(album_id):
|
def post_album_refresh_directories(album_id):
|
||||||
album = common.P_album(album_id, response_type='json')
|
album = common.P_album(album_id, response_type='json')
|
||||||
for directory in album.get_associated_directories():
|
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')
|
common.P.commit(message='refresh album directories endpoint')
|
||||||
return jsonify.make_json_response({})
|
return jsonify.make_json_response({})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue