diff --git a/api/api_methods.py b/api/api_methods.py index 3b0b125..798446b 100644 --- a/api/api_methods.py +++ b/api/api_methods.py @@ -1,5 +1,3 @@ -import traceback -from account.models import * from .api_utils import * from .models import * from django.core.exceptions import * diff --git a/arka/settings.py b/arka/settings.py index 0e7a308..58557e7 100644 --- a/arka/settings.py +++ b/arka/settings.py @@ -130,6 +130,9 @@ USE_TZ = True STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] +MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') + # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field diff --git a/arka/urls.py b/arka/urls.py index 3ef3248..e5c206f 100644 --- a/arka/urls.py +++ b/arka/urls.py @@ -15,7 +15,8 @@ Including another URLconf """ from django.contrib import admin from django.urls import path, include - +from django.conf.urls.static import static +from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), @@ -25,4 +26,4 @@ urlpatterns = [ path('dev/', include('dev.urls')), path('orders/', include('order.urls')), path('', include('index.urls')), -] +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/order/admin.py b/order/admin.py index 791e6d2..5826a95 100644 --- a/order/admin.py +++ b/order/admin.py @@ -12,3 +12,8 @@ class CityAdmin(admin.ModelAdmin): class OrderAdmin(admin.ModelAdmin): list_display = ['owner', 'phone', 'name', 'create_time', 'moderated', 'published'] readonly_fields = ['create_time'] + + +@admin.register(OrderImage) +class OrderImageAdmin(admin.ModelAdmin): + pass diff --git a/order/models.py b/order/models.py index ae7965a..82e272c 100644 --- a/order/models.py +++ b/order/models.py @@ -1,3 +1,5 @@ +from hashlib import sha256 + from django.core.exceptions import * from django.core.validators import RegexValidator from django.db import models @@ -5,6 +7,7 @@ from django.db.models import Q from account.models import SiteUser from datetime import datetime +import os class City(models.Model): @@ -232,3 +235,19 @@ class Order(models.Model): else: return q[0] + +def _upload_image_filename(instance, filename): + name, ext = os.path.splitext(filename) + fn = sha256(str(datetime.now()).encode('utf-8')).hexdigest() + ext + return "order-images/" + fn + + +class OrderImage(models.Model): + 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) + + def __str__(self): + return f"{self.id}: {self.order}" + + diff --git a/order/views.py b/order/views.py index 96db3f4..97c28a1 100644 --- a/order/views.py +++ b/order/views.py @@ -39,4 +39,5 @@ def order_create(request): def order_view(request, order_id): order = Order.get_all_for_user(request.user) order = order.select_related('address_city').get(id=order_id) - return render(request, 'orders/order-view.html', {"order": order}) + images = OrderImage.objects.filter(order=order) + return render(request, 'orders/order-view.html', {"order": order, "images": images}) diff --git a/templates/orders/order-view.html b/templates/orders/order-view.html index e85fd2d..08eaba9 100644 --- a/templates/orders/order-view.html +++ b/templates/orders/order-view.html @@ -21,6 +21,12 @@ {% block content %}
{{ order.description }}