Set default commit=False for ALL methods.

I'm working on tightening up some of the transaction code. In the
past it was default commit=True because I would launch the repl, do
something, and quit, so it was nice to have auto commit. But really
it makes more sense to have it default False and be explicit when
to commit.
This commit is contained in:
voussoir 2020-02-19 20:08:24 -08:00
parent 108ba8bd95
commit 3a9d7fc2dc
2 changed files with 41 additions and 41 deletions

View file

@ -90,7 +90,7 @@ class GroupableMixin:
parent.add_children(children)
@decorators.transaction
def add_child(self, member, *, commit=True):
def add_child(self, member, *, commit=False):
self.assert_same_type(member)
if member == self:
@ -117,7 +117,7 @@ class GroupableMixin:
self.photodb.commit(message='add to group')
@decorators.transaction
def add_children(self, members, *, commit=True):
def add_children(self, members, *, commit=False):
for member in members:
self.add_child(member, commit=False)
@ -131,7 +131,7 @@ class GroupableMixin:
raise TypeError(f'Objects must belong to the same PhotoDB.')
@decorators.transaction
def delete(self, *, delete_children=False, commit=True):
def delete(self, *, delete_children=False, commit=False):
'''
Delete this object's relationships to other groupables.
Any unique / specific deletion methods should be written within the
@ -196,7 +196,7 @@ class GroupableMixin:
return row is not None
@decorators.transaction
def remove_child(self, member, *, commit=True):
def remove_child(self, member, *, commit=False):
if not self.has_child(member):
return
@ -298,7 +298,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def add_associated_directory(self, path, *, commit=True):
def add_associated_directory(self, path, *, commit=False):
'''
Add a directory from which this album will pull files during rescans.
These relationships are not unique and multiple albums
@ -326,7 +326,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def add_photo(self, photo, *, commit=True):
def add_photo(self, photo, *, commit=False):
if self.has_photo(photo):
return
@ -337,7 +337,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def add_photos(self, photos, *, commit=True):
def add_photos(self, photos, *, commit=False):
existing_photos = set(self.get_photos())
photos = set(photos)
photos = photos.difference(existing_photos)
@ -350,7 +350,7 @@ class Album(ObjectBase, GroupableMixin):
# Photo.add_tag already has @required_feature
@decorators.transaction
def add_tag_to_all(self, tag, *, nested_children=True, commit=True):
def add_tag_to_all(self, tag, *, nested_children=True, commit=False):
'''
Add this tag to every photo in the album. Saves you from having to
write the for-loop yourself.
@ -373,7 +373,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def delete(self, *, delete_children=False, commit=True):
def delete(self, *, delete_children=False, commit=False):
self.photodb.log.debug('Deleting %s', self)
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
self.photodb.sql_delete(table='album_associated_directories', pairs={'albumid': self.id})
@ -392,7 +392,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def edit(self, title=None, description=None, *, commit=True):
def edit(self, title=None, description=None, *, commit=False):
'''
Change the title or description. Leave None to keep current value.
'''
@ -497,7 +497,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def remove_photo(self, photo, *, commit=True):
def remove_photo(self, photo, *, commit=False):
self._remove_photo(photo)
if commit:
@ -505,7 +505,7 @@ class Album(ObjectBase, GroupableMixin):
@decorators.required_feature('album.edit')
@decorators.transaction
def remove_photos(self, photos, *, commit=True):
def remove_photos(self, photos, *, commit=False):
existing_photos = set(self.get_photos())
photos = set(photos)
photos = photos.intersection(existing_photos)
@ -613,7 +613,7 @@ class Bookmark(ObjectBase):
@decorators.required_feature('bookmark.edit')
@decorators.transaction
def delete(self, *, commit=True):
def delete(self, *, commit=False):
self.photodb.sql_delete(table='bookmarks', pairs={'id': self.id})
self._uncache()
if commit:
@ -621,7 +621,7 @@ class Bookmark(ObjectBase):
@decorators.required_feature('bookmark.edit')
@decorators.transaction
def edit(self, title=None, url=None, *, commit=True):
def edit(self, title=None, url=None, *, commit=False):
'''
Change the title or URL. Leave None to keep current.
'''
@ -708,7 +708,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.add_remove_tag')
@decorators.transaction
def add_tag(self, tag, *, commit=True):
def add_tag(self, tag, *, commit=False):
tag = self.photodb.get_tag(name=tag)
existing = self.has_tag(tag, check_children=False)
@ -760,7 +760,7 @@ class Photo(ObjectBase):
# Photo.add_tag already has required_feature add_remove_tag
# Photo.add_tag already has @transaction.
def copy_tags(self, other_photo, *, commit=True):
def copy_tags(self, other_photo, *, commit=False):
'''
Take all of the tags owned by other_photo and apply them to this photo.
'''
@ -771,7 +771,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.edit')
@decorators.transaction
def delete(self, *, delete_file=False, commit=True):
def delete(self, *, delete_file=False, commit=False):
'''
Delete the Photo and its relation to any tags and albums.
'''
@ -800,7 +800,7 @@ class Photo(ObjectBase):
#@decorators.time_me
@decorators.required_feature('photo.generate_thumbnail')
@decorators.transaction
def generate_thumbnail(self, *, commit=True, **special):
def generate_thumbnail(self, *, commit=False, **special):
'''
special:
For videos, you can provide a `timestamp` to take the thumbnail at.
@ -921,7 +921,7 @@ class Photo(ObjectBase):
# Photo.rename_file already has @required_feature
# Photo.rename_file already has @transaction
def move_file(self, directory, commit=True):
def move_file(self, directory, commit=False):
directory = pathclass.Path(directory)
directory.assert_is_directory()
new_path = directory.with_child(self.real_path.basename)
@ -931,7 +931,7 @@ class Photo(ObjectBase):
#@decorators.time_me
@decorators.required_feature('photo.reload_metadata')
@decorators.transaction
def reload_metadata(self, *, commit=True):
def reload_metadata(self, *, commit=False):
'''
Load the file's height, width, etc as appropriate for this type of file.
'''
@ -993,7 +993,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.edit')
@decorators.transaction
def relocate(self, new_filepath, *, allow_duplicates=False, commit=True):
def relocate(self, new_filepath, *, allow_duplicates=False, commit=False):
'''
Point the Photo object to a different filepath.
@ -1023,7 +1023,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.add_remove_tag')
@decorators.transaction
def remove_tag(self, tag, *, commit=True):
def remove_tag(self, tag, *, commit=False):
tag = self.photodb.get_tag(name=tag)
self.photodb.log.debug('Removing %s from %s', tag, self)
@ -1044,7 +1044,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.edit')
@decorators.transaction
def rename_file(self, new_filename, *, move=False, commit=True):
def rename_file(self, new_filename, *, move=False, commit=False):
'''
Rename the file on the disk as well as in the database.
@ -1108,7 +1108,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.edit')
@decorators.transaction
def set_searchhidden(self, searchhidden, *, commit=True):
def set_searchhidden(self, searchhidden, *, commit=False):
data = {
'id': self.id,
'searchhidden': bool(searchhidden),
@ -1122,7 +1122,7 @@ class Photo(ObjectBase):
@decorators.required_feature('photo.edit')
@decorators.transaction
def set_override_filename(self, new_filename, *, commit=True):
def set_override_filename(self, new_filename, *, commit=False):
if new_filename is not None:
cleaned = helpers.remove_path_badchars(new_filename)
cleaned = cleaned.strip()
@ -1218,7 +1218,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def add_synonym(self, synname, *, commit=True):
def add_synonym(self, synname, *, commit=False):
synname = self.photodb.normalize_tagname(synname)
if synname == self.name:
@ -1243,7 +1243,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def convert_to_synonym(self, mastertag, *, commit=True):
def convert_to_synonym(self, mastertag, *, commit=False):
'''
Convert this tag into a synonym for a different tag.
All photos which possess the current tag will have it replaced with the
@ -1308,7 +1308,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def delete(self, *, delete_children=False, commit=True):
def delete(self, *, delete_children=False, commit=False):
self.photodb.log.debug('Deleting %s', self)
self.photodb._cached_frozen_children = None
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
@ -1321,7 +1321,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def edit(self, description=None, *, commit=True):
def edit(self, description=None, *, commit=False):
'''
Change the description. Leave None to keep current value.
'''
@ -1360,7 +1360,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def remove_synonym(self, synname, *, commit=True):
def remove_synonym(self, synname, *, commit=False):
'''
Delete a synonym.
This will have no effect on photos or other synonyms because
@ -1386,7 +1386,7 @@ class Tag(ObjectBase, GroupableMixin):
@decorators.required_feature('tag.edit')
@decorators.transaction
def rename(self, new_name, *, apply_to_synonyms=True, commit=True):
def rename(self, new_name, *, apply_to_synonyms=True, commit=False):
'''
Rename the tag. Does not affect its relation to Photos or tag groups.
'''
@ -1472,7 +1472,7 @@ class User(ObjectBase):
@decorators.required_feature('user.edit')
@decorators.transaction
def set_display_name(self, display_name, *, commit=True):
def set_display_name(self, display_name, *, commit=False):
display_name = self.normalize_display_name(
display_name,
max_length=self.photodb.config['user']['max_display_name_length'],

View file

@ -83,7 +83,7 @@ class PDBAlbumMixin:
*,
associated_directory=None,
author=None,
commit=True,
commit=False,
photos=None,
):
'''
@ -136,7 +136,7 @@ class PDBBookmarkMixin:
@decorators.required_feature('bookmark.new')
@decorators.transaction
def new_bookmark(self, url, title=None, *, author=None, commit=True):
def new_bookmark(self, url, title=None, *, author=None, commit=False):
# These might raise exceptions.
title = objects.Bookmark.normalize_title(title)
url = objects.Bookmark.normalize_url(url)
@ -217,7 +217,7 @@ class PDBPhotoMixin:
*,
allow_duplicates=False,
author=None,
commit=True,
commit=False,
do_metadata=True,
do_thumbnail=True,
searchhidden=False,
@ -283,7 +283,7 @@ class PDBPhotoMixin:
return photo
@decorators.transaction
def purge_deleted_files(self, photos=None, *, commit=True):
def purge_deleted_files(self, photos=None, *, commit=False):
'''
Delete Photos whose corresponding file on disk is missing.
@ -303,7 +303,7 @@ class PDBPhotoMixin:
self.commit(message='purge deleted photos')
@decorators.transaction
def purge_empty_albums(self, albums=None, *, commit=True):
def purge_empty_albums(self, albums=None, *, commit=False):
if albums is None:
to_check = set(self.get_albums())
else:
@ -912,7 +912,7 @@ class PDBTagMixin:
@decorators.required_feature('tag.new')
@decorators.transaction
def new_tag(self, tagname, description=None, *, author=None, commit=True):
def new_tag(self, tagname, description=None, *, author=None, commit=False):
'''
Register a new tag and return the Tag object.
'''
@ -1074,7 +1074,7 @@ class PDBUserMixin:
@decorators.required_feature('user.new')
@decorators.transaction
def register_user(self, username, password, *, display_name=None, commit=True):
def register_user(self, username, password, *, display_name=None, commit=False):
# These might raise exceptions.
self.assert_valid_username(username)
@ -1125,7 +1125,7 @@ class PDBUtilMixin:
new_photo_kwargs={},
new_photo_ratelimit=None,
recurse=True,
commit=True,
commit=False,
):
'''
Create an album, and add the directory's contents to it recursively.
@ -1246,7 +1246,7 @@ class PDBUtilMixin:
else:
return None
def easybake(self, ebstring, author=None, *, commit=True):
def easybake(self, ebstring, author=None, *, commit=False):
'''
Easily create tags, groups, and synonyms with a string like
"group1.group2.tag+synonym"