61 lines
2.8 KiB
Python
61 lines
2.8 KiB
Python
from __future__ import annotations
|
||
|
||
import os
|
||
from pathlib import Path
|
||
from tempfile import gettempdir
|
||
|
||
import streamlit as st
|
||
|
||
SFM_SMB_BASE_PATH = "//sgo-fc01-r06/sfm/ОТЧЕТ_7081У"
|
||
SFM_DEFAULT_INPUT_DIR = r"//sgo-fc01-r06/sfm/ОТЧЕТ_7081У"
|
||
ACCESS_SUPPORT_CONTACT = "администратору СФМ"
|
||
|
||
# TODO(BIQ-36593): подтвердить SPACE_ID для прода (сейчас — значение,
|
||
# проверенное вручную на тестовом пространстве "AURORA"). ID составной
|
||
# ("storageId$spaceId") — храним как есть, без разбора, через
|
||
# env-переменную, чтобы не хардкодить прод-значение в коде. В проде
|
||
# SPACE_ID личного пространства пользователя определяется динамически
|
||
# через opencloud_access.resolve_personal_drive(access_token), это
|
||
# значение используется только как тестовый дефолт (AURORA).
|
||
OPENCLOUD_SPACE_ID = os.getenv(
|
||
"SFM_OPENCLOUD_SPACE_ID",
|
||
"28c0cecf-1e20-4664-b165-5c9d5515e70f$95e71bcd-3c89-4b77-b271-63c6d553f4fd",
|
||
)
|
||
|
||
EDIT_PATH_OPEN_KEY = "edit_path_open"
|
||
EDIT_PATH_VALUE_KEY = "edit_path_value"
|
||
# Runtime-only user paths storage. In bank contour we use tmpfs.
|
||
PATH_STORE_FILE = Path(gettempdir()) / "user_paths.json"
|
||
|
||
|
||
def resolve_user_id() -> str:
|
||
profile = st.session_state.get("user_profile", {})
|
||
if not isinstance(profile, dict):
|
||
return "anonymous|anonymous"
|
||
|
||
email = str(
|
||
profile.get("email") or profile.get("preferred_username") or "anonymous"
|
||
)
|
||
full_name = str(profile.get("name") or profile.get("full_name") or "anonymous")
|
||
return f"{email}|{full_name}"
|
||
|
||
|
||
def resolve_opencloud_access_token() -> str | None:
|
||
"""Достаёт access_token для OpenCloud из token_data в сессии.
|
||
|
||
НЕ ПОДТВЕРЖДЕНО: в проде (raisa_streamlit_oauth) неизвестно, содержит ли
|
||
token_data ключ "access_token" — в локальном mock_provider.py его нет
|
||
(только email/preferred_username/name). Нужно проверить на проде через
|
||
st.write(token_data.keys()).
|
||
|
||
Для локального теста (LOCATION=local, mock-провайдер) — fallback на
|
||
переменную окружения SFM_OPENCLOUD_ACCESS_TOKEN из .env. В проде эта
|
||
переменная не задана, так что fallback не сработает и не помешает.
|
||
"""
|
||
token_data = st.session_state.get("token_data", {})
|
||
if isinstance(token_data, dict):
|
||
value = token_data.get("access_token")
|
||
if value:
|
||
return str(value)
|
||
return os.getenv("SFM_OPENCLOUD_ACCESS_TOKEN") or None
|