npc0 commited on
Commit
bf6c642
·
verified ·
1 Parent(s): 3747a5f

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +37 -10
src/streamlit_app.py CHANGED
@@ -211,8 +211,7 @@ def add_example_topic(topic_id, topic_title, topic_description, comments_list):
211
  elif comment_text in anti_tech_comments:
212
  vote_type = 'disagree'
213
  else:
214
- # For neutral/other comments, a chance of neutral or skipping
215
- vote_type = random.choice(['neutral'] * 2 + [None] * 3) # More likely neutral or skip
216
 
217
  if vote_type:
218
  # Generate UUID for vote ID and append to list
@@ -232,8 +231,7 @@ def add_example_topic(topic_id, topic_title, topic_description, comments_list):
232
  elif comment_text in anti_tech_comments:
233
  vote_type = 'agree'
234
  else:
235
- # For neutral/other comments, a chance of neutral or skipping
236
- vote_type = random.choice(['neutral'] * 2 + [None] * 3) # More likely neutral or skip
237
 
238
  if vote_type:
239
  # Generate UUID for vote ID and append to list
@@ -247,7 +245,7 @@ def add_example_topic(topic_id, topic_title, topic_description, comments_list):
247
  if not comment_id: continue
248
 
249
  # Mostly neutral, some random agree/disagree, many skipped
250
- vote_type = random.choice(['neutral'] * 5 + ['agree', 'disagree'] + [None] * 5) # Weighted towards neutral and skipping
251
 
252
  if vote_type:
253
  # Generate UUID for vote ID and append to list
@@ -305,6 +303,21 @@ def add_dummy_topic():
305
  "Another set of orders. Understood, sir!",
306
  "Excellent... with this, I will have even greater control over the galaxy... cackles maniacally"
307
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  add_example_topic(example_topic_id, example_topic_title, example_topic_description, example_comments)
309
 
310
 
@@ -804,7 +817,7 @@ def get_random_unvoted_comment(user_id, topic_id):
804
  FROM comments c
805
  WHERE c.topic_id = ?
806
  AND NOT EXISTS (
807
- SELECT 1 FROM votes v
808
  WHERE v.comment_id = c.id AND v.user_id = ?
809
  )
810
  ORDER BY RANDOM()
@@ -1037,13 +1050,27 @@ def view_topic_page():
1037
  progress_exists = False
1038
  try:
1039
  local_con = duckdb.connect(database=DB_PATH, read_only=True)
1040
- # Query the user_progress table for a record matching user_id and topic_id
1041
- result = local_con.execute("""
1042
- SELECT 1 FROM user_progress
 
 
 
 
 
 
 
 
 
 
 
 
1043
  WHERE user_id = ? AND topic_id = ?
1044
  LIMIT 1
1045
  """, [user_id, topic_id]).fetchone()
1046
- progress_exists = result is not None
 
 
1047
  except Exception as e:
1048
  # Log error but don't stop the app. Assume no progress on error.
1049
  st.error(f"Error checking user progress for greeting: {e}")
 
211
  elif comment_text in anti_tech_comments:
212
  vote_type = 'disagree'
213
  else:
214
+ vote_type = 'neutral'
 
215
 
216
  if vote_type:
217
  # Generate UUID for vote ID and append to list
 
231
  elif comment_text in anti_tech_comments:
232
  vote_type = 'agree'
233
  else:
234
+ vote_type = 'neutral'
 
235
 
236
  if vote_type:
237
  # Generate UUID for vote ID and append to list
 
245
  if not comment_id: continue
246
 
247
  # Mostly neutral, some random agree/disagree, many skipped
248
+ vote_type = random.choice(['neutral'] * 8 + ['agree', 'disagree'])
249
 
250
  if vote_type:
251
  # Generate UUID for vote ID and append to list
 
303
  "Another set of orders. Understood, sir!",
304
  "Excellent... with this, I will have even greater control over the galaxy... cackles maniacally"
305
  ]
306
+ local_con = None
307
+ try:
308
+ local_con = duckdb.connect(database=DB_PATH, read_only=True)
309
+ # Check if the example topic already exists
310
+ result = local_con.execute("SELECT * FROM topics WHERE id = ?", [example_topic_id]).fetchone()
311
+ if result:
312
+ print(f"INFO: Topic '{example_topic_id}' already exists. Skipping dummy data insertion.")
313
+ return # Skip adding dummy data if topic exists
314
+ except Exception as e:
315
+ # Log error but continue, assuming topic doesn't exist if check fails
316
+ print(f"WARNING: Error checking for existing topic '{example_topic_id}': {e}")
317
+ # Don't return, proceed with adding data in case of check error
318
+ finally:
319
+ if local_con:
320
+ local_con.close()
321
  add_example_topic(example_topic_id, example_topic_title, example_topic_description, example_comments)
322
 
323
 
 
817
  FROM comments c
818
  WHERE c.topic_id = ?
819
  AND NOT EXISTS (
820
+ SELECT * FROM votes v
821
  WHERE v.comment_id = c.id AND v.user_id = ?
822
  )
823
  ORDER BY RANDOM()
 
1050
  progress_exists = False
1051
  try:
1052
  local_con = duckdb.connect(database=DB_PATH, read_only=True)
1053
+
1054
+ # Check if the user has voted on any comment in this topic
1055
+ # This requires joining votes with comments to filter by topic_id
1056
+ voted_result = local_con.execute("""
1057
+ SELECT 1
1058
+ FROM votes v
1059
+ JOIN comments c ON v.comment_id = c.id
1060
+ WHERE v.user_id = ? AND c.topic_id = ?
1061
+ LIMIT 1
1062
+ """, [user_id, topic_id]).fetchone()
1063
+
1064
+ # Check if the user has submitted any comment in this topic
1065
+ commented_result = local_con.execute("""
1066
+ SELECT 1
1067
+ FROM comments
1068
  WHERE user_id = ? AND topic_id = ?
1069
  LIMIT 1
1070
  """, [user_id, topic_id]).fetchone()
1071
+
1072
+ # Progress exists if the user has either voted or commented in this topic
1073
+ progress_exists = voted_result is not None or commented_result is not None
1074
  except Exception as e:
1075
  # Log error but don't stop the app. Assume no progress on error.
1076
  st.error(f"Error checking user progress for greeting: {e}")