Add _uncache to objects
This commit is contained in:
parent
d52143e283
commit
dcb946f3df
2 changed files with 29 additions and 1 deletions
|
@ -219,6 +219,11 @@ class Album(ObjectBase, GroupableMixin):
|
|||
def __repr__(self):
|
||||
return 'Album:{id}'.format(id=self.id)
|
||||
|
||||
def _uncache(self):
|
||||
self.photodb.caches['album'].remove(self.id)
|
||||
self._sum_bytes_photos = None
|
||||
self._sum_bytes_albums = None
|
||||
|
||||
def add_photo(self, photo, *, commit=True):
|
||||
if self.photodb != photo.photodb:
|
||||
raise ValueError('Not the same PhotoDB')
|
||||
|
@ -227,6 +232,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
self.photodb.log.debug('Adding photo %s to %s' % (photo, self))
|
||||
cur = self.photodb.sql.cursor()
|
||||
cur.execute('INSERT INTO album_photo_rel VALUES(?, ?)', [self.id, photo.id])
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - add photo to album')
|
||||
self.photodb.commit()
|
||||
|
@ -259,6 +265,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
cur.execute('DELETE FROM albums WHERE id == ?', [self.id])
|
||||
cur.execute('DELETE FROM album_photo_rel WHERE albumid == ?', [self.id])
|
||||
cur.execute('DELETE FROM album_associated_directories WHERE albumid == ?', [self.id])
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - delete album')
|
||||
self.photodb.commit()
|
||||
|
@ -285,6 +292,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
)
|
||||
self.title = title
|
||||
self.description = description
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - edit album')
|
||||
self.photodb.commit()
|
||||
|
@ -321,6 +329,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
'DELETE FROM album_photo_rel WHERE albumid == ? AND photoid == ?',
|
||||
[self.id, photo.id]
|
||||
)
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - remove photo from album')
|
||||
self.photodb.commit()
|
||||
|
@ -442,6 +451,9 @@ class Photo(ObjectBase):
|
|||
def __repr__(self):
|
||||
return 'Photo:{id}'.format(id=self.id)
|
||||
|
||||
def _uncache(self):
|
||||
self.photodb.caches['photo'].remove(self.id)
|
||||
|
||||
def add_tag(self, tag, *, commit=True):
|
||||
if not self.photodb.config['enable_photo_add_remove_tag']:
|
||||
raise exceptions.FeatureDisabled('photo.add_tag, photo.remove_tag')
|
||||
|
@ -517,6 +529,7 @@ class Photo(ObjectBase):
|
|||
else:
|
||||
queue_action = {'action': os.remove, 'args': [path]}
|
||||
self.photodb.on_commit_queue.append(queue_action)
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - delete photo')
|
||||
self.photodb.commit()
|
||||
|
@ -615,6 +628,7 @@ class Photo(ObjectBase):
|
|||
)
|
||||
self.thumbnail = return_filepath
|
||||
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - generate thumbnail')
|
||||
self.photodb.commit()
|
||||
|
@ -716,6 +730,7 @@ class Photo(ObjectBase):
|
|||
'UPDATE photos SET width=?, height=?, area=?, ratio=?, duration=?, bytes=? WHERE id==?',
|
||||
[self.width, self.height, self.area, self.ratio, self.duration, self.bytes, self.id],
|
||||
)
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - reload metadata')
|
||||
self.photodb.commit()
|
||||
|
@ -747,6 +762,7 @@ class Photo(ObjectBase):
|
|||
'UPDATE photos SET filepath = ? WHERE id == ?',
|
||||
[new_filepath.absolute_path, self.id]
|
||||
)
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Commit - relocate photo')
|
||||
self.photodb.commit()
|
||||
|
@ -824,7 +840,8 @@ class Photo(ObjectBase):
|
|||
# Delete the original, leaving only the new copy / hardlink.
|
||||
action = os.remove
|
||||
args = [old_path.absolute_path]
|
||||
|
||||
|
||||
self._uncache()
|
||||
if commit:
|
||||
action(*args)
|
||||
self.photodb.log.debug('Committing - rename file')
|
||||
|
@ -887,6 +904,9 @@ class Tag(ObjectBase, GroupableMixin):
|
|||
rep = 'Tag:{name}'.format(name=self.name)
|
||||
return rep
|
||||
|
||||
def _uncache(self):
|
||||
self.photodb.caches['tag'].remove(self.id)
|
||||
|
||||
def add_synonym(self, synname, *, commit=True):
|
||||
synname = self.photodb.normalize_tagname(synname)
|
||||
|
||||
|
@ -965,6 +985,7 @@ class Tag(ObjectBase, GroupableMixin):
|
|||
cur.execute('DELETE FROM tags WHERE id == ?', [self.id])
|
||||
cur.execute('DELETE FROM photo_tag_rel WHERE tagid == ?', [self.id])
|
||||
cur.execute('DELETE FROM tag_synonyms WHERE mastername == ?', [self.name])
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - delete tag')
|
||||
self.photodb.commit()
|
||||
|
@ -1032,6 +1053,7 @@ class Tag(ObjectBase, GroupableMixin):
|
|||
)
|
||||
|
||||
self.name = new_name
|
||||
self._uncache()
|
||||
if commit:
|
||||
self.photodb.log.debug('Committing - rename tag')
|
||||
self.photodb.commit()
|
||||
|
|
|
@ -1195,6 +1195,12 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
|||
self._photo_cache.maxlen = self.config['cache_size_photo']
|
||||
self._tag_cache.maxlen = self.config['cache_size_tag']
|
||||
self._user_cache.maxlen = self.config['cache_size_user']
|
||||
self.caches = {
|
||||
'album': self._album_cache,
|
||||
'photo': self._photo_cache,
|
||||
'tag': self._tag_cache,
|
||||
'user': self._user_cache,
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return 'PhotoDB(data_directory={datadir})'.format(datadir=repr(self.data_directory))
|
||||
|
|
Loading…
Reference in a new issue