chore: commit remaining working changes
Backend: - agent: confirmation, persistence, app, langgraph_setup updates - routes: agent_superset_explore, environments, git helpers/operations - services: git sync refactoring - tests: git_status_route expanded Frontend: - Navbar: minor cleanup - Profile: i18n (en/ru), page enhancements, integration tests - New: _llm_params.py
This commit is contained in:
@@ -11,6 +11,7 @@ import os
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from src.core.encryption import EncryptionManager
|
||||
from src.core.logger import logger
|
||||
from src.core.superset_client import SupersetClient
|
||||
from src.models.auth import User
|
||||
@@ -313,6 +314,51 @@ def _resolve_current_user_git_identity(
|
||||
# #endregion _resolve_current_user_git_identity
|
||||
|
||||
|
||||
# #region _resolve_current_user_git_token [C:2] [TYPE Function]
|
||||
# @BRIEF Resolve and decrypt the Git personal access token from current user's profile preferences.
|
||||
def _resolve_current_user_git_token(
|
||||
db: Session,
|
||||
current_user: User | None,
|
||||
) -> str | None:
|
||||
if db is None or not hasattr(db, "query"):
|
||||
return None
|
||||
|
||||
user_id = _sanitize_optional_identity_value(getattr(current_user, "id", None))
|
||||
if not user_id:
|
||||
return None
|
||||
|
||||
try:
|
||||
preference = (
|
||||
db.query(UserDashboardPreference)
|
||||
.filter(UserDashboardPreference.user_id == user_id)
|
||||
.first()
|
||||
)
|
||||
except Exception as resolve_error:
|
||||
logger.explore(
|
||||
"Failed to load profile preference for resolving git PAT",
|
||||
extra={"src": "_resolve_current_user_git_token", "payload": {"user_id": user_id}, "error": str(resolve_error)},
|
||||
)
|
||||
return None
|
||||
|
||||
if not preference:
|
||||
return None
|
||||
|
||||
encrypted_token = getattr(preference, "git_personal_access_token_encrypted", None)
|
||||
if not encrypted_token:
|
||||
return None
|
||||
|
||||
try:
|
||||
encryption = EncryptionManager()
|
||||
return encryption.decrypt(encrypted_token)
|
||||
except Exception as decrypt_error:
|
||||
logger.explore(
|
||||
"Failed to decrypt git PAT from profile",
|
||||
extra={"src": "_resolve_current_user_git_token", "user_id": user_id, "error": str(decrypt_error)},
|
||||
)
|
||||
return None
|
||||
# #endregion _resolve_current_user_git_token
|
||||
|
||||
|
||||
# #region _apply_git_identity_from_profile [C:2] [TYPE Function]
|
||||
# @BRIEF Apply user-scoped Git identity to repository-local config before write/pull operations.
|
||||
async def _apply_git_identity_from_profile(
|
||||
|
||||
@@ -25,6 +25,7 @@ from ._helpers import (
|
||||
_apply_git_identity_from_profile,
|
||||
_build_no_repo_status_payload,
|
||||
_handle_unexpected_git_route_error,
|
||||
_resolve_current_user_git_token,
|
||||
_resolve_repository_status,
|
||||
)
|
||||
from ._router import router
|
||||
@@ -105,6 +106,8 @@ async def push_changes(
|
||||
dashboard_ref: str,
|
||||
env_id: str | None = None,
|
||||
config_manager=Depends(get_config_manager),
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
_=Depends(has_permission("plugin:git", "EXECUTE")),
|
||||
):
|
||||
_gs = get_git_service()
|
||||
@@ -115,7 +118,8 @@ async def push_changes(
|
||||
dashboard_id = await _resolve_dashboard_id_from_ref(
|
||||
dashboard_ref, config_manager, env_id
|
||||
)
|
||||
await _gs.push_changes(dashboard_id)
|
||||
pat = _resolve_current_user_git_token(db, current_user)
|
||||
await _gs.push_changes(dashboard_id, pat=pat)
|
||||
return {"status": "success"}
|
||||
except HTTPException:
|
||||
raise
|
||||
@@ -178,7 +182,8 @@ async def pull_changes(
|
||||
extra={"src": "pull_changes"},
|
||||
)
|
||||
await _apply_git_identity_from_profile(dashboard_id, db, current_user)
|
||||
await _gs.pull_changes(dashboard_id)
|
||||
pat = _resolve_current_user_git_token(db, current_user)
|
||||
await _gs.pull_changes(dashboard_id, pat=pat)
|
||||
return {"status": "success"}
|
||||
except HTTPException:
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user