def agenda_is_free( session, calendarobj, meeting_date, meeting_date_end): """Check if there is already someting planned in this agenda at that time on that day. :arg session: the database session to use :arg calendar: the name of the calendar of interest. :arg meeting_date: the date of the meeting (as Datetime object) :arg meeting_date_end: the end date of the meeting (as Datetime object) :arg time_start: the time at which the meeting starts (as int) :arg time_stop: the time at which the meeting stops (as int) """ meetings = Meeting.get_overlaping_meetings( session, calendarobj, meeting_date.date(), meeting_date_end.date()) agenda_free = True for meeting in set(meetings): meeting_start_date_time = datetime( meeting.meeting_date.year, meeting.meeting_date.month, meeting.meeting_date.day, meeting.meeting_time_start.hour, meeting.meeting_time_start.minute, tzinfo=pytz.utc) meeting_stop_date_time = datetime( meeting.meeting_date_end.year, meeting.meeting_date_end.month, meeting.meeting_date_end.day, meeting.meeting_time_stop.hour, meeting.meeting_time_stop.minute, tzinfo=pytz.utc) if meeting_date <= meeting_start_date_time \ and meeting_date_end > meeting_start_date_time: agenda_free = False elif meeting_date < meeting_stop_date_time \ and meeting_date_end >= meeting_stop_date_time: agenda_free = False elif meeting_date < meeting_start_date_time \ and meeting_date_end > meeting_stop_date_time: agenda_free = False elif meeting_date > meeting_start_date_time \ and meeting_date_end < meeting_stop_date_time: agenda_free = False elif meeting_date == meeting_start_date_time \ and meeting_date_end == meeting_stop_date_time: agenda_free = False return agenda_free