[bug] 57_Calendar.pm: cutoffOlderThan funktioniert nicht mit DURATION

Begonnen von betateilchen, 18 Juni 2025, 20:03:54

Vorheriges Thema - Nächstes Thema

betateilchen

Gegeben ist folgendes:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:Data::ICal 0.24
BEGIN:VEVENT
DESCRIPTION:Description
DTSTAMP:20250618T174801Z
DTSTART:20250618T194000
DURATION:+PT5M
LOCATION:Location
SUMMARY:Summary
UID:6852fbd1-f33f-22e2-1c2c-6ce0189d4a26ee69-fhem
END:VEVENT
END:VCALENDAR

Dieser Eintrag läßt sich problemlos in einem Calendar-device verarbeiten.

Das Attribut cutoffOlderThan mit dem Wert 60s hat aber keine Wirkung.
Nach einem "set <calendar> reload" findet sich mit "get <calender> vevents" immer noch der abgelaufene Eintrag:

7: VEVENT @4 [new]
    DESCRIPTION: Description
    DTSTAMP: 20250618T174801Z
    DTSTART: 20250618T194000
    DURATION: +PT5M
    LOCATION: Location
    SUMMARY: Summary
    UID: 6852fbd1-f33f-22e2-1c2c-6ce0189d4a26ee69-fhem
    >>> Events:
      6852fbd1f33f22e21c2c6ce0189d4a26ee69fhem         end                     18.06.2025 19:40-18.06.2025 19:45 Summary  Location
    >>> Skipped events:

Meine Vermutung nach einem oberflächlichen Blick in den Code:

Es wird zwar für ein event ein Ende berechnet, wenn DURATION angegeben ist:

    } elsif($self->hasKey("DURATION")) {
        my $duration= $self->d($self->value("DURATION"));
        $event->{end}= $nextstart + $duration;

aber bei der Auswertung der VEVENTS wird die Variante mit DURATION nicht berücksichtigt und bei nicht periodischen Einträgen nur nach DTEND gesucht, was es bei Einträgen mit DURATION aber nicht gibt. Deshalb wird das cutoffOlderThan nicht ausgeführt.



Zusatzinfo:
Das Attribut hideOlderThan funktioniert in "get <calendar> events" einwandfrei und filtert die abgelaufenen Einträge aus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!