ADD: ввод данных
This commit is contained in:
parent
fe9c554fb1
commit
b449e6f4d9
@ -35,6 +35,8 @@ body {
|
||||
font-family: "Lobster", sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
color: silver;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* НАВИГАЦИЯ - МЕНЮ */
|
||||
|
@ -11,9 +11,10 @@ class TbPetsClones(models.Model):
|
||||
"""Модель для хранения клонов питомцев"""
|
||||
class PetType(models.IntegerChoices):
|
||||
"""Тип питомца"""
|
||||
DOG = 1, "Собака"
|
||||
CAT = 2, "Кошка"
|
||||
BIR = 3, "Птица"
|
||||
DOG = 1, "Собачка"
|
||||
CAT = 2, "Кошечка"
|
||||
BIR = 3, "Птичка"
|
||||
FIS = 6, "Рыбка"
|
||||
ROD = 4, "Грызун"
|
||||
REP = 5, "Рептилия"
|
||||
OTH = 0, "Неизвестная зверушка"
|
||||
@ -93,8 +94,12 @@ class TbPetsClones(models.Model):
|
||||
def __str__(self):
|
||||
return self.__unicode__()
|
||||
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.szPetName == "":
|
||||
# если имя не задано, то генерируем его
|
||||
self.szPetName = (f"{chr(random.randint(65, 90))}"
|
||||
f"{chr(random.randint(65, 90))}"
|
||||
f"{chr(random.randint(65, 90))}")
|
||||
if not self.pk:
|
||||
# если объект новый, то генерируем серийный номер
|
||||
self.szPetSerNum = (f"{pytils.translit.slugify(self.szPetName)[:3].upper()}"
|
||||
|
@ -28,6 +28,9 @@ urlpatterns = [
|
||||
re_path(r'^logout$', views.my_logout),
|
||||
re_path(r'^login$', views.my_login),
|
||||
re_path(r'^not-auth$', views.not_auth),
|
||||
re_path(r'add-clone$', views.add_clone),
|
||||
re_path(r'save-clone$', views.save_clone),
|
||||
|
||||
]
|
||||
|
||||
# Обработчики ошибок
|
||||
|
@ -3,6 +3,8 @@ from django.shortcuts import render, HttpResponseRedirect
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.template.exceptions import TemplateDoesNotExist, TemplateSyntaxError
|
||||
from rosmorport_tsts.models import TbPetsClones
|
||||
|
||||
|
||||
|
||||
def index(request: HttpRequest) -> HttpResponse:
|
||||
@ -57,3 +59,36 @@ def not_auth(request: HttpRequest) -> HttpResponse:
|
||||
"""
|
||||
to_template = {"META_REFRESH": "15; url=/"}
|
||||
return render(request, template_name="not_auth.jinja", context=to_template, status=401)
|
||||
|
||||
|
||||
def add_clone(request: HttpRequest) -> HttpResponse:
|
||||
""" Добавление клонированного питомца
|
||||
|
||||
:param
|
||||
:return response: исходящий http-ответ
|
||||
"""
|
||||
to_template = {
|
||||
"META_REFRESH": "3600; url=/logout", # автоматический logout через 1 час бездействия
|
||||
"PET_TYPES": TbPetsClones.PetType.choices,
|
||||
"PET_SEXES": TbPetsClones.PetSex.choices
|
||||
}
|
||||
return render(request, template_name="input_data.jinja", context=to_template)
|
||||
|
||||
|
||||
def save_clone(request: HttpRequest) -> HttpResponse:
|
||||
""" Сохранение записи о клонированном питомце
|
||||
|
||||
:param
|
||||
:return response: исходящий http-ответ
|
||||
"""
|
||||
to_template = {
|
||||
"META_REFRESH": "2; url=/add-clone", # автоматический
|
||||
}
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
print(request.POST['pay'])
|
||||
print(request.POST)
|
||||
except KeyError:
|
||||
return HttpResponseRedirect('/add-clone')
|
||||
return render(request, template_name="save_data.jinja", context=to_template)
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{% block CONTENT %}<div class="position-relative" style="height: 90vh;">
|
||||
<div class="position-absolute top-50 start-50 translate-middle">
|
||||
<p style="color: slategray" class="text-sm-end small mb-0 me-2">решены проблемы любви и пропитания</p>
|
||||
<h1 style="color: silver" id="index-logo" class="my-0">Клонирование домашних питомцев</h1>
|
||||
<p style="color: slategray" class="text-sm-end small mb-0 me-2">анонимные решения проблем любви и пропитания</p>
|
||||
<h1 id="index-logo" class="my-0">Клонир<u>ование питом</u>цев</h1>
|
||||
</div>
|
||||
</div>{% endblock CONTENT %}
|
72
rosmorport_tsts/templates-django/input_data.jinja
Normal file
72
rosmorport_tsts/templates-django/input_data.jinja
Normal file
@ -0,0 +1,72 @@
|
||||
{% extends 'base.jinja' %}
|
||||
|
||||
{% block CONTENT %}<form action="/save-clone" method="post">
|
||||
<div class="row">
|
||||
<div class="col-12 px-4 my-2">
|
||||
<h1>Регистрация клонированного питомца</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row px-3">
|
||||
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-3">
|
||||
<span class="input-group-text" id="pet-type"><i class="fa-solid fa-paw"></i></span>
|
||||
<select class="form-select" aria-label="Тип питомца" name="type">{% for TYPE in PET_TYPES %}
|
||||
<option{% if forloop.last %} selected{% endif %} value="{{ TYPE.0 }}">{{ TYPE.1 }}</option>{% endfor %}
|
||||
</select>
|
||||
<select class="form-select" aria-label="Пол" name="sex">{% for SEX in PET_SEXES %}
|
||||
<option{% if forloop.last %} selected{% endif %} value="{{ SEX.0 }}">{{ SEX.1 }}</option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-3">
|
||||
<div class="form-check pt-2 mb-3">
|
||||
<input class="form-check-input" type="checkbox" value="1" id="IsAlive" name="is-alive" checked>
|
||||
<label class="form-check-label" for="IsAlive">
|
||||
Живой
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-6">
|
||||
<div class="input-group mb-3">
|
||||
<span class="input-group-text" id="basic-addon1"><i class="fa-solid fa-paw"></i></span>
|
||||
<input type="text" class="form-control" placeholder="имя питомца с которого сделан клон" aria-label="name"
|
||||
name="name">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-9">
|
||||
<div class="input-group mb-3">
|
||||
<span class="input-group-text" id="basic-addon1"><i class="fa-solid fa-comment mb-5 pb-5"></i></span>
|
||||
<textarea class="form-control" aria-label="note" rows="6" name="note"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<div class="input-group input-group-lg mb-3">
|
||||
<span class="input-group-text ps-3 pe-2 py-3 bg-dark text-light" id="basic-addon1"><i class="fa-solid fa-ruble-sign"></i></span>
|
||||
<input type="text" class="form-control" placeholder="Заплачено наличными" aria-label="Заплачено"
|
||||
name="pay" required>
|
||||
<span class="input-group-text">.00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-3">
|
||||
<div class="form-check pt-3 mb-3">
|
||||
<input class="form-check-input" type="checkbox" value="1" id="reg">
|
||||
<label class="form-check-label" for="flexCheckDefault">
|
||||
Без регистрации
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row px-3">
|
||||
<div class="col-12">
|
||||
{% csrf_token %}
|
||||
<a type="button" class="btn btn-secondary" href="/">Отмена</a>
|
||||
<button type="submit" class="btn btn-primary ms-2">Регистрация</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>{% endblock CONTENT %}
|
22
rosmorport_tsts/templates-django/save_data.jinja
Normal file
22
rosmorport_tsts/templates-django/save_data.jinja
Normal file
@ -0,0 +1,22 @@
|
||||
{% extends 'base.jinja' %}{% block CONTENT %}<div class="position-relative" style="height: 90vh;">
|
||||
<div class="position-absolute top-50 start-50 translate-middle">
|
||||
<div class="progress mb-3" role="progressbar" aria-label="клонирование" aria-valuemin="0" aria-valuemax="100">
|
||||
<div id="progress-bar" class="progress-bar progress-bar-striped progress-bar-animated" style="width: 1%"></div>
|
||||
</div>
|
||||
<p style="color: slategray" class="text-sm-end small mb-0 me-2">анонимные решения проблем любви и пропитания</p>
|
||||
<h1 id="index-logo" class="my-0">Клонир<u>ование питом</u>цев</h1>
|
||||
</div>
|
||||
</div>{% endblock CONTENT %}
|
||||
|
||||
{% block JS_1 %}<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
let count = 2;
|
||||
const counter = setInterval(function () {
|
||||
if (count++ > 100) {
|
||||
clearInterval(counter);
|
||||
return;
|
||||
}
|
||||
$('#progress-bar').css('width', count + '%');
|
||||
}, 10);
|
||||
});
|
||||
</script>{% endblock %}
|
Loading…
Reference in New Issue
Block a user