API Reference

deploy.py

deploy.create_or_update_environment(ssh)[source]

Create environment if non-existent, otherwise update the environment using the .yml file

deploy.git_clone(ssh)[source]

Clone a git repository - defined in user_definition.py

deploy.main()[source]

Implement ssh protocol to connect remotely to amazon server

deploy.run_app(ssh)[source]
  1. kill existing gunicorn processes
  2. make daemon bash script executable
  3. run app as daemon process
  4. print app’s port number
deploy.set_crontab(ssh)[source]

set a crontab to run google_search.py and event_brite.py every minute

deploy.ssh_client()[source]

Return ssh client object

deploy.ssh_connection(ssh, ec2_address, user, key_file)[source]

Connect to an SSH server and authenticate

classes.py

class app.classes.LoginForm(formdata=<object object>, **kwargs)[source]

Log in fields

password_entry = <UnboundField(PasswordField, ('Password',), {'validators': [<wtforms.validators.InputRequired object>]})>
submit = <UnboundField(SubmitField, ('Submit',), {})>
username_entry = <UnboundField(StringField, ('Username', [<wtforms.validators.InputRequired object>]), {})>
class app.classes.SurveyForm(formdata=<object object>, **kwargs)[source]

User survey information

age_entry = <UnboundField(SelectField, ('Age',), {'choices': [('under18', 'Under 18'), ('18_24', '18 - 24'), ('25_34', '25 - 34'), ('35_44', '35 - 44'), ('45_54', '45 - 54'), ('55_64', '55 - 64'), ('65_74', '65 - 74'), ('75_84', '75 - 84'), ('older_85', '85 or older')], 'validators': [<wtforms.validators.InputRequired object>]})>
email_entry = <UnboundField(EmailField, ('Email', [<wtforms.validators.InputRequired object>, <wtforms.validators.Email object>]), {})>
first_name_entry = <UnboundField(StringField, ('First Name', [<wtforms.validators.InputRequired object>]), {})>
food_entry = <UnboundField(SelectField, ('Rate your interest in "Food and Drinks" experiences: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
landmarks_entry = <UnboundField(SelectField, ('Rate your interest in visiting landmarks: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
last_name_entry = <UnboundField(StringField, ('Last Name', [<wtforms.validators.InputRequired object>]), {})>
museums_entry = <UnboundField(SelectField, ('Rate your interest in visiting museums: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
music_entry = <UnboundField(SelectField, ('Rate your interest in listening to concerts: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
nature_entry = <UnboundField(SelectField, ('Rate your interest in "Nature" experiences: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
nightlife_entry = <UnboundField(SelectField, ('Rate your interest in "Night Life" experiences: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
password_entry = <UnboundField(PasswordField, ('Password', [<wtforms.validators.InputRequired object>]), {})>
performing_entry = <UnboundField(SelectField, ('Rate your interest in Performing & Visual Arts: ',), {'choices': [('5', 'Very Interested'), ('4', 'Interested'), ('3', 'Neither'), ('2', 'Not really interested'), ('1', 'Not interested at all')], 'validators': [<wtforms.validators.InputRequired object>]})>
submit = <UnboundField(SubmitField, ('Submit',), {})>
username_entry = <UnboundField(StringField, ('Username', [<wtforms.validators.InputRequired object>]), {})>
class app.classes.Trip(name, where, start_date, end_date, creator)[source]

Trip object

creator
end_date
id
name
start_date
where
class app.classes.TripForm(formdata=<object object>, **kwargs)[source]

Trip survey information

end_date_entry = <UnboundField(DateField, ('End Date',), {'format': '%m-%d-%Y'})>
name_entry = <UnboundField(StringField, ('Trip Name',), {'validators': [<wtforms.validators.InputRequired object>]})>
party = <UnboundField(StringField, ('party',), {})>
start_date_entry = <UnboundField(DateField, ('Start Date',), {'validators': [<wtforms.validators.InputRequired object>], 'format': '%m-%d-%Y'})>
submit = <UnboundField(SubmitField, ('Submit',), {})>
where_entry = <UnboundField(StringField, ('Where',), {'validators': [<wtforms.validators.InputRequired object>]})>
class app.classes.User(username, email, password, first_name, last_name, age, food, nightlife, museums, nature, landmarks, music, performing)[source]

User object

age
check_password(password)[source]
email
first_name
food
id
landmarks
last_name
museums
music
nature
nightlife
password_hash
performing
set_password(password)[source]
username
app.classes.load_user(id)[source]

load current user based on their ID

routes.py

app.routes.add_event()[source]

add event to the schedule table for trip

app.routes.connect_to_db()[source]

start a psycopg2 connection to db return engine

app.routes.create_trip()[source]

Allow a user to create a new trip

app.routes.del_event()[source]

add event to the schedule table for trip

app.routes.event_row_to_dic(rec)[source]

converts a row from the event table to a dictionary

app.routes.get_schedule(t_name, suggested=False)[source]

query the schedule table to get either suggested schedule (suggested=True) or current schedule (suggested=False)

app.routes.index()[source]

Home page

app.routes.insert_recs(engine, e)[source]

given a database connection and recommendation, insert into the schedule table

app.routes.login()[source]

Existing user login

app.routes.logout()[source]

Allow a logded in user to logout

app.routes.my_account()[source]

Logged in user account page

app.routes.query_events(start_date, end_date, con)[source]

query the events table based on the start_date and end_date

app.routes.read_key(fname)[source]

reads in secret key from file assumes fname is at base of EC2

app.routes.register()[source]

Sign up

app.routes.rule_rec(event_df, user_ratings, N)[source]

Create event recommendations based on average of scores event_df: Pandas dataframe of queried events user_ratings: list of user ratings N: number of recommendations we would output output: list of dictionaries containing recommendation info

app.routes.scheduler()[source]
app.routes.t_belong(t_name, u_name)[source]

user must belong to trip to see trip

app.routes.trip_name(t_name)[source]
app.routes.unauthorize(e)[source]

route unauthorize users to the login page