add update torb web hock to admin

This commit is contained in:
Parsa Nazer
2026-05-28 10:34:34 +03:30
parent cc8ced184d
commit c07d4b802b
+53 -2
View File
@@ -414,7 +414,7 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
# compressed_fields = True # compressed_fields = True
warn_unsaved_form = True warn_unsaved_form = True
# list_per_page = 2 # list_per_page = 2
actions_list = ['redirect_to_learn', 'update_products_price'] actions_list = ['redirect_to_learn', 'update_products_price', 'resync_all_torob']
list_display = ['display_image', 'shop__shop_name', 'view', 'rating', 'category', 'created_at' ,'show_in_website', ] list_display = ['display_image', 'shop__shop_name', 'view', 'rating', 'category', 'created_at' ,'show_in_website', ]
fieldsets = ( fieldsets = (
('فیلد های اصلی', {'fields': ('name', 'description', 'category', 'image', 'related_products','show_in_trends', 'show_in_most_viewed', 'show_in_lot_of_discount', 'show_in_top_seller', 'shop', 'show_in_bot', 'bot_banner'), "classes": ["tab"],}), ('فیلد های اصلی', {'fields': ('name', 'description', 'category', 'image', 'related_products','show_in_trends', 'show_in_most_viewed', 'show_in_lot_of_discount', 'show_in_top_seller', 'shop', 'show_in_bot', 'bot_banner'), "classes": ["tab"],}),
@@ -497,6 +497,57 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
messages.success(request, f"قیمت {ProductVariant.objects.all().count()} تنوع محصول اپدیت شد") messages.success(request, f"قیمت {ProductVariant.objects.all().count()} تنوع محصول اپدیت شد")
return redirect("admin:product_productmodel_changelist") return redirect("admin:product_productmodel_changelist")
@action(description="ارسال مجدد همه محصولات به ترب")
def resync_all_torob(self, request):
from django.conf import settings
from product.tasks import send_torob_product_webhook
if not getattr(settings, "TOROB_PRODUCT_WEBHOOK_TOKEN", None):
messages.error(request, "توکن وبهوک ترب در تنظیمات وجود ندارد")
return redirect("admin:product_productmodel_changelist")
product_ids = list(
ProductModel.objects.exclude(slug__isnull=True).exclude(slug="").values_list("id", flat=True)
)
if not product_ids:
messages.warning(request, "محصولی برای ارسال یافت نشد")
return redirect("admin:product_productmodel_changelist")
chunk_size = 50
queued = 0
for start in range(0, len(product_ids), chunk_size):
send_torob_product_webhook.delay(product_ids[start:start + chunk_size])
queued += 1
messages.success(
request,
f"{len(product_ids)} محصول در {queued} بسته برای ارسال به ترب در صف قرار گرفت",
)
return redirect("admin:product_productmodel_changelist")
def resync_selected_torob(self, request, queryset):
from django.conf import settings
from product.tasks import send_torob_product_webhook
if not getattr(settings, "TOROB_PRODUCT_WEBHOOK_TOKEN", None):
messages.error(request, "توکن وبهوک ترب در تنظیمات وجود ندارد")
return
product_ids = list(
queryset.exclude(slug__isnull=True).exclude(slug="").values_list("id", flat=True)
)
if not product_ids:
messages.warning(request, "محصول معتبری انتخاب نشد")
return
chunk_size = 50
for start in range(0, len(product_ids), chunk_size):
send_torob_product_webhook.delay(product_ids[start:start + chunk_size])
messages.success(request, f"{len(product_ids)} محصول برای ارسال به ترب در صف قرار گرفت")
resync_selected_torob.short_description = "ارسال محصولات انتخاب شده به ترب"
def bulk_update_subcategory_action(self, request, queryset): def bulk_update_subcategory_action(self, request, queryset):
"""اکشن برای تغییر دسته‌بندی چند محصول همزمان""" """اکشن برای تغییر دسته‌بندی چند محصول همزمان"""
@@ -535,7 +586,7 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
) )
bulk_update_subcategory_action.short_description = "تغییر دسته‌بندی محصولات انتخاب شده" bulk_update_subcategory_action.short_description = "تغییر دسته‌بندی محصولات انتخاب شده"
actions = ['bulk_update_subcategory_action'] actions = ['bulk_update_subcategory_action', 'resync_selected_torob']