Small api logic changes, small order changes
This commit is contained in:
parent
19b246ec06
commit
6f3beeec09
@ -44,26 +44,28 @@ API_ERROR_VALIDATION = {
|
|||||||
|
|
||||||
|
|
||||||
def make_error_object(ex: Exception):
|
def make_error_object(ex: Exception):
|
||||||
|
data = {
|
||||||
|
"status": "error"
|
||||||
|
}
|
||||||
try:
|
try:
|
||||||
if type(ex.args[0]) != tuple:
|
if type(ex.args[0]) != tuple:
|
||||||
raise Exception(API_ERROR_INTERNAL_ERROR)
|
raise ex
|
||||||
|
|
||||||
data = {
|
data["error"] = {
|
||||||
"error": {
|
"code": ex.args[0][0],
|
||||||
"code": ex.args[0][0],
|
"message": ex.args[0][1]
|
||||||
"message": ex.args[0][1]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(ex.args) >= 2:
|
if len(ex.args) >= 2:
|
||||||
data["error"]["related"] = ex.args[1]
|
data["error"]["related"] = ex.args[1]
|
||||||
|
|
||||||
return data
|
return data
|
||||||
except Exception:
|
|
||||||
|
except BaseException as err:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return {
|
data["error"] = {
|
||||||
"error": {
|
"code": API_ERROR_INTERNAL_ERROR[0],
|
||||||
"code": API_ERROR_INTERNAL_ERROR[0],
|
"message": API_ERROR_INTERNAL_ERROR[1],
|
||||||
"message": API_ERROR_INTERNAL_ERROR[1]
|
"related": f"Exception {type(err)}: {str(err)}"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return data
|
||||||
|
@ -102,6 +102,7 @@ def account_verify_phone(params):
|
|||||||
def account_get(params):
|
def account_get(params):
|
||||||
user = _reqire_access_token(params)
|
user = _reqire_access_token(params)
|
||||||
return api_make_response({
|
return api_make_response({
|
||||||
|
"id": user.id,
|
||||||
"name": user.name,
|
"name": user.name,
|
||||||
"surname": user.surname,
|
"surname": user.surname,
|
||||||
"email": user.email,
|
"email": user.email,
|
||||||
@ -152,7 +153,7 @@ api_methods = {
|
|||||||
"params": [
|
"params": [
|
||||||
|
|
||||||
],
|
],
|
||||||
"returns": "Поля пользователя (name, surname, email, phone, phone_verified)."
|
"returns": "Поля пользователя (id, name, surname, email, phone, phone_verified)."
|
||||||
},
|
},
|
||||||
|
|
||||||
"account.verifyPhone": {
|
"account.verifyPhone": {
|
||||||
|
@ -7,7 +7,7 @@ def __make_invalid_argument_type_error(name, value, except_type):
|
|||||||
|
|
||||||
|
|
||||||
def api_make_response(response):
|
def api_make_response(response):
|
||||||
return {"response": API_OK_OBJ | response}
|
return API_OK_OBJ | {"response": response}
|
||||||
|
|
||||||
|
|
||||||
def api_get_param_int(params: dict, name: str, required=True, default=0):
|
def api_get_param_int(params: dict, name: str, required=True, default=0):
|
||||||
|
@ -217,5 +217,18 @@ class Order(models.Model):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_all_for_user(user):
|
||||||
|
if user.is_staff:
|
||||||
|
return Order.objects.filter().order_by('create_time')
|
||||||
|
else:
|
||||||
|
return Order.objects.filter(published=True, moderated=True).order_by('create_time')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_for_user_by_id(user, order_id):
|
||||||
|
q = Order.get_all_for_user(user).filter(id=order_id)
|
||||||
|
if len(q) == 0:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return q[0]
|
||||||
|
|
||||||
|
@ -20,5 +20,6 @@ from . import views
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.orders_list, name='orders-list'),
|
path('', views.orders_list, name='orders-list'),
|
||||||
path('create', views.order_create, name='order-create'),
|
path('create', views.order_create, name='order-create'),
|
||||||
|
path('view/<int:order_id>', views.order_view, name='order-view'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from .forms import *
|
from .forms import *
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
|
||||||
|
|
||||||
def orders_list(request):
|
def orders_list(request):
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
if request.user.is_staff:
|
orders = Order.get_all_for_user(request.user)
|
||||||
orders = Order.objects.filter()
|
|
||||||
else:
|
|
||||||
orders = Order.objects.filter(published=True, moderated=True)
|
|
||||||
orders.order_by('create_time')
|
|
||||||
return render(request, 'orders/orders-list.html', {'orders': orders[:50]})
|
return render(request, 'orders/orders-list.html', {'orders': orders[:50]})
|
||||||
else:
|
else:
|
||||||
return HttpResponseRedirect('/accounts/register')
|
return HttpResponseRedirect('/accounts/register')
|
||||||
@ -36,3 +33,10 @@ def order_create(request):
|
|||||||
form = UnregisteredUserOrderCreationForm()
|
form = UnregisteredUserOrderCreationForm()
|
||||||
print(form.visible_fields)
|
print(form.visible_fields)
|
||||||
return render(request, 'orders/order-create.html', {'form': form})
|
return render(request, 'orders/order-create.html', {'form': form})
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def order_view(request, order_id):
|
||||||
|
order = Order.get_all_for_user(request.user)
|
||||||
|
order = order.select_related('address_city').get(id=order_id)
|
||||||
|
return render(request, 'orders/order-view.html', {"order": order})
|
||||||
|
39
templates/orders/order-view.html
Normal file
39
templates/orders/order-view.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block title %} Аккаунт | вход {% endblock %}
|
||||||
|
|
||||||
|
{% block styles %}
|
||||||
|
<style>
|
||||||
|
.field-wrapper {
|
||||||
|
margin: 1em;
|
||||||
|
padding: 1em;
|
||||||
|
border-left: var(--brand-color) solid 1px;
|
||||||
|
}
|
||||||
|
.field-wrapper > * {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.field-wrapper > span {
|
||||||
|
font-weight: bolder;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1 class=deprecated-page-header"> Заказ {{ order.name }} </h1>
|
||||||
|
|
||||||
|
<div class="field-wrapper">
|
||||||
|
<span>Описание:</span>
|
||||||
|
<p>{{ order.description }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field-wrapper">
|
||||||
|
<span>Дата создания:</span>
|
||||||
|
<p>{{ order.create_time }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field-wrapper">
|
||||||
|
<span>Город:</span>
|
||||||
|
<p>{{ order.address_city.name }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -18,7 +18,7 @@
|
|||||||
{% for order in orders %}
|
{% for order in orders %}
|
||||||
<div class="order-wrapper">
|
<div class="order-wrapper">
|
||||||
<span class="order-pub-date">{{ order.create_time }}</span>
|
<span class="order-pub-date">{{ order.create_time }}</span>
|
||||||
<h3>{{ order.name }}</h3>
|
<h3><a href="{% url 'order-view' order.id %}">{{ order.name }}</a></h3>
|
||||||
<p>{{ order.description }}</p>
|
<p>{{ order.description }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Reference in New Issue
Block a user