Add order images model and test this model

This commit is contained in:
vlados31 2022-09-30 02:36:44 +03:00
parent 2c3445c889
commit 2a1fa6ce5e
7 changed files with 38 additions and 5 deletions

View File

@ -1,5 +1,3 @@
import traceback
from account.models import *
from .api_utils import * from .api_utils import *
from .models import * from .models import *
from django.core.exceptions import * from django.core.exceptions import *

View File

@ -130,6 +130,9 @@ USE_TZ = True
STATIC_URL = '/static/' STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "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 # Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field

View File

@ -15,7 +15,8 @@ Including another URLconf
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
@ -25,4 +26,4 @@ urlpatterns = [
path('dev/', include('dev.urls')), path('dev/', include('dev.urls')),
path('orders/', include('order.urls')), path('orders/', include('order.urls')),
path('', include('index.urls')), path('', include('index.urls')),
] ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -12,3 +12,8 @@ class CityAdmin(admin.ModelAdmin):
class OrderAdmin(admin.ModelAdmin): class OrderAdmin(admin.ModelAdmin):
list_display = ['owner', 'phone', 'name', 'create_time', 'moderated', 'published'] list_display = ['owner', 'phone', 'name', 'create_time', 'moderated', 'published']
readonly_fields = ['create_time'] readonly_fields = ['create_time']
@admin.register(OrderImage)
class OrderImageAdmin(admin.ModelAdmin):
pass

View File

@ -1,3 +1,5 @@
from hashlib import sha256
from django.core.exceptions import * from django.core.exceptions import *
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.db import models from django.db import models
@ -5,6 +7,7 @@ from django.db.models import Q
from account.models import SiteUser from account.models import SiteUser
from datetime import datetime from datetime import datetime
import os
class City(models.Model): class City(models.Model):
@ -232,3 +235,19 @@ class Order(models.Model):
else: else:
return q[0] 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}"

View File

@ -39,4 +39,5 @@ def order_create(request):
def order_view(request, order_id): def order_view(request, order_id):
order = Order.get_all_for_user(request.user) order = Order.get_all_for_user(request.user)
order = order.select_related('address_city').get(id=order_id) 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})

View File

@ -21,6 +21,12 @@
{% block content %} {% block content %}
<h1 class=deprecated-page-header"> Заказ {{ order.name }} </h1> <h1 class=deprecated-page-header"> Заказ {{ order.name }} </h1>
<div class="field-wrapper">
{% for i in images %}
<img src="{{ i.image.url }}" alt="image-{{ i.id }}">
{% endfor %}
</div>
<div class="field-wrapper"> <div class="field-wrapper">
<span>Описание:</span> <span>Описание:</span>
<p>{{ order.description }}</p> <p>{{ order.description }}</p>