Require voussoirkit 0.0.28 for sqlhelpers.listify.
Instead of defining that within etiquette.
This commit is contained in:
parent
c8f7239e19
commit
d66dc53215
5 changed files with 9 additions and 16 deletions
|
@ -482,15 +482,6 @@ def split_easybake_string(ebstring):
|
||||||
tagname = tagname.strip('.')
|
tagname = tagname.strip('.')
|
||||||
return (tagname, synonym, rename_to)
|
return (tagname, synonym, rename_to)
|
||||||
|
|
||||||
def sql_listify(items):
|
|
||||||
'''
|
|
||||||
Given a list of strings, return a string in the form of an SQL list.
|
|
||||||
|
|
||||||
['hi', 'ho', 'hey'] -> '("hi", "ho", "hey")'
|
|
||||||
'''
|
|
||||||
items = ', '.join(f'"{item}"' for item in items)
|
|
||||||
return '(%s)' % items
|
|
||||||
|
|
||||||
def truthystring(s):
|
def truthystring(s):
|
||||||
'''
|
'''
|
||||||
If s is already a boolean, int, or None, return a boolean or None.
|
If s is already a boolean, int, or None, return a boolean or None.
|
||||||
|
|
|
@ -10,6 +10,7 @@ import traceback
|
||||||
from voussoirkit import bytestring
|
from voussoirkit import bytestring
|
||||||
from voussoirkit import pathclass
|
from voussoirkit import pathclass
|
||||||
from voussoirkit import spinal
|
from voussoirkit import spinal
|
||||||
|
from voussoirkit import sqlhelpers
|
||||||
|
|
||||||
from . import constants
|
from . import constants
|
||||||
from . import decorators
|
from . import decorators
|
||||||
|
@ -517,7 +518,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
else:
|
else:
|
||||||
albumids = [self.id]
|
albumids = [self.id]
|
||||||
|
|
||||||
albumids = helpers.sql_listify(albumids)
|
albumids = sqlhelpers.listify(albumids)
|
||||||
query = query.format(albumids=albumids)
|
query = query.format(albumids=albumids)
|
||||||
total = self.photodb.sql_select_one(query)[0]
|
total = self.photodb.sql_select_one(query)[0]
|
||||||
return total
|
return total
|
||||||
|
@ -538,7 +539,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
else:
|
else:
|
||||||
albumids = [self.id]
|
albumids = [self.id]
|
||||||
|
|
||||||
albumids = helpers.sql_listify(albumids)
|
albumids = sqlhelpers.listify(albumids)
|
||||||
query = query.format(albumids=albumids)
|
query = query.format(albumids=albumids)
|
||||||
total = self.photodb.sql_select_one(query)[0]
|
total = self.photodb.sql_select_one(query)[0]
|
||||||
return total
|
return total
|
||||||
|
@ -886,7 +887,7 @@ class Photo(ObjectBase):
|
||||||
tag_options = [tag]
|
tag_options = [tag]
|
||||||
|
|
||||||
tag_by_id = {t.id: t for t in tag_options}
|
tag_by_id = {t.id: t for t in tag_options}
|
||||||
tag_option_ids = helpers.sql_listify(tag_by_id)
|
tag_option_ids = sqlhelpers.listify(tag_by_id)
|
||||||
rel_row = self.photodb.sql_select_one(
|
rel_row = self.photodb.sql_select_one(
|
||||||
f'SELECT tagid FROM photo_tag_rel WHERE photoid == ? AND tagid IN {tag_option_ids}',
|
f'SELECT tagid FROM photo_tag_rel WHERE photoid == ? AND tagid IN {tag_option_ids}',
|
||||||
[self.id]
|
[self.id]
|
||||||
|
@ -1293,7 +1294,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
UPDATE photo_tag_rel
|
UPDATE photo_tag_rel
|
||||||
SET tagid = ?
|
SET tagid = ?
|
||||||
WHERE tagid == ?
|
WHERE tagid == ?
|
||||||
AND photoid IN {helpers.sql_listify(replace_photoids)}
|
AND photoid IN {sqlhelpers.listify(replace_photoids)}
|
||||||
'''
|
'''
|
||||||
bindings = [mastertag.id, self.id]
|
bindings = [mastertag.id, self.id]
|
||||||
self.photodb.sql_execute(query, bindings)
|
self.photodb.sql_execute(query, bindings)
|
||||||
|
|
|
@ -566,7 +566,7 @@ class PDBPhotoMixin:
|
||||||
|
|
||||||
if author:
|
if author:
|
||||||
author_ids = [user.id for user in author]
|
author_ids = [user.id for user in author]
|
||||||
wheres.append('author_id IN %s' % helpers.sql_listify(author_ids))
|
wheres.append(f'author_id IN {sqlhelpers.listify(author_ids)}')
|
||||||
|
|
||||||
if extension:
|
if extension:
|
||||||
if '*' in extension:
|
if '*' in extension:
|
||||||
|
|
|
@ -9,6 +9,7 @@ from . import helpers
|
||||||
from . import objects
|
from . import objects
|
||||||
|
|
||||||
from voussoirkit import expressionmatch
|
from voussoirkit import expressionmatch
|
||||||
|
from voussoirkit import sqlhelpers
|
||||||
|
|
||||||
|
|
||||||
def expand_mmf(tag_musts, tag_mays, tag_forbids):
|
def expand_mmf(tag_musts, tag_mays, tag_forbids):
|
||||||
|
@ -389,7 +390,7 @@ def photo_tag_rel_exist_clauses(tag_musts, tag_mays, tag_forbids):
|
||||||
clauses.append( ('NOT EXISTS', tag_forbids) )
|
clauses.append( ('NOT EXISTS', tag_forbids) )
|
||||||
|
|
||||||
clauses = [
|
clauses = [
|
||||||
(operator, helpers.sql_listify(tag.id for tag in tagset))
|
(operator, sqlhelpers.listify(tag.id for tag in tagset))
|
||||||
for (operator, tagset) in clauses
|
for (operator, tagset) in clauses
|
||||||
]
|
]
|
||||||
clauses = [
|
clauses = [
|
||||||
|
|
|
@ -15,4 +15,4 @@ git+https://github.com/senko/python-video-converter.git
|
||||||
zipstream
|
zipstream
|
||||||
|
|
||||||
# My own variety toolkit.
|
# My own variety toolkit.
|
||||||
voussoirkit>=0.0.25
|
voussoirkit>=0.0.28
|
||||||
|
|
Loading…
Reference in a new issue