Skip to content

Commit

Permalink
Send follow-up emails after submission
Browse files Browse the repository at this point in the history
This commit closes #122.
  • Loading branch information
sumanthratna committed Apr 21, 2021
1 parent 9573cfc commit e0e3008
Show file tree
Hide file tree
Showing 6 changed files with 217 additions and 135 deletions.
4 changes: 4 additions & 0 deletions eAbsentee/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from flask_talisman import Talisman
from flask_seasurf import SeaSurf
from flask_babel import Babel
from flask_apscheduler import APScheduler
from dotenv import load_dotenv
load_dotenv()

Expand All @@ -30,6 +31,7 @@
# csrf = SeaSurf()
# talisman = Talisman()
babel = Babel()
scheduler = APScheduler()

def create_app():
app = Flask(__name__)
Expand All @@ -55,6 +57,8 @@ def init_apps(app):
# csrf.init_app(app)
# talisman.init_app(app, content_security_policy=get_csp())
babel.init_app(app)
scheduler.init_app(app)
scheduler.start()

# Gets content security policy for flask_talisman
def get_csp():
Expand Down
2 changes: 2 additions & 0 deletions eAbsentee/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class Config:
LANGUAGES = ['en', 'es']
BABEL_TRANSLATION_DIRECTORIES = str(ROOT_PATH / "translations")

SCHEDULER_API_ENABLED = False

FORM_CLOSED = False
# https://www.elections.virginia.gov/casting-a-ballot/calendars-schedules/upcoming-elections.html
UPCOMING_ELECTIONS = [
Expand Down
24 changes: 22 additions & 2 deletions eAbsentee/form/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import io
import random
import string
from flask import request
from datetime import date
from flask import request, copy_current_request_context
from datetime import date, datetime, timedelta
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from eAbsentee.app import scheduler
from dotenv import load_dotenv
from .models import db, User

Expand All @@ -28,6 +29,7 @@ def application_process(request, group_code=None, lang=None):
add_to_database(application_id, request, group_code=group_code)
email_registrar(application_id, request)
os.remove(f'{application_id}.pdf')
queue_followup(application_id, request)

def write_pdf(application_id, request, lang):
today_date = date.today().strftime('%m%d%y')
Expand Down Expand Up @@ -174,3 +176,21 @@ def email_registrar(application_id, request):
""",
attachments=(f'{application_id}.pdf')
)

def queue_followup(application_id, request):
@copy_current_request_context
def send_followup():
yagmail.SMTP(os.environ["GMAIL_SENDER_ADDRESS"], os.environ["GMAIL_SENDER_PASSWORD"]).send(
to=(request.form.get('email')),
subject=(
f'Absentee Ballot Request Follow-Up - Applicant-ID: {application_id}'),
contents="""
Dear voter, approximately 5 days ago you requested an absentee ballot through eAbsentee.org.
<br />
Please check on the status of your application by visiting the <a href="https://vote.elections.virginia.gov/VoterInformation/Lookup/status">Virginia elections website</a>.
<br />
Verifique el estado de su solicitud visitando el <a href="https://vote.elections.virginia.gov/VoterInformation/Lookup/status"> sitio web de elecciones de Virginia</a>.
""",
)
run_date = datetime.now() + timedelta(days=5)
scheduler.add_job(f'followup_{application_id}', send_followup, trigger='date', run_date=run_date)
Loading

0 comments on commit e0e3008

Please sign in to comment.