updates UI
This commit is contained in:
@@ -149,6 +149,7 @@ def migrate_schema():
|
||||
"ALTER TABLE person ADD COLUMN IF NOT EXISTS anatomical_completeness BOOLEAN DEFAULT NULL",
|
||||
"ALTER TABLE person ADD COLUMN IF NOT EXISTS facial_direction TEXT DEFAULT NULL",
|
||||
"ALTER TABLE person ADD COLUMN IF NOT EXISTS objects JSONB DEFAULT NULL",
|
||||
"ALTER TABLE person ADD COLUMN IF NOT EXISTS description TEXT",
|
||||
]:
|
||||
cur.execute(sql)
|
||||
conn.commit()
|
||||
@@ -256,7 +257,27 @@ def upsert_person(filename, filepath=None, name=None, group_id=None, tags=None,
|
||||
content_type=None, faceswap_source_video=None, archived=None,
|
||||
face_embedding=None, is_source=None,
|
||||
pose_description=None, pose_skeleton=None,
|
||||
people_count=None, anatomical_completeness=None, facial_direction=None, objects=None):
|
||||
people_count=None, anatomical_completeness=None, facial_direction=None, objects=None,
|
||||
description=None):
|
||||
if tags is not None:
|
||||
if isinstance(tags, str):
|
||||
try:
|
||||
tags_list = json.loads(tags)
|
||||
except Exception:
|
||||
tags_list = []
|
||||
elif isinstance(tags, list):
|
||||
tags_list = tags
|
||||
else:
|
||||
tags_list = []
|
||||
|
||||
# Enforce that ORBIT is only on _turntable/ files
|
||||
if filename.startswith("_turntable/"):
|
||||
if "ORBIT" not in tags_list:
|
||||
tags_list.append("ORBIT")
|
||||
else:
|
||||
tags_list = [t for t in tags_list if t != "ORBIT"]
|
||||
tags = tags_list
|
||||
|
||||
conn = get_db_connection()
|
||||
cur = conn.cursor()
|
||||
face_embedding_str = ("[" + ",".join(map(str, face_embedding)) + "]") if face_embedding is not None else None
|
||||
@@ -266,8 +287,9 @@ def upsert_person(filename, filepath=None, name=None, group_id=None, tags=None,
|
||||
clip_description, prompt, pose, sort_order, group_name, hidden,
|
||||
has_background, source_refs, has_clothing,
|
||||
content_type, faceswap_source_video, archived, face_embedding, is_source,
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness, facial_direction, objects)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness, facial_direction, objects,
|
||||
description)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
ON CONFLICT (filename) DO UPDATE
|
||||
SET filepath = COALESCE(EXCLUDED.filepath, person.filepath),
|
||||
name = COALESCE(EXCLUDED.name, person.name),
|
||||
@@ -293,14 +315,16 @@ def upsert_person(filename, filepath=None, name=None, group_id=None, tags=None,
|
||||
people_count = COALESCE(EXCLUDED.people_count, person.people_count),
|
||||
anatomical_completeness = COALESCE(EXCLUDED.anatomical_completeness, person.anatomical_completeness),
|
||||
facial_direction = COALESCE(EXCLUDED.facial_direction, person.facial_direction),
|
||||
objects = COALESCE(EXCLUDED.objects, person.objects);
|
||||
objects = COALESCE(EXCLUDED.objects, person.objects),
|
||||
description = COALESCE(EXCLUDED.description, person.description);
|
||||
""", (filename, filepath, name, group_id,
|
||||
json.dumps(tags) if tags else None,
|
||||
embedding, clip_description, prompt, pose, sort_order, group_name, hidden,
|
||||
has_background, source_refs, has_clothing,
|
||||
content_type, faceswap_source_video, archived, face_embedding_str, is_source,
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness, facial_direction,
|
||||
json.dumps(objects) if objects else None))
|
||||
json.dumps(objects) if objects else None,
|
||||
description))
|
||||
conn.commit()
|
||||
# Sync after commit
|
||||
try:
|
||||
@@ -381,7 +405,7 @@ def get_person(filename):
|
||||
SELECT name, group_id, tags, embedding, clip_description, filepath,
|
||||
prompt, pose, sort_order, group_name, hidden, has_background, source_refs,
|
||||
has_clothing, is_source, pose_description, pose_skeleton,
|
||||
people_count, anatomical_completeness, facial_direction, objects
|
||||
people_count, anatomical_completeness, facial_direction, objects, description
|
||||
FROM person WHERE filename = %s
|
||||
""", (filename,))
|
||||
return cur.fetchone()
|
||||
@@ -398,7 +422,7 @@ def list_persons(include_archived=False):
|
||||
SELECT filename, name, group_id, clip_description,
|
||||
prompt, pose, sort_order, group_name, hidden, has_background, source_refs,
|
||||
has_clothing, content_type, faceswap_source_video, archived, is_source, tags,
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness, facial_direction, objects
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness, facial_direction, objects, description
|
||||
FROM person
|
||||
{where}
|
||||
""")
|
||||
@@ -700,7 +724,7 @@ def sync_person_to_json(filename):
|
||||
has_background, source_refs, has_clothing, content_type,
|
||||
faceswap_source_video, archived, face_embedding, is_source,
|
||||
pose_description, pose_skeleton, people_count, anatomical_completeness,
|
||||
facial_direction, objects
|
||||
facial_direction, objects, description
|
||||
FROM person
|
||||
WHERE filename = %s
|
||||
""", (filename,))
|
||||
@@ -787,7 +811,8 @@ def sync_person_to_json(filename):
|
||||
"people_count": row[22],
|
||||
"anatomical_completeness": row[23],
|
||||
"facial_direction": row[24],
|
||||
"objects": obj_list
|
||||
"objects": obj_list,
|
||||
"description": row[26]
|
||||
}
|
||||
|
||||
# Determine json path
|
||||
|
||||
Reference in New Issue
Block a user