Quellcode durchsuchen

[minor] wnf refactor, fixes in demo

version-14
Anand Doshi vor 11 Jahren
Ursprung
Commit
4cccb9a7ae
6 geänderte Dateien mit 131 neuen und 23 gelöschten Zeilen
  1. +17
    -1
      core/page/data_import_tool/data_import_tool.py
  2. +2
    -0
      webnotes/__init__.py
  3. +7
    -7
      webnotes/install_lib/install.py
  4. +7
    -2
      webnotes/sessions.py
  5. +2
    -2
      webnotes/utils/scheduler.py
  6. +96
    -11
      wnf.py

+ 17
- 1
core/page/data_import_tool/data_import_tool.py Datei anzeigen

@@ -220,7 +220,6 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
webnotes.mute_emails = True webnotes.mute_emails = True
webnotes.check_admin_or_system_manager() webnotes.check_admin_or_system_manager()
# extra input params # extra input params
import json
params = json.loads(webnotes.form_dict.get("params") or '{}') params = json.loads(webnotes.form_dict.get("params") or '{}')
if params.get("_submit"): if params.get("_submit"):
@@ -498,3 +497,20 @@ def export_json(doctype, name, path):
del d["name"] del d["name"]
d["__islocal"] = 1 d["__islocal"] = 1
outfile.write(json.dumps(doclist, default=json_handler, indent=1, sort_keys=True)) outfile.write(json.dumps(doclist, default=json_handler, indent=1, sort_keys=True))

def import_doclist(path):
import os
if os.path.isdir(path):
files = [os.path.join(path, f) for f in os.listdir(path)]
else:
files = [path]
for f in files:
if f.endswith(".json"):
with open(f, "r") as infile:
b = webnotes.bean(json.loads(infile.read())).insert_or_update()
print "Imported: " + b.doc.doctype + " / " + b.doc.name
webnotes.conn.commit()
if f.endswith(".csv"):
import_file_by_path(f, ignore_links=True)
webnotes.conn.commit()

+ 2
- 0
webnotes/__init__.py Datei anzeigen

@@ -39,6 +39,8 @@ def _(msg):
"""translate object in current lang, if exists""" """translate object in current lang, if exists"""
if hasattr(local, 'translations'): if hasattr(local, 'translations'):
return local.translations.get(lang, {}).get(msg, msg) return local.translations.get(lang, {}).get(msg, msg)
return msg


def set_user_lang(user, user_language=None): def set_user_lang(user, user_language=None):
from webnotes.translate import get_lang_dict from webnotes.translate import get_lang_dict


+ 7
- 7
webnotes/install_lib/install.py Datei anzeigen

@@ -19,21 +19,17 @@ class Installer:
make_conf(db_name, site=site) make_conf(db_name, site=site)
self.site = site self.site = site
self.make_connection(root_login, root_password, site)
self.make_connection(root_login, root_password)


webnotes.local.conn = self.conn webnotes.local.conn = self.conn
webnotes.local.session = webnotes._dict({'user':'Administrator'}) webnotes.local.session = webnotes._dict({'user':'Administrator'})
self.dbman = DbManager(self.conn) self.dbman = DbManager(self.conn)
def make_connection(self, root_login, root_password, site):
def make_connection(self, root_login, root_password):
if root_login: if root_login:
if not root_password: if not root_password:
try:
webnotes.init(site=site)
root_password = webnotes.conf.get("root_password") or None
except ImportError:
pass
root_password = webnotes.conf.get("root_password") or None
if not root_password: if not root_password:
root_password = getpass.getpass("MySQL root password: ") root_password = getpass.getpass("MySQL root password: ")
@@ -183,7 +179,11 @@ class Installer:
def make_conf(db_name=None, db_password=None, site=None, site_config=None): def make_conf(db_name=None, db_password=None, site=None, site_config=None):
try: try:
import conf import conf
webnotes.init(site=site)
if not site and webnotes.conf.site:
site = webnotes.conf.site
if site: if site:
# conf exists and site is specified, create site_config.json # conf exists and site is specified, create site_config.json
make_site_config(site, db_name, db_password, site_config) make_site_config(site, db_name, db_password, site_config)


+ 7
- 2
webnotes/sessions.py Datei anzeigen

@@ -29,8 +29,13 @@ def clear_cache(user=None):


if user: if user:
cache.delete_value("bootinfo:" + user) cache.delete_value("bootinfo:" + user)
if webnotes.session and webnotes.session.sid:
cache.delete_value("session:" + webnotes.session.sid)
if webnotes.session:
if user==webnotes.session.user and webnotes.session.sid:
cache.delete_value("session:" + webnotes.session.sid)
else:
for sid in webnotes.conn.sql_list("""select sid from tabSessions
where user=%s""", user):
cache.delete_value("session:" + sid)
else: else:
for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1): for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1):
cache.delete_value("sesssion:" + sess.sid) cache.delete_value("sesssion:" + sess.sid)


+ 2
- 2
webnotes/utils/scheduler.py Datei anzeigen

