63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
|
|
"""
|
||
|
|
Response serialization for Plant Simulator API.
|
||
|
|
Plain Django; no DRF. Builds response envelope only. All payloads are static mock data.
|
||
|
|
|
||
|
|
Request: on POST /start the client must send a body with keys matching the sliders
|
||
|
|
from config (light, water, soil_ph) plus growth_speed. See START_REQUEST_EXAMPLE.
|
||
|
|
No validation or use of request in response; backend returns static mock only.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from .mock_data import CONFIG_SLIDERS_ONLY
|
||
|
|
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
# POST /start — بدنهای که کلاینت باید ارسال کند (مطابق اسلایدرهای config)
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
|
||
|
|
# کلیدهای environment (همان key هر اسلایدر بهجز growth_speed)
|
||
|
|
START_ENVIRONMENT_KEYS = [
|
||
|
|
item["key"]
|
||
|
|
for item in CONFIG_SLIDERS_ONLY["sliders"]
|
||
|
|
if item["key"] != "growth_speed"
|
||
|
|
]
|
||
|
|
|
||
|
|
# مقدار پیشفرض هر اسلایدر برای ساخت نمونه درخواست
|
||
|
|
def _defaults_from_sliders():
|
||
|
|
return {
|
||
|
|
item["key"]: item["default_value"]
|
||
|
|
for item in CONFIG_SLIDERS_ONLY["sliders"]
|
||
|
|
}
|
||
|
|
|
||
|
|
# نمونه بدنه درخواست start که کلاینت باید ارسال کند
|
||
|
|
START_REQUEST_EXAMPLE = {
|
||
|
|
"environment": {
|
||
|
|
k: v for k, v in _defaults_from_sliders().items() if k != "growth_speed"
|
||
|
|
},
|
||
|
|
"growth_speed": _defaults_from_sliders().get("growth_speed", 1.5),
|
||
|
|
}
|
||
|
|
|
||
|
|
# برای سازگاری: همان ساختار به صورت ثابت (بدون وابستگی به محاسبه)
|
||
|
|
START_REQUEST_EXAMPLE_STATIC = {
|
||
|
|
"environment": {
|
||
|
|
"light": 75,
|
||
|
|
"water": 65,
|
||
|
|
"soil_ph": 6.5,
|
||
|
|
},
|
||
|
|
"growth_speed": 1.5,
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
def success_response():
|
||
|
|
"""
|
||
|
|
Response when endpoint does not return data.
|
||
|
|
Returns: {"status": "success"}
|
||
|
|
"""
|
||
|
|
return {"status": "success"}
|
||
|
|
|
||
|
|
|
||
|
|
def success_with_data(data):
|
||
|
|
"""
|
||
|
|
Response when endpoint returns data.
|
||
|
|
Returns: {"status": "success", "data": data}
|
||
|
|
"""
|
||
|
|
return {"status": "success", "data": data}
|