File diff 3a72d47e506d → 7ae51e1561ab
pinaxcon/monkey_patch.py
Show inline comments
 
from django.conf import settings
 
from django.contrib.auth.models import User
 
from django.core.mail import EmailMultiAlternatives
 
from functools import wraps
 

	
...
 
@@ -12,6 +13,7 @@ class MonkeyPatchMiddleware(object):
 

	
 
def do_monkey_patch():
 
    patch_stripe_card_defaults()
 
    patch_conference_schedule()
 

	
 
    # Remove this function from existence
 
    global do_monkey_patch
...
 
@@ -24,9 +26,80 @@ def patch_stripe_card_defaults():
 

	
 
    old_sync_card = sources.sync_card
 

	
 
    @wraps(old_sync_card)
 
    def sync_card(customer, source):
 
        d = defaultdict(str)
 
        d.update(source)
 
        return old_sync_card(customer, d)
 

	
 
    sources.sync_card = sync_card
 

	
 

	
 
def patch_conference_schedule():
 
    from symposion.schedule import views as sv
 
    from symposion.schedule import models as sm
 

	
 
    old_schedule_json = sv._schedule_json
 

	
 
    @wraps(old_schedule_json)
 
    def schedule_json(request):
 
        schedule = old_schedule_json(request)
 

	
 
        for slot_data in schedule:
 
            slot = sm.Slot.objects.get(id=slot_data["conf_key"])
 
            presentation = slot.content
 
            if presentation is not None:
 
                update_presentation(request, slot_data, presentation)
 
            elif slot.kind.label.lower() == "keynote":
 
                update_keynote(request, slot_data)
 
            elif slot.kind.label.lower() == "housekeeping":
 
                update_housekeeping(request, slot_data)
 
            else:
 
                pass
 

	
 
        return schedule
 

	
 
    def update_presentation(request, slot_data, presentation):
 
        try:
 
            slot_data["reviewers"] = (
 
                presentation.speaker.conferencespeaker.reviewer
 
                if request.user.is_staff else ["redacted"]
 
            )
 
            slot_data["license"] = "CC BY-SA"
 
            slot_data["released"] = presentation.proposal_base.talkproposal.recording_release
 
            slot_data["twitter_id"] = presentation.speaker.conferencespeaker.twitter_username
 
        except Exception as e:
 
            print e
 

	
 
    def update_keynote(request, slot_data):
 
        keynotes = {
 
            "Brandon Rhodes": (User.objects.get(username="brandon").email, "brandon_rhodes"),
 
            "Carina C. Zona": (User.objects.get(username="cczona").email, "cczona"),
 
        }
 
        for speaker, values in keynotes.items():
 
            print speaker
 
            if speaker in slot_data["name"]:
 
                author_name = speaker
 
                author_email, author_twitter_id = values
 

	
 
        slot_data["name"] = "Keynote"
 
        slot_data["authors"] = [author_name]
 
        slot_data["contact"] = [
 
            author_email
 
        ] if request.user.is_staff else ["redacted"]
 
        slot_data["abstract"] = "Keynote presentation from North Bay Python 2017 by " + author_name
 
        slot_data["description"] = "Keynote presentation from North Bay Python 2017 by " + author_name
 
        slot_data["conf_url"] = "https://2017.northbaypython.org"
 
        slot_data["cancelled"] = False
 
        slot_data["reviewers"] = ""
 
        slot_data["license"] = "CC BY-SA"
 
        slot_data["twitter_id"] = author_twitter_id
 
        slot_data["released"] = True
 

	
 
    def update_housekeeping(request, slot_data):
 
        slot_data["contact"] = [
 
            "spam@northbaypython.org"
 
        ] if request.user.is_staff else ["redacted"]
 

	
 

	
 
    sv._schedule_json = schedule_json