Spaces:
Running
Running
File size: 2,300 Bytes
bbea1cc cb5b71d bbea1cc dc92053 8c11dd4 bbea1cc cb5b71d bbea1cc 041af8a bbea1cc 041af8a 8c11dd4 041af8a bbea1cc 041af8a 8c11dd4 041af8a bbea1cc cb5b71d dc92053 cb5b71d 041af8a 6a31b9a dc92053 041af8a 5a782ad dc92053 cb5b71d dc92053 5a782ad 041af8a cb5b71d 6a31b9a cb5b71d dc92053 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
import urllib.parse
import streamlit as st
from core.constants import OAUTH_CLIENT_ID
from core.constants import OAUTH_STATE
from core.constants import REDIRECT_URI
from core.query_params import get_project_timestamp
from core.state import CurrentProject
from core.state import get_user
from core.state import User
from utils import init_state
from views.splash import render_splash
from views.wizard import render_editor
st.set_page_config(page_title="Croissant Editor", page_icon="🥐", layout="wide")
col1, col2, col3 = st.columns([10, 1, 1])
col1.header("Croissant Editor")
init_state()
user = get_user()
if OAUTH_CLIENT_ID and not user:
query_params = st.experimental_get_query_params()
state = query_params.get("state")
if state and state[0] == OAUTH_STATE:
code = query_params.get("code")
if not code:
st.stop()
try:
st.session_state[User] = User.connect(code)
# Clear the cache to force retrieving the new user.
get_user()
except:
raise
finally:
st.experimental_set_query_params()
else:
redirect_uri = urllib.parse.quote(REDIRECT_URI, safe="")
client_id = urllib.parse.quote(OAUTH_CLIENT_ID, safe="")
state = urllib.parse.quote(OAUTH_STATE, safe="")
scope = urllib.parse.quote("openid profile", safe="")
url = f"https://huggingface.co/oauth/authorize?response_type=code&redirect_uri={redirect_uri}&scope={scope}&client_id={client_id}&state={state}"
st.link_button("🤗 Login with Hugging Face", url)
st.stop()
def _back_to_menu():
"""Sends the user back to the menu."""
st.experimental_set_query_params()
init_state(force=True)
def _logout():
"""Logs the user out."""
st.cache_data.clear()
st.session_state[User] = None
_back_to_menu()
if OAUTH_CLIENT_ID:
col2.write("\n") # Vertical box to shift the lgout menu
col2.button("Log out", on_click=_logout)
timestamp = get_project_timestamp()
if timestamp:
col3.write("\n") # Vertical box to shift the button menu
col3.button("Menu", on_click=_back_to_menu)
should_display_editor = bool(st.session_state.get(CurrentProject))
if should_display_editor:
render_editor()
else:
render_splash()
|