Compare commits
No commits in common. "b7e313e9572888524aee8ca1380770a04da3d750" and "d54d77dd88cbc76b5e9c4895839d496286461351" have entirely different histories.
b7e313e957
...
d54d77dd88
@ -152,8 +152,6 @@ class ArticleDraftPreviewView(MenuContextMixin, BreadcrumbMixin, DetailView):
|
|||||||
model = Article
|
model = Article
|
||||||
template_name = 'blog/article_detail.html' # используем тот же шаблон
|
template_name = 'blog/article_detail.html' # используем тот же шаблон
|
||||||
context_object_name = 'article'
|
context_object_name = 'article'
|
||||||
slug_field = 'slug'
|
|
||||||
slug_url_kwarg = 'slug'
|
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
# Для предпросмотра показываем даже неопубликованные статьи
|
# Для предпросмотра показываем даже неопубликованные статьи
|
||||||
|
|||||||
@ -4,7 +4,6 @@ from django.shortcuts import render
|
|||||||
from django_ckeditor_5.widgets import CKEditor5Widget
|
from django_ckeditor_5.widgets import CKEditor5Widget
|
||||||
from .models import ProductCategory, Configuration, Product, Order
|
from .models import ProductCategory, Configuration, Product, Order
|
||||||
from programmer.utils.email_notifications import send_multiple_order_notifications, send_multiple_order_notifications_async
|
from programmer.utils.email_notifications import send_multiple_order_notifications, send_multiple_order_notifications_async
|
||||||
from django.urls import reverse
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ProductCategory)
|
@admin.register(ProductCategory)
|
||||||
@ -58,12 +57,6 @@ class ProductAdmin(admin.ModelAdmin):
|
|||||||
return ", ".join(c.name for c in obj.configurations.all())
|
return ", ".join(c.name for c in obj.configurations.all())
|
||||||
configurations_list.short_description = "Конфигурации"
|
configurations_list.short_description = "Конфигурации"
|
||||||
|
|
||||||
def view_on_site(self, obj):
|
|
||||||
if obj.is_published:
|
|
||||||
return obj.get_absolute_url()
|
|
||||||
# Для неопубликованных — ссылка на предпросмотр
|
|
||||||
return reverse('products:product_draft_preview', args=[obj.slug])
|
|
||||||
|
|
||||||
def make_published(self, request, queryset):
|
def make_published(self, request, queryset):
|
||||||
queryset.update(is_published=True)
|
queryset.update(is_published=True)
|
||||||
make_published.short_description = "Опубликовать выбранные продукты"
|
make_published.short_description = "Опубликовать выбранные продукты"
|
||||||
|
|||||||
@ -7,5 +7,4 @@ urlpatterns = [
|
|||||||
path('', views.ProductListView.as_view(), name='product_list'),
|
path('', views.ProductListView.as_view(), name='product_list'),
|
||||||
path('<slug:slug>/', views.ProductDetailView.as_view(), name='product_detail'),
|
path('<slug:slug>/', views.ProductDetailView.as_view(), name='product_detail'),
|
||||||
path('order/<slug:slug>/', views.order_create, name='order_create'),
|
path('order/<slug:slug>/', views.order_create, name='order_create'),
|
||||||
path('draft/<slug:slug>/', views.ProductDraftPreviewView.as_view(), name='product_draft_preview'),
|
|
||||||
]
|
]
|
||||||
@ -1,4 +1,4 @@
|
|||||||
from django.views.generic import ListView, DetailView, DetailView
|
from django.views.generic import ListView, DetailView
|
||||||
from programmer.mixins import MenuContextMixin, BreadcrumbMixin
|
from programmer.mixins import MenuContextMixin, BreadcrumbMixin
|
||||||
from .models import Product, ProductCategory, Configuration
|
from .models import Product, ProductCategory, Configuration
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
@ -8,8 +8,6 @@ from .forms import OrderForm
|
|||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from programmer.utils.email_notifications import send_order_notification, send_order_notification_async
|
from programmer.utils.email_notifications import send_order_notification, send_order_notification_async
|
||||||
from django.utils.decorators import method_decorator
|
|
||||||
from django.contrib.admin.views.decorators import staff_member_required
|
|
||||||
|
|
||||||
|
|
||||||
class ProductListView(MenuContextMixin, BreadcrumbMixin, ListView):
|
class ProductListView(MenuContextMixin, BreadcrumbMixin, ListView):
|
||||||
@ -134,16 +132,6 @@ class ProductDetailView(MenuContextMixin, BreadcrumbMixin, DetailView):
|
|||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(staff_member_required, name='dispatch')
|
|
||||||
class ProductDraftPreviewView(DetailView):
|
|
||||||
model = Product
|
|
||||||
template_name = 'products/product_detail.html'
|
|
||||||
context_object_name = 'product'
|
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
# Показываем все продукты (включая неопубликованные) только для персонала
|
|
||||||
return Product.objects.all()
|
|
||||||
|
|
||||||
|
|
||||||
def order_create(request, slug):
|
def order_create(request, slug):
|
||||||
product = get_object_or_404(Product, slug=slug, is_published=True)
|
product = get_object_or_404(Product, slug=slug, is_published=True)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user