From 00fc674151dc4c06adb2f21fed027742e1a8eceb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 22 Jan 2013 08:05:36 +0530 Subject: [PATCH 1/4] boot, get country if exists --- webnotes/boot.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/webnotes/boot.py b/webnotes/boot.py index 35a9522feb..6ff0725fb9 100644 --- a/webnotes/boot.py +++ b/webnotes/boot.py @@ -78,9 +78,11 @@ def get_bootinfo(): return bootinfo def load_country_and_currency(bootinfo, doclist): - if bootinfo.control_panel.country: + if bootinfo.control_panel.country and \ + webnotes.conn.exists("Country", bootinfo.control_panel.country): doclist += [webnotes.doc("Country", bootinfo.control_panel.country)] - if bootinfo.sysdefaults.currency: + if bootinfo.sysdefaults.currency and \ + webnotes.conn.exists("Currency", bootinfo.sysdefaults.currency): doclist += [webnotes.doc("Currency", bootinfo.sysdefaults.currency)] def add_allowed_pages(bootinfo): From 5f78e1d8595159e7edeed8396e542675b83fca8e Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 22 Jan 2013 10:39:57 +0530 Subject: [PATCH 2/4] clear doctype cache explicitly --- public/js/legacy/utils/datetime.js | 2 -- webnotes/model/doctype.py | 18 ++++++++++++------ webnotes/sessions.py | 6 +++++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/public/js/legacy/utils/datetime.js b/public/js/legacy/utils/datetime.js index 2c0e3ea3fa..675bbb6bdb 100644 --- a/public/js/legacy/utils/datetime.js +++ b/public/js/legacy/utils/datetime.js @@ -282,6 +282,4 @@ wn.datetime.comment_when = prettyDate; // globals (deprecate) var date = dateutil = wn.datetime; var get_today = wn.datetime.get_today -var time_to_ampm = wn.datetime.time_to_ampm; -var time_to_hhmm = wn.datetime.time_to_hhmm; var only_date = wn.datetime.only_date; diff --git a/webnotes/model/doctype.py b/webnotes/model/doctype.py index e29604dc13..2293ad7ce9 100644 --- a/webnotes/model/doctype.py +++ b/webnotes/model/doctype.py @@ -234,7 +234,7 @@ def cache_name(doctype, processed): suffix = ":Raw" return "doctype:" + doctype + suffix -def clear_cache(doctype): +def clear_cache(doctype=None): global doctype_cache def clear_single(dt): @@ -244,12 +244,18 @@ def clear_cache(doctype): if doctype in doctype_cache: del doctype_cache[dt] - clear_single(doctype) + if doctype: + clear_single(doctype) - # clear all parent doctypes - for dt in webnotes.conn.sql("""select parent from tabDocField - where fieldtype="Table" and options=%s""", doctype): - clear_single(dt[0]) + # clear all parent doctypes + for dt in webnotes.conn.sql("""select parent from tabDocField + where fieldtype="Table" and options=%s""", doctype): + clear_single(dt[0]) + + else: + # clear all + for dt in webnotes.conn.sql("""select name from tabDocType"""): + clear_single(dt[0]) def add_code(doctype, doclist): import os, conf diff --git a/webnotes/sessions.py b/webnotes/sessions.py index 4fd49ca8b4..8cbb211a10 100644 --- a/webnotes/sessions.py +++ b/webnotes/sessions.py @@ -31,6 +31,7 @@ import webnotes import conf import json from webnotes.utils import cint +import webnotes.model.doctype @webnotes.whitelist() def clear(user=None): @@ -42,8 +43,11 @@ def clear(user=None): def clear_cache(user=None): """clear cache""" webnotes.cache().delete_keys("bootinfo:") - webnotes.cache().delete_keys("doctype:") + + webnotes.model.doctype.clear_cache() + webnotes.cache().delete_keys("session:") + if webnotes.session: webnotes.cache().delete_keys("bootinfo:" + webnotes.session.user) if webnotes.session.sid: From 7c012c378d807f7db8f10315534fd18fe9ea89dd Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 22 Jan 2013 11:04:54 +0530 Subject: [PATCH 3/4] removed key_list in memcache --- webnotes/memc.py | 31 +------------------------------ webnotes/sessions.py | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 38 deletions(-) diff --git a/webnotes/memc.py b/webnotes/memc.py index d8dc171307..db4a563cac 100644 --- a/webnotes/memc.py +++ b/webnotes/memc.py @@ -31,38 +31,9 @@ class MClient(memcache.Client): def set_value(self, key, val): self.set(self.n(key), val) - self.add_to_key_list(key) def get_value(self, key): return self.get(self.n(key)) def delete_value(self, key): - self.delete(self.n(key)) - - def add_to_key_list(self, key): - key_list = self.get_value('key_list') or [] - if key not in key_list: - key_list.append(key) - self.set(self.n("key_list"), key_list) - - def delete_keys(self, startswith=None): - """flush keys from known key_list""" - if not startswith: - for key in self.get_value('key_list'): - self.delete_value(key) - - self.delete_value('key_list') - else: - deleted = [] - keys = self.get_value('key_list') or [] - for key in keys: - if key.startswith(startswith): - self.delete(self.n(key)) - deleted.append(key) - - for d in deleted: - keys.remove(d) - - self.set_value("key_list", keys) - # in any case, delete it explicitly - self.delete(self.n(startswith)) + self.delete(self.n(key)) \ No newline at end of file diff --git a/webnotes/sessions.py b/webnotes/sessions.py index 8cbb211a10..b44c7dfb11 100644 --- a/webnotes/sessions.py +++ b/webnotes/sessions.py @@ -36,22 +36,25 @@ import webnotes.model.doctype @webnotes.whitelist() def clear(user=None): """clear all cache""" - clear_cache(user) + clear_cache(webnotes.session.user) webnotes.response['message'] = "Cache Cleared" def clear_cache(user=None): """clear cache""" - webnotes.cache().delete_keys("bootinfo:") + cache = webnotes.cache() + # clear doctype cache webnotes.model.doctype.clear_cache() - webnotes.cache().delete_keys("session:") - - if webnotes.session: - webnotes.cache().delete_keys("bootinfo:" + webnotes.session.user) - if webnotes.session.sid: - webnotes.cache().delete_keys("session:" + webnotes.session.sid) + if user: + cache.delete_value("bootinfo:" + user) + if webnotes.session and webnotes.session.sid: + cache.delete_value("session:" + webnotes.session.sid) + else: + for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1): + cache.delete_value("sesssion:" + sess.sid) + cache.delete_value("bootinfo:" + sess.user) def clear_sessions(user=None, keep_current=False): if not user: From f3599ebca9e3a013f0731df4a62db1e0c5d913e8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 22 Jan 2013 11:07:24 +0530 Subject: [PATCH 4/4] removed key_list in memcache --- webnotes/__init__.py | 9 ++++++--- webnotes/sessions.py | 2 -- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/webnotes/__init__.py b/webnotes/__init__.py index 353128d8ee..312256dd6a 100644 --- a/webnotes/__init__.py +++ b/webnotes/__init__.py @@ -238,13 +238,16 @@ def whitelist(allow_guest=False, allow_roles=[]): return innerfn def clear_cache(user=None, doctype=None): - """clear boot cache""" + """clear cache""" if doctype: from webnotes.model.doctype import clear_cache clear_cache(doctype) + elif user: + from webnotes.sessions import clear_cache + clear_cache(user) else: - from webnotes.sessions import clear - clear(user) + from webnotes.sessions import clear_cache + clear_cache() def get_roles(user=None, with_standard=True): """get roles of current user""" diff --git a/webnotes/sessions.py b/webnotes/sessions.py index b44c7dfb11..bbf4250359 100644 --- a/webnotes/sessions.py +++ b/webnotes/sessions.py @@ -35,13 +35,11 @@ import webnotes.model.doctype @webnotes.whitelist() def clear(user=None): - """clear all cache""" clear_cache(webnotes.session.user) webnotes.response['message'] = "Cache Cleared" def clear_cache(user=None): - """clear cache""" cache = webnotes.cache() # clear doctype cache