Merge pull request #10382 from gavindsouza/no-site-specified

fix(commands): raise SiteNotSpecifiedError if site not found in context
This commit is contained in:
mergify[bot] 2020-06-01 08:39:02 +00:00 committed by GitHub
commit 6719904e6e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 93 additions and 15 deletions

View file

@ -231,9 +231,8 @@ def get_site_config(sites_path=None, site_path=None):
if os.path.exists(site_config):
config.update(get_file_json(site_config))
elif local.site and not local.flags.new_site:
print("{0} does not exist".format(local.site))
print("Site {0} does not exist".format(local.site))
sys.exit(1)
#raise IncorrectSitePath, "{0} does not exist".format(site_config)
return _dict(config)

View file

@ -22,7 +22,11 @@ def pass_context(f):
pr = cProfile.Profile()
pr.enable()
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
try:
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
except frappe.exceptions.SiteNotSpecifiedError as e:
click.secho(str(e), fg='yellow')
sys.exit(1)
if profile:
pr.disable()
@ -44,8 +48,7 @@ def get_site(context):
site = context.sites[0]
return site
except (IndexError, TypeError):
print('Please specify --site sitename')
sys.exit(1)
raise frappe.SiteNotSpecifiedError
def popen(command, *args, **kwargs):
output = kwargs.get('output', True)

View file

@ -4,6 +4,7 @@ import sys
import frappe
from frappe.utils import cint
from frappe.commands import pass_context, get_site
from frappe.exceptions import SiteNotSpecifiedError
def _is_scheduler_enabled():
enable_scheduler = False
@ -30,6 +31,8 @@ def trigger_scheduler_event(context, event):
frappe.utils.scheduler.trigger(site, event, now=True)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('enable-scheduler')
@pass_context
@ -45,6 +48,8 @@ def enable_scheduler(context):
print("Enabled for", site)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('disable-scheduler')
@pass_context
@ -60,7 +65,8 @@ def disable_scheduler(context):
print("Disabled for", site)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('scheduler')

View file

