Пример #1
0
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"
Пример #2
0
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)
Пример #3
0
	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
Пример #4
0
	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
Пример #5
0
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"
Пример #6
0
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"