django Kalender frei / beschäftigt / Verfügbarkeit

8

Ich versuche, ein Kalendersystem mit der Fähigkeit zu implementieren, andere Leute für Verabredungen zu planen. Das System muss verhindern können, dass eine Person während eines anderen Termins oder während ihrer nicht verfügbaren Zeit geplant wird.

Ich habe mir alle existierenden Djangokalender-Projekte angeschaut, die ich im Internet gefunden habe, und keiner von ihnen scheint das eingebaut zu haben (wenn ich es irgendwie vermisst habe, lass es mich wissen).

Vielleicht werde ich einfach zu müde, aber der einzige Weg, wie ich mir das vorstellen kann, scheint etwas unordentlich zu sein. Hier geht es in Pseudocode:

  • Wenn ein Benutzer versucht, einen neuen Termin zu erstellen, nehmen Sie die neuen Begriffe start_time und end_time
  • Überprüfen Sie für jeden Termin am selben Tag, ob
    • existing_start_time & lt; new_start_time UND existing_end_time & gt; new_start_time (ist die Startzeit des neuen Termins zwischen den Anfangs- und Endzeiten eines vorhandenen Termins)
    • existing_start_time & lt; new_end_time UND existing_end_time & gt; new_end_time (ist die Endzeit des neuen Termins zwischen den Anfangs- und Endzeiten eines vorhandenen Termins)
  • wenn keine Objekte gefunden wurden, dann fahren Sie fort und fügen Sie den neuen Termin hinzu

Wenn man bedenkt, dass Django keine zeitabhängige Filterung hat, muss dies alles mit .extra () im queryset geschehen.

Also frage ich, ob es einen besseren Weg gibt. Ein pythonischer Trick oder ein Modul oder irgendetwas, das dies vereinfachen könnte. Oder ein bestehendes Projekt, das das hat, was ich brauche oder in die richtige Richtung lenken kann.

Danke.

    
mhost 16.02.2010, 07:17
quelle

2 Antworten

13

Wie wäre es mit Djangos Reichweitentest .

Zum Beispiel:

%Vor%

So ähnlich? Ich habe das selbst nicht versucht, also müssen Sie es vielleicht ein wenig zwicken.

BEARBEITEN: Das during_conflict -Bit wurde hinzugefügt.

    
Nick Presta 16.02.2010, 07:36
quelle
0

Ein Vorbehalt hier sind die verschiedenen Zeitzonen der verschiedenen Benutzer und bringen Sommerzeit in die Mischung Dinge werden sehr kompliziert.

Sie können sich das pytz Modul ansehen, um sich um das Zeitzonenproblem zu kümmern.

    
Sidmitra 16.02.2010 08:46
quelle

Tags und Links