First attempt to force migration of the tables even with migrate option set to false.

This commit is contained in:
2019-05-15 20:07:36 +01:00
parent b291239a41
commit 96534ccf30
2 changed files with 23 additions and 2 deletions

View File

@@ -214,7 +214,8 @@ def run(
bpython=False,
python_code=None,
cronjob=False,
scheduler_job=False):
scheduler_job=False,
force_migrate=False):
"""
Start interactive shell or run Python script (startfile) in web2py
controller environment. appname is formatted like:
@@ -244,6 +245,19 @@ def run(
os.mkdir(adir)
fileutils.create_app(adir)
if force_migrate:
import_models = True
from gluon.dal import DAL
orig_init = DAL.__init__
def custom_init(*args, **kwargs):
kwargs['migrate'] = True
logger.info('Forcing migrate=True')
orig_init(*args, **kwargs)
DAL.__init__ = custom_init
logger.debug('Custom init should not have been called already')
if c:
import_models = True
extra_request = {}

View File

@@ -839,6 +839,13 @@ web2py will attempt to run a GUI to ask for it when starting the web server
'collect coverage data when used with --run_system_tests; ' \
'require Python 2.7+ and the coverage module installed')
parser.add_option('--force_migrate',
default=False,
action='store_true',
help= \
'force DAL to migrate all tables that should be migrated when enabled; ' \
'monkeypatch in the DAL class to force _migrate_enabled=True')
if '-A' in sys.argv:
k = sys.argv.index('-A')
elif '--args' in sys.argv:
@@ -1037,7 +1044,7 @@ def start():
sys.argv = [options.run] + options.args
run(options.shell, plain=options.plain, bpython=options.bpython,
import_models=options.import_models, startfile=options.run,
cronjob=options.cronjob)
cronjob=options.cronjob, force_migrate=options.force_migrate)
return
if options.extcron: