Skip to content

Commit 22b2d02

Browse files
[ENG-11762] Refactor filter handling in notification campaign (#11813)
1 parent fd6f778 commit 22b2d02

3 files changed

Lines changed: 15 additions & 11 deletions

File tree

admin/notifications/views.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -561,10 +561,11 @@ def get_queryset(self):
561561
if predefined := json_filters.get('predefined'):
562562
filters = FILTER_PRESETS.get(predefined, {})
563563
else:
564-
filters = {
565-
f'{item["field"]}__{item["lookup"]}': item['value']
566-
for item in json_filters.get('manual', [])
567-
}
564+
for item in json_filters.get('manual', []):
565+
if item['lookup'] != 'in':
566+
filters[f'{item["field"]}__{item["lookup"]}'] = item['value']
567+
else:
568+
filters[f'{item["field"]}__{item["lookup"]}'] = [value.strip() for value in item['value'].split(',')]
568569

569570
return filter_users(filters)
570571

admin/templates/notifications/notification_campaigns_detail.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ <h4>Progress</h4>
4040
style="display:inline;"
4141
>
4242
{% csrf_token %}
43-
<button type="submit" class="btn btn-primary" {% if notification_campaign.status == "completed" %}disabled{% endif %}>
43+
<button type="submit" class="btn btn-primary" {% if notification_campaign.status != "created" %}disabled{% endif %}>
4444
Start Campaign
4545
</button>
4646
</form>
@@ -74,14 +74,15 @@ <h4>General</h4>
7474
</a>
7575
</td>
7676
<td>
77+
7778
<form
7879
id="restart-campaign-form"
7980
method="post"
8081
action="{% url 'notifications:notification_campaigns_start' notification_campaign.id %}?restart_failed=true"
8182
style="display:inline;"
8283
>
8384
{% csrf_token %}
84-
<button type="submit" class="btn btn-primary">
85+
<button type="submit" class="btn btn-primary" {% if notification_campaign.status != "partially_completed" %}disabled{% endif %}>
8586
Restart Campaign
8687
</button>
8788
</form>

osf/email/notification_campaign.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,13 @@ def start_notification_campaign(campaign_id, restart_failed=False):
146146
if predefined_filter_name := filters.get('predefined'):
147147
filters = FILTER_PRESETS.get(predefined_filter_name, {})
148148
else:
149-
filters = {
150-
f'{item["field"]}__{item["lookup"]}': item['value']
151-
for item in filters.get('manual', [])
152-
}
153-
149+
manual_filters = {}
150+
for item in filters.get('manual', []):
151+
if item['lookup'] != 'in':
152+
manual_filters[f'{item["field"]}__{item["lookup"]}'] = item['value']
153+
else:
154+
manual_filters[f'{item["field"]}__{item["lookup"]}'] = [value.strip() for value in item['value'].split(',')]
155+
filters = manual_filters
154156
tasks = []
155157
total_recipients = 0
156158
batch_size = campaign.metadata.get('execution', {}).get('batch_size', 1000)

0 commit comments

Comments
 (0)