add update torb web hock to admin
This commit is contained in:
@@ -414,7 +414,7 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
|
||||
# compressed_fields = True
|
||||
warn_unsaved_form = True
|
||||
# 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', ]
|
||||
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"],}),
|
||||
@@ -497,6 +497,57 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
|
||||
messages.success(request, f"قیمت {ProductVariant.objects.all().count()} تنوع محصول اپدیت شد")
|
||||
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):
|
||||
"""اکشن برای تغییر دستهبندی چند محصول همزمان"""
|
||||
|
||||
@@ -535,7 +586,7 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm
|
||||
)
|
||||
|
||||
bulk_update_subcategory_action.short_description = "تغییر دستهبندی محصولات انتخاب شده"
|
||||
actions = ['bulk_update_subcategory_action']
|
||||
actions = ['bulk_update_subcategory_action', 'resync_selected_torob']
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user