Ejemplo n.º 1
0
def settings():
	cur_user = current_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()
	if cur_user.is_demo:
		# Don't let demo into settings
		return redirect(url_for("index"))
	else:
		if request.method == 'POST' and "defaultMessage" in request.form and "promoDefault" in request.form:
			defaultMessage = request.form["defaultMessage"]
			if request.form["promoDefault"].lower() == "true":
				promoDefault = True
			elif request.form["promoDefault"].lower() == "false":
				promoDefault = False
			if request.form["gvPW"]:
				gv_email = request.form["gvEmail"]
				gv_password = request.form["gvPW"]
			else:
				gv_email = None
				gv_password = None
			reply_to_email = request.form["replyEmail"]
			
			# Udpate Message Template
			if msgTemplate.update(defaultMessage) and cur_user.update(promoDefault, gv_email, gv_password, reply_to_email):
				return "Success"
			else:
				return False
		return render_response('settings.html',default_message=msgTemplate.message_text)
Ejemplo n.º 2
0
def new_promo():
	cur_user = current_user()
	templateName = request.form["templateName"]
	templateText = request.form["templateText"]
	msgTemplate = MessageTemplate(restaurant_key=cur_user.key,message_type=2,is_active=True,message_name=templateName,message_text=templateText)
	msgTemplate.put()
	return "Success"
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
def advertise():
	demo = request.args.get('demo')
	if not demo:
		demo = False
	elif demo.lower() == "true":
		demo = True
	else:
		demo = False
	cur_user = current_user()
	# Create a list of guests (as dicts) within the user's library
	optInList = []
	for guest in cur_user.get_optins():
		if guest.sms_number or guest.email:
			optin = {}
			optin["guest_ID"] = guest.key.id()
			if guest.first_name and guest.last_name:
				optin["name"] = guest.first_name + ' ' + guest.last_name
			elif guest.first_name:
				optin["name"] = guest.first_name
			if guest.preferred_contact == 'sms':
				optin["smsNumber"] = functions.stylizePhoneNumber(guest.sms_number)
			elif guest.preferred_contact == 'email':
				optin["email"] = guest.email
			if guest.subscribe_date:
				optin["subscribe_date"] = guest.subscribe_date.strftime('%m/%d/%y')
			else:
				optin["subscribe_date"] = "Unknown"
			if guest.signup_method:
				if guest.signup_method == 1:
					optin["signup_method"] = 'Waitlist'
				elif guest.signup_method == 2:
					optin["signup_method"] = 'SMS'
				elif guest.signup_method == 3:
					optin["signup_method"] = "Website"
			else:
				optin["signup_method"] = 'Waitlist'
			optin["promos_sent"] = Message.query(Message.restaurant_key==cur_user.key,Message.recipient_key==guest.key).count() # TODO: Don't count table notifications (it's going to be nasty to fix that!)
			optInList.append(optin)
	optInList.sort(key=lambda optin: optin["subscribe_date"])
	
	# Create list of MessageTemplates
	msgTemplates = []
	for msgTemplate in MessageTemplate.query(MessageTemplate.restaurant_key==cur_user.key,MessageTemplate.message_type==2,MessageTemplate.is_active==True).fetch():
		if msgTemplate.message_name: # If it doesn't have a name, we can't show it
			msg = {}
			msg["msgID"] = msgTemplate.key.id()
			msg["msgName"] = msgTemplate.message_name
			msg["msgText"] = msgTemplate.message_text
			msgTemplates.append(msg)
	msgTemplates.sort(key=lambda msg: msg["msgName"])
	return render_response("advertise.html", optInList=optInList, msgTemplates=msgTemplates, demo=demo)
Ejemplo n.º 5
0
def logout():
	# Clear out guests and checkins if demo account
	cur_user = current_user()
	if cur_user.is_demo:
		# Delete guest objects, checkin objects, and user object
		guests = Guest.query(Guest.restaurant_key==cur_user.key).fetch()
		for guest in guests:
			checkins = CheckIn.query(CheckIn.guest_key==guest.key).fetch()
			for checkin in checkins:
				checkin.key.delete()
			guest.key.delete()
		for msg in Message.query(Message.restaurant_key==cur_user.key).fetch():
			msg.key.delete()
		for msgTemplate in MessageTemplate.query(MessageTemplate.restaurant_key==cur_user.key).fetch():
			msgTemplate.key.delete()
		cur_user.key.delete()
	# Logs out User
	logout_account()
	return redirect(users.create_logout_url("/"))
Ejemplo n.º 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"