@ -15,6 +15,7 @@ import frappe
from frappe import _
from frappe.commands import get_site, pass_context
from frappe.commands.scheduler import _is_scheduler_enabled
from frappe.exceptions import SiteNotSpecifiedError
from frappe.installer import update_site_config
from frappe.utils import get_site_path, touch_file
@ -217,6 +218,8 @@ def install_app(context, apps):
_install_app(app, verbose=context.verbose)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('list-apps')
@pass_context
@ -246,7 +249,8 @@ def add_system_manager(context, email, first_name, last_name, send_welcome_email
frappe.db.commit()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('disable-user')
@click.argument('email')
@ -277,6 +281,8 @@ def migrate(context, rebuild_website=False, skip_failing=False):
migrate(context.verbose, rebuild_website=rebuild_website, skip_failing=skip_failing)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
print("Compiling Python Files...")
compileall.compile_dir('../apps', quiet=1, rx=re.compile('.*node_modules.*'))
@ -289,6 +295,8 @@ def migrate_to(context, frappe_provider):
from frappe.integrations.frappe_providers import migrate_to
for site in context.sites:
migrate_to(site, frappe_provider)
else:
raise SiteNotSpecifiedError
@click.command('run-patch')
@click.argument('module')
@ -303,6 +311,8 @@ def run_patch(context, module):
frappe.modules.patch_handler.run_single(module, force=context.force)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('reload-doc')
@click.argument('module')
@ -319,6 +329,8 @@ def reload_doc(context, module, doctype, docname):
frappe.db.commit()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('reload-doctype')
@click.argument('doctype')
@ -333,6 +345,8 @@ def reload_doctype(context, doctype):
frappe.db.commit()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('add-to-hosts')
@pass_context
@ -340,6 +354,8 @@ def add_to_hosts(context):
"Add site to hosts"
for site in context.sites:
frappe.commands.popen('echo 127.0.0.1\t{0} | sudo tee -a /etc/hosts'.format(site))
else:
raise SiteNotSpecifiedError
@click.command('use')
@click.argument('site')
@ -353,7 +369,7 @@ def use(site, sites_path='.'):
sitefile.write(site)
print("Current Site set to {}".format(site))
else:
print("{} does not exist".format(site))
print("Site {} does not exist".format(site))
@click.command('backup')
@click.option('--with-files', default=False, is_flag=True, help="Take backup with files")
@ -386,6 +402,9 @@ def backup(context, with_files=False, backup_path_db=None, backup_path_files=Non
print("Private files: ", odb.backup_path_private_files)
frappe.destroy()
else:
raise SiteNotSpecifiedError
sys.exit(exit_code)
@click.command('remove-from-installed-apps')
@ -401,6 +420,8 @@ def remove_from_installed_apps(context, app):
remove_from_installed_apps(app)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('uninstall-app')
@click.argument('app')
@ -417,6 +438,8 @@ def uninstall(context, app, dry_run=False, yes=False):
remove_app(app, dry_run, yes)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('drop-site')
@ -508,6 +531,8 @@ def set_admin_password(context, admin_password, logout_all_sessions=False):
admin_password = None
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('set-last-active-for-user')
@click.option('--user', help="Setup last active date for user")
@ -553,6 +578,8 @@ def publish_realtime(context, event, message, room, user, doctype, docname, afte
frappe.db.commit()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('browse')
@click.argument('site', required=False)
@ -580,6 +607,8 @@ def start_recording(context):
for site in context.sites:
frappe.init(site=site)
frappe.recorder.start()
else:
raise SiteNotSpecifiedError
@click.command('stop-recording')
@ -588,6 +617,8 @@ def stop_recording(context):
for site in context.sites:
frappe.init(site=site)
frappe.recorder.stop()
else:
raise SiteNotSpecifiedError
commands = [

View file

@ -1,6 +1,7 @@
from __future__ import unicode_literals, absolute_import, print_function
import click
from frappe.commands import pass_context, get_site
from frappe.exceptions import SiteNotSpecifiedError
# translation
@click.command('build-message-files')
@ -15,6 +16,8 @@ def build_message_files(context):
frappe.translate.rebuild_all_translation_files()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('new-language') #, help="Create lang-code.csv for given app")
@pass_context

View file

@ -5,6 +5,7 @@ import click
import json, os, sys, subprocess
from distutils.spawn import find_executable
import frappe
from frappe.exceptions import SiteNotSpecifiedError
from frappe.commands import pass_context, get_site
from frappe.utils import update_progress_bar, get_bench_path
from frappe.utils.response import json_handler
@ -51,6 +52,8 @@ def clear_cache(context):
frappe.website.render.clear_cache()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('clear-website-cache')
@ -65,6 +68,8 @@ def clear_website_cache(context):
frappe.website.render.clear_cache()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('destroy-all-sessions')
@ -81,6 +86,8 @@ def destroy_all_sessions(context, reason=None):
frappe.db.commit()
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('show-config')
@ -117,6 +124,8 @@ def reset_perms(context):
reset_perms(d)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('execute')
@ -163,6 +172,8 @@ def execute(context, method, args=None, kwargs=None, profile=False):
frappe.destroy()
if ret:
print(json.dumps(ret, default=json_handler))
else:
raise SiteNotSpecifiedError
@click.command('add-to-email-queue')
@ -197,6 +208,8 @@ def export_doc(context, doctype, docname):
frappe.modules.export_doc(doctype, docname)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('export-json')
@ -214,6 +227,8 @@ def export_json(context, doctype, path, name=None):
data_import.export_json(doctype, path, name=name)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('export-csv')
@ -230,6 +245,8 @@ def export_csv(context, doctype, path):
data_import.export_csv(doctype, path)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('export-fixtures')
@ -245,6 +262,8 @@ def export_fixtures(context, app=None):
export_fixtures(app=app)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('import-doc')
@ -267,6 +286,8 @@ def import_doc(context, path, force=False):
data_import.import_doc(path, overwrite=context.force)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('import-csv')
@ -364,6 +385,8 @@ def mariadb(context):
import os
site = get_site(context)
if not site:
raise SiteNotSpecifiedError
frappe.init(site=site)
# This is assuming you're within the bench instance.
@ -577,6 +600,8 @@ def request(context, args=None, path=None):
print(frappe.response)
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('make-app')
@ -610,6 +635,8 @@ def set_config(context, key, value, global_ = False, as_dict=False):
frappe.init(site=site)
update_site_config(key, value, validate=False)
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('version')
@ -658,6 +685,8 @@ def rebuild_global_search(context, static_pages=False):
finally:
frappe.destroy()
else:
raise SiteNotSpecifiedError
@click.command('auto-deploy')

View file

@ -13,6 +13,11 @@ if sys.version_info.major == 2:
else:
from builtins import FileNotFoundError
class SiteNotSpecifiedError(Exception):
def __init__(self, *args, **kwargs):
self.message = "Please specify --site sitename"
super(Exception, self).__init__(self.message)
class ValidationError(Exception):
http_status_code = 417

View file

@ -50,14 +50,16 @@ def app_group(ctx, site=False, force=False, verbose=False, profile=False):
ctx.info_name = ''
def get_sites(site_arg):
if site_arg and site_arg == 'all':
if site_arg == 'all':
return frappe.utils.get_sites()
else:
if site_arg:
return [site_arg]
if os.path.exists('currentsite.txt'):
with open('currentsite.txt') as f:
return [f.read().strip()]
elif site_arg:
return [site_arg]
elif os.path.exists('currentsite.txt'):
with open('currentsite.txt') as f:
site = f.read().strip()
if site:
return [site]
return []
def get_app_commands(app):
if os.path.exists(os.path.join('..', 'apps', app, app, 'commands.py'))\