Download apps/documents/api/document_api.py from jun2024/fachuan: direct link, hf CLI and curl.
- Browser
- Download file 3.49 kB
-
https://huggingface.co/spaces/jun2024/fachuan/resolve/main/apps/documents/api/document_api.py
- Command line
-
hf download hf://spaces/jun2024/fachuan/apps/documents/api/document_api.py
-
curl -L -o document_api.py https://huggingface.co/spaces/jun2024/fachuan/resolve/main/apps/documents/api/document_api.py
3.49 kB
| """ | |
| 文件模板 API | |
| 提供文件模板的 CRUD 接口. | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| from typing import Any | |
| from django.utils.translation import gettext_lazy as _ | |
| from ninja import Router | |
| from apps.core.api.schema_utils import schema_to_update_dict | |
| from apps.core.security.auth import JWTOrSessionAuth | |
| from apps.documents.schemas import DocumentTemplateIn, DocumentTemplateOut, DocumentTemplateUpdate | |
| from apps.documents.services.template.template_service import DocumentTemplateService | |
| logger = logging.getLogger("apps.documents.api") | |
| router = Router(auth=JWTOrSessionAuth()) | |
| def _get_template_service() -> DocumentTemplateService: | |
| """工厂函数:创建 DocumentTemplateService 实例""" | |
| return DocumentTemplateService() | |
| def list_document_templates( | |
| request: Any, template_type: str | None = None, case_type: str | None = None, is_active: bool | None = None | |
| ) -> Any: | |
| """ | |
| 获取文件模板列表 | |
| Args: | |
| template_type: 模板类型过滤 (contract/case) | |
| case_type: 案件类型过滤 | |
| is_active: 启用状态过滤 | |
| """ | |
| service = _get_template_service() | |
| templates = service.list_templates( | |
| template_type=template_type, | |
| case_type=case_type, | |
| is_active=is_active, | |
| ) | |
| return templates # type: ignore[return-value] | |
| def get_document_template(request: Any, template_id: int) -> Any: | |
| """获取文件模板详情""" | |
| service = _get_template_service() | |
| return service.get_template_by_id(template_id) | |
| def create_document_template(request: Any, payload: DocumentTemplateIn) -> Any: | |
| """创建文件模板""" | |
| service = _get_template_service() | |
| template = service.create_template_from_dict(payload.dict()) | |
| logger.info("创建文件模板: %s (ID: %s)", template.name, template.id) | |
| return template | |
| def update_document_template(request: Any, template_id: int, payload: DocumentTemplateUpdate) -> Any: | |
| """更新文件模板""" | |
| service = _get_template_service() | |
| template = service.update_template_from_dict(template_id, schema_to_update_dict(payload)) | |
| logger.info("更新文件模板: %s (ID: %s)", template.name, template.id) | |
| return template | |
| def delete_document_template(request: Any, template_id: int) -> Any: | |
| """删除文件模板(软删除)""" | |
| service = _get_template_service() | |
| service.delete_template(template_id) | |
| return {"success": True, "message": _("文件模板已删除")} | |
| def extract_template_placeholders(request: Any, template_id: int) -> Any: | |
| """提取文件模板中的占位符""" | |
| service = _get_template_service() | |
| template = service.get_template_by_id(template_id) | |
| return service.extract_placeholders(template) | |
| def get_undefined_placeholders(request: Any, template_id: int) -> Any: | |
| """获取文件模板中未定义的占位符""" | |
| service = _get_template_service() | |
| template = service.get_template_by_id(template_id) | |
| return service.get_undefined_placeholders(template) | |