Skip to content

Commit 11c7a74

Browse files
authored
Dlr user settings in settings.py (#224)
1 parent 31f761e commit 11c7a74

File tree

6 files changed

+78
-30
lines changed

6 files changed

+78
-30
lines changed

django_project_base/notifications/base/channels/integrations/aws_ses.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ def parse_delivery_report(self, dlr: DeliveryReport):
7373

7474
@property
7575
def delivery_report_username_setting_name(self) -> str:
76-
return "aws-ses-email-dlr-user"
76+
return "NOTIFICATIONS_AWS_SES_EMAIL_DLR_USER"
7777

7878
@property
7979
def delivery_report_password_setting_name(self) -> str:
80-
return "aws-ses-email-dlr-password"
80+
return "NOTIFICATIONS_AWS_SES_EMAIL_DLR_PASSWORD"
8181

8282
def ensure_dlr_user(self, project_slug: str):
8383
pass

django_project_base/notifications/base/channels/integrations/aws_sns_single_sms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ def parse_delivery_report(self, dlr: DeliveryReport):
6363

6464
@property
6565
def delivery_report_username_setting_name(self) -> str:
66-
return "aws-sns-sms-dlr-user"
66+
return "NOTIFICATIONS_AWS_SNS_SMS_DLR_USER"
6767

6868
@property
6969
def delivery_report_password_setting_name(self) -> str:
70-
return "aws-sns-sms-dlr-password"
70+
return "NOTIFICATIONS_AWS_SNS_SMS_DLR_PASSWORD"
7171

7272
def ensure_dlr_user(self, project_slug: str):
7373
pass

django_project_base/notifications/base/channels/integrations/nexmo_sms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ def parse_delivery_report(self, dlr: DeliveryReport):
6666

6767
@property
6868
def delivery_report_username_setting_name(self) -> str:
69-
return "nexmo-sms-dlr-user"
69+
return "NOTIFICATIONS_NEXMO_SMS_DLR_USER"
7070

7171
@property
7272
def delivery_report_password_setting_name(self) -> str:
73-
return "nexmo-sms-dlr-password"
73+
return "NOTIFICATIONS_NEXMO_SMS_DLR_USER"
7474

7575
def ensure_dlr_user(self, project_slug: str):
7676
pass

django_project_base/notifications/base/channels/integrations/t2.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import requests
77
import swapper
88

9-
from django.conf import Settings
9+
from django.conf import Settings, settings
1010
from django.contrib.auth import get_user_model
1111
from requests.auth import HTTPBasicAuth
1212
from rest_framework.status import is_success
@@ -288,7 +288,7 @@ def ensure_credentials(self, settings: Optional[Settings] = None):
288288
self.settings = settings
289289
assert self.username, "NOTIFICATIONS_T2_USERNAME is required"
290290
assert self.password, "NOTIFICATIONS_T2_PASSWORD is required"
291-
assert len(self.url) > 0, "NOTIFICATIONS_T2_PASSWORD is required"
291+
assert len(self.url) > 0, "NOTIFICATIONS_SMS_API_URL is required"
292292

293293
def client_send(self, sender: str, recipient: Recipient, msg: str, dlr_id: str):
294294
if not recipient.phone_number:
@@ -322,37 +322,37 @@ def parse_delivery_report(self, dlr: DeliveryReport):
322322

323323
@property
324324
def delivery_report_username_setting_name(self) -> str:
325-
return "t2-sms-dlr-user"
325+
return "NOTIFICATIONS_T2_SMS_DLR_USER"
326326

327327
@property
328328
def delivery_report_password_setting_name(self) -> str:
329-
return "t2-sms-dlr-password"
329+
return "NOTIFICATIONS_T2_SMS_DLR_PASSWORD"
330330

331331
def ensure_dlr_user(self, project_slug: str):
332332
if project_slug and (
333333
project := swapper.load_model("django_project_base", "Project").objects.filter(slug=project_slug).first()
334334
):
335-
project_settings_model = swapper.load_model("django_project_base", "ProjectSettings")
336-
337-
username_setting = project_settings_model.objects.filter(
338-
name=self.delivery_report_username_setting_name, project=project
339-
).first()
340-
341-
password_setting = project_settings_model.objects.filter(
342-
name=self.delivery_report_password_setting_name, project=project
343-
).first()
344-
345-
assert username_setting
346-
assert password_setting
347-
348-
user, user_created = get_user_model().objects.get_or_create(
349-
username=username_setting.python_value,
350-
351-
first_name=username_setting.python_value,
352-
last_name=username_setting.python_value,
335+
username = getattr(settings, self.delivery_report_username_setting_name, None)
336+
password = getattr(settings, self.delivery_report_password_setting_name, None)
337+
email = getattr(settings, "NOTIFICATIONS_T2_SMS_DLR_EMAIL", None)
338+
339+
assert username
340+
assert password
341+
assert email
342+
343+
user, user_created = get_user_model().objects.update_or_create(
344+
email=email,
345+
defaults=dict(
346+
is_active=True,
347+
is_staff=False,
348+
is_superuser=False,
349+
username=username,
350+
first_name=username,
351+
last_name=username,
352+
),
353353
)
354-
if user_created:
355-
user.set_password(password_setting.python_value)
354+
if user_created or not user.check_password(password):
355+
user.set_password(password)
356356
user.save()
357357

358358
ProjectMember = swapper.load_model("django_project_base", "ProjectMember")
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Generated by Django 5.1.7 on 2025-11-04 12:50
2+
3+
import swapper
4+
5+
from django.contrib.auth import get_user_model
6+
from django.db import migrations
7+
8+
9+
def delete_dlr_settings(apps, schema_editor):
10+
ProjectModelSettings = swapper.load_model("django_project_base", "ProjectSettings")
11+
ProjectModelSettings._base_manager.filter(
12+
name__in=[
13+
"aws-sns-sms-dlr-user",
14+
"aws-sns-sms-dlr-password",
15+
"aws-ses-email-dlr-user",
16+
"aws-ses-email-dlr-password",
17+
"nexmo-sms-dlr-user",
18+
"nexmo-sms-dlr-password",
19+
"t2-sms-dlr-user",
20+
"t2-sms-dlr-password",
21+
]
22+
).delete()
23+
24+
get_user_model().objects.filter(
25+
username__istartswith="t2-", username__iendswith="-username", email="[email protected]"
26+
).update(email="[email protected]")
27+
28+
29+
class Migration(migrations.Migration):
30+
dependencies = [
31+
("notifications", "0012_djangoprojectbasenotification_done_and_more"),
32+
]
33+
34+
operations = [
35+
migrations.RunPython(delete_dlr_settings),
36+
]

django_project_base/settings.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@
8484
"default": "",
8585
},
8686
{"name": "IS_PHONE_NUMBER_ALLOWED_FUNCTION", "default": ""},
87+
{"name": "NOTIFICATIONS_AWS_SES_EMAIL_DLR_USER", "default": None},
88+
{"name": "NOTIFICATIONS_AWS_SES_EMAIL_DLR_PASSWORD", "default": None},
89+
{"name": "NOTIFICATIONS_AWS_SES_EMAIL_DLR_EMAIL", "default": None},
90+
{"name": "NOTIFICATIONS_AWS_SNS_SMS_DLR_USER", "default": None},
91+
{"name": "NOTIFICATIONS_AWS_SNS_SMS_DLR_PASSWORD", "default": None},
92+
{"name": "NOTIFICATIONS_AWS_SNS_SMS_DLR_EMAIL", "default": None},
93+
{"name": "NOTIFICATIONS_NEXMO_SMS_DLR_USER", "default": None},
94+
{"name": "NOTIFICATIONS_NEXMO_SMS_DLR_USER", "default": None},
95+
{"name": "NOTIFICATIONS_NEXMO_SMS_DLR_EMAIL", "default": None},
96+
{"name": "NOTIFICATIONS_T2_SMS_DLR_USER", "default": None},
97+
{"name": "NOTIFICATIONS_T2_SMS_DLR_PASSWORD", "default": None},
98+
{"name": "NOTIFICATIONS_T2_SMS_DLR_EMAIL", "default": None},
8799
)
88100

89101
USER_CACHE_KEY = "django-user-{id}"

0 commit comments

Comments
 (0)