sms
This commit is contained in:
1 parent
250cdbab7f
commit
5c6069c3ef
87 files changed
+29209
-3697
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user