I actually tried the tutorial posted here:
and here are some information that wasn't mentioned but might be helpful for absolute beginners like me:
You must first register with janrain and take note of the application name
In models/db_janrain.py, you need to set domain to the application name you registered with. In the tutorial it is set to web2py. It is https://blabla.rpxnow.com/, where blabla is the applciation name.
The file janrain_api_key.txt will contain only the secret api key, which you can see in the janrain dashboard.
The web2py source does not have app.yaml. So you copy the one in google_appengine/new_project_template over to web2py/.
Edit the file and set the application (first line) to the one you registered with in app engine. Then set script to gaehandler.py (under handlers)
When running the local app engine instance for the first time to build indexes, be sure to change the url in models/db_janrain.py from localhost:8000 to localhost:8080. If you don't it will redirect to the web2py instance instead of the app engine instance, and the indexes will not be built causing an error when running it in appspot.com
When deploying, appcfg can be found under the google_appengine/ folder, so just copy the full path.
Now, for the question. The friends and search pages do not work when deploying on GAE, both on localhost:8080 and on the real server. It works fine when using the web2py server but not on the GAE. My best guess are database issues, since GAE might not be supporting the db calls used in the tutorial. The errors are:
on friends/default/friends/ when viewing the page
ERROR 2011-03-24 07:34:36,785 restricted.py:55] In FILE: /home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py
Traceback (most recent call last):
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/restricted.py", line 188, in restricted
exec ccode in environment
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py:friends", line 93, in <module>
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/globals.py", line 124, in <lambda>
self._caller = lambda f: f()
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/tools.py", line 2331, in f
return action(*a, **b)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py:friends", line 68, in friends
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 5009, in select
return self.db._adapter.select(self.query,fields,attributes)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2892, in select
(items, tablename, fields) = self.select_raw(query,fields,attributes)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2841, in select_raw
tablename = self.get_table(query)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 955, in get_table
raise RuntimeError, "Too many tables selected"
RuntimeError: Too many tables selected
on friends/default/search/ when trying to search
ERROR 2011-03-24 07:35:23,136 restricted.py:55] In FILE: /home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py
Traceback (most recent call last):
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/restricted.py", line 188, in restricted
exec ccode in environment
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py:search", line 93, in <module>
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/globals.py", line 124, in <lambda>
self._caller = lambda f: f()
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/tools.py", line 2331, in f
return action(*a, **b)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/applications/friends/controllers/default.py:search", line 59, in search
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 5009, in select
return self.db._adapter.select(self.query,fields,attributes)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2892, in select
(items, tablename, fields) = self.select_raw(query,fields,attributes)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2849, in select_raw
filters = self.expand(query)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2734, in expand
return expression.op(expression.first, expression.second)
File "/home/arbie/Documents/python/workspace/supaprends/google_appengine/web2py/gluon/dal.py", line 2595, in OR
def OR(self,first,second): raise SyntaxError, "Not supported"
SyntaxError: Not supported
It would be great if somebody would post a way to get around these limitations assuming they are issues on the db layer. I *typed* the code in the video as verbatim as it could be.