I am trying to implement a calendar system with the ability to schedule other people for appointments. The system has to be able to prevent scheduling a person during another appointment or during their unavailable time.
I have looked at all the existing django calendar projects I have found on the internet and none of them seem to have this built-into them (if I missed it somehow, please let me know).
Perhaps I am just getting too tired, but the only way I can think of doing this seems a little messy. Here goes in pseudo code:
- when a user tries to create a new appointment, grab the new appointment's start_time and end_time
- for each appointment on that same day, check if
- existing_start_time < new_start_time AND existing_end_time > new_start_time (is the new appointments start time in between any existing appointment's start and end times)
- existing_start_time < new_end_time AND existing_end_time > new_end_time (is the new appointments end time in between any existing appointment's start and end times)
- if no objects were found, then go ahead and add the new appointment
Considering Django has no filtering based on time, this must all be done using .extra() on the queryset.
So, I am asking if there is a better way. A pythonic trick or module or anything that might simplify this. Or an existing project that has what I need or can lead me in the right direction.
Thanks.