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/__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/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): 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/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..bbf4250359 100644 --- a/webnotes/sessions.py +++ b/webnotes/sessions.py @@ -31,23 +31,28 @@ import webnotes import conf import json from webnotes.utils import cint +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:") - webnotes.cache().delete_keys("doctype:") - 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) + cache = webnotes.cache() + + # clear doctype cache + webnotes.model.doctype.clear_cache() + + 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: