Add Album.remove_photos for batch removals.
This commit is contained in:
parent
698981dd29
commit
48396d6ab6
1 changed files with 22 additions and 6 deletions
|
@ -490,20 +490,36 @@ class Album(ObjectBase, GroupableMixin):
|
|||
result = super().leave_group(*args, **kwargs)
|
||||
return result
|
||||
|
||||
@decorators.required_feature('album.edit')
|
||||
@decorators.transaction
|
||||
def remove_photo(self, photo, *, commit=True):
|
||||
if not self.has_photo(photo):
|
||||
return
|
||||
|
||||
def _remove_photo(self, photo):
|
||||
self.photodb.log.debug('Removing photo %s from %s', photo, self)
|
||||
pairs = {'albumid': self.id, 'photoid': photo.id}
|
||||
self.photodb.sql_delete(table='album_photo_rel', pairs=pairs)
|
||||
|
||||
@decorators.required_feature('album.edit')
|
||||
@decorators.transaction
|
||||
def remove_photo(self, photo, *, commit=True):
|
||||
self._remove_photo(photo)
|
||||
self._uncache_sums()
|
||||
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - remove photo from album')
|
||||
self.photodb.commit()
|
||||
|
||||
@decorators.required_feature('album.edit')
|
||||
@decorators.transaction
|
||||
def remove_photos(self, photos, *, commit=True):
|
||||
existing_photos = set(self.get_photos())
|
||||
photos = set(photos)
|
||||
photos = photos.intersection(existing_photos)
|
||||
|
||||
for photo in photos:
|
||||
self._remove_photo(photo)
|
||||
self._uncache_sums()
|
||||
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - remove photos from album')
|
||||
self.photodb.commit()
|
||||
|
||||
def sum_bytes(self, recurse=True):
|
||||
query = '''
|
||||
SELECT SUM(bytes) FROM photos
|
||||
|
|
Loading…
Reference in a new issue