Replace a lot of manual insert/update with helper.
This commit is contained in:
parent
3e5031a1c5
commit
a8ead9c0c9
2 changed files with 140 additions and 130 deletions
|
@ -65,13 +65,10 @@ class GroupableMixin:
|
||||||
# Groupables are only allowed to have 1 parent.
|
# Groupables are only allowed to have 1 parent.
|
||||||
# Unlike photos which can exist in multiple albums.
|
# Unlike photos which can exist in multiple albums.
|
||||||
cur = self.photodb.sql.cursor()
|
cur = self.photodb.sql.cursor()
|
||||||
cur.execute(
|
cur.execute('SELECT parentid FROM %s WHERE memberid == ?' % self.group_table, [member.id])
|
||||||
'SELECT * FROM %s WHERE memberid == ?' % self.group_table,
|
|
||||||
[member.id]
|
|
||||||
)
|
|
||||||
fetch = cur.fetchone()
|
fetch = cur.fetchone()
|
||||||
if fetch is not None:
|
if fetch is not None:
|
||||||
parent_id = fetch[self.group_sql_index['parentid']]
|
parent_id = fetch[0]
|
||||||
if parent_id == self.id:
|
if parent_id == self.id:
|
||||||
return
|
return
|
||||||
that_group = self.group_getter(id=parent_id)
|
that_group = self.group_getter(id=parent_id)
|
||||||
|
@ -81,26 +78,26 @@ class GroupableMixin:
|
||||||
if my_ancestor == member:
|
if my_ancestor == member:
|
||||||
raise exceptions.RecursiveGrouping(member=member, group=self)
|
raise exceptions.RecursiveGrouping(member=member, group=self)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'parentid': self.id,
|
||||||
|
'memberid': member.id,
|
||||||
|
}
|
||||||
|
self.photodb.sql_insert(table=self.group_table, data=data, commit=False)
|
||||||
|
|
||||||
self.photodb._cached_frozen_children = None
|
self.photodb._cached_frozen_children = None
|
||||||
cur.execute(
|
|
||||||
'INSERT INTO %s VALUES(?, ?)' % self.group_table,
|
|
||||||
[self.id, member.id]
|
|
||||||
)
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - add to group')
|
self.photodb.log.debug('Committing - add to group')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def children(self):
|
def children(self):
|
||||||
cur = self.photodb.sql.cursor()
|
cur = self.photodb.sql.cursor()
|
||||||
|
|
||||||
cur.execute(
|
cur.execute('SELECT memberid FROM %s WHERE parentid == ?' % self.group_table, [self.id])
|
||||||
'SELECT * FROM %s WHERE parentid == ?' % self.group_table,
|
fetches = cur.fetchall()
|
||||||
[self.id]
|
|
||||||
)
|
|
||||||
fetch = cur.fetchall()
|
|
||||||
results = []
|
results = []
|
||||||
for f in fetch:
|
for fetch in fetches:
|
||||||
memberid = f[self.group_sql_index['memberid']]
|
memberid = fetch[0]
|
||||||
child = self.group_getter(id=memberid)
|
child = self.group_getter(id=memberid)
|
||||||
results.append(child)
|
results.append(child)
|
||||||
if isinstance(self, Tag):
|
if isinstance(self, Tag):
|
||||||
|
@ -284,10 +281,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
'albumid': self.id,
|
'albumid': self.id,
|
||||||
'directory': filepath.absolute_path,
|
'directory': filepath.absolute_path,
|
||||||
}
|
}
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_ALBUM_DIRECTORY_COLUMNS, data)
|
self.photodb.sql_insert(table='album_associated_directories', data=data, commit=False)
|
||||||
query = 'INSERT INTO album_associated_directories VALUES(%s)' % qmarks
|
|
||||||
cur = self.photodb.sql.cursor()
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - add associated directory')
|
self.photodb.log.debug('Committing - add associated directory')
|
||||||
|
@ -302,8 +296,12 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
return
|
return
|
||||||
|
|
||||||
self.photodb.log.debug('Adding photo %s to %s', photo, self)
|
self.photodb.log.debug('Adding photo %s to %s', photo, self)
|
||||||
cur = self.photodb.sql.cursor()
|
data = {
|
||||||
cur.execute('INSERT INTO album_photo_rel VALUES(?, ?)', [self.id, photo.id])
|
'albumid': self.id,
|
||||||
|
'photoid': photo.id,
|
||||||
|
}
|
||||||
|
self.photodb.sql_insert(table='album_photo_rel', data=data, commit=False)
|
||||||
|
|
||||||
self._uncache_sums()
|
self._uncache_sums()
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - add photo to album')
|
self.photodb.log.debug('Committing - add photo to album')
|
||||||
|
@ -370,17 +368,21 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
'''
|
'''
|
||||||
Change the title or description. Leave None to keep current value.
|
Change the title or description. Leave None to keep current value.
|
||||||
'''
|
'''
|
||||||
if title is None:
|
if title is None and description is None:
|
||||||
title = self.title
|
return
|
||||||
if description is None:
|
|
||||||
description = self.description
|
if title is not None:
|
||||||
cur = self.photodb.sql.cursor()
|
self.title = title
|
||||||
cur.execute(
|
|
||||||
'UPDATE albums SET title=?, description=? WHERE id == ?',
|
if description is not None:
|
||||||
[title, description, self.id]
|
self.description = description
|
||||||
)
|
|
||||||
self.title = title
|
data = {
|
||||||
self.description = description
|
'id': self.id,
|
||||||
|
'title': self.title,
|
||||||
|
'description': self.description,
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='albums', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - edit album')
|
self.photodb.log.debug('Committing - edit album')
|
||||||
|
@ -413,13 +415,10 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
photos = []
|
photos = []
|
||||||
generator = helpers.select_generator(
|
generator = helpers.select_generator(
|
||||||
self.photodb.sql,
|
self.photodb.sql,
|
||||||
'SELECT * FROM album_photo_rel WHERE albumid == ?',
|
'SELECT photoid FROM album_photo_rel WHERE albumid == ?',
|
||||||
[self.id]
|
[self.id]
|
||||||
)
|
)
|
||||||
for photo in generator:
|
photos = [self.photodb.get_photo(id=fetch[0]) for fetch in generator]
|
||||||
photoid = photo[constants.SQL_ALBUMPHOTO['photoid']]
|
|
||||||
photo = self.photodb.get_photo(photoid)
|
|
||||||
photos.append(photo)
|
|
||||||
photos.sort(key=lambda x: x.basename.lower())
|
photos.sort(key=lambda x: x.basename.lower())
|
||||||
return photos
|
return photos
|
||||||
|
|
||||||
|
@ -517,11 +516,13 @@ class Bookmark(ObjectBase):
|
||||||
raise ValueError('Need a URL')
|
raise ValueError('Need a URL')
|
||||||
self.url = url
|
self.url = url
|
||||||
|
|
||||||
cur = self.photodb.sql.cursor()
|
data = {
|
||||||
cur.execute(
|
'id': self.id,
|
||||||
'UPDATE bookmarks SET title = ?, url = ? WHERE id == ?',
|
'title': self.title,
|
||||||
[self.title, self.url, self.id]
|
'url': self.url,
|
||||||
)
|
}
|
||||||
|
self.photodb.sql_update(table='bookmarks', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - edit bookmark')
|
self.photodb.log.debug('Committing - edit bookmark')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
@ -613,10 +614,18 @@ class Photo(ObjectBase):
|
||||||
self.remove_tag(parent)
|
self.remove_tag(parent)
|
||||||
|
|
||||||
self.photodb.log.debug('Applying tag {tag:s} to photo {pho:s}'.format(tag=tag, pho=self))
|
self.photodb.log.debug('Applying tag {tag:s} to photo {pho:s}'.format(tag=tag, pho=self))
|
||||||
now = helpers.now()
|
|
||||||
cur = self.photodb.sql.cursor()
|
data = {
|
||||||
cur.execute('INSERT INTO photo_tag_rel VALUES(?, ?)', [self.id, tag.id])
|
'photoid': self.id,
|
||||||
cur.execute('UPDATE photos SET tagged_at = ? WHERE id == ?', [now, self.id])
|
'tagid': tag.id
|
||||||
|
}
|
||||||
|
self.photodb.sql_insert(table='photo_tag_rel', data=data, commit=False)
|
||||||
|
data = {
|
||||||
|
'id': self.id,
|
||||||
|
'tagged_at': helpers.now(),
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='photos', data=data, where_key='id', commit=False)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - add photo tag')
|
self.photodb.log.debug('Committing - add photo tag')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
@ -628,8 +637,8 @@ class Photo(ObjectBase):
|
||||||
'''
|
'''
|
||||||
cur = self.photodb.sql.cursor()
|
cur = self.photodb.sql.cursor()
|
||||||
cur.execute('SELECT albumid FROM album_photo_rel WHERE photoid == ?', [self.id])
|
cur.execute('SELECT albumid FROM album_photo_rel WHERE photoid == ?', [self.id])
|
||||||
fetch = cur.fetchall()
|
fetches = cur.fetchall()
|
||||||
albums = [self.photodb.get_album(f[0]) for f in fetch]
|
albums = [self.photodb.get_album(id=fetch[0]) for fetch in fetches]
|
||||||
return albums
|
return albums
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -764,11 +773,11 @@ class Photo(ObjectBase):
|
||||||
|
|
||||||
|
|
||||||
if return_filepath != self.thumbnail:
|
if return_filepath != self.thumbnail:
|
||||||
cur = self.photodb.sql.cursor()
|
data = {
|
||||||
cur.execute(
|
'id': self.id,
|
||||||
'UPDATE photos SET thumbnail = ? WHERE id == ?',
|
'thumbnail': return_filepath,
|
||||||
[return_filepath, self.id]
|
}
|
||||||
)
|
self.photodb.sql_update(table='photos', pairs=data, where_key='id', commit=False)
|
||||||
self.thumbnail = return_filepath
|
self.thumbnail = return_filepath
|
||||||
|
|
||||||
self._uncache()
|
self._uncache()
|
||||||
|
@ -810,8 +819,7 @@ class Photo(ObjectBase):
|
||||||
Create the filepath that should be the location of our thumbnail.
|
Create the filepath that should be the location of our thumbnail.
|
||||||
'''
|
'''
|
||||||
chunked_id = helpers.chunk_sequence(self.id, 3)
|
chunked_id = helpers.chunk_sequence(self.id, 3)
|
||||||
basename = chunked_id[-1]
|
(folder, basename) = (chunked_id[:-1], chunked_id[-1])
|
||||||
folder = chunked_id[:-1]
|
|
||||||
folder = os.sep.join(folder)
|
folder = os.sep.join(folder)
|
||||||
folder = self.photodb.thumbnail_directory.join(folder)
|
folder = self.photodb.thumbnail_directory.join(folder)
|
||||||
if folder:
|
if folder:
|
||||||
|
@ -867,11 +875,17 @@ class Photo(ObjectBase):
|
||||||
self.area = self.width * self.height
|
self.area = self.width * self.height
|
||||||
self.ratio = round(self.width / self.height, 2)
|
self.ratio = round(self.width / self.height, 2)
|
||||||
|
|
||||||
cur = self.photodb.sql.cursor()
|
data = {
|
||||||
cur.execute(
|
'id': self.id,
|
||||||
'UPDATE photos SET width=?, height=?, area=?, ratio=?, duration=?, bytes=? WHERE id==?',
|
'width': self.width,
|
||||||
[self.width, self.height, self.area, self.ratio, self.duration, self.bytes, self.id],
|
'height': self.height,
|
||||||
)
|
'area': self.area,
|
||||||
|
'ratio': self.ratio,
|
||||||
|
'duration': self.duration,
|
||||||
|
'bytes': self.bytes,
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='photos', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
self._uncache()
|
self._uncache()
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - reload metadata')
|
self.photodb.log.debug('Committing - reload metadata')
|
||||||
|
@ -893,7 +907,7 @@ class Photo(ObjectBase):
|
||||||
new_filepath = pathclass.Path(new_filepath)
|
new_filepath = pathclass.Path(new_filepath)
|
||||||
if not new_filepath.is_file:
|
if not new_filepath.is_file:
|
||||||
raise FileNotFoundError(new_filepath.absolute_path)
|
raise FileNotFoundError(new_filepath.absolute_path)
|
||||||
cur = self.photodb.sql.cursor()
|
|
||||||
if not allow_duplicates:
|
if not allow_duplicates:
|
||||||
try:
|
try:
|
||||||
existing = self.photodb.get_photo_by_path(new_filepath)
|
existing = self.photodb.get_photo_by_path(new_filepath)
|
||||||
|
@ -902,10 +916,13 @@ class Photo(ObjectBase):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
raise exceptions.PhotoExists(existing)
|
raise exceptions.PhotoExists(existing)
|
||||||
cur.execute(
|
|
||||||
'UPDATE photos SET filepath = ? WHERE id == ?',
|
data = {
|
||||||
[new_filepath.absolute_path, self.id]
|
'id': self.id,
|
||||||
)
|
'filepath': new_filepath.absolute_path,
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='photos', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
self._uncache()
|
self._uncache()
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - relocate photo')
|
self.photodb.log.debug('Committing - relocate photo')
|
||||||
|
@ -925,8 +942,13 @@ class Photo(ObjectBase):
|
||||||
'DELETE FROM photo_tag_rel WHERE photoid == ? AND tagid == ?',
|
'DELETE FROM photo_tag_rel WHERE photoid == ? AND tagid == ?',
|
||||||
[self.id, tag.id]
|
[self.id, tag.id]
|
||||||
)
|
)
|
||||||
now = helpers.now()
|
|
||||||
cur.execute('UPDATE photos SET tagged_at = ? WHERE id == ?', [now, self.id])
|
data = {
|
||||||
|
'id': self.id,
|
||||||
|
'tagged_at': helpers.now(),
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='photos', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - remove photo tag')
|
self.photodb.log.debug('Committing - remove photo tag')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
@ -1006,16 +1028,12 @@ class Photo(ObjectBase):
|
||||||
'''
|
'''
|
||||||
Return the tags assigned to this Photo.
|
Return the tags assigned to this Photo.
|
||||||
'''
|
'''
|
||||||
tags = []
|
|
||||||
generator = helpers.select_generator(
|
generator = helpers.select_generator(
|
||||||
self.photodb.sql,
|
self.photodb.sql,
|
||||||
'SELECT * FROM photo_tag_rel WHERE photoid == ?',
|
'SELECT tagid FROM photo_tag_rel WHERE photoid == ?',
|
||||||
[self.id]
|
[self.id]
|
||||||
)
|
)
|
||||||
for tag in generator:
|
tags = [self.photodb.get_tag(id=fetch[0]) for fetch in generator]
|
||||||
tagid = tag[constants.SQL_PHOTOTAG['tagid']]
|
|
||||||
tag = self.photodb.get_tag(id=tagid)
|
|
||||||
tags.append(tag)
|
|
||||||
return tags
|
return tags
|
||||||
|
|
||||||
|
|
||||||
|
@ -1076,8 +1094,12 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
self.log.debug('New synonym %s of %s', synname, self.name)
|
self.log.debug('New synonym %s of %s', synname, self.name)
|
||||||
|
|
||||||
self.photodb._cached_frozen_children = None
|
self.photodb._cached_frozen_children = None
|
||||||
cur = self.photodb.sql.cursor()
|
|
||||||
cur.execute('INSERT INTO tag_synonyms VALUES(?, ?)', [synname, self.name])
|
data = {
|
||||||
|
'name': synname,
|
||||||
|
'mastername': self.name,
|
||||||
|
}
|
||||||
|
self.photodb.sql_insert(table='tag_synonyms', data=data, commit=False)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - add synonym')
|
self.photodb.log.debug('Committing - add synonym')
|
||||||
|
@ -1109,22 +1131,21 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
|
|
||||||
# Iterate over all photos with the old tag, and swap them to the new tag
|
# Iterate over all photos with the old tag, and swap them to the new tag
|
||||||
# if they don't already have it.
|
# if they don't already have it.
|
||||||
generator = helpers.select_generator(
|
cur.execute('SELECT photoid FROM photo_tag_rel WHERE tagid == ?', [self.id])
|
||||||
self.photodb.sql,
|
fetches = cur.fetchall()
|
||||||
'SELECT * FROM photo_tag_rel WHERE tagid == ?',
|
|
||||||
[self.id]
|
for fetch in fetches:
|
||||||
)
|
photoid = fetch[0]
|
||||||
for relationship in generator:
|
|
||||||
photoid = relationship[constants.SQL_PHOTOTAG['photoid']]
|
|
||||||
cur.execute(
|
cur.execute(
|
||||||
'SELECT * FROM photo_tag_rel WHERE photoid == ? AND tagid == ?',
|
'SELECT * FROM photo_tag_rel WHERE photoid == ? AND tagid == ?',
|
||||||
[photoid, mastertag.id]
|
[photoid, mastertag.id]
|
||||||
)
|
)
|
||||||
if cur.fetchone() is None:
|
if cur.fetchone() is None:
|
||||||
cur.execute(
|
data = {
|
||||||
'INSERT INTO photo_tag_rel VALUES(?, ?)',
|
'photoid': photoid,
|
||||||
[photoid, mastertag.id]
|
'tagid': mastertag.id,
|
||||||
)
|
}
|
||||||
|
self.photodb.sql_insert(table='photo_tag_rel', data=data, commit=False)
|
||||||
|
|
||||||
# Then delete the relationships with the old tag
|
# Then delete the relationships with the old tag
|
||||||
self.delete()
|
self.delete()
|
||||||
|
@ -1157,13 +1178,16 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
Change the description. Leave None to keep current value.
|
Change the description. Leave None to keep current value.
|
||||||
'''
|
'''
|
||||||
if description is None:
|
if description is None:
|
||||||
description = self.description
|
return
|
||||||
cur = self.photodb.sql.cursor()
|
|
||||||
cur.execute(
|
|
||||||
'UPDATE tags SET description = ? WHERE id == ?',
|
|
||||||
[description, self.id]
|
|
||||||
)
|
|
||||||
self.description = description
|
self.description = description
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'id': self.id,
|
||||||
|
'description': self.description
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='tags', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
self._uncache()
|
self._uncache()
|
||||||
if commit:
|
if commit:
|
||||||
self.photodb.log.debug('Committing - edit tag')
|
self.photodb.log.debug('Committing - edit tag')
|
||||||
|
@ -1259,8 +1283,14 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
|
|
||||||
self._cached_qualified_name = None
|
self._cached_qualified_name = None
|
||||||
self.photodb._cached_frozen_children = None
|
self.photodb._cached_frozen_children = None
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'id': self.id,
|
||||||
|
'name': new_name,
|
||||||
|
}
|
||||||
|
self.photodb.sql_update(table='tags', pairs=data, where_key='id', commit=False)
|
||||||
|
|
||||||
cur = self.photodb.sql.cursor()
|
cur = self.photodb.sql.cursor()
|
||||||
cur.execute('UPDATE tags SET name = ? WHERE id == ?', [new_name, self.id])
|
|
||||||
if apply_to_synonyms:
|
if apply_to_synonyms:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
'UPDATE tag_synonyms SET mastername = ? WHERE mastername = ?',
|
'UPDATE tag_synonyms SET mastername = ? WHERE mastername = ?',
|
||||||
|
@ -1276,10 +1306,9 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
def synonyms(self):
|
def synonyms(self):
|
||||||
cur = self.photodb.sql.cursor()
|
cur = self.photodb.sql.cursor()
|
||||||
cur.execute('SELECT name FROM tag_synonyms WHERE mastername == ?', [self.name])
|
cur.execute('SELECT name FROM tag_synonyms WHERE mastername == ?', [self.name])
|
||||||
fetch = cur.fetchall()
|
fetches = [fetch[0] for fetch in cur.fetchall()]
|
||||||
fetch = [f[0] for f in fetch]
|
fetches.sort()
|
||||||
fetch.sort()
|
return fetches
|
||||||
return fetch
|
|
||||||
|
|
||||||
|
|
||||||
class User(ObjectBase):
|
class User(ObjectBase):
|
||||||
|
|
|
@ -122,19 +122,14 @@ class PDBAlbumMixin:
|
||||||
if not isinstance(description, str):
|
if not isinstance(description, str):
|
||||||
raise TypeError('Description must be string, not %s' % type(description))
|
raise TypeError('Description must be string, not %s' % type(description))
|
||||||
|
|
||||||
cur = self.sql.cursor()
|
|
||||||
|
|
||||||
self.log.debug('New Album: %s %s', album_id, title)
|
self.log.debug('New Album: %s %s', album_id, title)
|
||||||
data = {
|
data = {
|
||||||
'id': album_id,
|
'id': album_id,
|
||||||
'title': title,
|
'title': title,
|
||||||
'description': description,
|
'description': description,
|
||||||
}
|
}
|
||||||
|
self.sql_insert(table='albums', data=data, commit=False)
|
||||||
|
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_ALBUM_COLUMNS, data)
|
|
||||||
query = 'INSERT INTO albums VALUES(%s)' % qmarks
|
|
||||||
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
album = objects.Album(self, data)
|
album = objects.Album(self, data)
|
||||||
|
|
||||||
if associated_directory is not None:
|
if associated_directory is not None:
|
||||||
|
@ -180,11 +175,7 @@ class PDBBookmarkMixin:
|
||||||
'title': title,
|
'title': title,
|
||||||
'url': url,
|
'url': url,
|
||||||
}
|
}
|
||||||
|
self.sql_insert(table='bookmarks', data=data, commit=False)
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_BOOKMARK_COLUMNS, data)
|
|
||||||
query = 'INSERT INTO bookmarks VALUES(%s)' % qmarks
|
|
||||||
cur = self.sql.cursor()
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
|
|
||||||
bookmark = objects.Bookmark(self, data)
|
bookmark = objects.Bookmark(self, data)
|
||||||
if commit:
|
if commit:
|
||||||
|
@ -292,11 +283,8 @@ class PDBPhotoMixin:
|
||||||
'duration': None,
|
'duration': None,
|
||||||
'thumbnail': None,
|
'thumbnail': None,
|
||||||
}
|
}
|
||||||
|
self.sql_insert(table='photos', data=data, commit=False)
|
||||||
|
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_PHOTO_COLUMNS, data)
|
|
||||||
query = 'INSERT INTO photos VALUES(%s)' % qmarks
|
|
||||||
cur = self.sql.cursor()
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
photo = objects.Photo(self, data)
|
photo = objects.Photo(self, data)
|
||||||
|
|
||||||
if do_metadata:
|
if do_metadata:
|
||||||
|
@ -716,12 +704,12 @@ class PDBTagMixin:
|
||||||
return objects.Tag(self, fetch)
|
return objects.Tag(self, fetch)
|
||||||
|
|
||||||
# ...or resolve the synonym and try again.
|
# ...or resolve the synonym and try again.
|
||||||
cur.execute('SELECT * FROM tag_synonyms WHERE name == ?', [tagname])
|
cur.execute('SELECT mastername FROM tag_synonyms WHERE name == ?', [tagname])
|
||||||
fetch = cur.fetchone()
|
fetch = cur.fetchone()
|
||||||
if fetch is None:
|
if fetch is None:
|
||||||
# was not a master tag or synonym
|
# was not a master tag or synonym
|
||||||
raise exceptions.NoSuchTag(tagname)
|
raise exceptions.NoSuchTag(tagname)
|
||||||
tagname = fetch[constants.SQL_SYN['mastername']]
|
tagname = fetch[0]
|
||||||
|
|
||||||
def get_tags(self):
|
def get_tags(self):
|
||||||
'''
|
'''
|
||||||
|
@ -755,15 +743,13 @@ class PDBTagMixin:
|
||||||
|
|
||||||
tagid = self.generate_id('tags')
|
tagid = self.generate_id('tags')
|
||||||
self._cached_frozen_children = None
|
self._cached_frozen_children = None
|
||||||
cur = self.sql.cursor()
|
|
||||||
data = {
|
data = {
|
||||||
'id': tagid,
|
'id': tagid,
|
||||||
'name': tagname,
|
'name': tagname,
|
||||||
'description': description,
|
'description': description,
|
||||||
}
|
}
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_TAG_COLUMNS, data)
|
self.sql_insert(table='tags', data=data, commit=False)
|
||||||
query = 'INSERT INTO tags VALUES(%s)' % qmarks
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
if commit:
|
if commit:
|
||||||
self.log.debug('Committing - new_tag')
|
self.log.debug('Committing - new_tag')
|
||||||
self.commit()
|
self.commit()
|
||||||
|
@ -930,11 +916,7 @@ class PDBUserMixin:
|
||||||
'password': hashed_password,
|
'password': hashed_password,
|
||||||
'created': created,
|
'created': created,
|
||||||
}
|
}
|
||||||
|
self.sql_insert(table='users', data=data, commit=False)
|
||||||
(qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_USER_COLUMNS, data)
|
|
||||||
query = 'INSERT INTO users VALUES(%s)' % qmarks
|
|
||||||
cur = self.sql.cursor()
|
|
||||||
cur.execute(query, bindings)
|
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.log.debug('Committing - register user')
|
self.log.debug('Committing - register user')
|
||||||
|
@ -1265,7 +1247,7 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
||||||
raise ValueError('Invalid table requested: %s.', table)
|
raise ValueError('Invalid table requested: %s.', table)
|
||||||
|
|
||||||
cur = self.sql.cursor()
|
cur = self.sql.cursor()
|
||||||
cur.execute('SELECT * FROM id_numbers WHERE tab == ?', [table])
|
cur.execute('SELECT last_id FROM id_numbers WHERE tab == ?', [table])
|
||||||
fetch = cur.fetchone()
|
fetch = cur.fetchone()
|
||||||
if fetch is None:
|
if fetch is None:
|
||||||
# Register new value
|
# Register new value
|
||||||
|
@ -1273,7 +1255,7 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
||||||
do_insert = True
|
do_insert = True
|
||||||
else:
|
else:
|
||||||
# Use database value
|
# Use database value
|
||||||
new_id_int = int(fetch[constants.SQL_LASTID['last_id']]) + 1
|
new_id_int = int(fetch[0]) + 1
|
||||||
do_insert = False
|
do_insert = False
|
||||||
|
|
||||||
new_id = str(new_id_int).rjust(self.config['id_length'], '0')
|
new_id = str(new_id_int).rjust(self.config['id_length'], '0')
|
||||||
|
@ -1330,10 +1312,9 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
||||||
cur.execute(query, bindings)
|
cur.execute(query, bindings)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.sql.commit()
|
self.commit()
|
||||||
|
|
||||||
def sql_update(self, table, pairs, where_key, *, commit=True):
|
def sql_update(self, table, pairs, where_key, *, commit=True):
|
||||||
column_names = constants.SQL_COLUMNS[table]
|
|
||||||
cur = self.sql.cursor()
|
cur = self.sql.cursor()
|
||||||
|
|
||||||
(query, bindings) = sqlhelpers.update_filler(pairs, where_key=where_key)
|
(query, bindings) = sqlhelpers.update_filler(pairs, where_key=where_key)
|
||||||
|
@ -1341,7 +1322,7 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
||||||
cur.execute(query, bindings)
|
cur.execute(query, bindings)
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
self.sql.commit()
|
self.commit()
|
||||||
|
|
||||||
|
|
||||||
_THING_CLASSES = {
|
_THING_CLASSES = {
|
||||||
|
|
Loading…
Reference in a new issue