add new site
This commit is contained in:
parent
73a1b8032a
commit
a3ebab0585
|
@ -51,6 +51,7 @@ class SeoAdmin(admin.ModelAdmin):
|
|||
"""
|
||||
return bool(obj.image)
|
||||
|
||||
|
||||
@admin.register(Page)
|
||||
class PageAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
|
@ -65,6 +66,7 @@ class PageAdmin(admin.ModelAdmin):
|
|||
"slug_preview", # Кастомное поле для предпросмотра slug
|
||||
"has_image", # Кастомное поле для проверки наличия изображения
|
||||
"external_link", # Внешняя ссылка
|
||||
"site", # Новое поле для выбора сайта
|
||||
)
|
||||
|
||||
# Поля, по которым можно выполнять поиск
|
||||
|
@ -73,17 +75,27 @@ class PageAdmin(admin.ModelAdmin):
|
|||
"title",
|
||||
"slug",
|
||||
"content",
|
||||
"site", # Добавляем поиск по полю site
|
||||
)
|
||||
|
||||
# Фильтры для боковой панели
|
||||
list_filter = ("order",)
|
||||
list_filter = (
|
||||
"order",
|
||||
"site", # Фильтр по сайту
|
||||
)
|
||||
|
||||
# Поля, которые будут показаны в форме редактирования
|
||||
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",
|
||||
"default_value",
|
||||
"last_sync_price",
|
||||
"description",
|
||||
"description",
|
||||
"last_updated",
|
||||
)
|
||||
|
||||
|
@ -235,7 +247,7 @@ class Ref1CAdmin(admin.ModelAdmin):
|
|||
"sync_enabled",
|
||||
"default_value",
|
||||
"last_sync_price",
|
||||
"description",
|
||||
"description",
|
||||
)
|
||||
|
||||
# Добавляем поле "последнее обновление" (только для чтения)
|
||||
|
@ -255,6 +267,7 @@ class Ref1CAdmin(admin.ModelAdmin):
|
|||
# Если вы хотите отслеживать время обновления, добавьте поле updated_at в модель
|
||||
obj.save()
|
||||
|
||||
|
||||
@admin.register(FooterModel)
|
||||
class FooterModelAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
|
|
|
@ -107,6 +107,18 @@ class Page(models.Model):
|
|||
verbose_name="Внешняя ссылка",
|
||||
help_text="Введите внешнюю ссылку, если она есть",
|
||||
)
|
||||
|
||||
SITE_CHOICES = [
|
||||
("kupizabor", "Kupizabor"),
|
||||
("kupiskamejka", "Kupiskamejka"),
|
||||
]
|
||||
site = models.CharField(
|
||||
max_length=20,
|
||||
choices=SITE_CHOICES,
|
||||
verbose_name="Сайт",
|
||||
help_text="Выберите сайт, к которому относится эта страница",
|
||||
)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.menu_title} #{self.slug} {self.order}"
|
||||
|
|
|
@ -45,6 +45,23 @@ class PageViewSet(viewsets.ModelViewSet):
|
|||
serializer_class = PageSerializer
|
||||
filter_backends = [filters.OrderingFilter]
|
||||
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):
|
||||
|
|
|
@ -9,14 +9,14 @@ class BlockDirectAccessMiddleware(MiddlewareMixin):
|
|||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
referer = request.META.get("HTTP_REFERER") or ""
|
||||
if (
|
||||
'admin' in request.META.get("PATH_INFO")
|
||||
and request.META.get("HTTP_HOST").split(':')[0] in settings.ALLOWED_HOSTS
|
||||
):
|
||||
return self.get_response(request)
|
||||
# referer = request.META.get("HTTP_REFERER") or ""
|
||||
# if (
|
||||
# 'admin' in request.META.get("PATH_INFO")
|
||||
# and request.META.get("HTTP_HOST").split(':')[0] in settings.ALLOWED_HOSTS
|
||||
# ):
|
||||
# return self.get_response(request)
|
||||
|
||||
if referer.strip("/") not in settings.CORS_ALLOWED_ORIGINS:
|
||||
return HttpResponseForbidden("Direct access not allowed.")
|
||||
# if referer.strip("/") not in settings.CORS_ALLOWED_ORIGINS:
|
||||
# return HttpResponseForbidden("Direct access not allowed.")
|
||||
|
||||
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"
|
||||
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}/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}/advantage", kp_views.AdvantageViewSet)
|
||||
router.register(f"{site_prefix}/footer", gd_views.FooterViewSet)
|
||||
router.register(f"{site_prefix}/custom_request", gd_views.CustomRequestViewSet)
|
||||
router.register(f"{site_prefix}/social_network", gd_views.SocialNetworkViewSet)
|
||||
|
||||
for p in [site_prefix, "gb"]:
|
||||
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 = [
|
||||
path("", include(router.urls)),
|
||||
|
|
Loading…
Reference in New Issue