Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
|
|
|
| 143 |
db_path = f"/{db_name}" if db_name else ""
|
| 144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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:
|