183 lines
5.9 KiB
Python
183 lines
5.9 KiB
Python
"""
|
|
ES相关的API视图
|
|
"""
|
|
import json
|
|
from django.http import JsonResponse
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from .es_connect import (
|
|
create_index_with_mapping,
|
|
insert_data,
|
|
search_data,
|
|
search_by_any_field,
|
|
search_all,
|
|
delete_by_id,
|
|
update_by_id,
|
|
get_by_id,
|
|
write_user_data,
|
|
get_all_users,
|
|
delete_user_by_username,
|
|
update_user_permission
|
|
)
|
|
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
@csrf_exempt
|
|
def init_index(request):
|
|
"""初始化ES索引"""
|
|
try:
|
|
create_index_with_mapping()
|
|
return JsonResponse({"status": "success", "message": "索引初始化成功"})
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["POST"])
|
|
@csrf_exempt
|
|
def add_data(request):
|
|
"""添加数据到ES"""
|
|
try:
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
success = insert_data(data)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "数据添加成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "数据添加失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def search(request):
|
|
"""搜索数据"""
|
|
try:
|
|
query = request.GET.get('q', '')
|
|
if not query:
|
|
return JsonResponse({"status": "error", "message": "搜索关键词不能为空"}, status=400)
|
|
|
|
results = search_data(query)
|
|
return JsonResponse({"status": "success", "data": results})
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def fuzzy_search(request):
|
|
"""模糊搜索"""
|
|
try:
|
|
keyword = request.GET.get('keyword', '')
|
|
if not keyword:
|
|
return JsonResponse({"status": "error", "message": "搜索关键词不能为空"}, status=400)
|
|
|
|
results = search_by_any_field(keyword)
|
|
return JsonResponse({"status": "success", "data": results})
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def get_all_data(request):
|
|
"""获取所有数据"""
|
|
try:
|
|
results = search_all()
|
|
return JsonResponse({"status": "success", "data": results})
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["DELETE"])
|
|
@csrf_exempt
|
|
def delete_data(request, doc_id):
|
|
"""删除数据"""
|
|
try:
|
|
success = delete_by_id(doc_id)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "数据删除成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "数据删除失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["PUT"])
|
|
@csrf_exempt
|
|
def update_data(request, doc_id):
|
|
"""更新数据"""
|
|
try:
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
success = update_by_id(doc_id, data)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "数据更新成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "数据更新失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def get_data(request, doc_id):
|
|
"""获取单个数据"""
|
|
try:
|
|
result = get_by_id(doc_id)
|
|
if result:
|
|
return JsonResponse({"status": "success", "data": result})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "数据不存在"}, status=404)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["POST"])
|
|
@csrf_exempt
|
|
def add_user(request):
|
|
"""添加用户"""
|
|
try:
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
success = write_user_data(data)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "用户添加成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "用户添加失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def get_users(request):
|
|
"""获取所有用户"""
|
|
try:
|
|
users = get_all_users()
|
|
return JsonResponse({"status": "success", "data": users})
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["DELETE"])
|
|
@csrf_exempt
|
|
def delete_user(request, username):
|
|
"""删除用户"""
|
|
try:
|
|
success = delete_user_by_username(username)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "用户删除成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "用户删除失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
|
|
|
|
@require_http_methods(["PUT"])
|
|
@csrf_exempt
|
|
def update_user(request, username):
|
|
"""更新用户权限"""
|
|
try:
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
new_permission = data.get('permission', 1)
|
|
success = update_user_permission(username, new_permission)
|
|
if success:
|
|
return JsonResponse({"status": "success", "message": "用户权限更新成功"})
|
|
else:
|
|
return JsonResponse({"status": "error", "message": "用户权限更新失败"}, status=500)
|
|
except Exception as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|