This commit is contained in:
javad committed 2026-10-10 14:21:04 +03:30
1 parent 250cdbab7f
commit 5c6069c3ef
87 files changed
+29209 -3697

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
"""انتخاب provider پیامک بر اساس تنظیمات ذخیره‌شده در دیتابیس (Django Admin)."""
from django.utils.module_loading import import_string
from .base import SMSProvider
# نگاشت کلید انتخاب‌شده در Admin به مسیر کلاس provider.
PROVIDER_CLASSES = {
"sms0098": "integrations.sms.sms0098.ZeroZeroNinetyEightSMSProvider",
"sms0098ws": "integrations.sms.sms0098ws.ZeroZeroNinetyEightWebServiceProvider",
"http": "integrations.sms.http.HTTPSMSProvider",
"console": "integrations.sms.console.ConsoleSMSProvider",
}
def get_provider_class(config):
path = PROVIDER_CLASSES.get(config.provider)
if not path:
raise ValueError(f"provider پیامک ناشناخته است: {config.provider}")
provider_class = import_string(path)
if not issubclass(provider_class, SMSProvider):
raise TypeError("کلاس provider باید از SMSProvider ارث‌بری کند.")
return provider_class
def get_sms_provider(config=None):
"""یک نمونه provider برای config داده‌شده (یا تنظیمات جاری) می‌سازد.
import مدل به‌صورت lazy انجام می‌شود تا از حلقهٔ import در زمان بارگذاری اپ جلوگیری شود.
"""
if config is None:
from admin_panel.models import SMSProviderConfig
config = SMSProviderConfig.load()
return get_provider_class(config)(config)
def reset_sms_provider():
"""سازگاری با فراخوانی‌های قبلی؛ provider دیگر کش نمی‌شود."""
return None