ecabf31e54
* Invokes the site tree fix from previous fixes. * Adds a disclaimer noting that previous years’ accounts have not been carried over. Fixes #43 * Adds proposal type to the proposal summary page. Fixes #40 * Adds travel/accommodation assistance to the proposals page, but makes it only visible to speakers in the proposal, or review managers. Fixes #41. Fixes #42. * Reduces a lot of the whitespace in the header and footer. Fixes #44 * Proposals review page now shows information for every speaker on a proposal. Fixes #45 * Makes sure that non_field_errors are displayed by forms. Fixes #37
78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from django.conf import settings
|
|
from django.core.mail import EmailMultiAlternatives
|
|
from functools import wraps
|
|
|
|
|
|
class MonkeyPatchMiddleware(object):
|
|
''' Ensures that our monkey patching only gets called after it is safe to do so.'''
|
|
|
|
def process_request(self, request):
|
|
do_monkey_patch()
|
|
|
|
|
|
def do_monkey_patch():
|
|
patch_speaker_profile_form()
|
|
patch_accounts_to_send_bcc()
|
|
fix_sitetree_check_access_500s()
|
|
|
|
# Remove this function from existence
|
|
global do_monkey_patch
|
|
do_monkey_patch = lambda: None
|
|
|
|
|
|
def patch_speaker_profile_form():
|
|
''' Replaces textarea widgets with markdown editors. '''
|
|
|
|
import widgets
|
|
from symposion.speakers.forms import SpeakerForm
|
|
|
|
fields = SpeakerForm.base_fields
|
|
fields["biography"].widget = widgets.AceMarkdownEditor()
|
|
fields["experience"].widget = widgets.AceMarkdownEditor()
|
|
fields["accessibility"].widget = widgets.AceMarkdownEditor()
|
|
|
|
|
|
def patch_accounts_to_send_bcc():
|
|
''' Patches django-user-accounts' email functions to send a BCC e-mail to
|
|
the default BCC e-mail address. '''
|
|
|
|
from account import hooks
|
|
|
|
# django-user-accounts always uses send_mail like:
|
|
# send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, to)
|
|
|
|
if hasattr(settings, "ENVELOPE_BCC_LIST"):
|
|
bcc_email = settings.ENVELOPE_BCC_LIST
|
|
else:
|
|
bcc_email = None
|
|
|
|
def send_mail(subject, message, from_email, to):
|
|
email = EmailMultiAlternatives(
|
|
subject,
|
|
message,
|
|
from_email,
|
|
to,
|
|
bcc=bcc_email,
|
|
)
|
|
email.send()
|
|
|
|
hooks.send_mail = send_mail
|
|
|
|
|
|
def fix_sitetree_check_access_500s():
|
|
''' django-sitetree has a bug: https://github.com/idlesign/django-sitetree/pull/167/files
|
|
-- it swallows the cause of all 500 errors. This swallows KeyErrors from
|
|
the failing function. '''
|
|
|
|
from sitetree.sitetreeapp import SiteTree
|
|
|
|
old_check_access = SiteTree.check_access
|
|
|
|
@wraps(SiteTree.check_access)
|
|
def check_access(self, *a, **k):
|
|
try:
|
|
return old_check_access(self, *a, **k)
|
|
except KeyError:
|
|
return False
|
|
|
|
SiteTree.check_access = check_access
|