Skip to content

Commit 64efdc4

Browse files
authored
[ENG-11881] Time window needs to be set in seconds (#11847)
* Change notification campaign time window to be in seconds
1 parent 577be69 commit 64efdc4

6 files changed

Lines changed: 15 additions & 15 deletions

File tree

admin/notifications/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ class NotificationCampaignCreateForm(forms.ModelForm):
4141

4242
time_window = forms.IntegerField(
4343
min_value=1,
44-
initial=8,
45-
help_text='The time in hours before the developer reminder is sent.',
44+
initial=8 * 60 * 60, # 8 hours
45+
help_text='The time in seconds before the developer reminder is sent.',
4646
)
4747

4848
sendgrid_bulk = forms.BooleanField(

admin/templates/notifications/notification_campaigns_detail.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ <h4>Progress</h4>
158158
{% if notification_campaign.developer_reminder_sent and notification_campaign.status == "running" %}
159159
<div class="alert alert-warning">
160160
<strong>Warning!</strong>
161-
The campaign exceeded the expected timeframe ({{ metadata.execution.time_window }}h). A reminder was sent.
161+
The campaign exceeded the expected timeframe ({{ metadata.execution.time_window }}s). A reminder was sent.
162162
</div>
163163
{% endif %}
164164
{% endif %}

admin/templates/notifications/notification_campaing_create.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ <h4>Execution</h4>
226226
min="1"
227227
>
228228
<p class="help-block">
229-
The time in hours before the developer reminder is sent.
229+
The time in seconds before the developer reminder is sent.
230230
</p>
231231
</td>
232232
</tr>

admin_tests/notifications/test_campaigns.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def _valid_form_data(notification_type, **overrides):
5959
'max_retries': settings.DEFAULT_CAMPAIGN_MAX_RETRIES,
6060
'activity_threshold': settings.DEFAULT_CAMPAIGN_ACTIVITY_THRESHOLD,
6161
'sendgrid_bulk': False,
62-
'time_window': 8,
62+
'time_window': 8 * 60 * 60,
6363
}
6464
data.update(overrides)
6565
return data
@@ -75,15 +75,15 @@ def test_valid_form_parses_context_and_filters(self, notification_type):
7575
assert form.cleaned_data['batch_size'] == settings.DEFAULT_CAMPAIGN_BATCH_SIZE
7676
assert form.cleaned_data['max_retries'] == settings.DEFAULT_CAMPAIGN_MAX_RETRIES
7777
assert form.cleaned_data['activity_threshold'] == settings.DEFAULT_CAMPAIGN_ACTIVITY_THRESHOLD
78-
assert form.cleaned_data['time_window'] == 8
78+
assert form.cleaned_data['time_window'] == 8 * 60 * 60
7979
assert form.cleaned_data['sendgrid_bulk'] is False
8080

8181
def test_defaults_come_from_settings(self):
8282
form = NotificationCampaignCreateForm()
8383
assert form.fields['batch_size'].initial == settings.DEFAULT_CAMPAIGN_BATCH_SIZE
8484
assert form.fields['max_retries'].initial == settings.DEFAULT_CAMPAIGN_MAX_RETRIES
8585
assert form.fields['activity_threshold'].initial == settings.DEFAULT_CAMPAIGN_ACTIVITY_THRESHOLD
86-
assert form.fields['time_window'].initial == 8
86+
assert form.fields['time_window'].initial == 8 * 60 * 60
8787
assert form.fields['sendgrid_bulk'].initial is False
8888

8989
def test_invalid_context_json(self, notification_type):
@@ -138,10 +138,10 @@ def test_time_window_must_be_at_least_one(self, notification_type):
138138

139139
def test_time_window_is_accepted(self, notification_type):
140140
form = NotificationCampaignCreateForm(
141-
data=_valid_form_data(notification_type, time_window=6)
141+
data=_valid_form_data(notification_type, time_window=3600)
142142
)
143143
assert form.is_valid()
144-
assert form.cleaned_data['time_window'] == 6
144+
assert form.cleaned_data['time_window'] == 3600
145145

146146
def test_name_is_required(self, notification_type):
147147
form = NotificationCampaignCreateForm(
@@ -191,7 +191,7 @@ def test_form_valid_persists_execution_metadata(self):
191191
max_retries=4,
192192
activity_threshold=77,
193193
sendgrid_bulk=True,
194-
time_window=8
194+
time_window=28800
195195
),
196196
)
197197
request.user = self.user
@@ -213,7 +213,7 @@ def test_form_valid_persists_execution_metadata(self):
213213
'batch_size': 25,
214214
'max_retries': 4,
215215
'activity_threshold': 77,
216-
'time_window': 8
216+
'time_window': 28800
217217
}
218218
assert campaign.metadata['sendgrid_bulk'] is True
219219
assert campaign.metadata['filters'] == {'predefined': 'active'}

osf/email/notification_campaign.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,10 +321,10 @@ def send_campaign_batch(context, recipients_ids, notification_type_name='blank',
321321
campaign.save()
322322
return
323323

324-
execution_time_window = campaign.metadata.get('execution', {}).get('time_window', 8)
325-
if campaign.started_at < timezone.now() - timedelta(hours=execution_time_window):
324+
execution_time_window = campaign.metadata.get('execution', {}).get('time_window', 8 * 60 * 60)
325+
if campaign.started_at < timezone.now() - timedelta(seconds=execution_time_window):
326326
if not campaign.developer_reminder_sent:
327-
message = f'[Notification Campaign] Campaign {campaign_id} exceeded its execution time window ({execution_time_window}h).'
327+
message = f'[Notification Campaign] Campaign {campaign_id} exceeded its execution time window ({execution_time_window}s).'
328328
logger.warning(message)
329329
sentry.log_message(message)
330330
campaign.developer_reminder_sent = True

osf_tests/test_notification_campaign.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ def test_send_campaign_batch_sendgrid_bulk_failure(self, mock_sentry, mock_sendg
551551
@mock.patch('osf.email.notification_campaign.sentry.log_message')
552552
def test_send_campaign_batch_logs_when_time_window_exceeded(self, mock_sentry, running_campaign):
553553
user = UserFactory()
554-
running_campaign.started_at = timezone.now() - timedelta(hours=9)
554+
running_campaign.started_at = timezone.now() - timedelta(seconds=9)
555555
running_campaign.metadata['execution']['time_window'] = 8
556556
running_campaign.save()
557557
create_campaign_recipients(Q(**{'id__in': [user.id]}), campaign_id=running_campaign.id)

0 commit comments

Comments
 (0)