+ git config

This commit is contained in:
2026-02-25 20:27:29 +03:00
parent f9ac282596
commit 999c0c54df
10 changed files with 9262 additions and 1185 deletions

View File

@@ -24,7 +24,9 @@ router = APIRouter(prefix="/api/dashboards", tags=["Dashboards"])
# [DEF:GitStatus:DataClass]
class GitStatus(BaseModel):
branch: Optional[str] = None
sync_status: Optional[str] = Field(None, pattern="^OK|DIFF$")
sync_status: Optional[str] = Field(None, pattern="^OK|DIFF|NO_REPO|ERROR$")
has_repo: Optional[bool] = None
has_changes_for_commit: Optional[bool] = None
# [/DEF:GitStatus:DataClass]
# [DEF:LastTask:DataClass]

View File

@@ -788,7 +788,9 @@ class SupersetClient:
# @POST: Returns a dictionary with at least page and page_size.
def _validate_query_params(self, query: Optional[Dict]) -> Dict:
with belief_scope("_validate_query_params"):
base_query = {"page": 0, "page_size": 1000}
# Superset list endpoints commonly cap page_size at 100.
# Using 100 avoids partial fetches when larger values are silently truncated.
base_query = {"page": 0, "page_size": 100}
return {**base_query, **(query or {})}
# [/DEF:_validate_query_params:Function]

View File

@@ -161,7 +161,12 @@ class ResourceService:
try:
repo = self.git_service.get_repo(dashboard_id)
if not repo:
return None
return {
'branch': None,
'sync_status': 'NO_REPO',
'has_repo': False,
'has_changes_for_commit': False
}
# Check if there are uncommitted changes
try:
@@ -170,6 +175,7 @@ class ResourceService:
# Check for uncommitted changes
is_dirty = repo.is_dirty()
has_changes_for_commit = repo.is_dirty(untracked_files=True)
# Check for unpushed commits
unpushed = len(list(repo.iter_commits(f'{branch}@{{u}}..{branch}'))) if '@{u}' in str(repo.refs) else 0
@@ -181,14 +187,26 @@ class ResourceService:
return {
'branch': branch,
'sync_status': sync_status
'sync_status': sync_status,
'has_repo': True,
'has_changes_for_commit': has_changes_for_commit
}
except Exception:
logger.warning(f"[ResourceService][Warning] Failed to get git status for dashboard {dashboard_id}")
return None
return {
'branch': None,
'sync_status': 'ERROR',
'has_repo': True,
'has_changes_for_commit': False
}
except Exception:
# No repo exists for this dashboard
return None
return {
'branch': None,
'sync_status': 'NO_REPO',
'has_repo': False,
'has_changes_for_commit': False
}
# [/DEF:_get_git_status_for_dashboard:Function]
# [DEF:_get_last_task_for_resource:Function]