the mail was send to you prior to posting here..
On May 21, 2:36 pm, mdipierro <[email protected]> wrote:
> Please email it to me. If I cut and paste I lose indentation.
>
> Massimo
>
> On May 21, 2:04 am, HansD <[email protected]> wrote:
>
> > and some additional patches (already send per email):
> > - for gae it enables the gae build admin console at admin-gae (for
> > admin only)
> > - when accessing /admin on a gea (sdk) it gives a more descriptive
> > error msg
> > - gentle way of switching between gae-backend and normal backend in
> > the applications db.py
> > - some typos
>
> > Index: app.yaml
> > ===================================================================
> > --- app.yaml (revision 954)
> > +++ app.yaml (working copy)
> > @@ -10,6 +10,10 @@
> > upload: applications/(.+?)/static/(.+)
> > secure: optional
>
> > +- url: /admin-gae/.*
> > + script: $PYTHON_LIB/google/appengine/ext/admin
> > + login: admin
> > +
> > - url: .*
> > script: gaehandler.py
> > secure: optional
> > @@ -27,5 +31,5 @@
> > (\..*)|
> > ((admin|examples|welcome)\.tar)|
> > (applications/(admin|examples)/.*)|
> > - (applicaitons/.*/databases/.*) |
> > + (applications/.*/databases/.*) |
> > )$
> > Index: applications/admin/models/access.py
> > ===================================================================
> > --- applications/admin/models/access.py (revision 954)
> > +++ applications/admin/models/access.py (working copy)
> > @@ -7,7 +7,7 @@
> > return os.path.join(opath, path).replace('\\', '/')
>
> > # ###########################################################
> > -# ## make sure administrator is on localhost
> > +# ## make sure administrator is on localhost or https
> > # ###########################################################
>
> > http_host = request.env.http_host.split(':')[0]
> > @@ -27,7 +27,7 @@
> > in ['https', 'HTTPS']:
> > session.secure()
> > elif not remote_addr in hosts:
> > - raise HTTP(200, T('Admin is disabled because unsecure channel'))
> > + raise HTTP(200, T('Admin is disabled because insecure channel'))
>
> > try:
> > _config = {}
> > @@ -37,7 +37,12 @@
> > if not 'password' in _config or not _config['password']:
> > raise HTTP(200, T('admin disabled because no admin
> > password'))
> > except IOError:
> > - raise HTTP(200,
> > + from gluon.settings import settings
> > + if settings.web2py_runtime_gae:
> > + raise HTTP(200,
> > + T('admin disabled because not supported on google
> > apps engine'))
> > + else:
> > + raise HTTP(200,
> > T('admin disabled because unable to access password
> > file'))
>
> > # ###########################################################
> > Index: applications/welcome/controllers/default.py
> > ===================================================================
> > --- applications/welcome/controllers/default.py (revision 954)
> > +++ applications/welcome/controllers/default.py (working copy)
> > @@ -8,7 +8,7 @@
>
> > def index():
> > """
> > - example action using the internationalizaiton operator T and
> > flash
> > + example action using the internationalization operator T and
> > flash
> > rendered by views/default/index.html or views/generic.html
> > """
> > response.flash = T('Welcome to web2py')
> > Index: applications/welcome/models/db.py
> > ===================================================================
> > --- applications/welcome/models/db.py (revision 954)
> > +++ applications/welcome/models/db.py (working copy)
> > @@ -2,17 +2,24 @@
> > ## This scaffolding model makes your app work on Google App Engine
> > too
>
> > #########################################################################
>
> > -try:
> > - from gluon.contrib.gql import * # if running on Google App
> > Engine
> > -except:
> > - db = SQLDB('sqlite://storage.sqlite') # if not, use SQLite or
> > other DB
> > -else:
> > - db = GQLDB() # connect to Google BigTable
> > - session.connect(request, response, db=db) # and store sessions
> > there
> > +from gluon.settings import settings
> > +
> > +# if running on Google App Engine
> > +if settings.web2py_runtime_gae:
> > + from gluon.contrib.gql import *
> > +
> > + # connect to Google BigTable
> > + db = GQLDB()
> > + # and store sessions there
> > + session.connect(request, response, db=db)
> > # or use the following lines to store sessions in Memcache
> > #from gluon.contrib.memdb import MEMDB
> > #from google.appengine.api.memcache import Client
> > #session.connect(request, response, db=MEMDB(Client()))
> > +else:
> > + # if not, use SQLite or other DB
> > + db = SQLDB('sqlite://storage.sqlite')
> > +
>
> > #########################################################################
> > ## uncomment the following line if you do not want sessions
> > Index: applications/examples/models/db.py
> > ===================================================================
> > --- applications/examples/models/db.py (revision 954)
> > +++ applications/examples/models/db.py (working copy)
> > @@ -1,15 +1,20 @@
> > +#########################################################################
> > +## This scaffolding model makes your app work on Google App Engine
> > too
> > +#########################################################################
>
> > -#
> > ########################################################################
> > -# # This scaffolding model makes your app work on Google App Engine
> > too
> > -#
> > ########################################################################
> > +from gluon.settings import settings
>
> > -try:
> > - from gluon.contrib.gql import * # if running on Google App
> > Engine
> > -except:
> > - db = SQLDB('sqlite://storage.sqlite') # if not, use SQLite or
> > other DB
> > +# if running on Google App Engine
> > +if settings.web2py_runtime_gae:
> > + from gluon.contrib.gql import *
> > +
> > + # connect to Google BigTable
> > + db = GQLDB()
> > + # and store sessions there
> > + session.connect(request, response, db=db)
> > else:
> > - db = GQLDB() # connect to Google BigTable
> > - session.connect(request, response, db=db) # and store sessions
> > there
> > + # if not, use SQLite or other DB
> > + db = SQLDB('sqlite://storage.sqlite')
>
> > db.define_table(
> > 'users',
> > @@ -43,12 +48,14 @@
> > SQLField('quantity', 'integer')
> > )
>
> > -from gluon.settings import settings
> > -if not settings.web2py_runtime_gae:
> > +# if running on Google App Engine
> > +if settings.web2py_runtime_gae:
> > + # quick hack to skip the join
> > + purchased = None
> > +else:
> > + # use a joined view
> > purchased = (db.users.id == db.purchases.buyer_id) &
> > (db.products.id
> > == db.purchases.product_id)
> > -else:
> > - purchased = None
>
> > db.users.name.requires = IS_NOT_EMPTY()
> > db.users.email.requires = [IS_EMAIL(), IS_NOT_IN_DB(db,
> > 'users.email')]
> > Index: gluon/restricted.py
> > ===================================================================
> > --- gluon/restricted.py (revision 954)
> > +++ gluon/restricted.py (working copy)
> > @@ -53,7 +53,7 @@
>
> > def log(self, request):
> > """
> > - logs the exeption.
> > + logs the exception.
> > """
>
> > a = request.application
> > @@ -91,10 +91,10 @@
> > self.traceback = d['traceback']
>
> > -def restricted(code, environment={}, layer='Unkown'):
> > +def restricted(code, environment={}, layer='Unknown'):
> > """
> > - runs code in evrionment and returns the output. if an exeception
> > occurs
> > - in code it raises a RestrictedError containg the traceback. layer
> > is passed
> > + runs code in environment and returns the output. if an exception
> > occurs
> > + in code it raises a RestrictedError containing the traceback.
> > layer is passed
> > to RestrictedError to identify where the error occurred.
> > """
>
> > On May 20, 4:13 am, mdipierro <[email protected]> wrote:
>
> > > Can you please email this to me? thanks
>
> > > On May 19, 5:13 pm, HansD <[email protected]> wrote:
>
> > > > update for database_examples.py:
> > > > - small bug fixed for the gae_hack
> > > > - updated the form to work with dropdown boxes (also for non-gae)
>
> > > > Index: applications/examples/controllers/database_examples.py
> > > > ===================================================================
> > > > --- applications/examples/controllers/database_examples.py
> > > > (revision
> > > > 953)
> > > > +++ applications/examples/controllers/database_examples.py (working
> > > > copy)
> > > > @@ -52,13 +52,27 @@
> > > > """ uses a form to query who is buying what. validates form and
> > > > updates existing record or inserts new record in purchases
> > > > """
>
> > > > - form = FORM(TABLE(TR('Buyer id:', INPUT(_type='text',
> > > > - _name='buyer_id', requires=IS_NOT_EMPTY())),
> > > > - TR('Product id:', INPUT(_type='text',
> > > > _name='product_id'
> > > > - , requires=IS_NOT_EMPTY())), TR('Quantity:',
> > > > - INPUT(_type='text', _name='quantity',
> > > > - requires=IS_INT_IN_RANGE(1, 100))), TR('',
> > > > - INPUT(_type='submit', _value='Order'))))
> > > > + buyerRecords = db().select(db.users.ALL)
> > > > + buyerOptions = []
> > > > + for row in buyerRecords:
> > > > + buyerOptions.append(OPTION(row.name, _value=row.id))
> > > > +
> > > > + productRecords = db().select(db.products.ALL)
> > > > + productOptions = []
> > > > + for row in productRecords:
> > > > + productOptions.append(OPTION(row.name, _value=row.id))
> > > > +
> > > > + form = FORM(TABLE(
> > > > + TR('Buyer id:',
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---