def refresh_manage(): cur_user = current_user() waitlist = [] if cur_user: # Create a list of guests (as dicts) within the user's library for checkin in cur_user.get_checkedin_guests(): guest = Guest.get_by_id(checkin.guest_key.id()) checkedinGuest = {} checkedinGuest["guest_ID"] = checkin.guest_key.id() checkedinGuest["checkin_ID"] = checkin.key.id() checkedinGuest["firstName"] = guest.first_name checkedinGuest["lastName"] = guest.last_name if guest.sms_number: checkedinGuest["sms"] = functions.stylizePhoneNumber(guest.sms_number) checkedinGuest["email"] = guest.email checkedinGuest["partySize"] = checkin.party_size arrival_time = checkin.signin_time - timedelta(hours=6) checkedinGuest["arrival_time"] = arrival_time.strftime('%I:%M %p') checkedinGuest["wait_estimate"] = checkin.wait_estimate target_time = arrival_time + timedelta(minutes=checkin.wait_estimate) checkedinGuest["target_time"] = target_time.strftime('%I:%M %p') waitlist.append(checkedinGuest) # Sort guestlist by arrival time (oldest on top) waitlist.sort(key=lambda guest: guest["arrival_time"]) jsondump = json.dumps(waitlist) return jsondump return "User Not Logged In"
def manage(): tour = request.args.get('tour') cur_user = current_user() guestlist = [] if cur_user: # Get message template msgTemplate = MessageTemplate.query(MessageTemplate.restaurant_key==cur_user.key,MessageTemplate.message_type==1,MessageTemplate.is_active==True).get() if not msgTemplate: # No template exists, create one msgTemplate = MessageTemplate(restaurant_key=cur_user.key,message_type=1,is_active=True,message_text="{firstName}, your table is almost ready. Need more time? Reply ""bump"" and the # of minutes you'd like.") msgTemplate.put() # Create a list of guests (as dicts) within the user's library for checkin in cur_user.get_checkedin_guests(): guest = Guest.get_by_id(checkin.guest_key.id()) checkedinGuest = {} checkedinGuest["guest_ID"] = checkin.guest_key.id() checkedinGuest["checkin_ID"] = checkin.key.id() checkedinGuest["firstName"] = guest.first_name checkedinGuest["lastName"] = guest.last_name if guest.sms_number: checkedinGuest["sms"] = functions.stylizePhoneNumber(guest.sms_number) checkedinGuest["email"] = guest.email checkedinGuest["partySize"] = checkin.party_size arrival_time = checkin.signin_time - timedelta(hours=6) checkedinGuest["arrival_time"] = arrival_time checkedinGuest["wait_estimate"] = checkin.wait_estimate checkedinGuest["target_time"] = arrival_time + timedelta(minutes=checkin.wait_estimate) guestlist.append(checkedinGuest) # Sort guestlist by arrival time (oldest on top) guestlist.sort(key=lambda guest: guest["arrival_time"]) return render_response("manage.html", guestlist=guestlist, cur_user=cur_user, tour=tour, default_message=msgTemplate.message_text)
def send_promo(cls,guest_ID,msgTemplate): cur_user = current_user() guest = Guest.get_by_id(int(guest_ID)) # Create Message Object msg = Message(restaurant_key = cur_user.key, recipient_key = guest.key, contact_method = guest.preferred_contact, time_initiated = datetime.now(), message_template_key=msgTemplate.key) # Create msg_text from msgTemplate.message_text msg_text = msgTemplate.message_text if guest.first_name: msg_text = msg_text.replace('{firstName}',guest.first_name) if guest.last_name: msg_text = msg_text.replace('{lastName}',guest.last_name) # Send Message logging.info("Attempting to send promo to %s..." % str(guest.first_name) + ' ' + str(guest.last_name)) if msg.send_message(guest,msg_text): msg.send_success = True else: msg.send_success = False # Store Message msg.put() # Return success return msg.send_success
def send_notification(cls,guest_ID,msg_text=False): cur_user = current_user() guest = Guest.get_by_id(int(guest_ID)) # Create Message Object msg = Message(restaurant_key = cur_user.key, recipient_key = guest.key, contact_method = guest.preferred_contact, time_initiated = datetime.now()) # If a default notification, populate msg_text and store MessageTemplate Key if not msg_text: msgTemplate = MessageTemplate.query(MessageTemplate.restaurant_key==cur_user.key,MessageTemplate.message_type==1,MessageTemplate.is_active==True).get() if not msgTemplate: # No template exists (new user), create one msgTemplate = MessageTemplate(restaurant_key=cur_user.key,message_type=1,is_active=True,message_text="{firstName}, your table is almost ready. Need more time? Reply ""bump"" and the # of minutes you'd like.") msgTemplate.put() msg.message_template_key = msgTemplate.key msg_text = msgTemplate.message_text if guest.first_name: msg_text = msg_text.replace('{firstName}',guest.first_name) if guest.last_name: msg_text = msg_text.replace('{lastName}',guest.last_name) # Send Message logging.info("Attempting to send notification to %s..." % str(guest.first_name) + ' ' + str(guest.last_name)) if msg.send_message(guest,msg_text): msg.send_success = True else: msg.send_success = False # Store Message msg.put() # Return success return msg.send_success
def undo_optout_guest(guest_ID): guest = Guest.get_by_id(int(guest_ID)) if guest: guest.opt_in = True guest.put() return "Success" else: return "Error"
def send_promos(): cur_user = current_user() sms_counter = 0 if request.form["schedule"] == "now": msgTemplate = MessageTemplate.get_by_id(int(request.form["msgTemplate"])) # Nasty hack because I just don't get JSON for key in request.form: if key[:5] == "guest": # Send message if not cur_user.is_demo or sms_counter <= 10: Message.send_promo(request.form[key], msgTemplate) if Guest.get_by_id(int(request.form[key])).preferred_contact == 'sms': sms_counter = sms_counter + 1 if sms_counter % 5 == 0: # Delay message 1 min with every 5 sms time.sleep(60) return "Success"