Adds monkey patch of schedule
This commit is contained in:
		
							parent
							
								
									40c42af2d6
								
							
						
					
					
						commit
						895b8cc9c4
					
				
					 1 changed files with 64 additions and 0 deletions
				
			
		|  | @ -1,4 +1,5 @@ | |||
| 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,71 @@ 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 == "keynote": | ||||
|                 update_keynote(request, slot_data) | ||||
|             else: | ||||
|                 pass | ||||
| 
 | ||||
|         return schedule | ||||
| 
 | ||||
|     def update_presentation(request, slot_data, presentation): | ||||
|         try: | ||||
|             slot_data["reviewer"] = ( | ||||
|                 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["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", | ||||
|         slot_data["description"] = "Keynote presentation from North Bay Python 2017" | ||||
|         slot_data["conf_url"] = "https://2017.northbaypython.org" | ||||
|         slot_data["cancelled"] = False, | ||||
|         slot_data["reviewer"] = "" | ||||
|         slot_data["licence"] = "CC BY-SA" | ||||
|         slot_data["twitter_id"] = author_twitter_id | ||||
|         slot_data["released"] = True | ||||
| 
 | ||||
|     sv._schedule_json = schedule_json | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer