An conference organizer app to help you schedule your conferences. Deployed on Google Cloud Platform using and implemented by Python mostly.
This is a README of Udacity Nanodegree Project 4. This file is response to project problems.
- OS: win7 x64
- python 2.7
- Google App Engine: SDK 1.9.32.
-
clone this project and replace some values with your own GAE app-id
- 'application' of
app.yaml
-> your own GAE app-id - 'WEB_CLIENT_ID' of
settings.py
-> your client-id from developer_console.API_manager.Credentials - CLIENT_ID (line 89) of
static/js/app.js
-> your client-id from developer_console.API_manager.Credentials
- 'application' of
-
run the app in Google App Engine GUI
-
deploy app
-
test the app in API Explorer
- url:
http://<your-app-id>.appspot.com/_ah/api/explorer
- my deployment:
http://http://nd-conf-org.appspot.com/_ah/api/explorer
- I've prepared a brief test flow through Task_1 to Task_4, recording in TEST_PLAN.md
- url:
- In order to reuse the existing code of conference app Model, I added model
Speaker
as child kind ofProfile
Speaker
entity is defined with name and websafe key
Session
is added as a child kind ofConference
.- I use KeyProperty for indexing speakers in the session entity by storing speakers entity datastore key.
- time-related properties, use DateProperty, TimeProperty, and IntegerProperty
- Other property uses StringProperty
sessionKeysOnWishlist
is a property of user profile kind, where it's a list of sessions.- five models update operation require transactional
- update of conference
- update of speaker
- update of session
- attending to a conference
- add a session to wishlist
- indexes for querying are defined in
index.yaml
- Two Additional Queries
- getConferenceSessionsByHighlight()
- supporting user to query session with highlight string
- getConferenceSessionsByLocation()
- supporting user to query session with location string
- getConferenceSessionsByHighlight()
- Query Problem
- Since the feature of datastore indexes, we cannot develop a query with two inequality filters on two different queries
- We need to avoid second inequality filter
# solution 1: using list comprehension
ans = [session for session in sessions.fetch()
if session.typeOfSession != "WORKSHOP"]
# solution 2: using IN-operator
ans = sessions.filter(
Session.typeOfSession.IN(
["NOT_SPECIFIED", "LECTURE", "KEYNOTE", "CODELAB"])```
- since typeOfSession is not in fixed format, using solution 1 is better
- this is implemented in
queryProblem()
inconference.py
- this is implemented in