Move get_filtered to BaseCollection
This commit is contained in:
parent
5e0a387ed9
commit
979414ce85
@ -34,6 +34,7 @@ from importlib import import_module
|
|||||||
import pkg_resources
|
import pkg_resources
|
||||||
import vobject
|
import vobject
|
||||||
|
|
||||||
|
from radicale.item import filter as radicale_filter
|
||||||
from radicale.log import logger
|
from radicale.log import logger
|
||||||
|
|
||||||
INTERNAL_TYPES = ("multifilesystem",)
|
INTERNAL_TYPES = ("multifilesystem",)
|
||||||
@ -204,10 +205,20 @@ class BaseCollection:
|
|||||||
``filters_matched`` is a bool that indicates if ``filters`` are fully
|
``filters_matched`` is a bool that indicates if ``filters`` are fully
|
||||||
matched.
|
matched.
|
||||||
|
|
||||||
This returns all events by default
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return ((item, False) for item in self.get_all())
|
tag, start, end, simple = radicale_filter.simplify_prefilters(
|
||||||
|
filters, collection_tag=self.get_meta("tag"))
|
||||||
|
for item in self.get_all():
|
||||||
|
if tag:
|
||||||
|
if tag != item.component_name:
|
||||||
|
continue
|
||||||
|
istart, iend = item.time_range
|
||||||
|
if istart >= end or iend <= start:
|
||||||
|
continue
|
||||||
|
item_simple = simple and (start <= istart or iend <= end)
|
||||||
|
else:
|
||||||
|
item_simple = simple
|
||||||
|
yield item, item_simple
|
||||||
|
|
||||||
def has_uid(self, uid):
|
def has_uid(self, uid):
|
||||||
"""Check if a UID exists in the collection."""
|
"""Check if a UID exists in the collection."""
|
||||||
|
@ -35,7 +35,6 @@ import vobject
|
|||||||
|
|
||||||
from radicale import item as radicale_item
|
from radicale import item as radicale_item
|
||||||
from radicale import pathutils, storage
|
from radicale import pathutils, storage
|
||||||
from radicale.item import filter as radicale_filter
|
|
||||||
from radicale.log import logger
|
from radicale.log import logger
|
||||||
|
|
||||||
|
|
||||||
@ -727,18 +726,6 @@ class Collection(storage.BaseCollection):
|
|||||||
# are from os.listdir.
|
# are from os.listdir.
|
||||||
return (self._get(href, verify_href=False) for href in self._list())
|
return (self._get(href, verify_href=False) for href in self._list())
|
||||||
|
|
||||||
def get_filtered(self, filters):
|
|
||||||
tag, start, end, simple = radicale_filter.simplify_prefilters(
|
|
||||||
filters, collection_tag=self.get_meta("tag"))
|
|
||||||
if not tag:
|
|
||||||
# no filter
|
|
||||||
yield from ((item, simple) for item in self.get_all())
|
|
||||||
return
|
|
||||||
for item in (self._get(h, verify_href=False) for h in self._list()):
|
|
||||||
istart, iend = item.time_range
|
|
||||||
if tag == item.component_name and istart < end and iend > start:
|
|
||||||
yield item, simple and (start <= istart or iend <= end)
|
|
||||||
|
|
||||||
def upload(self, href, item):
|
def upload(self, href, item):
|
||||||
if not pathutils.is_safe_filesystem_path_component(href):
|
if not pathutils.is_safe_filesystem_path_component(href):
|
||||||
raise pathutils.UnsafePathError(href)
|
raise pathutils.UnsafePathError(href)
|
||||||
|
Loading…
Reference in New Issue
Block a user