Tesneem commited on
Commit
3a38a75
·
verified ·
1 Parent(s): 81bea5a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -8
app.py CHANGED
@@ -9,7 +9,7 @@ import pandas as pd
9
  import plotly.graph_objects as go
10
  import streamlit as st
11
  from pymongo import MongoClient
12
-
13
  st.set_page_config(page_title="Student Skill Radar", layout="wide")
14
 
15
  # ------------------- Constants -------------------
@@ -130,21 +130,22 @@ def _client(uri: str):
130
 
131
 
132
  def get_mongo_uri(db_name: str | None = None) -> str | None:
133
- """Priority: st.secrets.MONGO_URI -> env MONGO_URI -> compose from MONGO_USER/PASS/CLUSTER."""
134
- uri = st.secrets.get("MONGO_URI") if hasattr(st, "secrets") else None
135
- uri = uri or os.getenv("MONGO_URI")
136
- if uri:
137
- return uri
138
  user = os.getenv("MONGO_USER")
139
  pw = os.getenv("MONGO_PASS")
140
  cluster = os.getenv("MONGO_CLUSTER")
141
  if user and pw and cluster:
142
- # allow db_name in path for SRV
 
143
  db_path = f"/{db_name}" if db_name else ""
144
- return f"mongodb+srv://{user}:{pw}@{cluster}{db_path}?retryWrites=true&w=majority"
 
 
 
 
145
  return None
146
 
147
 
 
148
  @st.cache_data(show_spinner=False)
149
  def mongo_distinct(uri: str, db: str, coll: str, field: str) -> List[str]:
150
  try:
 
9
  import plotly.graph_objects as go
10
  import streamlit as st
11
  from pymongo import MongoClient
12
+ from urllib.parse import quote_plus
13
  st.set_page_config(page_title="Student Skill Radar", layout="wide")
14
 
15
  # ------------------- Constants -------------------
 
130
 
131
 
132
  def get_mongo_uri(db_name: str | None = None) -> str | None:
 
 
 
 
 
133
  user = os.getenv("MONGO_USER")
134
  pw = os.getenv("MONGO_PASS")
135
  cluster = os.getenv("MONGO_CLUSTER")
136
  if user and pw and cluster:
137
+ user_q = quote_plus(user)
138
+ pw_q = quote_plus(pw)
139
  db_path = f"/{db_name}" if db_name else ""
140
+ # TLS flags help on Spaces; SRV requires dnspython
141
+ return (
142
+ f"mongodb+srv://{user_q}:{pw_q}@{cluster}{db_path}"
143
+ f"?retryWrites=true&w=majority&tls=true&tlsAllowInvalidCertificates=true"
144
+ )
145
  return None
146
 
147
 
148
+
149
  @st.cache_data(show_spinner=False)
150
  def mongo_distinct(uri: str, db: str, coll: str, field: str) -> List[str]:
151
  try: