Filter speed ups, and hook for filter plugins
svn: r15800
This commit is contained in:
parent
ac7210d0ba
commit
5583ab113e
@ -55,50 +55,35 @@ class MatchesFilterBase(Rule):
|
|||||||
category = _('General filters')
|
category = _('General filters')
|
||||||
|
|
||||||
def prepare(self, db):
|
def prepare(self, db):
|
||||||
#if Filters.SystemFilters:
|
|
||||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
|
||||||
#if filt.get_name() == self.list[0]:
|
|
||||||
#for rule in filt.flist:
|
|
||||||
#rule.prepare(db)
|
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
filters = Filters.CustomFilters.get_filters_dict(self.namespace)
|
||||||
if filt.get_name() == self.list[0]:
|
if self.list[0] in filters:
|
||||||
for rule in filt.flist:
|
filt = filters[self.list[0]]
|
||||||
rule.prepare(db)
|
for rule in filt.flist:
|
||||||
|
rule.prepare(db)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
#if Filters.SystemFilters:
|
|
||||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
|
||||||
#if filt.get_name() == self.list[0]:
|
|
||||||
#for rule in filt.flist:
|
|
||||||
#rule.reset()
|
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
filters = Filters.CustomFilters.get_filters_dict(self.namespace)
|
||||||
if filt.get_name() == self.list[0]:
|
if self.list[0] in filters:
|
||||||
for rule in filt.flist:
|
filt = filters[self.list[0]]
|
||||||
rule.reset()
|
for rule in filt.flist:
|
||||||
|
rule.reset()
|
||||||
|
|
||||||
def apply(self, db, obj):
|
def apply(self, db, obj):
|
||||||
#if Filters.SystemFilters:
|
|
||||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
|
||||||
#if filt.get_name() == self.list[0]:
|
|
||||||
#return filt.check(db, obj.handle)
|
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
filters = Filters.CustomFilters.get_filters_dict(self.namespace)
|
||||||
if filt.get_name() == self.list[0]:
|
if self.list[0] in filters:
|
||||||
return filt.check(db, obj.handle)
|
filt = filters[self.list[0]]
|
||||||
|
return filt.check(db, obj.handle)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def find_filter(self):
|
def find_filter(self):
|
||||||
"""
|
"""
|
||||||
Return the selected filter or None.
|
Return the selected filter or None.
|
||||||
"""
|
"""
|
||||||
#if Filters.SystemFilters:
|
|
||||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
|
||||||
#if filt.get_name() == self.list[0]:
|
|
||||||
#return filt
|
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
filters = Filters.CustomFilters.get_filters_dict(self.namespace)
|
||||||
if filt.get_name() == self.list[0]:
|
if self.list[0] in filters:
|
||||||
return filt
|
return filters[self.list[0]]
|
||||||
return None
|
return None
|
||||||
|
@ -51,6 +51,17 @@ class FilterList(object):
|
|||||||
def __init__(self, file):
|
def __init__(self, file):
|
||||||
self.filter_namespaces = {}
|
self.filter_namespaces = {}
|
||||||
self.file = os.path.expanduser(file)
|
self.file = os.path.expanduser(file)
|
||||||
|
self._cached = None
|
||||||
|
|
||||||
|
def get_filters_dict(self, namespace='generic'):
|
||||||
|
"""
|
||||||
|
This runs every for every item to be matched!
|
||||||
|
"""
|
||||||
|
if self._cached is None:
|
||||||
|
filters = self.get_filters(namespace)
|
||||||
|
self._cached = dict([(filt.name, filt) for filt in filters])
|
||||||
|
else:
|
||||||
|
return self._cached
|
||||||
|
|
||||||
def get_filters(self, namespace='generic'):
|
def get_filters(self, namespace='generic'):
|
||||||
"""
|
"""
|
||||||
@ -60,18 +71,19 @@ class FilterList(object):
|
|||||||
filters = self.filter_namespaces[namespace]
|
filters = self.filter_namespaces[namespace]
|
||||||
else:
|
else:
|
||||||
filters = []
|
filters = []
|
||||||
# plugins = PLUGMAN.process_plugin_data('Filters')
|
plugins = PLUGMAN.process_plugin_data('Filters')
|
||||||
# plugin_filters = []
|
if plugins:
|
||||||
# if plugins:
|
plugin_filters = []
|
||||||
# try:
|
try:
|
||||||
# plugin_filters = [plug for plug in [plug(namespace)
|
plugin_filters = [plug for plug in [plug(namespace)
|
||||||
# if callable(plug)
|
if callable(plug)
|
||||||
# else plug
|
else plug
|
||||||
# for plug in plugins]
|
for plug in plugins]
|
||||||
# if plug is not None]
|
if plug is not None]
|
||||||
# except:
|
except:
|
||||||
# import traceback
|
import traceback
|
||||||
# traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
filters += plugin_filters
|
||||||
return filters
|
return filters
|
||||||
|
|
||||||
def add(self, namespace, filt):
|
def add(self, namespace, filt):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user