diff --git a/helios/forms.py b/helios/forms.py
index a5263fa78f471e9916422f60c041a7d08f5bca70..81c176678633acfa985e91eec0fc8fdd510cdea4 100644
--- a/helios/forms.py
+++ b/helios/forms.py
@@ -6,6 +6,8 @@ from django import forms
 from models import Election
 from widgets import *
 from fields import *
+from django.conf import settings
+
 
 class ElectionForm(forms.Form):
   short_name = forms.SlugField(max_length=25, help_text='no spaces, will be part of the URL for your election, e.g. my-club-2010')
@@ -18,6 +20,9 @@ class ElectionForm(forms.Form):
   private_p = forms.BooleanField(required=False, initial=False, label="Private?", help_text='A private election is only visible to registered voters.')
   help_email = forms.CharField(required=False, initial="", label="Help Email Address", help_text='An email address voters should contact if they need help.')
   
+  if settings.ALLOW_ELECTION_INFO_URL:
+    election_info_url = forms.CharField(required=False, initial="", label="Election Info Download URL", help_text="the URL of a PDF document that contains extra election information, e.g. candidate bios and statements")
+  
 
 class ElectionTimesForm(forms.Form):
   # times
diff --git a/helios/templates/election_view.html b/helios/templates/election_view.html
index 3f8c04c065d7bb588135a36589412c01d33ab1a6..5e2afff65038f743b32f374cfcaab63f02e70892 100644
--- a/helios/templates/election_view.html
+++ b/helios/templates/election_view.html
@@ -50,6 +50,9 @@ this {{election.election_type}} is <u>not</u> featured on the front page.
 {{election.description}}
 </div>
 
+{% if election.election_info_url %}
+<p style="font-size:1.5em;">[<a href="{{election.election_info_url}}">download election info</a>]</p>
+{% endif %}
 
 <p align="center" style="font-size: 1.5em;">
 <a href="{% url helios.views.one_election_questions election.uuid %}">questions ({% if election.questions %}{{election.questions|length}}{% else %}0{% endif %})</a>
diff --git a/helios/views.py b/helios/views.py
index 40da9a1286624c89c4e7fb775fa5fb7af01080f7..388fa99e3106831ede74c715a3237fd54c472994 100644
--- a/helios/views.py
+++ b/helios/views.py
@@ -231,6 +231,9 @@ def one_election_edit(request, election):
   error = None
   RELEVANT_FIELDS = ['short_name', 'name', 'description', 'use_voter_aliases', 'election_type', 'private_p', 'help_email', 'randomize_answer_order']
   # RELEVANT_FIELDS += ['use_advanced_audit_features']
+
+  if settings.ALLOW_ELECTION_INFO_URL:
+    RELEVANT_FIELDS += ['election_info_url']
   
   if request.method == "GET":
     values = {}
diff --git a/settings.py b/settings.py
index c9485ffd5552ada57baa15be7f7b374b6b3fa837..5c90c6a36ecfb5e8a7524b7b3ef78a89904d18ea 100644
--- a/settings.py
+++ b/settings.py
@@ -175,8 +175,8 @@ SOCIALBUTTONS_URL_HOST= get_from_env("SOCIALBUTTONS_URL_HOST", "http://localhost
 
 # election stuff
 SITE_TITLE = get_from_env('SITE_TITLE', 'Helios Voting')
-
 MAIN_LOGO_URL = get_from_env('MAIN_LOGO_URL', '/static/logo.png')
+ALLOW_ELECTION_INFO_URL = (get_from_env('ALLOW_ELECTION_INFO_URL', '0') == '1')
 
 # FOOTER links
 FOOTER_LINKS = json.loads(get_from_env('FOOTER_LINKS', '[]'))