Ver código fonte

[cache] fix

version-14
Rushabh Mehta 10 anos atrás
pai
commit
2a9f31f1a4
3 arquivos alterados com 18 adições e 5 exclusões
  1. +1
    -1
      frappe/__init__.py
  2. +2
    -2
      frappe/modules/__init__.py
  3. +15
    -2
      frappe/utils/redis_wrapper.py

+ 1
- 1
frappe/__init__.py Ver arquivo

@@ -432,7 +432,7 @@ def has_website_permission(doctype, ptype="read", doc=None, user=None, verbose=F

def is_table(doctype):
"""Returns True if `istable` property (indicating child Table) is set for given DocType."""
def get_tables(doctype):
def get_tables():
return db.sql_list("select name from tabDocType where ifnull(istable,0)=1")

tables = cache().get_value("is_table", get_tables)


+ 2
- 2
frappe/modules/__init__.py Ver arquivo

@@ -46,9 +46,9 @@ def export_doc(doctype, name, module=None):

def get_doctype_module(doctype):
"""Returns **Module Def** name of given doctype."""
def make_modules_dict(doctype):
def make_modules_dict():
return dict(frappe.db.sql("select name, module from tabDocType"))
frappe.cache().get_value("doctype_modules", make_modules_dict)[doctype]
return frappe.cache().get_value("doctype_modules", make_modules_dict)[doctype]

doctype_python_modules = {}
def load_doctype_module(doctype, module=None, prefix=""):


+ 15
- 2
frappe/utils/redis_wrapper.py Ver arquivo

@@ -2,7 +2,8 @@
# MIT License. See license.txt
from __future__ import unicode_literals

import redis, frappe, pickle, re
import redis, frappe, re
import cPickle as pickle
from frappe.utils import cstr

class RedisWrapper(redis.Redis):
@@ -92,16 +93,28 @@ class RedisWrapper(redis.Redis):
del frappe.local.cache[key]

def hset(self, name, key, value):
if not name in frappe.local.cache:
frappe.local.cache[name] = {}
frappe.local.cache[name][key] = value
super(redis.Redis, self).hset(self.make_key(name), key, pickle.dumps(value))

def hget(self, name, key, generator=None):
if not name in frappe.local.cache:
frappe.local.cache[name] = {}
if key in frappe.local.cache[name]:
return frappe.local.cache[name][key]
value = super(redis.Redis, self).hget(self.make_key(name), key)
if value:
value = pickle.loads(value)
elif generator:
value = generator
value = generator()
self.hset(name, key, value)
return value

def hdel(self, name, keys):
if name in frappe.local.cache:
del frappe.local.cache[name]
return super(redis.Redis, self).hget(self.make_key(name), keys)

def hkeys(self, name):
return super(redis.Redis, self).hkeys(self.make_key(name))

Carregando…
Cancelar
Salvar