Commit Graph

40 Commits

Author SHA1 Message Date
TowyTowy
f48dc47177 Fix: text-match filter crashes on structured property (vCard N/ADR)
A CardDAV addressbook-query REPORT with a text-match prop-filter on a
structured property (e.g. N or ADR) returned HTTP 500. vobject parses
these into Name/Address objects rather than plain strings, so text_match
called .lower() on a non-string and raised AttributeError. Coerce
non-string values to their text representation before matching.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-15 11:26:45 +02:00
TowyTowy
e557c0cd5e Fix: time-range filter matches VEVENT with whole-day DURATION
A calendar-query REPORT with a time-range filter failed to return a
VEVENT that has a whole-day DURATION (e.g. DURATION:P1D or P2D) whenever
the queried range fell inside the event but after DTSTART.

The VEVENT time-range logic in radicale/item/filter.py gated the
"non-zero duration" branch (rfc4791-9.9 line 2) on timedelta.seconds
instead of timedelta.total_seconds(). For a duration that is an exact
multiple of 24h, timedelta.seconds is 0 (the days component holds the
value), so the event was treated as zero-length (line 3) and only
matched a one-second window at its start. An identical event expressed
with DTEND matched correctly, confirming the defect is isolated to the
DURATION path.

Use total_seconds() so multi-day durations are handled correctly. Adds a
regression test (event11, DURATION:P2D) covering both an inside-range
match and an outside-range non-match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 15:58:39 +02:00
Peter Bieringer
529210a30d item/filter: replace legacy trace log 2026-04-08 21:49:55 +02:00
Peter Bieringer
9b43b8e3de catch broken event 2025-12-01 18:52:20 +01:00
Peter Bieringer
e1b19f1a22 catch items having tzinfo only on dtstart or dtend set for whatever reason, overtake tzinfo from the other one 2025-08-22 07:49:54 +02:00
Peter Bieringer
74d21f011c enrich for optional tzinfo 2025-08-22 07:49:09 +02:00
Peter Bieringer
41ac453eb7 try applying timerange-filter on VCALENDAR entries 2025-07-20 17:50:07 +02:00
Peter Bieringer
18a61f209d catch time-filter on level 0 2025-07-20 17:50:07 +02:00
Peter Bieringer
b756e21c31 add some trace logging 2025-07-20 17:50:07 +02:00
Peter Bieringer
4bbbc3c384 fix for Python < 3.10 2025-05-16 07:24:57 +02:00
Peter Bieringer
c09a098866 limit only to VALARM, VFREEBUSY support was not added so far 2025-05-16 05:39:19 +02:00
Peter Bieringer
f56416b2fb honor TRIGGER of VALARM for timerange filtering 2025-05-15 21:35:00 +02:00
Peter Bieringer
9ae63b1770 add filtering for VALARM and VFREEBUSY, so far only based on existence of such component is implemented 2025-05-15 05:58:12 +02:00
Peter Bieringer
06b7e98ea2 extend copyright 2025-04-21 22:22:02 +02:00
Peter Bieringer
2d197d1ae0 fix broken value extract from property for https://github.com/Kozea/Radicale/issues/1760 2025-04-21 22:18:56 +02:00
Peter Bieringer
873bf80131 make flake8 happy 2024-12-05 08:03:00 +01:00
Peter Bieringer
38c236aa02 fix-issue-1635: code 2024-12-05 07:54:52 +01:00
Peter Bieringer
f725ee780f fix-issue-1635: update copyright 2024-12-05 07:54:32 +01:00
Peter Bieringer
059afef35d log content in case of multiple main components error 2024-10-29 07:19:45 +01:00
ray-react0r
3cba4b32a3 Merge branch 'master' into react0r 2024-08-15 15:07:49 -06:00
Ray
d6c0a05771 Style fixes for tox linting 2024-08-14 11:15:30 -06:00
Ray
4c1d295e81 Fix bug in free busy report serializing a datetime tzinfo 2024-08-14 05:43:53 -06:00
Ray
7b0d88ff0d Add basic free-busy report 2024-08-14 05:43:53 -06:00
Mathieu Dupuy
47bc966a13 fix misspellings 2024-07-24 12:29:13 +02:00
Peter Bieringer
86f37e0250 Merge pull request #1252 from trougnouf/master
Fix #715 (Main Component is missing when only recurrence id exists) - already active in RPM since over 6 months
2024-03-01 06:24:22 +01:00
David Greaves
7b98a0028b Handle lists in filter values for CATEGORIES
Issue #1125

Signed-off-by: David Greaves <david@dgreaves.com>
2023-03-05 17:18:44 +01:00
trougnouf (Benoit Brummer)
f4a87afab7 fix #715 (Main Component is missing when only recurrence id exists) with balrok's patch 2022-07-19 00:15:33 +02:00
Unrud
bfba027446 Use correct RRULE 2021-12-18 22:14:04 +01:00
Unrud
4252747646 Check all RRULE occurrences for infinity 2021-12-18 22:00:34 +01:00
Unrud
bbaf0ebd8c Change name in file header 2021-12-09 16:55:46 +01:00
Unrud
cecb17df03 More type hints 2021-09-26 22:24:45 +02:00
Michael Stilkerich
398e93e215 Fix is-not-defined filter in addressbook-query report 2021-03-23 00:49:22 +01:00
Unrud
9909454761 Fix matching of date property 2020-10-06 07:31:29 +02:00
Unrud
db7587c593 Cosmetic changes 2020-01-21 19:40:02 +01:00
Unrud
d3776e55fb Rework XML helpers functions
- Merge make_tag, tag_from_clark and tag_from_human into make_clark and make_human
- Don't use RegEx for parsing
2020-01-19 21:07:54 +01:00
Unrud
0fb02cd026 Cosmetic changes (pylint) 2020-01-17 12:59:14 +01:00
Unrud
63e6d091b9 Update copyright 2019-06-17 04:13:24 +02:00
Braxton Plaxco
27185f7291 Get python3 ./setup.py test to pass cleanly
~ B'ezrat Hashem ~
2019-06-15 08:49:05 +02:00
Unrud
5e0a387ed9 remove whitespace before email 2018-09-04 03:33:47 +02:00
Unrud
8869b34470 refactor 2018-08-28 16:19:43 +02:00