| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- """组织树接口与机构维护写操作。"""
- from __future__ import annotations
- from flask import request
- from dms.api.v1.blueprint import api_v1
- from dms.common.errors import InvalidArgumentError
- from dms.common.response import success_response
- from dms.security.decorators import admin_required, bearer_auth_required
- from dms.services.organization_service import (
- create_organization,
- delete_organization,
- organization_tree,
- parse_delete_row_version,
- parse_organization_id,
- reorder_organizations,
- update_organization,
- )
- from dms.services.ip_entry_service import (
- list_org_ip_assignments,
- update_org_ip_assignments,
- )
- def _json_body():
- if not request.is_json:
- raise InvalidArgumentError("请求体必须是JSON对象")
- body = request.get_json(silent=True)
- if not isinstance(body, dict):
- raise InvalidArgumentError("请求体必须是JSON对象")
- return body
- @api_v1.get("/organizations/tree")
- @bearer_auth_required
- @admin_required
- def organizations_tree():
- return success_response(
- organization_tree(
- keyword=request.args.get("keyword"),
- status=request.args.get("status"),
- )
- )
- @api_v1.post("/organizations")
- @bearer_auth_required
- @admin_required
- def create_organization_route():
- return success_response(create_organization(_json_body()), status=201)
- @api_v1.put("/organizations/reorder")
- @bearer_auth_required
- @admin_required
- def reorder_organizations_route():
- return success_response(reorder_organizations(_json_body()))
- @api_v1.put("/organizations/<id>")
- @bearer_auth_required
- @admin_required
- def update_organization_route(id: str):
- return success_response(
- update_organization(parse_organization_id(id), _json_body())
- )
- @api_v1.delete("/organizations/<id>")
- @bearer_auth_required
- @admin_required
- def delete_organization_route(id: str):
- return success_response(
- delete_organization(
- parse_organization_id(id),
- parse_delete_row_version(request.args.get("rowVersion")),
- )
- )
- @api_v1.get("/organizations/<id>/ip-assignments")
- @bearer_auth_required
- @admin_required
- def organization_ip_assignments(id: str):
- return success_response(
- list_org_ip_assignments(parse_organization_id(id))
- )
- @api_v1.put("/organizations/<id>/ip-assignments")
- @bearer_auth_required
- @admin_required
- def update_organization_ip_assignments_route(id: str):
- return success_response(
- update_org_ip_assignments(parse_organization_id(id), _json_body())
- )
|