Add images in order form
This commit is contained in:
parent
0362fbcae6
commit
9918e7f5b5
@ -4,7 +4,6 @@ from .models import *
|
|||||||
|
|
||||||
|
|
||||||
class BaseOrderCreationForm(forms.ModelForm):
|
class BaseOrderCreationForm(forms.ModelForm):
|
||||||
|
|
||||||
type_of_room = forms.ChoiceField(choices=Order.TYPE_OF_ROOM_CHOICES, required=False, label="Тип квартиры",
|
type_of_room = forms.ChoiceField(choices=Order.TYPE_OF_ROOM_CHOICES, required=False, label="Тип квартиры",
|
||||||
widget=forms.RadioSelect(attrs={"class": "inline-input"}))
|
widget=forms.RadioSelect(attrs={"class": "inline-input"}))
|
||||||
is_require_design = forms.ChoiceField(choices=Order.REQUIRED_DESIGN_CHOICES, label="Требуется дизайн проект",
|
is_require_design = forms.ChoiceField(choices=Order.REQUIRED_DESIGN_CHOICES, label="Требуется дизайн проект",
|
||||||
|
@ -238,11 +238,13 @@ class Order(models.Model):
|
|||||||
|
|
||||||
def _upload_image_filename(instance, filename):
|
def _upload_image_filename(instance, filename):
|
||||||
name, ext = os.path.splitext(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
|
return "order-images/" + fn
|
||||||
|
|
||||||
|
|
||||||
class OrderImage(models.Model):
|
class OrderImage(models.Model):
|
||||||
|
MAX_IMAGES = 10
|
||||||
|
|
||||||
order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="order", verbose_name="Заказ")
|
order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="order", verbose_name="Заказ")
|
||||||
image = models.ImageField(upload_to=_upload_image_filename, verbose_name="Картинка",
|
image = models.ImageField(upload_to=_upload_image_filename, verbose_name="Картинка",
|
||||||
width_field=None, height_field=None)
|
width_field=None, height_field=None)
|
||||||
|
@ -23,6 +23,10 @@ def order_create(request):
|
|||||||
form = BaseOrderCreationForm(request.POST, instance=order)
|
form = BaseOrderCreationForm(request.POST, instance=order)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
|
# сохраним файлы
|
||||||
|
files = request.FILES.getlist('images')
|
||||||
|
for img in files[:OrderImage.MAX_IMAGES]:
|
||||||
|
OrderImage(order=order, image=img).save()
|
||||||
return HttpResponseRedirect('/orders/')
|
return HttpResponseRedirect('/orders/')
|
||||||
else:
|
else:
|
||||||
form = BaseOrderCreationForm()
|
form = BaseOrderCreationForm()
|
||||||
@ -32,10 +36,14 @@ def order_create(request):
|
|||||||
form = UnregisteredUserOrderCreationForm(request.POST, instance=order)
|
form = UnregisteredUserOrderCreationForm(request.POST, instance=order)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
|
# сохраним файлы
|
||||||
|
files = request.FILES.getlist('images')
|
||||||
|
for img in files[:OrderImage.MAX_IMAGES]:
|
||||||
|
OrderImage(order=order, image=img).save()
|
||||||
return HttpResponseRedirect('/dev')
|
return HttpResponseRedirect('/dev')
|
||||||
else:
|
else:
|
||||||
form = UnregisteredUserOrderCreationForm()
|
form = UnregisteredUserOrderCreationForm()
|
||||||
print(form.visible_fields)
|
|
||||||
return render(request, 'orders/order-create.html', {'form': form})
|
return render(request, 'orders/order-create.html', {'form': form})
|
||||||
|
|
||||||
|
|
||||||
@ -62,6 +70,7 @@ def order_view(request, order_id):
|
|||||||
except Exception:
|
except Exception:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
render_vars["order"] = None
|
render_vars["order"] = None
|
||||||
|
|
||||||
return render(request, 'orders/order-view.html', render_vars)
|
return render(request, 'orders/order-view.html', render_vars)
|
||||||
|
|
||||||
|
|
||||||
@ -72,13 +81,10 @@ def order_respond(request, order_id):
|
|||||||
action = None
|
action = None
|
||||||
if "action" in request.POST:
|
if "action" in request.POST:
|
||||||
action = request.POST["action"]
|
action = request.POST["action"]
|
||||||
else:
|
|
||||||
print("order_respond: no action param found!")
|
|
||||||
|
|
||||||
if action == "respond":
|
if action == "respond":
|
||||||
r = OrderRespond(order_id=order_id, user=request.user)
|
r = OrderRespond(order_id=order_id, user=request.user)
|
||||||
r.save()
|
r.save()
|
||||||
print("order_respond: save respond!")
|
|
||||||
|
|
||||||
if action == "unrespond":
|
if action == "unrespond":
|
||||||
OrderRespond.objects.filter(order_id=order_id, user=request.user).delete()
|
OrderRespond.objects.filter(order_id=order_id, user=request.user).delete()
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<h3>тут должна быть форма создания заказа, собсна вот она</h3>
|
<h3>тут должна быть форма создания заказа, собсна вот она</h3>
|
||||||
|
|
||||||
<form action="{% url 'order-create' %}" method="POST">
|
<form action="{% url 'order-create' %}" method="POST" enctype="multipart/form-data">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{# <table>#}
|
{# <table>#}
|
||||||
{# <tbody> <!-- такой вариант не катит, форма не будет такой как на сайте, придется писать все ручками... -->#}
|
{# <tbody> <!-- такой вариант не катит, форма не будет такой как на сайте, придется писать все ручками... -->#}
|
||||||
@ -57,8 +57,14 @@
|
|||||||
<div class="form-section-wrapper">
|
<div class="form-section-wrapper">
|
||||||
<h2>Внешний вид</h2>
|
<h2>Внешний вид</h2>
|
||||||
<div>
|
<div>
|
||||||
<h4>Тут будут картинки</h4>
|
<div class="form-field-wrapper">
|
||||||
<h4>Тут будет файл проекта</h4>
|
<label for="input-images">Фотографии</label>
|
||||||
|
<input id="input-images" type="file" name="images" accept="image/png, image/webp, image/jpeg" multiple size="3">
|
||||||
|
</div>
|
||||||
|
<div class="form-field-wrapper">
|
||||||
|
<label for="input-project-file">Проект помещения</label>
|
||||||
|
<input id="input-project-file" type="file" name="project-file" accept="application/pdf">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user