master
paov 4 years ago
parent 203664e1ca
commit 3dcbeb9284
  1. 105
      choose/templates/choose.html
  2. 22
      choose/views.py
  3. 7
      tea/settings.py
  4. 3
      tea/urls.py

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
{% for category_name,category in categories.items %}
<tr>
<td colspan="2">
<h3>{{ category_name }}</h3>
</td>
{% for type_name,type in category.items %}
<tr>
<td>
<label for="{{ type_name }}">{{ type_name }}[{{ type.price }}]:</label>
</td>
<td>
<select name="{{ type_name }}" id="{{ type_name }}" onchange="change(value, '{{ type_name }}')">
{% for m in ms %}
<option value="{{ m }}">{{ m }}</option>
{% endfor %}
</select>
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
<h3 id="sum_h">0</h3>
<button onclick="confirm_choice()" id="confirm_button">Подтвердить</button>
</body>
<script>
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getCookie('csrftoken');
choice = {}
a = {
{% for category_name,category in categories.items %}
{% for type_name,type in category.items %}
"{{ type_name }}": {
{% for key,item in type.items%}
"{{ key }}": "{{ item }}",
{% endfor %}
},
{% endfor %}
{% endfor %}
}
function change(value, type) {
choice[type] = parseInt(value)
sum_price()
}
function sum_price() {
s = 0
for (let tea in choice) {
s += choice[tea] / 50 * parseInt(a[tea].price)
}
const butt = document.getElementById('confirm_button');
const sum_h = document.getElementById('sum_h');
sum_h.innerText = s
if (s > 7000) {
butt.disabled = true
sum_h.style.color = "red"
} else {
butt.disabled = false
sum_h.style.color = "black"
}
}
function confirm_choice() {
const request = new Request(
'confirm-choice',
{
method: 'POST',
headers: {'X-CSRFToken': csrftoken},
mode: 'same-origin',
body: JSON.stringify(choice)
}
);
fetch(request).then((response) => response.json())
.then((data) => {
console.log(data);
})
}
</script>
</html>

@ -1,13 +1,16 @@
import json
from collections import OrderedDict
from django.http import JsonResponse
from django.http import JsonResponse, HttpResponse
from django.shortcuts import render
from django.template import loader
from .models import Tea, TeaType, TeaCategory, Pic
# Create your views here.
from .utils import get_extension
def list(request):
def list_of_teas():
dic = OrderedDict()
for cat in TeaCategory.objects.all():
dic[cat.name] = OrderedDict()
@ -16,8 +19,19 @@ def list(request):
if tt.preferred is not None:
dic[tt.category.name][tt.name] = OrderedDict()
dic[tt.category.name][tt.name]['preferred'] = tt.preferred.name
dic[tt.category.name][tt.name]['price'] = tt.preferred.price
dic[tt.category.name][tt.name]['price'] = int(tt.preferred.price / 100)
dic[tt.category.name][tt.name]['pic'] = str(tt.preferred.pic.id) + '.' + get_extension(
tt.preferred.pic.href)
return JsonResponse(dic, json_dumps_params={'ensure_ascii': False})
return {'categories': dic, 'ms': [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500]}
def home(request):
context = list_of_teas()
template = loader.get_template('choose.html')
return HttpResponse(template.render(context, request))
def confirm_choose(request):
choice = json.loads(request.body.decode(encoding='UTF-8'))
return JsonResponse({'response': 'ok'})

@ -39,6 +39,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'choose'
]
@ -46,6 +47,7 @@ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
@ -127,3 +129,8 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = f'{BASE_DIR}/media'
MEDIA_URL = '/media/'
CORS_ORIGIN_WHITELIST = [
'http://10.15.0.1:8000',
'http://localhost:8000',
'http://127.0.0.1:9000'
]

@ -22,7 +22,8 @@ import choose.views
urlpatterns = [
path('admin/', admin.site.urls),
path('list', choose.views.list)
path('', choose.views.home),
path('confirm-choice', choose.views.confirm_choose)
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Loading…
Cancel
Save