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 collections import OrderedDict
from django.http import JsonResponse from django.http import JsonResponse, HttpResponse
from django.shortcuts import render from django.shortcuts import render
from django.template import loader
from .models import Tea, TeaType, TeaCategory, Pic from .models import Tea, TeaType, TeaCategory, Pic
# Create your views here. # Create your views here.
from .utils import get_extension from .utils import get_extension
def list(request): def list_of_teas():
dic = OrderedDict() dic = OrderedDict()
for cat in TeaCategory.objects.all(): for cat in TeaCategory.objects.all():
dic[cat.name] = OrderedDict() dic[cat.name] = OrderedDict()
@ -16,8 +19,19 @@ def list(request):
if tt.preferred is not None: if tt.preferred is not None:
dic[tt.category.name][tt.name] = OrderedDict() dic[tt.category.name][tt.name] = OrderedDict()
dic[tt.category.name][tt.name]['preferred'] = tt.preferred.name 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( dic[tt.category.name][tt.name]['pic'] = str(tt.preferred.pic.id) + '.' + get_extension(
tt.preferred.pic.href) 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.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'corsheaders',
'choose' 'choose'
] ]
@ -46,6 +47,7 @@ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
@ -127,3 +129,8 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = f'{BASE_DIR}/media' MEDIA_ROOT = f'{BASE_DIR}/media'
MEDIA_URL = '/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 = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('list', choose.views.list) path('', choose.views.home),
path('confirm-choice', choose.views.confirm_choose)
] ]
if settings.DEBUG: if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Loading…
Cancel
Save