from .api_errors import * from .api_utils import * from .models import * from account.forms import UserCreationForm def _reqire_access_token(params): token = api_get_param_str(params, "access_token") return UserToken.get_user_by_token(token) def make_response(response): return {"response": response} def account_auth(params): login = api_get_param_str(params, "login") password = api_get_param_str(params, "password") user = UserToken.auth(login, password) token = UserToken.create_token(user) return make_response({"access_token": token.access_token}) def account_register(params): name = api_get_param_str(params, "name") surname = api_get_param_str(params, "surname") phone = api_get_param_str(params, "phone") email = api_get_param_str(params, "email") password = api_get_param_str(params, "password") form = UserCreationForm({ "email": email, "phone": phone, "name": name, "surname": surname, "password1": password, "password2": password, }) form.validate_unique() if form.is_valid(): pass else: raise Exception(API_ERROR_MISSING_ARGUMENT) def account_get(params): user = _reqire_access_token(params) return make_response({"name": user.name, "surname": user.surname, "email": user.email, "phone": user.phone}) def __make_argument_doc(name, arg_type, description, required=True): return { "name": name, "type": arg_type, "description": description, "required": required } def __make_argument_access_token(): return __make_argument_doc("access_token", "string", "Токен, выданный методом account.auth") __doc_type_string = "string" api_methods = { "account.auth": { "func": account_auth, "doc": "Аутентификация пользователя", "params": [ __make_argument_doc("login", __doc_type_string, "Логин пользователя"), __make_argument_doc("password", __doc_type_string, "Пароль пользователя"), ], "returns": "В случае правильных логина и пароля access_token. В противном случае объект ошибки." }, "account.register": { "func": account_register, "doc": "Регистрация нового пользователя", "params": [ ], "returns": "Поля пользователя (name, surname, email, phone)." }, "account.get": { "func": account_get, "doc": "Получение информации о пользователе", "params": [ __make_argument_access_token() ], "returns": "Поля пользователя (name, surname, email, phone)." }, }