File tree Expand file tree Collapse file tree 3 files changed +67
-4
lines changed
Expand file tree Collapse file tree 3 files changed +67
-4
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,10 @@ class SponsorshipTierAdmin(admin.ModelAdmin):
1313
1414
1515class 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 = (
Original file line number Diff line number Diff line change @@ -84,8 +84,13 @@ def send_internal_sponsor_progress_update_email(instance):
8484
8585@receiver (post_save , sender = SponsorshipProfile )
8686def 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 )
Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments