scripts/interactive.py
author Sverre Rabbelier <srabbelier@gmail.com>
Mon, 07 Sep 2009 20:36:14 +0200
changeset 2879 cb0f9b4646aa
parent 2871 e440e94a874b
child 2907 fbf0d63f37b9
permissions -rw-r--r--
Revert "revert wrong head" This reverts commit re440e94a87.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    17
"""This module supplies an interactive shell with remote api configured.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
Usage is simple:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
2039
07f46319d24f Fix docstring in interactive.py script.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2024
diff changeset
    21
App Engine interactive console
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
>>> from soc.models.user import User
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
>>> gen = lambda: User.all()
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
>>> it = deepFetch(gen)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
>>> result = [i for i in it]
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
"""
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    27
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
__authors__ = [
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    30
  '"Pawel Solyga" <pawel.solyga@gmail.com>',
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
]
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    33
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    34
import code
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
import getpass
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
import os
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    37
import sys
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    38
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    39
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    40
def auth_func():
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
  """Returns a tuple with username and password.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    42
  """
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    44
  return raw_input('Username:'), getpass.getpass('Password:')
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    45
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    46
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    47
def deepFetch(queryGen, key=None, filters=None, batchSize = 100):
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
  """Iterator that yields an entity in batches.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    49
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
  Args:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
    queryGen: should return a Query object
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
    key: used to .filter() for __key__
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    53
    filters: dict with additional filters
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
    batchSize: how many entities to retrieve in one datastore call
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
  Retrieved from http://tinyurl.com/d887ll (AppEngine cookbook).
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    57
  """
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    58
2056
bbd16a156bde Print how many entities have been retrieved
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2046
diff changeset
    59
  from google.appengine.ext import db
bbd16a156bde Print how many entities have been retrieved
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2046
diff changeset
    60
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    61
   # AppEngine will not fetch more than 1000 results
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    62
  batchSize = min(batchSize, 1000)
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    63
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    64
  query = None
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    65
  done = False
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    66
  count = 0
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    67
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    68
  if key:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    69
    key = db.Key(key)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    70
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    71
  while not done:
2056
bbd16a156bde Print how many entities have been retrieved
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2046
diff changeset
    72
    print count
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
    query = queryGen()
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    74
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    75
    if filters:
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    76
      for key, value in filters.items():
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    77
        query.filter(key, value)
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    78
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    79
    if key:
2702
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    80
      query.filter("__key__ > ", key)
028f6adffde7 Added optional filters property to deepFetch.
Pawel Solyga <pawel.solyga@gmail.com>
parents: 2056
diff changeset
    81
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    82
    results = query.fetch(batchSize)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    83
    for result in results:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    84
      count += 1
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    85
      yield result
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    86
    if batchSize > len(results):
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    87
      done = True
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    88
    else:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    89
      key = results[-1].key()
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    90
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    91
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
    92
def remote(args, context=None):
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    93
  """Starts a shell with the datastore as remote_api_stub.
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
    94
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
    95
  Args:
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
    96
    args: arguments from the user
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
    97
    context: locals that should be added to the shell
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    98
  """
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    99
2879
cb0f9b4646aa Revert "revert wrong head"
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2871
diff changeset
   100
  from google.appengine.api import apiproxy_stub_map
cb0f9b4646aa Revert "revert wrong head"
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2871
diff changeset
   101
  from google.appengine.api.memcache import memcache_stub
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   102
  from google.appengine.ext import db
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   103
  from google.appengine.ext.remote_api import remote_api_stub
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   104
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   105
  if not context:
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   106
    context = {}
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   107
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   108
  app_id = args[0]
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   109
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   110
  if len(args) > 1:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   111
    host = args[1]
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   112
  else:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   113
    host = '%s.appspot.com' % app_id
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   114
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   115
  remote_api_stub.ConfigureRemoteDatastore(app_id, '/remote_api', auth_func, host)
2879
cb0f9b4646aa Revert "revert wrong head"
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2871
diff changeset
   116
  apiproxy_stub_map.apiproxy.RegisterStub('memcache',
cb0f9b4646aa Revert "revert wrong head"
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2871
diff changeset
   117
      memcache_stub.MemcacheServiceStub())
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   118
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   119
  context['deepFetch'] = deepFetch
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   120
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   121
  code.interact('App Engine interactive console for %s' % (app_id,), None, context)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   122
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   123
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   124
def setup():
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   125
  """Sets up the sys.path and environment for development.
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   126
  """
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   127
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   128
  here = os.path.abspath(__file__)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   129
  here = os.path.join(os.path.dirname(here), '..')
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   130
  here = os.path.normpath(here)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   131
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   132
  appengine_location = os.path.join(here, 'thirdparty', 'google_appengine')
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   133
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   134
  extra_paths = [here,
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   135
                 os.path.join(appengine_location, 'lib', 'django'),
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   136
                 os.path.join(appengine_location, 'lib', 'webob'),
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   137
                 os.path.join(appengine_location, 'lib', 'yaml', 'lib'),
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   138
                 appengine_location,
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   139
                 os.path.join(here, 'app'),
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   140
                ]
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   141
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   142
  sys.path = extra_paths + sys.path
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   143
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   144
  os.environ['SERVER_SOFTWARE'] = 'Development Interactive Shell'
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   145
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   146
  import main as app_main
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   147
2046
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   148
def main(args):
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   149
  """Convenience wrapper that calls setup and remote.
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   150
  """
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   151
1fb1c628ad60 Factor out the setup() method in interactive
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2039
diff changeset
   152
  setup()
2024
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   153
  remote(args)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   154
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   155
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   156
if __name__ == '__main__':
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   157
  if len(sys.argv) < 2:
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   158
    print "Usage: %s app_id [host]" % (sys.argv[0],)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   159
    sys.exit(1)
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   160
43e5b515b71d Add a script to start an interactive shell with remote api
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   161
  main(sys.argv[1:])