Implement task 006 site config versioning and audit events

This commit is contained in:
2026-05-21 19:13:19 +03:00
parent cf84400118
commit ff1a2f78c0
23 changed files with 1878 additions and 32 deletions
+37 -1
View File
@@ -8,7 +8,9 @@ from src.application.site_config import (
activate_script_config_version,
create_script_config_version,
create_target_site,
get_target_site,
list_script_config_versions,
rollback_script_config_version,
update_target_site,
)
from src.domain.auth import ADMIN_ROLES, EDITOR_OR_ADMIN_ROLES
@@ -36,6 +38,18 @@ def list_sites(
return [TargetSiteConfigResponse(site=site) for site in repository.target_sites.list()]
@router.get("/sites/{site_id}", response_model=TargetSiteConfigResponse)
def get_site(
site_id: UUID,
_: CurrentUser = Depends(require_roles(EDITOR_OR_ADMIN_ROLES)),
repository: BackendRepository = Depends(get_repository),
) -> TargetSiteConfigResponse:
try:
return get_target_site(repository, site_id)
except LookupError as error:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not Found") from error
@router.post(
"/sites",
response_model=TargetSiteConfigResponse,
@@ -107,7 +121,7 @@ def post_script_config_version(
def post_activate_script_config_version(
site_id: UUID,
version_id: UUID,
_: CurrentUser = Depends(require_roles(ADMIN_ROLES)),
current_user: CurrentUser = Depends(require_roles(ADMIN_ROLES)),
repository: BackendRepository = Depends(get_repository),
) -> ScriptConfigVersionResponse:
try:
@@ -115,6 +129,28 @@ def post_activate_script_config_version(
repository,
site_id=site_id,
version_id=version_id,
current_user=current_user,
)
except LookupError as error:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not Found") from error
@router.post(
"/sites/{site_id}/publishing-config/versions/{version_id}/rollback",
response_model=ScriptConfigVersionResponse,
)
def post_rollback_script_config_version(
site_id: UUID,
version_id: UUID,
current_user: CurrentUser = Depends(require_roles(ADMIN_ROLES)),
repository: BackendRepository = Depends(get_repository),
) -> ScriptConfigVersionResponse:
try:
return rollback_script_config_version(
repository,
site_id=site_id,
version_id=version_id,
current_user=current_user,
)
except LookupError as error:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not Found") from error