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):
|
||||
|
||||
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="Требуется дизайн проект",
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
<h3>тут должна быть форма создания заказа, собсна вот она</h3>
|
||||
|
||||
<form action="{% url 'order-create' %}" method="POST">
|
||||
<form action="{% url 'order-create' %}" method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{# <table>#}
|
||||
{# <tbody> <!-- такой вариант не катит, форма не будет такой как на сайте, придется писать все ручками... -->#}
|
||||
@ -57,8 +57,14 @@
|
||||
<div class="form-section-wrapper">
|
||||
<h2>Внешний вид</h2>
|
||||
<div>
|
||||
<h4>Тут будут картинки</h4>
|
||||
<h4>Тут будет файл проекта</h4>
|
||||
<div class="form-field-wrapper">
|
||||
<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>
|
||||
|
||||
|
Reference in New Issue
Block a user