Стабильная версия API
This commit is contained in:
parent
c757646354
commit
1a6f2d578e
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
18
api/views.py
18
api/views.py
@ -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
|
||||||
|
@ -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>
|
||||||
|
Reference in New Issue
Block a user