Procházet zdrojové kódy

[minor] fixed metadata caching on client side

version-14
Rushabh Mehta před 11 roky
rodič
revize
29c507f7a9
8 změnil soubory, kde provedl 39 přidání a 15 odebrání
  1. +13
    -1
      core/doctype/property_setter/property_setter.py
  2. +9
    -1
      public/js/wn/app.js
  3. +1
    -1
      public/js/wn/assets.js
  4. +2
    -1
      public/js/wn/ui/editor.js
  5. +8
    -1
      webnotes/__init__.py
  6. +1
    -2
      webnotes/auth.py
  7. +4
    -1
      webnotes/boot.py
  8. +1
    -7
      webnotes/model/meta.py

+ 13
- 1
core/doctype/property_setter/property_setter.py Zobrazit soubor

@@ -52,4 +52,16 @@ class DocType:
def on_update(self):
from core.doctype.doctype.doctype import validate_fields_for_doctype
validate_fields_for_doctype(self.doc.doc_type)
validate_fields_for_doctype(self.doc.doc_type)
def make_property_setter(doctype, fieldname, property, value, property_type, for_doctype = False):
return webnotes.bean({
"doctype":"Property Setter",
"doctype_or_field": for_doctype and "DocType" or "DocField",
"doc_type": doctype,
"field_name": fieldname,
"property": property,
"value": value,
"property_type": property_type
}).insert()

+ 9
- 1
public/js/wn/app.js Zobrazit soubor

@@ -84,14 +84,22 @@ wn.Application = Class.extend({
if(wn.boot) {
wn.control_panel = wn.boot.control_panel;
wn.modules = wn.boot.modules;
this.check_metadata_cache_status();
this.set_globals();
this.sync_pages();
} else {
this.set_as_guest();
}
},
check_metadata_cache_status: function() {
if(wn.boot.metadata_version != localStorage.metadata_version) {
localStorage.clear();
console.log("Cleared Cache - New Metadata");
localStorage.metadata_version = wn.boot.metadata_version;
}
},
start_notification_updates: function() {
var me = this;
setInterval(function() {


+ 1
- 1
public/js/wn/assets.js Zobrazit soubor

@@ -30,7 +30,7 @@ wn.assets = {
localStorage.clear();
console.log("Cleared App Cache.");
}
if(localStorage._last_load) {
var not_updated_since = new Date() - new Date(localStorage._last_load);
if(not_updated_since < 10000 || not_updated_since > 86400000) {


+ 2
- 1
public/js/wn/ui/editor.js Zobrazit soubor

@@ -44,7 +44,8 @@ bsEditor = Class.extend({
this.editor.attr('contenteditable', true);
this.original_html = this.editor.html();
this.toolbar.show();
this.toolbar.editor = this.editor.focus();
if(this.options.editor)
this.toolbar.editor = this.editor.focus();
this.editing = true;
},


+ 8
- 1
webnotes/__init__.py Zobrazit soubor

@@ -308,12 +308,14 @@ def clear_cache(user=None, doctype=None):
if doctype:
from webnotes.model.doctype import clear_cache
clear_cache(doctype)
reset_metadata_version()
elif user:
from webnotes.sessions import clear_cache
clear_cache(user)
else:
else: # everything
from webnotes.sessions import clear_cache
clear_cache()
reset_metadata_version()
def get_roles(user=None, with_standard=True):
"""get roles of current user"""
@@ -389,6 +391,11 @@ def generate_hash():
import hashlib, time
return hashlib.sha224(str(time.time())).hexdigest()

def reset_metadata_version():
v = generate_hash()
cache().set_value("metadata_version", v)
return v

def get_obj(dt = None, dn = None, doc=None, doclist=[], with_children = True):
from webnotes.model.code import get_obj
return get_obj(dt, dn, doc, doclist, with_children)


+ 1
- 2
webnotes/auth.py Zobrazit soubor

@@ -96,8 +96,7 @@ class LoginManager:
def __init__(self):
if webnotes.form_dict.get('cmd')=='login':
# clear cache
from webnotes.sessions import clear_cache
clear_cache(webnotes.form_dict.get('usr'))
webnotes.clear_cache(user = webnotes.form_dict.get('usr'))

self.authenticate()
self.post_login()


+ 4
- 1
webnotes/boot.py Zobrazit soubor

@@ -23,7 +23,6 @@ def get_bootinfo():
# control panel
cp = webnotes.model.doc.getsingle('Control Panel')

# system info
bootinfo['control_panel'] = webnotes._dict(cp.copy())
@@ -70,6 +69,10 @@ def get_bootinfo():
if bootinfo.lang:
bootinfo.lang = unicode(bootinfo.lang)
bootinfo.metadata_version = webnotes.cache().get_value("metadata_version")
if not bootinfo.metadata_version:
bootinfo.metadata_version = webnotes.reset_metadata_version()
return bootinfo

def load_conf_settings(bootinfo):


+ 1
- 7
webnotes/model/meta.py Zobrazit soubor

@@ -7,15 +7,9 @@ from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, cint
def get_dt_values(doctype, fields, as_dict = 0):
return webnotes.conn.sql('SELECT %s FROM tabDocType WHERE name="%s"' % (fields, doctype), as_dict = as_dict)

def set_dt_value(doctype, field, value):
return webnotes.conn.set_value('DocType', doctype, field, value)

def is_single(doctype):
try:
return get_dt_values(doctype, 'issingle')[0][0]
return webnotes.conn.get_value("DocType", doctype, "issingle")
except IndexError, e:
raise Exception, 'Cannot determine whether %s is single' % doctype



Načítá se…
Zrušit
Uložit