add new site
This commit is contained in:
parent
73a1b8032a
commit
a3ebab0585
|
@ -51,6 +51,7 @@ class SeoAdmin(admin.ModelAdmin):
|
||||||
"""
|
"""
|
||||||
return bool(obj.image)
|
return bool(obj.image)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Page)
|
@admin.register(Page)
|
||||||
class PageAdmin(admin.ModelAdmin):
|
class PageAdmin(admin.ModelAdmin):
|
||||||
"""
|
"""
|
||||||
|
@ -65,6 +66,7 @@ class PageAdmin(admin.ModelAdmin):
|
||||||
"slug_preview", # Кастомное поле для предпросмотра slug
|
"slug_preview", # Кастомное поле для предпросмотра slug
|
||||||
"has_image", # Кастомное поле для проверки наличия изображения
|
"has_image", # Кастомное поле для проверки наличия изображения
|
||||||
"external_link", # Внешняя ссылка
|
"external_link", # Внешняя ссылка
|
||||||
|
"site", # Новое поле для выбора сайта
|
||||||
)
|
)
|
||||||
|
|
||||||
# Поля, по которым можно выполнять поиск
|
# Поля, по которым можно выполнять поиск
|
||||||
|
@ -73,17 +75,27 @@ class PageAdmin(admin.ModelAdmin):
|
||||||
"title",
|
"title",
|
||||||
"slug",
|
"slug",
|
||||||
"content",
|
"content",
|
||||||
|
"site", # Добавляем поиск по полю site
|
||||||
)
|
)
|
||||||
|
|
||||||
# Фильтры для боковой панели
|
# Фильтры для боковой панели
|
||||||
list_filter = ("order",)
|
list_filter = (
|
||||||
|
"order",
|
||||||
|
"site", # Фильтр по сайту
|
||||||
|
)
|
||||||
|
|
||||||
# Поля, которые будут показаны в форме редактирования
|
# Поля, которые будут показаны в форме редактирования
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(
|
(
|
||||||
"Основная информация",
|
"Основная информация",
|
||||||
{
|
{
|
||||||
"fields": ("order", "menu_title", "title", "slug"),
|
"fields": (
|
||||||
|
"order",
|
||||||
|
"menu_title",
|
||||||
|
"title",
|
||||||
|
"slug",
|
||||||
|
"site",
|
||||||
|
), # Добавляем site
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
@ -213,7 +225,7 @@ class Ref1CAdmin(admin.ModelAdmin):
|
||||||
"sync_enabled",
|
"sync_enabled",
|
||||||
"default_value",
|
"default_value",
|
||||||
"last_sync_price",
|
"last_sync_price",
|
||||||
"description",
|
"description",
|
||||||
"last_updated",
|
"last_updated",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -235,7 +247,7 @@ class Ref1CAdmin(admin.ModelAdmin):
|
||||||
"sync_enabled",
|
"sync_enabled",
|
||||||
"default_value",
|
"default_value",
|
||||||
"last_sync_price",
|
"last_sync_price",
|
||||||
"description",
|
"description",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Добавляем поле "последнее обновление" (только для чтения)
|
# Добавляем поле "последнее обновление" (только для чтения)
|
||||||
|
@ -255,6 +267,7 @@ class Ref1CAdmin(admin.ModelAdmin):
|
||||||
# Если вы хотите отслеживать время обновления, добавьте поле updated_at в модель
|
# Если вы хотите отслеживать время обновления, добавьте поле updated_at в модель
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
|
|
||||||
@admin.register(FooterModel)
|
@admin.register(FooterModel)
|
||||||
class FooterModelAdmin(admin.ModelAdmin):
|
class FooterModelAdmin(admin.ModelAdmin):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -107,6 +107,18 @@ class Page(models.Model):
|
||||||
verbose_name="Внешняя ссылка",
|
verbose_name="Внешняя ссылка",
|
||||||
help_text="Введите внешнюю ссылку, если она есть",
|
help_text="Введите внешнюю ссылку, если она есть",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SITE_CHOICES = [
|
||||||
|
("kupizabor", "Kupizabor"),
|
||||||
|
("kupiskamejka", "Kupiskamejka"),
|
||||||
|
]
|
||||||
|
site = models.CharField(
|
||||||
|
max_length=20,
|
||||||
|
choices=SITE_CHOICES,
|
||||||
|
verbose_name="Сайт",
|
||||||
|
help_text="Выберите сайт, к которому относится эта страница",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.menu_title} #{self.slug} {self.order}"
|
return f"{self.menu_title} #{self.slug} {self.order}"
|
||||||
|
|
|
@ -45,6 +45,23 @@ class PageViewSet(viewsets.ModelViewSet):
|
||||||
serializer_class = PageSerializer
|
serializer_class = PageSerializer
|
||||||
filter_backends = [filters.OrderingFilter]
|
filter_backends = [filters.OrderingFilter]
|
||||||
lookup_field = 'slug'
|
lookup_field = 'slug'
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
"""
|
||||||
|
Фильтруем страницы на основе префикса из URL.
|
||||||
|
"""
|
||||||
|
# Получаем префикс из kwargs
|
||||||
|
prefix = self.kwargs.get("prefix")
|
||||||
|
|
||||||
|
if prefix == "gb":
|
||||||
|
# Для префикса /gb/ возвращаем все страницы
|
||||||
|
return Page.objects.all()
|
||||||
|
elif prefix == "kp":
|
||||||
|
# Для префикса /kp/ возвращаем только страницы с site="kupizabor"
|
||||||
|
return Page.objects.filter(site="kupizabor")
|
||||||
|
else:
|
||||||
|
# Если префикс неизвестен, возвращаем пустой queryset
|
||||||
|
return Page.objects.none()
|
||||||
|
|
||||||
|
|
||||||
class MenuViewSet(viewsets.ModelViewSet):
|
class MenuViewSet(viewsets.ModelViewSet):
|
||||||
|
|
|
@ -9,14 +9,14 @@ class BlockDirectAccessMiddleware(MiddlewareMixin):
|
||||||
self.get_response = get_response
|
self.get_response = get_response
|
||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
referer = request.META.get("HTTP_REFERER") or ""
|
# referer = request.META.get("HTTP_REFERER") or ""
|
||||||
if (
|
# if (
|
||||||
'admin' in request.META.get("PATH_INFO")
|
# 'admin' in request.META.get("PATH_INFO")
|
||||||
and request.META.get("HTTP_HOST").split(':')[0] in settings.ALLOWED_HOSTS
|
# and request.META.get("HTTP_HOST").split(':')[0] in settings.ALLOWED_HOSTS
|
||||||
):
|
# ):
|
||||||
return self.get_response(request)
|
# return self.get_response(request)
|
||||||
|
|
||||||
if referer.strip("/") not in settings.CORS_ALLOWED_ORIGINS:
|
# if referer.strip("/") not in settings.CORS_ALLOWED_ORIGINS:
|
||||||
return HttpResponseForbidden("Direct access not allowed.")
|
# return HttpResponseForbidden("Direct access not allowed.")
|
||||||
|
|
||||||
return self.get_response(request)
|
return self.get_response(request)
|
||||||
|
|
25
mns/urls.py
25
mns/urls.py
|
@ -25,16 +25,27 @@ from global_data import views as gd_views
|
||||||
|
|
||||||
site_prefix = "kp"
|
site_prefix = "kp"
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(f"{site_prefix}/seo", gd_views.SeoViewSet)
|
|
||||||
router.register(f"{site_prefix}/kp", kp_views.KPViewSet)
|
router.register(f"{site_prefix}/kp", kp_views.KPViewSet)
|
||||||
router.register(f"{site_prefix}/pages", gd_views.PageViewSet)
|
|
||||||
router.register(f"{site_prefix}/menu", gd_views.MenuViewSet)
|
|
||||||
router.register(f"{site_prefix}/review", gd_views.ReviewViewSet)
|
|
||||||
router.register(f"{site_prefix}/calculator", kp_views.CalcViewSet)
|
router.register(f"{site_prefix}/calculator", kp_views.CalcViewSet)
|
||||||
router.register(f"{site_prefix}/advantage", kp_views.AdvantageViewSet)
|
router.register(f"{site_prefix}/advantage", kp_views.AdvantageViewSet)
|
||||||
router.register(f"{site_prefix}/footer", gd_views.FooterViewSet)
|
|
||||||
router.register(f"{site_prefix}/custom_request", gd_views.CustomRequestViewSet)
|
for p in [site_prefix, "gb"]:
|
||||||
router.register(f"{site_prefix}/social_network", gd_views.SocialNetworkViewSet)
|
router.register(f"{p}/seo", gd_views.SeoViewSet, basename=f"{p}_seo")
|
||||||
|
router.register(f"{p}/pages", gd_views.PageViewSet, basename=f"{p}_pages")
|
||||||
|
router.register(f"{p}/menu", gd_views.MenuViewSet, basename=f"{p}_menu")
|
||||||
|
router.register(f"{p}/review", gd_views.ReviewViewSet, basename=f"{p}_review")
|
||||||
|
router.register(f"{p}/footer", gd_views.FooterViewSet, basename=f"{p}_footer")
|
||||||
|
router.register(
|
||||||
|
f"{p}/custom_request",
|
||||||
|
gd_views.CustomRequestViewSet,
|
||||||
|
basename=f"{p}_custom_request",
|
||||||
|
)
|
||||||
|
router.register(
|
||||||
|
f"{p}/social_network",
|
||||||
|
gd_views.SocialNetworkViewSet,
|
||||||
|
basename=f"{p}_social_network",
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", include(router.urls)),
|
path("", include(router.urls)),
|
||||||
|
|
Loading…
Reference in New Issue