Compare commits
6 Commits
patch-1
...
fake_migrate
| Author | SHA1 | Date | |
|---|---|---|---|
| 179edb659a | |||
| b4c2ee8304 | |||
| cb0c2e6edd | |||
| 2c364c2079 | |||
| 8faa5e2a82 | |||
| f1f65275f7 |
@@ -266,6 +266,12 @@ web2py will attempt to run a GUI to ask for it when starting the web server
|
|||||||
'(default is %(default)s), see -S above. NOTE: when the APP_ENV '
|
'(default is %(default)s), see -S above. NOTE: when the APP_ENV '
|
||||||
'argument of -S include a controller c automatic import of '
|
'argument of -S include a controller c automatic import of '
|
||||||
'models is always enabled')
|
'models is always enabled')
|
||||||
|
g.add_argument('--fake_migrate',
|
||||||
|
default=False,
|
||||||
|
action='store_true',
|
||||||
|
help=
|
||||||
|
'force DAL to fake migrate all tables; '
|
||||||
|
'monkeypatch in the DAL class to force _fake_migrate=True')
|
||||||
g.add_argument('--force_migrate', '--force-migrate',
|
g.add_argument('--force_migrate', '--force-migrate',
|
||||||
default=False,
|
default=False,
|
||||||
action='store_true', help=
|
action='store_true', help=
|
||||||
|
|||||||
+1
-1
@@ -204,7 +204,7 @@ def url_out(request, environ, application, controller, function,
|
|||||||
if host is True or (host is None and (scheme or port is not None)):
|
if host is True or (host is None and (scheme or port is not None)):
|
||||||
host = request.env.http_host
|
host = request.env.http_host
|
||||||
if not scheme or scheme is True:
|
if not scheme or scheme is True:
|
||||||
scheme = request.env.get('wsgi_url_scheme', 'http').lower() if request else 'http'
|
scheme = 'https' if request and request.is_https else 'http'
|
||||||
if host:
|
if host:
|
||||||
host_port = host if not port else host.split(':', 1)[0] + ':%s' % port
|
host_port = host if not port else host.split(':', 1)[0] + ':%s' % port
|
||||||
url = '%s://%s%s' % (scheme, host_port, url)
|
url = '%s://%s%s' % (scheme, host_port, url)
|
||||||
|
|||||||
+4
-1
@@ -217,7 +217,8 @@ def run(
|
|||||||
python_code=None,
|
python_code=None,
|
||||||
cron_job=False,
|
cron_job=False,
|
||||||
scheduler_job=False,
|
scheduler_job=False,
|
||||||
force_migrate=False):
|
force_migrate=False,
|
||||||
|
fake_migrate=False):
|
||||||
"""
|
"""
|
||||||
Start interactive shell or run Python script (startfile) in web2py
|
Start interactive shell or run Python script (startfile) in web2py
|
||||||
controller environment. appname is formatted like:
|
controller environment. appname is formatted like:
|
||||||
@@ -248,6 +249,7 @@ def run(
|
|||||||
fileutils.create_app(adir)
|
fileutils.create_app(adir)
|
||||||
|
|
||||||
if force_migrate:
|
if force_migrate:
|
||||||
|
c = 'appadmin' # Load all models (hack already used for appadmin controller)
|
||||||
import_models = True
|
import_models = True
|
||||||
from gluon.dal import DAL
|
from gluon.dal import DAL
|
||||||
orig_init = DAL.__init__
|
orig_init = DAL.__init__
|
||||||
@@ -255,6 +257,7 @@ def run(
|
|||||||
def custom_init(*args, **kwargs):
|
def custom_init(*args, **kwargs):
|
||||||
kwargs['migrate_enabled'] = True
|
kwargs['migrate_enabled'] = True
|
||||||
kwargs['migrate'] = True
|
kwargs['migrate'] = True
|
||||||
|
kwargs['fake_migrate'] = fake_migrate
|
||||||
logger.info('Forcing migrate_enabled=True')
|
logger.info('Forcing migrate_enabled=True')
|
||||||
orig_init(*args, **kwargs)
|
orig_init(*args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -741,7 +741,8 @@ def start():
|
|||||||
sys.argv = [options.run or ''] + options.args
|
sys.argv = [options.run or ''] + options.args
|
||||||
run(options.shell, plain=options.plain, bpython=options.bpython,
|
run(options.shell, plain=options.plain, bpython=options.bpython,
|
||||||
import_models=options.import_models, startfile=options.run,
|
import_models=options.import_models, startfile=options.run,
|
||||||
cron_job=options.cron_job, force_migrate=options.force_migrate)
|
cron_job=options.cron_job, force_migrate=options.force_migrate,
|
||||||
|
fake_migrate=options.fake_migrate)
|
||||||
return
|
return
|
||||||
|
|
||||||
# set size of cron thread pools
|
# set size of cron thread pools
|
||||||
|
|||||||
+3
-1
@@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
'''
|
'''
|
||||||
To use, e.g. python .\web2py.py -S APPNAME --force_migrate
|
To use, e.g. python .\web2py.py -S APPNAME --force_migrate
|
||||||
|
To use, e.g. python .\web2py.py -S APPNAME --force_migrate --fake_migrate
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@@ -31,5 +32,6 @@ for db_name in databases:
|
|||||||
for table_name in tables:
|
for table_name in tables:
|
||||||
# Force migration of lazy tables
|
# Force migration of lazy tables
|
||||||
logger.debug("Ensuring migration of table '%s'", table_name)
|
logger.debug("Ensuring migration of table '%s'", table_name)
|
||||||
db(db[table_name]).isempty()
|
table = db[table_name]
|
||||||
|
db(table).isempty()
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|||||||
Reference in New Issue
Block a user