def check_to_send_final_reminder_staffer_notifications(): try: min_dt = datetime.datetime.now() max_dt = datetime.datetime.now() + datetime.timedelta(hours=1) if SponsoredEvent.objects.filter(start__gte=min_dt, start__lte=max_dt).exists(): events = SponsoredEvent.objects.filter(start__range=(min_dt, max_dt)) count = 0 for event in events: staffers = EventStaffer.objects.filter( event=event, status=STAFFER_STATUS.PRIMARY) for staffer in staffers: text = "You should be on your way to the event at {0}. The address is {1}. Please confirm when you arrive by responding 'HERE'".format( staffer.event.place.name, staffer.event.place.street_address) send_chat_sms( text, normalize_phone_number(staffer.manager.phone_number), event_manager_number) notification = StafferNotification( event=staffer.event, manager=staffer.manager, notification_type=STAFFER_NOTIFICATION.FIRST_REMINDER) notification.save() count = count + 1 gm_sms = "{0} final reminders were sent for events today".format( count) send_chat_sms(gm_sms, "5413359388", event_manager_number) except: html = "Sending final staffer notifications failed" traceback.print_exc() html = html + str(traceback.format_exc()) send_error_email(html)
def post_save_for_event_staffer(sender, instance, created, **kwargs): if created: try: #email and text manager confirmation of promo code and link for next event pass except: html = "post save event staffer failed" send_error_email(html)
def post_save_for_event_staffer(sender, instance, created, **kwargs): if created: try: if instance.status == STAFFER_STATUS.PRIMARY: send_primary_confirmation_to_staffer(instance) elif instance.status == STAFFER_STATUS.BACKUP: send_backup_confirmation_to_staffer(instance) except: html = "post save event staffer failed" send_error_email(html)
def check_to_send_initial_staffer_notifications(): try: upcoming_events = SponsoredEvent.objects.filter( start__gte=datetime.datetime.now()) for event in upcoming_events: has_primary_staffer = EventStaffer.objects.filter( event=event).filter(status=STAFFER_STATUS.PRIMARY).exists() has_backup_staffer = EventStaffer.objects.filter( event=event).filter(status=STAFFER_STATUS.BACKUP).exists() if not (has_primary_staffer or has_backup_staffer): market = get_market_from_lat_lng(event.place.latitude, event.place.longitude) texted_managers = StafferNotification.objects.filter( event=event, notification_type=STAFFER_NOTIFICATION.INITIAL ).values_list('manager', flat=True) managers_to_text = EventManager.objects.filter( market=market).exclude(pk__in=texted_managers).exclude( status=MANAGER_STATUS.INACTIVE) if managers_to_text: time = get_event_time(event) date = get_event_date(event) if not has_primary_staffer: body = "Hotspot here! Would you be able to staff the event at {0} on {1} at {2}?\n\nPlease respond either 'Yes' or 'No' as soon as you can".format( event.place.name, date, time) for manager in managers_to_text: send_chat_sms(body, manager.phone_number, event_manager_number) create_initial_staffer_notification_tracker( event, manager) elif not has_backup_staffer: body = "Hotspot here! Would you be able to be the back-up for the event at {0} on {1} at {2}?\n\nPlease respond either 'Yes' or 'No' as soon as you can".format( event.place.name, date, time) for manager in managers_to_text: send_chat_sms(body, manager.phone_number, event_manager_number) create_initial_staffer_notification_tracker( event, manager) # else: # if (not has_primary_staffer): # body = "{0} doesn't have a primary staffer for the event at {1} and no more managers to text".format( # market.name, event.place.name) # send_chat_sms(body, "5413359388", event_manager_number) # if (not has_backup_staffer): # body = "{0} doesn't have a backup staffer for the event at {1} and no more managers to text".format( # market.name, event.place.name) # send_chat_sms(body, "5413359388", event_manager_number) except: html = "Sending initial staffer notifications failed" traceback.print_exc() html = html + str(traceback.format_exc()) send_error_email(html)
def send_post_save_notifications_to_staffer(event): try: market = get_market_from_lat_lng(event.place.latitude, event.place.longitude) managers_to_text = EventManager.objects.filter( market=market, status=MANAGER_STATUS.PRIMARY) time = get_event_time(event) date = get_event_date(event) body = "Hotspot here! Tickets just went live for an event at {0} on {1} at {2}. Would you be able to staff it?\n\nPlease respond either 'Yes' or 'No' as soon as you can".format( event.place.name, date, time) for manager in managers_to_text: create_initial_staffer_notification_tracker(event, manager) send_chat_sms(body, manager.phone_number, event_manager_number) except: html = "Sending post save notifications to staffer failed" traceback.print_exc() send_error_email(html)
def check_to_send_first_reminder_staffer_notifications(): try: day_after_tomorrow = datetime.datetime.now() + datetime.timedelta( days=2) min_dt = datetime.datetime.combine(day_after_tomorrow, datetime.time.min) max_dt = datetime.datetime.combine(day_after_tomorrow, datetime.time.max) if SponsoredEvent.objects.filter(start__range=(min_dt, max_dt)).exists(): events = SponsoredEvent.objects.filter(start__range=(min_dt, max_dt)) count = 0 for event in events: staffers = EventStaffer.objects.filter( event=event, status=STAFFER_STATUS.PRIMARY) for staffer in staffers: url = get_shortened_staffer_url(staffer) time = get_event_time(staffer.event) text = "You're scheduled to staff the event day after tomorrow at {0}. Make sure you arrive at {1} by {2}. Please confirm this by responding 'Yes'".format( staffer.event.place.name, staffer.event.place.street_address, time) send_chat_sms( text, normalize_phone_number(staffer.manager.phone_number), event_manager_number) notification = StafferNotification( event=staffer.event, manager=staffer.manager, notification_type=STAFFER_NOTIFICATION.FIRST_REMINDER) notification.save() count = count + 1 gm_sms = "{0} first reminders were sent for events in two days".format( count) send_chat_sms(gm_sms, "5413359388", event_manager_number) except: html = "Sending first reminder staffer notifications failed" traceback.print_exc() html = html + str(traceback.format_exc()) send_error_email(html)