diff --git a/webnotes/__init__.py b/webnotes/__init__.py index edd44a5e8b..8f2b517d10 100644 --- a/webnotes/__init__.py +++ b/webnotes/__init__.py @@ -33,7 +33,7 @@ class _dict(dict): return _dict(super(_dict, self).copy()) def __getattr__(self, key): - return webnotes.local.get("key", None) + return local.get("key", None) def _(msg): """translate object in current lang, if exists""" @@ -74,6 +74,9 @@ message_log = local("message_log") lang = local("lang") def init(site=None): + if getattr(local, "initialised", None): + return + local.error_log = [] local.message_log = [] local.debug_log = [] @@ -81,6 +84,14 @@ def init(site=None): local.lang = "en" local.request_method = request.method if request else None local.conf = get_conf(site) + local.initialised = True + +def destroy(): + """closes connection and releases werkzeug local""" + webnotes.conn.close() + + from werkzeug.local import release_local + release_local(local) _memc = None mute_emails = False @@ -184,8 +195,9 @@ def remove_file(path): if e.args[0]!=2: raise e -def connect(db_name=None, password=None): +def connect(db_name=None, password=None, site=None): import webnotes.db + init(site=site) local.conn = webnotes.db.Database(user=db_name, password=password) local.session = _dict({'user':'Administrator'}) local.response = _dict() diff --git a/webnotes/app.py b/webnotes/app.py index dfca685727..6fd46aae03 100644 --- a/webnotes/app.py +++ b/webnotes/app.py @@ -39,7 +39,10 @@ def application(request): webnotes.handler.handle() else: webnotes.webutils.render(webnotes.request.path[1:]) - + + if webnotes.conn: + webnotes.conn.close() + return webnotes._response application = local_manager.make_middleware(application) diff --git a/webnotes/install_lib/install.py b/webnotes/install_lib/install.py index 3c0dc2c8be..9602b0e56b 100755 --- a/webnotes/install_lib/install.py +++ b/webnotes/install_lib/install.py @@ -7,7 +7,8 @@ from __future__ import unicode_literals import os, sys, json -import webnotes, conf +import webnotes +from webnotes import conf import webnotes.db import getpass from webnotes.model.db_schema import DbManager @@ -22,10 +23,11 @@ class Installer: root_password = getpass.getpass("MySQL root password: ") self.root_password = root_password - self.conn = webnotes.db.Database(user=root_login, password=root_password) - webnotes.conn=self.conn - webnotes.session= webnotes._dict({'user':'Administrator'}) + + webnotes.local.conn = self.conn + webnotes.local.session = webnotes._dict({'user':'Administrator'}) + self.dbman = DbManager(self.conn) def import_from_db(self, target, source_path='', password = 'admin', verbose=0): @@ -73,6 +75,8 @@ class Installer: # update admin password self.create_auth_table() self.update_admin_password(password) + + self.conn.close() return target