mirror of
https://github.com/Kozea/Radicale.git
synced 2025-08-04 18:22:26 +00:00
Separate time-range filter only for VEVENT component
This commit is contained in:
parent
68f8d61bde
commit
a76f80a620
1 changed files with 12 additions and 9 deletions
|
@ -228,22 +228,25 @@ def xml_report(base_prefix: str, path: str, xml_request: Optional[ET.Element],
|
||||||
expand = root.find(".//" + xmlutils.make_clark("C:expand"))
|
expand = root.find(".//" + xmlutils.make_clark("C:expand"))
|
||||||
|
|
||||||
# if we have expand prop we use "filter (except time range) -> expand -> filter (only time range)" approach
|
# if we have expand prop we use "filter (except time range) -> expand -> filter (only time range)" approach
|
||||||
time_range_element = None
|
vevent_time_range = None
|
||||||
main_filters = []
|
main_filters = []
|
||||||
for filter_ in filters:
|
for filter_ in filters:
|
||||||
# extract time-range filter for processing after main filters
|
if expand is not None:
|
||||||
# for expand request
|
for comp_filter in filter_.findall(".//" + xmlutils.make_clark("C:comp-filter")):
|
||||||
time_range_element = filter_.find(".//" + xmlutils.make_clark("C:time-range"))
|
if comp_filter.get("name", "").upper() == "VEVENT":
|
||||||
|
vevent_time_range = comp_filter.find(".//" + xmlutils.make_clark("C:time-range"))
|
||||||
|
if vevent_time_range is not None:
|
||||||
|
comp_filter.remove(vevent_time_range)
|
||||||
|
break
|
||||||
|
|
||||||
if expand is None or time_range_element is None:
|
main_filters.append(filter_)
|
||||||
main_filters.append(filter_)
|
|
||||||
|
|
||||||
# Extract requested component types from filters
|
# Extract requested component types from filters
|
||||||
requested_components = set()
|
requested_components = set()
|
||||||
has_vcalendar_filter = False
|
has_vcalendar_filter = False
|
||||||
for filter_ in filters:
|
for filter_ in filters:
|
||||||
for comp_filter in filter_.findall(".//" + xmlutils.make_clark("C:comp-filter")):
|
for comp_filter in filter_.findall(".//" + xmlutils.make_clark("C:comp-filter")):
|
||||||
component_name = comp_filter.get("name")
|
component_name = comp_filter.get("name", "").upper()
|
||||||
if component_name:
|
if component_name:
|
||||||
if component_name == "VCALENDAR":
|
if component_name == "VCALENDAR":
|
||||||
has_vcalendar_filter = True
|
has_vcalendar_filter = True
|
||||||
|
@ -316,8 +319,8 @@ def xml_report(base_prefix: str, path: str, xml_request: Optional[ET.Element],
|
||||||
time_range_start = None
|
time_range_start = None
|
||||||
time_range_end = None
|
time_range_end = None
|
||||||
|
|
||||||
if time_range_element is not None:
|
if vevent_time_range is not None:
|
||||||
time_range_start, time_range_end = radicale_filter.parse_time_range(time_range_element)
|
time_range_start, time_range_end = radicale_filter.parse_time_range(vevent_time_range)
|
||||||
|
|
||||||
(expanded_element, n_vev) = _expand(
|
(expanded_element, n_vev) = _expand(
|
||||||
element=element, item=copy.copy(item),
|
element=element, item=copy.copy(item),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue