Factor out dupl. code for creating list of filters
parent
a1af05a14e
commit
f951b9b09e
|
@ -16,7 +16,7 @@ import uuid
|
|||
|
||||
from six import with_metaclass
|
||||
|
||||
from stix2.datastore.filters import Filter
|
||||
from stix2.datastore.filters import Filter, _assemble_filters
|
||||
from stix2.utils import deduplicate
|
||||
|
||||
|
||||
|
@ -312,13 +312,7 @@ class DataSource(with_metaclass(ABCMeta)):
|
|||
list: The STIX objects that matched the query.
|
||||
|
||||
"""
|
||||
filter_list = [Filter('type', '=', obj_type)]
|
||||
if filters:
|
||||
if isinstance(filters, list):
|
||||
filter_list.extend(filters)
|
||||
else:
|
||||
filter_list.append(filters)
|
||||
|
||||
filter_list = _assemble_filters(filters, [Filter('type', '=', obj_type)])
|
||||
return self.query(filter_list)
|
||||
|
||||
def creator_of(self, obj):
|
||||
|
@ -421,12 +415,7 @@ class DataSource(with_metaclass(ABCMeta)):
|
|||
ids.discard(obj_id)
|
||||
|
||||
# Assemble filters
|
||||
filter_list = []
|
||||
if filters:
|
||||
if isinstance(filters, list):
|
||||
filter_list.extend(filters)
|
||||
else:
|
||||
filter_list.append(filters)
|
||||
filter_list = _assemble_filters(filters)
|
||||
|
||||
for i in ids:
|
||||
results.extend(self.query(filter_list + [Filter('id', '=', i)]))
|
||||
|
|
|
@ -44,6 +44,29 @@ def _check_filter_components(prop, op, value):
|
|||
return True
|
||||
|
||||
|
||||
def _assemble_filters(filter_arg, filters=[]):
|
||||
"""Assemble a list of filters.
|
||||
|
||||
This can be used to allow certain functions to work correctly no matter if
|
||||
the user provides a single filter or a list of them.
|
||||
|
||||
Args:
|
||||
filter_arg (Filter or list): The single Filter or list of Filters to be
|
||||
coerced into a list of Filters.
|
||||
filters (list, optional): A list of Filters to be automatically appended.
|
||||
|
||||
Returns:
|
||||
List of Filters.
|
||||
|
||||
"""
|
||||
if isinstance(filter_arg, list):
|
||||
filters.extend(filter_arg)
|
||||
else:
|
||||
filters.append(filter_arg)
|
||||
|
||||
return filters
|
||||
|
||||
|
||||
class Filter(collections.namedtuple("Filter", ['property', 'op', 'value'])):
|
||||
"""STIX 2 filters that support the querying functionality of STIX 2
|
||||
DataStores and DataSources.
|
||||
|
|
Loading…
Reference in New Issue