import streamlit as st from auth_runtime import require_login # from ui.sidebar import build_sidebar from pathlib import Path from tools.load_css import load_css from app_db.app_db import get_list, send_cmd from tools.numgen import get_num DASH_NAME = Path(__file__).stem load_css() st.set_page_config(page_title="Co-App Benutzer", page_icon=":material/person:", layout="wide", initial_sidebar_state="collapsed") authenticator = require_login() st.session_state["authenticator"] = authenticator def sidebar(): fullname = st.session_state.get("fullname") role_text = st.session_state.get("role_text") with st.sidebar: st.logo("app/images/GMN_Logo_neu_rgb.png", size="small") st.markdown(f"**{fullname}** ({role_text})") col1, col2 = st.columns([2,2]) with col1: authenticator.logout("Logout") with col2: if st.button("Home", use_container_width=True, icon=":material/home:"): st.switch_page("pages/home.py") groups() def groups(): if "selected_user_id" not in st.session_state: st.session_state.selected_user_id = None if st.button(label="test"): st.info(get_num("numgen_group", step=10)) #-------------------------------------------------------------------------------------------------- # Rollenverwaltung #-------------------------------------------------------------------------------------------------- # df = get_list(""" # select # u.id, # u.username, # u.firstname, # u.lastname, # u.role_id || ' | ' || r.role_text as role, # u.new_pwd, # u.active # from # users u # left join roles r # on u.role_id = r.role_id # """) # col_find_role, col_create_role, col_modify_role, col_delete_role = st.columns([3,2,2,2], vertical_alignment="bottom") # with col_find_role: # txt_search = st.text_input(label="Suche", label_visibility="hidden", placeholder="Benutzer, Vorname, ...", icon=":material/search:") # with col_create_user: # if st.button(label="Benutzer anlegen", use_container_width=True, icon=":material/person_add:"): # dialog_create_user() # if "save_msg" in st.session_state: # st.toast(st.session_state.save_msg) # del st.session_state.save_msg # with col_modify_user: # if st.button(label="Benutzer bearbeiten", use_container_width=True, icon=":material/person:"): # if not st.session_state.selected_user_id is None: # dialog_modify_user(st.session_state.selected_user_id) # else: # st.toast("❌ Bitte erst eine Zeile auswählen") # if "save_msg" in st.session_state: # st.toast(st.session_state.save_msg) # del st.session_state.save_msg # with col_delete_user: # if st.button(label="Benutzer löschen", use_container_width=True, icon=":material/person_remove:"): # if not st.session_state.selected_user_id is None: # dialog_delete_user(st.session_state.selected_user_id) # else: # st.toast("❌ Bitte erst eine Zeile auswählen") # if "delete_msg" in st.session_state: # st.toast(st.session_state.delete_msg) # del st.session_state.delete_msg # if txt_search.strip(): # txt_search_norm = txt_search.strip().lower() # mask = ( # df["username"].fillna("").str.lower().str.contains(txt_search_norm) # | df["firstname"].fillna("").str.lower().str.contains(txt_search_norm) # | df["lastname"].fillna("").str.lower().str.contains(txt_search_norm) # ) # df_view = df.loc[mask].copy() # else: # df_view = df.copy() # event = st.dataframe(df_view,key="data", on_select="rerun", selection_mode="single-row") # rows = event.selection.rows # if rows: # row_idx = rows[0] # st.session_state.selected_user_id = int(df_view.iloc[row_idx]["id"]) # else: # st.session_state.selected_user_id = None if __name__ == "__main__": sidebar()