Commit 5cd7b5c2 by Piotr Mitros

Better isuseful

parent e8bcec7f
...@@ -100,14 +100,16 @@ def query(category = None, name = None, description = None, args = None): ...@@ -100,14 +100,16 @@ def query(category = None, name = None, description = None, args = None):
import hashlib import hashlib
import json import json
def isuseful(a): def memoize_query(cache_time = 60*4, timeout = 60*15, ignores = ["<class 'pymongo.database.Database'>", "<class 'fs.osfs.OSFS'>"]):
if str(type(a)) in ["<class 'pymongo.database.Database'>", "<class 'fs.osfs.OSFS'>"]: ''' Call function only if we do not have the results for its execution already
return False We ignore parameters of type pymongo.database.Database and fs.osfs.OSFS. These
return True will be different per call, but function identically.
def memoize_query(cache_time = 60*4, timeout = 60*15):
''' Call function only if we do not have the results for it's execution already
''' '''
def isuseful(a, ignores):
if str(type(a)) in ignores:
return False
return True
def view_factory(f): def view_factory(f):
def wrap_function(f, *args, **kwargs): def wrap_function(f, *args, **kwargs):
# Assumption: dict gets dumped in same order # Assumption: dict gets dumped in same order
...@@ -119,7 +121,7 @@ def memoize_query(cache_time = 60*4, timeout = 60*15): ...@@ -119,7 +121,7 @@ def memoize_query(cache_time = 60*4, timeout = 60*15):
s = str({'uniquifier': 'anevt.memoize', s = str({'uniquifier': 'anevt.memoize',
'name' : f.__name__, 'name' : f.__name__,
'module' : f.__module__, 'module' : f.__module__,
'args': [a for a in args if isuseful(a)], 'args': [a for a in args if isuseful(a, ignores)],
'kwargs': kwargs}) 'kwargs': kwargs})
m.update(s) m.update(s)
key = m.hexdigest() key = m.hexdigest()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment