Files
@ ecabf31e54b9
Branch filter:
Location: symposion_app/pinaxcon/monkey_patch.py - annotation
ecabf31e54b9
2.2 KiB
text/x-python
Assorted fixes (#47)
* 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
* 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
3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 3118e4c11c59 ecabf31e54b9 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 3118e4c11c59 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 2cdb554623e5 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 3118e4c11c59 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 e32942a49dc8 | 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
|