ich stehe gerade vor folgender Entscheidung: Wenn ich z. B. alle Termine dieser Woche filtere, erstelle ich eine expression (ist das richtig ausgedrückt?) der entsprechenden 7 Tage und erhalte als Ergebnis eine Liste der passenden Termine. Dazu wird eine Methode `is_datetime` der Terminklasse abgefragt. Soweit, so gut. Nun benötige ich aber noch zu jedem Termin Informationen darüber, ob das jeweilige Trefferdatum das Datum des Termins selbst oder eine Wiederholung ist und auch die Position dieses Datums innerhalb der Termindauer des Termins oder der Wiederholung.
Wenn ich also z. B. einen sich täglich wiederholenden Termin vom 14. - 16. Oktober habe (blödes Beispiel das veranschaulichen soll, dass es Daten gibt, an denen Termin und Wiederholung(en) zusammentreffen können) und den 15. Oktober abfrage, dann steht erstmal dieser Termin via `is_datetime` in der Ergebnisliste. Danach muss ich noch eine Methode `get_scopes` bemühen, die mir dann die Information liefert, dass sich am 15. Oktober einmal der Termin selbst 'between' (nicht 'start' oder 'end') und einmal die Wiederholung 'start' befindet. Auch bis hierher alles klar.
Um zu den Positionsangaben zu gelangen, fallen mir diese Lösungen ein:
- Sobald `is_datetime` einen Treffer ermittelt, werden im Termin-Exemplar die Positionsangaben hinterlegt. Diese Attribute gelten nur bis zu einem erneuten Aufruf von `is_datetime` und werden bei Programmende verworfen.
- Ich gestalte die Filterroutine insofern um, dass die Abfragemethode keinen `bool` sondern gleich die Positionsdaten zurückgibt.
- Auch wenn es mir aufstößt: Ich durchlaufe nochmals die 7 Tage und frage die Ergebnisliste nach den Positionsangaben ab, wobei aber nochmals die Daten abgefragt werden müssen, die zuvor von `is_datetime` mit `False` zurückgewiesen wurden. Ist doch blöd, irgendwie!
Was meint ihr?
mutetella