Download apps/cases/api/caseaccess_api.py from jun2024/fachuan: direct link, hf CLI and curl.
- Browser
- Download file 3.17 kB
-
https://huggingface.co/spaces/jun2024/fachuan/resolve/main/apps/cases/api/caseaccess_api.py
- Command line
-
hf download hf://spaces/jun2024/fachuan/apps/cases/api/caseaccess_api.py
-
curl -L -o caseaccess_api.py https://huggingface.co/spaces/jun2024/fachuan/resolve/main/apps/cases/api/caseaccess_api.py
3.17 kB
| """ | |
| 案件访问授权 API | |
| API 层职责: | |
| 1. 接收 HTTP 请求,验证参数(通过 Schema) | |
| 2. 调用 Service 层方法 | |
| 3. 返回响应 | |
| 不包含:业务逻辑、权限检查、异常处理(依赖全局异常处理器) | |
| """ | |
| from __future__ import annotations | |
| from typing import Any, cast | |
| from django.http import HttpRequest | |
| from ninja import Router | |
| from apps.cases.schemas import CaseAccessGrantIn, CaseAccessGrantOut, CaseAccessGrantUpdate | |
| from apps.core.dto.request_context import extract_request_context | |
| router = Router() | |
| def _get_case_access_service() -> Any: | |
| """ | |
| 工厂函数:创建 CaseAccessService 实例 | |
| CaseAccessService 实例 | |
| """ | |
| from apps.cases.services.case.case_access_service import CaseAccessService | |
| return CaseAccessService() | |
| def list_grants( | |
| request: HttpRequest, case_id: int | None = None, grantee_id: int | None = None | |
| ) -> list[CaseAccessGrantOut]: | |
| service = _get_case_access_service() | |
| ctx = extract_request_context(request) | |
| return cast( | |
| list[CaseAccessGrantOut], | |
| service.list_grants( | |
| case_id=case_id, | |
| grantee_id=grantee_id, | |
| user=ctx.user, | |
| org_access=ctx.org_access, | |
| perm_open_access=ctx.perm_open_access, | |
| ), | |
| ) | |
| def create_grant(request: HttpRequest, payload: CaseAccessGrantIn) -> CaseAccessGrantOut: | |
| service = _get_case_access_service() | |
| ctx = extract_request_context(request) | |
| return cast( | |
| CaseAccessGrantOut, | |
| service.create_grant( | |
| case_id=payload.case_id, | |
| grantee_id=payload.grantee_id, | |
| user=ctx.user, | |
| ), | |
| ) | |
| def get_grant(request: HttpRequest, grant_id: int) -> CaseAccessGrantOut: | |
| service = _get_case_access_service() | |
| ctx = extract_request_context(request) | |
| return cast( | |
| CaseAccessGrantOut, | |
| service.get_grant( | |
| grant_id=grant_id, | |
| user=ctx.user, | |
| org_access=ctx.org_access, | |
| perm_open_access=ctx.perm_open_access, | |
| ), | |
| ) | |
| def update_grant(request: HttpRequest, grant_id: int, payload: CaseAccessGrantUpdate) -> CaseAccessGrantOut: | |
| service = _get_case_access_service() | |
| ctx = extract_request_context(request) | |
| data = payload.dict(exclude_unset=True) | |
| return cast( | |
| CaseAccessGrantOut, | |
| service.update_grant( | |
| grant_id=grant_id, | |
| data=data, | |
| user=ctx.user, | |
| org_access=ctx.org_access, | |
| perm_open_access=ctx.perm_open_access, | |
| ), | |
| ) | |
| def delete_grant(request: HttpRequest, grant_id: int) -> Any: | |
| service = _get_case_access_service() | |
| ctx = extract_request_context(request) | |
| return service.delete_grant( | |
| grant_id=grant_id, | |
| user=ctx.user, | |
| org_access=ctx.org_access, | |
| perm_open_access=ctx.perm_open_access, | |
| ) | |