Стабильная версия API

This commit is contained in:
vlados31 2022-10-16 11:37:50 +03:00
parent c757646354
commit 1a6f2d578e
4 changed files with 41 additions and 23 deletions

View File

@ -221,6 +221,10 @@ class ApiOrder:
] ]
}) })
@staticmethod
def create(self):
pass
def api_call_method(method_name, params: dict): def api_call_method(method_name, params: dict):
try: try:
@ -237,10 +241,30 @@ def api_call_method(method_name, params: dict):
def api_get_documentation(): def api_get_documentation():
# { def _translate_type(t):
# "name": p["name"], _types = {
# "type": p["type"], str: "str",
# "description": p["description"], int: "int",
# "required": p["required"] UserToken: "token"
# } }
return [] if t in _types:
return _types[t]
else:
return str(t)
out = []
for m in api_methods_dict:
out.append({
"name": m,
"doc": api_methods_dict[m]["doc"],
"returns": api_methods_dict[m]["returns"],
"params": [
{
"name": p["name"],
"type": _translate_type(p["type"]),
"description": p["description"],
"required": p["required"]
} for p in api_methods_dict[m]["params"]
]
})
return out

View File

@ -36,8 +36,8 @@ def api_get_param_str(params: dict, name: str, required=True, default=""):
def api_get_access_token(params: dict, unused_name, required=True): def api_get_access_token(params: dict, unused_name, required=True):
token = api_get_param_str(params, "access_token", required)[0] token = api_get_param_str(params, "access_token", required)
print(f"checking token '{token}'") # print(f"checking token '{token}'")
return UserToken.get_by_token(token) return UserToken.get_by_token(token)
@ -93,7 +93,7 @@ def api_method(func_name, doc="", params: list or None = None, returns=""):
"doc": doc, "doc": doc,
"params": params, "params": params,
"func": wrapper, "func": wrapper,
"return": returns "returns": returns
} }
return wrapper return wrapper

View File

@ -8,16 +8,6 @@ from .api_errors import *
def view_methods(request): def view_methods(request):
methods = []
def __make_param(p):
return {
"name": p["name"],
"type": p["type"],
"description": p["description"],
"required": p["required"]
}
methods = api_get_documentation() methods = api_get_documentation()
return render(request, 'api/index.html', {'api_methods': methods}) return render(request, 'api/index.html', {'api_methods': methods})
@ -29,9 +19,13 @@ def call_method(request, method_name):
params = request.POST params = request.POST
else: else:
return HttpResponseBadRequest() return HttpResponseBadRequest()
api_params = {}
for p in params:
# защита от нескольких параметров с одним именем
api_params[p] = params[p]
out = api_call_method(method_name, params) out = api_call_method(method_name, api_params)
response = HttpResponse(json.dumps(out, ensure_ascii=False)) response = HttpResponse(json.dumps(out, ensure_ascii=False, indent=4))
response.headers["Content-type"] = "application/json; charset=utf-8" response.headers["Content-type"] = "application/json; charset=utf-8"
return response return response

View File

@ -45,7 +45,7 @@
<!-- а вообще можно подумать о том, чтобы сныкать ее содержимое в первую менюшку если сайт для телефонов: <!-- а вообще можно подумать о том, чтобы сныкать ее содержимое в первую менюшку если сайт для телефонов:
зачем иметь две выпадающие менюшки если есть одна? но это надо обсудить с Вадимом --> зачем иметь две выпадающие менюшки если есть одна? но это надо обсудить с Вадимом -->
<div class="dropdown-wrapper" id="profile-menu-dropdown"> <div class="dropdown-wrapper" id="profile-menu-dropdown">
<button class="dropdown-button fa fa-bars"></button> <button class="dropdown-button fa fa-user"></button>
<div class="dropdown-content"> <div class="dropdown-content">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="{% url 'profile' %}">Профиль</a> <a href="{% url 'profile' %}">Профиль</a>