userIdc2024 commited on
Commit
892a31c
·
verified ·
1 Parent(s): 531428a

Update app_pages/text_image_generation_library.py

Browse files
app_pages/text_image_generation_library.py CHANGED
@@ -1,24 +1,28 @@
1
  from __future__ import annotations
2
 
3
  from datetime import datetime, timedelta, date
4
- from typing import Any, Dict, List
5
 
6
  import streamlit as st
7
 
8
  from database.connections import get_results_collection
9
 
10
 
11
- def _distinct_options(col, field: str, source: str) -> List[str]:
12
  try:
 
 
 
 
13
  if field == "platform":
14
  vals = (
15
- col.distinct("platform", {"source": source})
16
- + col.distinct("settings.platform", {"source": source})
17
- + col.distinct("provider_settings.platform", {"source": source})
18
- + col.distinct("metadata.platform", {"source": source})
19
  )
20
  else:
21
- vals = col.distinct(field, {"source": source})
22
 
23
  vals = [v for v in vals if v not in (None, "", [])]
24
  vals = sorted(set(vals))
@@ -34,14 +38,21 @@ def _query_docs(
34
  end_d: date,
35
  category: str,
36
  platform: str,
 
37
  limit: int = 200,
38
  ) -> List[Dict[str, Any]]:
 
39
  try:
40
  start_dt = datetime.combine(start_d, datetime.min.time())
41
  end_dt = datetime.combine(end_d + timedelta(days=1), datetime.min.time())
42
  q: Dict[str, Any] = {"source": source, "created_at": {"$gte": start_dt, "$lt": end_dt}}
 
 
 
 
43
  if category and category != "All":
44
  q["category"] = category
 
45
  if platform and platform != "All":
46
  q["$or"] = [
47
  {"platform": platform},
@@ -49,14 +60,15 @@ def _query_docs(
49
  {"provider_settings.platform": platform},
50
  {"metadata.platform": platform},
51
  ]
 
52
  cursor = col.find(q).sort("created_at", -1).limit(limit)
53
  return list(cursor)
54
  except Exception:
55
  return []
56
 
57
 
58
-
59
  def _render_grid(docs: List[Dict[str, Any]], key_prefix: str) -> None:
 
60
  seen = set()
61
  items = []
62
  for d in docs:
@@ -90,8 +102,8 @@ def _render_grid(docs: List[Dict[str, Any]], key_prefix: str) -> None:
90
  st.error("Failed to load image")
91
 
92
 
93
- def render_text_image_library() -> None:
94
-
95
  col = get_results_collection()
96
  if col is None:
97
  st.warning("Database not available. Set MONGO_URI and restart.")
@@ -106,8 +118,8 @@ def render_text_image_library() -> None:
106
  with c2:
107
  end_date = st.date_input("End date", value=today, key="img_text_end")
108
 
109
- cat_opts = _distinct_options(col, "category", source="text")
110
- plat_opts = _distinct_options(col, "platform", source="text")
111
 
112
  r1, r2 = st.columns(2)
113
  with r1:
@@ -116,5 +128,6 @@ def render_text_image_library() -> None:
116
  platform = st.selectbox("Platform", options=plat_opts, key="img_text_plat")
117
 
118
  st.markdown("---")
119
- docs = _query_docs(col, "text", start_date, end_date, category, platform)
120
  _render_grid(docs, key_prefix="text")
 
 
1
  from __future__ import annotations
2
 
3
  from datetime import datetime, timedelta, date
4
+ from typing import Any, Dict, List, Optional
5
 
6
  import streamlit as st
7
 
8
  from database.connections import get_results_collection
9
 
10
 
11
+ def _distinct_options(col, field: str, source: str, created_by: Optional[str] = None) -> List[str]:
12
  try:
13
+ q: Dict[str, Any] = {"source": source}
14
+ if created_by:
15
+ q["created_by"] = str(created_by)
16
+
17
  if field == "platform":
18
  vals = (
19
+ col.distinct("platform", q)
20
+ + col.distinct("settings.platform", q)
21
+ + col.distinct("provider_settings.platform", q)
22
+ + col.distinct("metadata.platform", q)
23
  )
24
  else:
25
+ vals = col.distinct(field, q)
26
 
27
  vals = [v for v in vals if v not in (None, "", [])]
28
  vals = sorted(set(vals))
 
38
  end_d: date,
39
  category: str,
40
  platform: str,
41
+ uid: Optional[str] = None,
42
  limit: int = 200,
43
  ) -> List[Dict[str, Any]]:
44
+
45
  try:
46
  start_dt = datetime.combine(start_d, datetime.min.time())
47
  end_dt = datetime.combine(end_d + timedelta(days=1), datetime.min.time())
48
  q: Dict[str, Any] = {"source": source, "created_at": {"$gte": start_dt, "$lt": end_dt}}
49
+
50
+ if uid:
51
+ q["created_by"] = str(uid)
52
+
53
  if category and category != "All":
54
  q["category"] = category
55
+
56
  if platform and platform != "All":
57
  q["$or"] = [
58
  {"platform": platform},
 
60
  {"provider_settings.platform": platform},
61
  {"metadata.platform": platform},
62
  ]
63
+
64
  cursor = col.find(q).sort("created_at", -1).limit(limit)
65
  return list(cursor)
66
  except Exception:
67
  return []
68
 
69
 
 
70
  def _render_grid(docs: List[Dict[str, Any]], key_prefix: str) -> None:
71
+ """Render results in a 4-column grid with metadata captions."""
72
  seen = set()
73
  items = []
74
  for d in docs:
 
102
  st.error("Failed to load image")
103
 
104
 
105
+ def render_text_image_library(uid: Optional[str] = None) -> None:
106
+ """Streamlit entrypoint for text-based image library."""
107
  col = get_results_collection()
108
  if col is None:
109
  st.warning("Database not available. Set MONGO_URI and restart.")
 
118
  with c2:
119
  end_date = st.date_input("End date", value=today, key="img_text_end")
120
 
121
+ cat_opts = _distinct_options(col, "category", source="text", created_by=uid)
122
+ plat_opts = _distinct_options(col, "platform", source="text", created_by=uid)
123
 
124
  r1, r2 = st.columns(2)
125
  with r1:
 
128
  platform = st.selectbox("Platform", options=plat_opts, key="img_text_plat")
129
 
130
  st.markdown("---")
131
+ docs = _query_docs(col, "text", start_date, end_date, category, platform, uid=uid)
132
  _render_grid(docs, key_prefix="text")
133
+