feat: implement order management and checkout functionality
All checks were successful
Build and Push Docker Image / build (push) Successful in 50s

- Added `Order` and `OrderItem` models with migrations for managing orders and their details
- Created `CheckoutForm` for validating order data and customer information
- Built templates for order confirmation, checkout success, and emails (HTML and plain text)
- Added logic for email notifications upon successful order placement
- Enhanced shopping cart template with checkout panel integration
- Updated styles and JavaScript for streamlined checkout UX
- Refactored cart view to support item summaries and final totals during checkout
This commit is contained in:
2026-05-25 16:45:42 +02:00
parent 438d547fb4
commit 81e30f853d
16 changed files with 1271 additions and 262 deletions

View File

@@ -0,0 +1,53 @@
{% extends "_layouts/base.html" %}
{% load static %}
{% block title %}Оплата прошла успешно{% endblock %}
{% block add_css %}
<link rel="stylesheet" href="{% static "css/cart.css" %}">
{% endblock %}
{% block content %}
{% include "_fragments/header.html" %}
{% include '_fragments/breadcrumbs.html' with url_1='/' text_1='Главная' url_2='/orders/cart/' text_2='Корзина' url_3=request.path text_3='Заказ оплачен' %}
<main class="container cart-page">
<section class="order-success">
<p class="order-success__eyebrow">Оплата прошла успешно</p>
<h1>Заказ №{{ order.id }} оформлен</h1>
<p class="order-success__lead">
Мы отправили письмо с деталями заказа на {{ order.email }}. Менеджер свяжется с вами при необходимости.
</p>
<div class="order-success__summary">
<div>
<span>Получатель</span>
<strong>{{ order.customer_name }}</strong>
</div>
<div>
<span>Способ доставки</span>
<strong>{{ order.get_delivery_method_display }}</strong>
</div>
<div>
<span>Способ оплаты</span>
<strong>{{ order.get_payment_method_display }}</strong>
</div>
<div>
<span>Итого</span>
<strong>{{ order.total }} руб.</strong>
</div>
</div>
<div class="order-success__items">
{% for item in order.items.all %}
<p><span>{{ item.item_name }} × {{ item.quantity }}</span><strong>{{ item.line_total }} руб.</strong></p>
{% endfor %}
</div>
<a class="order-success__link" href="/catalog/">Вернуться в каталог</a>
</section>
</main>
{% include "_fragments/footer.html" %}
{% endblock %}