Site/prices/admin.py
2026-07-13 22:37:41 +03:00

35 lines
1.4 KiB
Python

from django.contrib import admin, messages
from django.shortcuts import redirect
from django.urls import path
from .models import PriceItem
from .views import update_prices_from_api
@admin.register(PriceItem)
class PriceItemAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'updated_at')
search_fields = ('name',)
actions = ['update_prices_action']
def update_prices_action(self, request, queryset):
"""Admin action для обновления прайса."""
update_prices_from_api(request)
update_prices_action.short_description = "Обновить прайс из API"
def get_urls(self):
"""Добавляем кастомный URL для кнопки в changelist."""
urls = super().get_urls()
custom_urls = [
path('update-prices/', self.admin_site.admin_view(self.update_prices_view), name='update-prices'),
]
return custom_urls + urls
def update_prices_view(self, request):
"""View для кнопки обновления."""
update_prices_from_api(request)
return redirect('admin:prices_priceitem_changelist')
def changelist_view(self, request, extra_context=None):
"""Передаём в контекст наличие кнопки."""
extra_context = extra_context or {}
extra_context['show_update_button'] = True
return super().changelist_view(request, extra_context=extra_context)