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.conf import settings | ||||||
|  | from django.contrib.auth.models import User | ||||||
| from django.core.mail import EmailMultiAlternatives | from django.core.mail import EmailMultiAlternatives | ||||||
| from functools import wraps | from functools import wraps | ||||||
| 
 | 
 | ||||||
|  | @ -12,6 +13,7 @@ class MonkeyPatchMiddleware(object): | ||||||
| 
 | 
 | ||||||
| def do_monkey_patch(): | def do_monkey_patch(): | ||||||
|     patch_stripe_card_defaults() |     patch_stripe_card_defaults() | ||||||
|  |     patch_conference_schedule() | ||||||
| 
 | 
 | ||||||
|     # Remove this function from existence |     # Remove this function from existence | ||||||
|     global do_monkey_patch |     global do_monkey_patch | ||||||
|  | @ -24,9 +26,71 @@ def patch_stripe_card_defaults(): | ||||||
| 
 | 
 | ||||||
|     old_sync_card = sources.sync_card |     old_sync_card = sources.sync_card | ||||||
| 
 | 
 | ||||||
|  |     @wraps(old_sync_card) | ||||||
|     def sync_card(customer, source): |     def sync_card(customer, source): | ||||||
|         d = defaultdict(str) |         d = defaultdict(str) | ||||||
|         d.update(source) |         d.update(source) | ||||||
|         return old_sync_card(customer, d) |         return old_sync_card(customer, d) | ||||||
| 
 | 
 | ||||||
|     sources.sync_card = sync_card |     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