Skip to content

Commit ac992e2

Browse files
authored
Don't send notification email during import export process (#233)
- Skip Sending notification during import export process.
1 parent d4f2d7f commit ac992e2

File tree

3 files changed

+67
-4
lines changed

3 files changed

+67
-4
lines changed

sponsorship/admin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ class SponsorshipTierAdmin(admin.ModelAdmin):
1313

1414

1515
class SponsorshipProfileResource(resources.ModelResource):
16+
def before_save_instance(self, instance, row, **kwargs):
17+
# during 'confirm' step, dry_run is True
18+
instance.from_import_export = True
19+
1620
class Meta:
1721
model = SponsorshipProfile
1822
fields = (

sponsorship/signals.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,13 @@ def send_internal_sponsor_progress_update_email(instance):
8484

8585
@receiver(post_save, sender=SponsorshipProfile)
8686
def sponsorship_profile_signal(sender, instance, created, **kwargs):
87-
"""Send emails when sponsorship profile is created or updated."""
88-
if created:
89-
send_internal_sponsor_onboarding_email(instance)
87+
"""Send emails when sponsorship profile is created or updated.
88+
Do not send emails if the instance was created via import/export. (too noisy).
89+
"""
90+
if hasattr(instance, "from_import_export"):
91+
return
9092
else:
91-
send_internal_sponsor_progress_update_email(instance)
93+
if created:
94+
send_internal_sponsor_onboarding_email(instance)
95+
else:
96+
send_internal_sponsor_progress_update_email(instance)

tests/sponsorship/test_admin.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from django.core import mail
2+
from tablib import Dataset
3+
4+
from sponsorship.admin import SponsorshipProfileResource
5+
from sponsorship.models import (
6+
SponsorshipProgressStatus,
7+
)
8+
9+
10+
class TestSponsorshipImportExport:
11+
def test_import_sponsorship_does_not_trigger_email(self, admin_user):
12+
dataset = Dataset()
13+
dataset.headers = [
14+
"id",
15+
"organization_name",
16+
"sponsor_contact_name",
17+
"sponsors_contact_email",
18+
"sponsorship_tier",
19+
"progress_status",
20+
"sponsorship_override_amount",
21+
"main_contact_user",
22+
]
23+
dataset.append(
24+
[
25+
"",
26+
"Test 1",
27+
"",
28+
"",
29+
"",
30+
SponsorshipProgressStatus.AWAITING_RESPONSE.value,
31+
"",
32+
str(admin_user.id),
33+
]
34+
)
35+
36+
dataset.append(
37+
[
38+
"",
39+
"Test 2",
40+
"",
41+
"",
42+
"",
43+
SponsorshipProgressStatus.PAID.value,
44+
"",
45+
str(admin_user.id),
46+
]
47+
)
48+
49+
resource = SponsorshipProfileResource()
50+
mail.outbox.clear()
51+
resource.import_data(dataset, dry_run=False)
52+
assert len(mail.outbox) == 0 # no email
53+
resource.import_data(dataset, dry_run=True)
54+
assert len(mail.outbox) == 0 # no email

0 commit comments

Comments
 (0)