From 9918e7f5b59a1f2baea1b5c9bafa07d4d138e4e0 Mon Sep 17 00:00:00 2001 From: vlados31 Date: Mon, 3 Oct 2022 10:38:45 +0300 Subject: [PATCH] Add images in order form --- order/forms.py | 1 - order/models.py | 4 +++- order/views.py | 14 ++++++++++---- templates/orders/order-create.html | 12 +++++++++--- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/order/forms.py b/order/forms.py index e9c0261..1b7e743 100644 --- a/order/forms.py +++ b/order/forms.py @@ -4,7 +4,6 @@ from .models import * class BaseOrderCreationForm(forms.ModelForm): - type_of_room = forms.ChoiceField(choices=Order.TYPE_OF_ROOM_CHOICES, required=False, label="Тип квартиры", widget=forms.RadioSelect(attrs={"class": "inline-input"})) is_require_design = forms.ChoiceField(choices=Order.REQUIRED_DESIGN_CHOICES, label="Требуется дизайн проект", diff --git a/order/models.py b/order/models.py index 02e961a..00582cb 100644 --- a/order/models.py +++ b/order/models.py @@ -238,11 +238,13 @@ class Order(models.Model): def _upload_image_filename(instance, filename): name, ext = os.path.splitext(filename) - fn = sha256(str(datetime.now()).encode('utf-8')).hexdigest() + ext + fn = sha256((str(datetime.now()) + name).encode('utf-8')).hexdigest() + ext return "order-images/" + fn class OrderImage(models.Model): + MAX_IMAGES = 10 + order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="order", verbose_name="Заказ") image = models.ImageField(upload_to=_upload_image_filename, verbose_name="Картинка", width_field=None, height_field=None) diff --git a/order/views.py b/order/views.py index 0ff291f..e82f3d7 100644 --- a/order/views.py +++ b/order/views.py @@ -23,6 +23,10 @@ def order_create(request): form = BaseOrderCreationForm(request.POST, instance=order) if form.is_valid(): form.save() + # сохраним файлы + files = request.FILES.getlist('images') + for img in files[:OrderImage.MAX_IMAGES]: + OrderImage(order=order, image=img).save() return HttpResponseRedirect('/orders/') else: form = BaseOrderCreationForm() @@ -32,10 +36,14 @@ def order_create(request): form = UnregisteredUserOrderCreationForm(request.POST, instance=order) if form.is_valid(): form.save() + # сохраним файлы + files = request.FILES.getlist('images') + for img in files[:OrderImage.MAX_IMAGES]: + OrderImage(order=order, image=img).save() return HttpResponseRedirect('/dev') else: form = UnregisteredUserOrderCreationForm() - print(form.visible_fields) + return render(request, 'orders/order-create.html', {'form': form}) @@ -62,6 +70,7 @@ def order_view(request, order_id): except Exception: traceback.print_exc() render_vars["order"] = None + return render(request, 'orders/order-view.html', render_vars) @@ -72,13 +81,10 @@ def order_respond(request, order_id): action = None if "action" in request.POST: action = request.POST["action"] - else: - print("order_respond: no action param found!") if action == "respond": r = OrderRespond(order_id=order_id, user=request.user) r.save() - print("order_respond: save respond!") if action == "unrespond": OrderRespond.objects.filter(order_id=order_id, user=request.user).delete() diff --git a/templates/orders/order-create.html b/templates/orders/order-create.html index 0626040..5d1409d 100644 --- a/templates/orders/order-create.html +++ b/templates/orders/order-create.html @@ -42,7 +42,7 @@

тут должна быть форма создания заказа, собсна вот она

-
+ {% csrf_token %} {# #} {# #} @@ -57,8 +57,14 @@

Внешний вид

-

Тут будут картинки

-

Тут будет файл проекта

+
+ + +
+
+ + +