@@ -10,7 +10,7 @@ class FrappeException(Exception): | |||||
class FrappeClient(object): | class FrappeClient(object): | ||||
def __init__(self, url, username, password): | def __init__(self, url, username, password): | ||||
self.session = requests.Session() | |||||
self.session = requests.session() | |||||
self.url = url | self.url = url | ||||
self.login(username, password) | self.login(username, password) | ||||
@@ -47,6 +47,7 @@ class FrappeClient(object): | |||||
if limit_page_length: | if limit_page_length: | ||||
params["limit_start"] = limit_start | params["limit_start"] = limit_start | ||||
params["limit_page_length"] = limit_page_length | params["limit_page_length"] = limit_page_length | ||||
print self.url | |||||
res = self.session.get(self.url + "/api/resource/" + doctype, params=params) | res = self.session.get(self.url + "/api/resource/" + doctype, params=params) | ||||
return self.post_process(res) | return self.post_process(res) | ||||
@@ -88,17 +88,23 @@ def make_connection(root_login, root_password): | |||||
return frappe.database.Database(user=root_login, password=root_password) | return frappe.database.Database(user=root_login, password=root_password) | ||||
def install_app(name, verbose=False, set_as_patched=True): | def install_app(name, verbose=False, set_as_patched=True): | ||||
frappe.flags.in_install = name | |||||
frappe.clear_cache() | |||||
app_hooks = frappe.get_hooks(app_name=name) | app_hooks = frappe.get_hooks(app_name=name) | ||||
installed_apps = frappe.get_installed_apps() | installed_apps = frappe.get_installed_apps() | ||||
# install pre-requisites | |||||
if app_hooks.required_apps: | |||||
for app in app_hooks.required_apps: | |||||
install_app(app) | |||||
print "Installing {0}...".format(name) | |||||
frappe.flags.in_install = name | |||||
frappe.clear_cache() | |||||
if name not in frappe.get_all_apps(with_frappe=True): | if name not in frappe.get_all_apps(with_frappe=True): | ||||
raise Exception("App not in apps.txt") | raise Exception("App not in apps.txt") | ||||
if name in installed_apps: | if name in installed_apps: | ||||
print "App Already Installed" | |||||
print "Already installed" | |||||
frappe.msgprint("App {0} already installed".format(name)) | frappe.msgprint("App {0} already installed".format(name)) | ||||
return | return | ||||
@@ -14,8 +14,11 @@ def make_boilerplate(dest, app_name): | |||||
hooks = frappe._dict() | hooks = frappe._dict() | ||||
hooks.app_name = app_name | hooks.app_name = app_name | ||||
app_title = hooks.app_name.replace("_", " ").title() | app_title = hooks.app_name.replace("_", " ").title() | ||||
for key in ("App Title (defaut: {0})".format(app_title), "App Description", "App Publisher", | |||||
"App Icon (e.g. 'octicon octicon-zap')", "App Color", "App Email", "App License"): | |||||
for key in ("App Title (defaut: {0})".format(app_title), | |||||
"App Description", "App Publisher", "App Email", | |||||
"App Icon (default 'octicon octicon-file-directory')", | |||||
"App Color (default 'grey')", | |||||
"App License (default 'MIT')"): | |||||
hook_key = key.split(" (")[0].lower().replace(" ", "_") | hook_key = key.split(" (")[0].lower().replace(" ", "_") | ||||
hook_val = None | hook_val = None | ||||
while not hook_val: | while not hook_val: | ||||
@@ -23,8 +26,15 @@ def make_boilerplate(dest, app_name): | |||||
if hook_key=="app_name" and hook_val.lower().replace(" ", "_") != hook_val: | if hook_key=="app_name" and hook_val.lower().replace(" ", "_") != hook_val: | ||||
print "App Name must be all lowercase and without spaces" | print "App Name must be all lowercase and without spaces" | ||||
hook_val = "" | hook_val = "" | ||||
elif hook_key=="app_title" and not hook_val: | |||||
hook_val = app_title | |||||
elif not hook_val: | |||||
defaults = { | |||||
"app_title": app_title, | |||||
"app_icon": "octicon octicon-file-directory", | |||||
"app_color": "grey", | |||||
"app_license": "MIT" | |||||
} | |||||
if hook_key in defaults: | |||||
hook_val = defaults[hook_key] | |||||
hooks[hook_key] = hook_val | hooks[hook_key] = hook_val | ||||
@@ -17,7 +17,7 @@ termcolor | |||||
werkzeug | werkzeug | ||||
semantic_version | semantic_version | ||||
rauth>=0.6.2 | rauth>=0.6.2 | ||||
requests==1.2.3 | |||||
requests>=1.2.3 | |||||
celery | celery | ||||
redis | redis | ||||
selenium | selenium | ||||