refactor: Use global redis connection
diff --git a/erpnext/e_commerce/website_item_indexing.py b/erpnext/e_commerce/website_item_indexing.py
index a4c45cc..4e3af8b 100644
--- a/erpnext/e_commerce/website_item_indexing.py
+++ b/erpnext/e_commerce/website_item_indexing.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
-import redis
+from frappe.utils.redis_wrapper import RedisWrapper
from redisearch import (
Client, AutoCompleter, Query,
@@ -13,6 +13,9 @@
Document
)
+def make_key(key):
+ return "{0}|{1}".format(frappe.conf.db_name, key).encode('utf-8')
+
# GLOBAL CONSTANTS
WEBSITE_ITEM_INDEX = 'website_items_index'
WEBSITE_ITEM_KEY_PREFIX = 'website_item:'
@@ -31,7 +34,7 @@
def create_website_items_index():
'''Creates Index Definition'''
# CREATE index
- client = Client(WEBSITE_ITEM_INDEX, port=13000)
+ client = Client(make_key(WEBSITE_ITEM_INDEX), conn=frappe.cache())
# DROP if already exists
try:
@@ -40,7 +43,7 @@
pass
- idx_def = IndexDefinition([WEBSITE_ITEM_KEY_PREFIX])
+ idx_def = IndexDefinition([make_key(WEBSITE_ITEM_KEY_PREFIX)])
# Based on e-commerce settings
idx_fields = frappe.db.get_single_value(
@@ -55,7 +58,7 @@
client.create_index(
[TextField("web_item_name", sortable=True)] + idx_fields,
- definition=idx_def
+ definition=idx_def,
)
reindex_all_web_items()
@@ -70,13 +73,16 @@
def insert_item_to_index(website_item_doc):
# Insert item to index
key = get_cache_key(website_item_doc.name)
- r = redis.Redis("localhost", 13000)
+ r = frappe.cache()
web_item = create_web_item_map(website_item_doc)
- r.hset(key, mapping=web_item)
+
+ for k, v in web_item.items():
+ super(RedisWrapper, r).hset(make_key(key), k, v)
+
insert_to_name_ac(website_item_doc.web_item_name, website_item_doc.name)
def insert_to_name_ac(web_name, doc_name):
- ac = AutoCompleter(WEBSITE_ITEM_NAME_AUTOCOMPLETE, port=13000)
+ ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=frappe.cache())
ac.add_suggestions(Suggestion(web_name, payload=doc_name))
def create_web_item_map(website_item_doc):
@@ -97,7 +103,7 @@
create_website_items_index()
def delete_item_from_index(website_item_doc):
- r = redis.Redis("localhost", 13000)
+ r = frappe.cache()
key = get_cache_key(website_item_doc.name)
try:
@@ -113,9 +119,9 @@
Also creats autocomplete dictionary for `categories` if
checked in E Commerce Settings"""
- r = redis.Redis("localhost", 13000)
- name_ac = AutoCompleter(WEBSITE_ITEM_NAME_AUTOCOMPLETE, port=13000)
- cat_ac = AutoCompleter(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE, port=13000)
+ r = frappe.cache()
+ name_ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=r)
+ cat_ac = AutoCompleter(make_key(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE), conn=r)
ac_categories = frappe.db.get_single_value(
'E Commerce Settings',
@@ -124,8 +130,8 @@
# Delete both autocomplete dicts
try:
- r.delete(WEBSITE_ITEM_NAME_AUTOCOMPLETE)
- r.delete(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE)
+ r.delete(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE))
+ r.delete(make_key(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE))
except:
return False
@@ -149,11 +155,14 @@
filters={"published": True}
)
- r = redis.Redis("localhost", 13000)
+ r = frappe.cache()
for item in items:
web_item = create_web_item_map(item)
- key = get_cache_key(item.name)
- r.hset(key, mapping=web_item)
+ key = make_key(get_cache_key(item.name))
+
+ for k, v in web_item.items():
+ super(RedisWrapper, r).hset(key, k, v)
+
def get_cache_key(name):
name = frappe.scrub(name)
diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py
index 1f7a2c6..b004f80 100644
--- a/erpnext/templates/pages/product_search.py
+++ b/erpnext/templates/pages/product_search.py
@@ -12,7 +12,8 @@
from erpnext.e_commerce.website_item_indexing import (
WEBSITE_ITEM_INDEX,
WEBSITE_ITEM_NAME_AUTOCOMPLETE,
- WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE
+ WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE,
+ make_key
)
# -----------------
@@ -64,8 +65,10 @@
# TODO: return top/recent searches
return []
- ac = AutoCompleter(WEBSITE_ITEM_NAME_AUTOCOMPLETE, port=13000)
- client = Client(WEBSITE_ITEM_INDEX, port=13000)
+ red = frappe.cache()
+
+ ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=red)
+ client = Client(make_key(WEBSITE_ITEM_INDEX), conn=red)
suggestions = ac.get_suggestions(query, num=10)
# Build a query
@@ -94,7 +97,7 @@
# TODO: return top/recent searches
return []
- ac = AutoCompleter(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE, port=13000)
+ ac = AutoCompleter(make_key(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE), conn=frappe.cache())
suggestions = ac.get_suggestions(query, num=10)
return [s.string for s in suggestions]
\ No newline at end of file