| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- """组织树接口与机构维护写操作。"""
- 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,
- 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/<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())
- )
|