diff --git a/helios/tasks.py b/helios/tasks.py index 43ca5f65d652fed41c33b642d5cd634d94dda2b4..75318b166eecd2bce98cf8678281301b264c7a98 100644 --- a/helios/tasks.py +++ b/helios/tasks.py @@ -13,6 +13,7 @@ import signals import copy +from django.conf import settings @task() def cast_vote_verify_and_store(cast_vote_id, status_update_message=None, **kwargs): @@ -52,7 +53,17 @@ def voters_email(election_id, subject_template, body_template, extra_vars={}, voters = voters.exclude(**voter_constraints_exclude) for voter in voters: - single_voter_email.delay(voter.uuid, subject_template, body_template, extra_vars) + if settings.QUEUE_INDIVIDUAL_EMAILS: + single_voter_email.delay(voter.uuid, subject_template, body_template, extra_vars) + else: + the_vars = copy.copy(extra_vars) + the_vars.update({'voter' : voter}) + + subject = render_template_raw(None, subject_template, the_vars) + body = render_template_raw(None, body_template, the_vars) + + voter.user.send_message(subject, body) + @task() def voters_notify(election_id, notification_template, extra_vars={}): diff --git a/settings.py b/settings.py index 5c90c6a36ecfb5e8a7524b7b3ef78a89904d18ea..33140196db4db088ecb05df249169bb6201bc48d 100644 --- a/settings.py +++ b/settings.py @@ -155,6 +155,9 @@ DEFAULT_FROM_EMAIL = get_from_env('DEFAULT_FROM_EMAIL', 'ben@adida.net') DEFAULT_FROM_NAME = get_from_env('DEFAULT_FROM_NAME', 'Ben for Helios') SERVER_EMAIL = '%s <%s>' % (DEFAULT_FROM_NAME, DEFAULT_FROM_EMAIL) +# do we queue up each email as a job, or one job for all emails for a given election? +QUEUE_INDIVIDUAL_EMAILS = (get_from_env('QUEUE_INDIVIDUAL_EMAILS', '1') == '1') + LOGIN_URL = '/auth/' LOGOUT_ON_CONFIRMATION = True