36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
from django.core.management.base import BaseCommand
|
|
|
|
from apps.notifications.services import NotificationService
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Send a test SMS to a phone number"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("phone", type=str, help="Phone number in international format (e.g. 966501234567)")
|
|
parser.add_argument("--message", type=str, default="Test SMS from PX360", help="Custom message text")
|
|
|
|
def handle(self, *args, **options):
|
|
phone = options["phone"]
|
|
message = options["message"]
|
|
|
|
self.stdout.write(f"Sending SMS to {phone}...")
|
|
self.stdout.write(f"Message: {message}")
|
|
self.stdout.write("")
|
|
|
|
log = NotificationService.send_sms(phone, message)
|
|
|
|
self.stdout.write(f"Status: {log.status}")
|
|
self.stdout.write(f"Provider: {log.provider}")
|
|
if log.error:
|
|
self.stdout.write(self.style.ERROR(f"Error: {log.error}"))
|
|
if log.provider_response:
|
|
self.stdout.write(f"Provider Response: {log.provider_response}")
|
|
|
|
if log.status == "sent":
|
|
self.stdout.write(self.style.SUCCESS(f"SMS sent successfully to {phone}"))
|
|
elif log.status == "failed":
|
|
self.stdout.write(self.style.ERROR(f"SMS failed for {phone}"))
|
|
else:
|
|
self.stdout.write(self.style.WARNING(f"SMS status: {log.status} for {phone}"))
|