Files
py-ailbl-user-address/apps/ailbl-admin_address-insert-get.py

90 lines
2.8 KiB
Python
Raw Permalink Normal View History

2025-12-11 06:35:26 +00:00
import crud
2025-12-11 13:47:00 +00:00
import logging
2025-12-11 06:35:26 +00:00
from flask import jsonify, request
2025-12-11 13:47:00 +00:00
from filters import AddressPage
2025-12-11 06:35:26 +00:00
def main():
"""
```fission
{
"name": "address-admin-insert-get",
"http_triggers": {
"address-admin-insert-get-http": {
"url": "/ailbl/admin/users/{UserId}/addresses",
"methods": ["POST", "GET"]
}
}
}
```
"""
try:
if request.method == "POST":
return make_insert_request()
elif request.method == "GET":
return make_get_request()
else:
return {"error": "Method not allow"}, 405
except Exception as ex:
return jsonify({"error": str(ex)}), 500
def make_insert_request():
try:
2025-12-11 13:47:00 +00:00
# Lấy user_id từ header X-User
user_id = request.headers.get("X-Fission-Params-UserId")
if not user_id:
return jsonify({"error": "user_id is required"}), 400
data = request.get_json() # Lấy dữ liệu từ body request
if not data:
return jsonify({"error": "Address data is required"}), 400
address = data.get("address")
if not address:
return jsonify({"error": "Address is required"}), 400
# Kiểm tra nếu địa chỉ đã tồn tại cho người dùng này
if crud.exists_address_for_post(user_id, address):
return jsonify({"error": "Address already exists for this user"}), 409
# Tạo mới địa chỉ người dùng
response, status = crud.create_address(user_id, data)
2025-12-11 06:35:26 +00:00
return jsonify(response), status
2025-12-11 13:47:00 +00:00
2025-12-11 06:35:26 +00:00
except Exception as e:
return jsonify({"error": str(e)}), 500
def make_get_request():
try:
2025-12-11 13:47:00 +00:00
user_id = request.headers.get("X-Fission-Params-UserId")
2025-12-11 06:35:26 +00:00
if not user_id:
return jsonify({"error": "user_id is required"}), 400
2025-12-11 13:47:00 +00:00
# Lấy tham số filter và phân trang từ request
# Sử dụng AddressPage để lấy filter và phân trang
paging = AddressPage.from_request_queries()
print(paging)
# Gọi hàm CRUD để lấy danh sách địa chỉ của user_id với phân trang và lọc
response = crud.filter_address(user_id, paging)
return jsonify(
response,
), 200
# Kiểm tra xem response có dữ liệu không
# if not response[0]: # Nếu không có dữ liệu
# return jsonify({"message": "No addresses found"}), 404
# return jsonify({
# "data": response[0], # Dữ liệu (danh sách các địa chỉ)
# "status": response[1], # Mã trạng thái HTTP (200)
# "headers": response[2] # Headers CORS
# }), response[1], response[2]
2025-12-11 06:35:26 +00:00
except Exception as e:
return jsonify({"error": str(e)}), 500