瀏覽代碼

Merge pull request #1246 from anandpdoshi/hash-cache-fix

[fix] missing hash cache clearing and breadcrumbs fix
version-14
Anand Doshi 10 年之前
父節點
當前提交
3afd9209e6
共有 6 個文件被更改,包括 17 次插入5 次删除
  1. +3
    -0
      frappe/__init__.py
  2. +1
    -2
      frappe/desk/notifications.py
  3. +1
    -1
      frappe/sessions.py
  4. +7
    -0
      frappe/utils/redis_wrapper.py
  5. +1
    -0
      frappe/website/render.py
  6. +4
    -2
      frappe/website/template.py

+ 3
- 0
frappe/__init__.py 查看文件

@@ -428,6 +428,9 @@ def has_website_permission(doctype, ptype="read", doc=None, user=None, verbose=F

hooks = (get_hooks("has_website_permission") or {}).get(doctype, [])
if hooks:
if isinstance(doc, basestring):
doc = get_doc(doctype, doc)

for method in hooks:
result = call(get_attr(method), doc=doc, ptype=ptype, user=user, verbose=verbose)
# if even a single permission check is Falsy


+ 1
- 2
frappe/desk/notifications.py 查看文件

@@ -95,8 +95,7 @@ def clear_notifications(user="*"):
frappe.cache().delete_keys("notification_count:")
else:
# delete count for user
for key in frappe.cache().get_keys("notification_count:"):
frappe.cache().hdel(key, user)
frappe.cache().hdel_keys("notification_count:", user)

def delete_notification_count_for(doctype):
frappe.cache().delete_key("notification_count:" + doctype)


+ 1
- 1
frappe/sessions.py 查看文件

@@ -31,7 +31,7 @@ def clear_cache(user=None):
cache = frappe.cache()

groups = ("bootinfo", "user_recent", "user_roles", "user_doc", "lang",
"defaults", "user_permissions", "roles")
"defaults", "user_permissions", "roles", "home_page")

if user:
for name in groups:


+ 7
- 0
frappe/utils/redis_wrapper.py 查看文件

@@ -136,8 +136,15 @@ class RedisWrapper(redis.Redis):
except redis.exceptions.ConnectionError:
pass

def hdel_keys(self, name_starts_with, key):
"""Delete hash names with wildcard `*` and key"""
for name in frappe.cache().get_keys(name_starts_with):
name = name.split("|", 1)[1]
self.hdel(name, key)

def hkeys(self, name):
try:
return super(redis.Redis, self).hkeys(self.make_key(name))
except redis.exceptions.ConnectionError:
return []


+ 1
- 0
frappe/website/render.py 查看文件

@@ -217,6 +217,7 @@ def clear_cache(path=None):
clear_sitemap()
frappe.clear_cache("Guest")
frappe.cache().delete_value("_website_pages")
frappe.cache().delete_value("home_page")

for method in frappe.get_hooks("website_clear_cache"):
frappe.get_attr(method)(path)

+ 4
- 2
frappe/website/template.py 查看文件

@@ -59,8 +59,10 @@ def set_breadcrumbs(out, context):
"""Build breadcrumbs template (deprecated)"""
out["no_breadcrumbs"] = context.get("no_breadcrumbs", 0) or ("<!-- no-breadcrumbs -->" in out.get("content", ""))

# breadcrumbs
if not out["no_breadcrumbs"] and "breadcrumbs" not in out:
if out["no_breadcrumbs"]:
out["breadcrumbs"] = ""

elif "breadcrumbs" not in out:
out["breadcrumbs"] = frappe.get_template("templates/includes/breadcrumbs.html").render(context)

def set_title_and_header(out, context):


Loading…
取消
儲存