updates UI

This commit is contained in:
mike
2026-07-01 04:46:43 +02:00
parent 970daeba31
commit 251d9b1cc8
3 changed files with 463 additions and 80 deletions

View File

@@ -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