@@ -16,7 +16,7 @@ on the need.
""" """


import webnotes import webnotes
def execute():
def execute(site=None):
""" """
execute jobs execute jobs
this method triggers the other scheduler events this method triggers the other scheduler events
@@ -29,7 +29,7 @@ def execute():
format = '%Y-%m-%d %H:%M:%S' format = '%Y-%m-%d %H:%M:%S'
if not webnotes.conn: if not webnotes.conn:
webnotes.connect()
webnotes.connect(site=site)
out = [] out = []




+ 96
- 11
wnf.py Datei anzeigen

@@ -12,21 +12,25 @@ if __name__=="__main__":
import webnotes import webnotes


def main(): def main():
def run(args):
for fn, opts in args.items():
if (opts or isinstance(opts, list)) and globals().get(fn):
return globals().get(fn)(opts, args)
webnotes.destroy()
parsed_args = webnotes._dict(vars(setup_parser())) parsed_args = webnotes._dict(vars(setup_parser()))
fn = get_function(parsed_args)
if parsed_args.get("site")=="all": if parsed_args.get("site")=="all":
for site in get_sites(): for site in get_sites():
args = parsed_args.copy() args = parsed_args.copy()
args["site"] = site args["site"] = site
run(args)
run(fn, args)
else: else:
run(parsed_args)
run(fn, parsed_args)
def run(fn, args):
out = globals().get(fn)(args.get(fn), args)
webnotes.destroy()
return out
def get_function(args):
for fn, opts in args.items():
if (opts or isinstance(opts, list)) and globals().get(fn):
return fn
def get_sites(): def get_sites():
pass pass
@@ -102,9 +106,9 @@ def setup_utilities(parser):
help="Reset permissions for all doctypes") help="Reset permissions for all doctypes")
# scheduler # scheduler
parser.add_argument("--scheduler", "--run_scheduler", default=False, action="store_true",
parser.add_argument("--run_scheduler", default=False, action="store_true",
help="Trigger scheduler") help="Trigger scheduler")
parser.add_argument("--scheduler_event", "--run_scheduler_event", nargs=1,
parser.add_argument("--run_scheduler_event", nargs=1,
metavar="all | daily | weekly | monthly", metavar="all | daily | weekly | monthly",
help="Run a scheduler event") help="Run a scheduler event")
@@ -253,6 +257,87 @@ def make_conf(opts, args):
from webnotes.install_lib.install import make_conf from webnotes.install_lib.install import make_conf
make_conf(*opts, site=args.site) make_conf(*opts, site=args.site)


# clear
def clear_cache(opts, args):
import webnotes.sessions
webnotes.connect(site=args.site)
webnotes.sessions.clear_cache()
def clear_web(opts, args):
import webnotes.webutils
webnotes.connect(site=args.site)
webnotes.webutils.clear_cache()
def reset_perms(opts, args):
webnotes.connect(site=args.site)
for d in webnotes.conn.sql_list("""select name from `tabDocType`
where ifnull(istable, 0)=0 and ifnull(custom, 0)=0"""):
webnotes.clear_cache(doctype=d)
webnotes.reset_perms(d)

# scheduler
def run_scheduler(opts, args):
import webnotes.utils.scheduler
webnotes.connect(site=args.site)
print webnotes.utils.scheduler.execute()
def run_scheduler_event(opts, args):
import webnotes.utils.scheduler
webnotes.connect(site=args.site)
print webnotes.utils.scheduler.trigger("execute_" + opts[0])
# replace
def replace(opts, args):
print opts
replace_code('.', *opts, force=args.force)
# import/export
def export_doc(opts, args):
import webnotes.modules
webnotes.connect(site=args.site)
webnotes.modules.export_doc(*opts)
def export_doclist(opts, args):
from core.page.data_import_tool import data_import_tool
webnotes.connect(site=args.site)
data_import_tool.export_json(*opts)
def export_csv(opts, args):
from core.page.data_import_tool import data_import_tool
webnotes.connect(site=args.site)
data_import_tool.export_csv(*opts)
def import_doclist(opts, args):
from core.page.data_import_tool import data_import_tool
webnotes.connect(site=args.site)
data_import_tool.import_doclist(*opts)
# translation
def build_message_files(opts, args):
import webnotes.translate
webnotes.connect(site=args.site)
webnotes.translate.build_message_files()
def export_messages(opts, args):
import webnotes.translate
webnotes.connect(site=args.site)
webnotes.translate.export_messages(*opts)

def import_messages(opts, args):
import webnotes.translate
webnotes.connect(site=args.site)
webnotes.translate.import_messages(*opts)
def google_translate(opts, args):
import webnotes.translate
webnotes.connect(site=args.site)
webnotes.translate.google_translate(*opts)

def translate(opts, args):
import webnotes.translate
webnotes.connect(site=args.site)
webnotes.translate.translate(*opts)

# git # git
def git(opts, args=None): def git(opts, args=None):
cmd = opts cmd = opts


Laden…
Abbrechen
Speichern