Spaces:
Sleeping
Sleeping
| import hmac | |
| import streamlit as st | |
| from dosemetrics_app.tabs import ( | |
| comprehensive_analysis, | |
| geometric_tab, | |
| gamma_tab, | |
| compliance_tab, | |
| instructions, | |
| ) | |
| def check_password(): | |
| """Returns `True` if the user had a correct password.""" | |
| def login_form(): | |
| """Form with widgets to collect user information""" | |
| with st.form("Credentials"): | |
| st.text_input("Username", key="username") | |
| st.text_input("Password", type="password", key="password") | |
| st.form_submit_button("Log in", on_click=password_entered) | |
| def password_entered(): | |
| """Checks whether a password entered by the user is correct.""" | |
| if st.session_state["username"] in st.secrets[ | |
| "passwords" | |
| ] and hmac.compare_digest( | |
| st.session_state["password"], | |
| st.secrets.passwords[st.session_state["username"]], | |
| ): | |
| st.session_state["password_correct"] = True | |
| del st.session_state["password"] # Don't store the username or password. | |
| del st.session_state["username"] | |
| else: | |
| st.session_state["password_correct"] = False | |
| # Return True if the username + password is validated. | |
| if st.session_state.get("password_correct", False): | |
| return True | |
| # Show inputs for username + password. | |
| login_form() | |
| if "password_correct" in st.session_state: | |
| st.error("User not known or password incorrect") | |
| return False | |
| def main_loop(): | |
| # Authentication disabled for development/testing | |
| # if not check_password(): | |
| # st.stop() | |
| def comprehensive_analysis_page(): | |
| st.markdown("# Dosimetric Analysis") | |
| comprehensive_analysis.panel() | |
| def geometric_page(): | |
| st.markdown("# Geometric Comparison") | |
| geometric_tab.panel() | |
| def gamma_page(): | |
| st.markdown("# Gamma Analysis") | |
| gamma_tab.panel() | |
| def compliance_page(): | |
| st.markdown("# Compliance Checking") | |
| compliance_tab.panel() | |
| def instructions_page(): | |
| st.markdown("# Instructions") | |
| instructions.panel() | |
| page_names_to_funcs = { | |
| "Instructions": instructions_page, | |
| "Dosimetric Analysis": comprehensive_analysis_page, | |
| "Geometric Comparison": geometric_page, | |
| "Gamma Analysis": gamma_page, | |
| "Compliance Checking": compliance_page, | |
| } | |
| task_selection = st.sidebar.selectbox("Choose a task:", page_names_to_funcs.keys()) | |
| page_names_to_funcs[task_selection]() | |
| if __name__ == "__main__": | |
| main_loop() | |