From 494f8274ae3b1a052d0345f5464f47e14c91aba8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 13 Feb 2015 10:12:53 +0530 Subject: [PATCH] [new-app] [minor] app pre-requisites and requirements fixes --- frappe/frappeclient.py | 3 ++- frappe/installer.py | 14 ++++++++++---- frappe/utils/boilerplate.py | 18 ++++++++++++++---- requirements.txt | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/frappe/frappeclient.py b/frappe/frappeclient.py index 1cc441fb9a..d92bc58f31 100644 --- a/frappe/frappeclient.py +++ b/frappe/frappeclient.py @@ -10,7 +10,7 @@ class FrappeException(Exception): class FrappeClient(object): def __init__(self, url, username, password): - self.session = requests.Session() + self.session = requests.session() self.url = url self.login(username, password) @@ -47,6 +47,7 @@ class FrappeClient(object): if limit_page_length: params["limit_start"] = limit_start params["limit_page_length"] = limit_page_length + print self.url res = self.session.get(self.url + "/api/resource/" + doctype, params=params) return self.post_process(res) diff --git a/frappe/installer.py b/frappe/installer.py index e58f5868d9..f79cebae83 100755 --- a/frappe/installer.py +++ b/frappe/installer.py @@ -88,17 +88,23 @@ def make_connection(root_login, root_password): return frappe.database.Database(user=root_login, password=root_password) 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) 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): raise Exception("App not in apps.txt") if name in installed_apps: - print "App Already Installed" + print "Already installed" frappe.msgprint("App {0} already installed".format(name)) return diff --git a/frappe/utils/boilerplate.py b/frappe/utils/boilerplate.py index 698de29a06..9c55c37ac4 100644 --- a/frappe/utils/boilerplate.py +++ b/frappe/utils/boilerplate.py @@ -14,8 +14,11 @@ def make_boilerplate(dest, app_name): hooks = frappe._dict() hooks.app_name = app_name 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_val = None 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: print "App Name must be all lowercase and without spaces" 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 diff --git a/requirements.txt b/requirements.txt index 0513235155..a997103653 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,7 +17,7 @@ termcolor werkzeug semantic_version rauth>=0.6.2 -requests==1.2.3 +requests>=1.2.3 celery redis selenium