def _serialize_availability(availability): for data in availability.viewvalues(): data['blockings'] = serialize_blockings(data['blockings']) data['nonbookable_periods'] = serialize_nonbookable_periods(data['nonbookable_periods']) data['unbookable_hours'] = serialize_unbookable_hours(data['unbookable_hours']) data.update({k: serialize_occurrences(data[k]) if k in data else [] for k in ['candidates', 'pre_bookings', 'bookings', 'conflicts', 'pre_conflicts']}) return availability
def _serialize_availability(availability): for data in availability.viewvalues(): data['blockings'] = serialize_blockings(data.get('blockings', {})) data['nonbookable_periods'] = serialize_nonbookable_periods(data.get('nonbookable_periods', {})) data['unbookable_hours'] = serialize_unbookable_hours(data.get('unbookable_hours', {})) data.update({k: serialize_occurrences(data[k]) if k in data else {} for k in ['candidates', 'pre_bookings', 'bookings', 'conflicts', 'pre_conflicts']}) return availability
def _serialize_availability(availability): for data in availability.viewvalues(): data['blockings'] = serialize_blockings(data.get('blockings', {})) data['nonbookable_periods'] = serialize_nonbookable_periods(data.get('nonbookable_periods', {})) data['unbookable_hours'] = serialize_unbookable_hours(data.get('unbookable_hours', {})) data.update({k: serialize_occurrences(data[k]) if k in data else {} for k in ('candidates', 'conflicting_candidates', 'pre_bookings', 'bookings', 'conflicts', 'pre_conflicts', 'rejections', 'cancellations')}) return availability
def get_room_details_availability(room, start_dt, end_dt): dates = [d.date() for d in iterdays(start_dt, end_dt)] occurrences = get_existing_room_occurrences(room, start_dt, end_dt, RepeatFrequency.DAY, 1) pre_bookings = [ occ for occ in occurrences if not occ.reservation.is_accepted ] bookings = [occ for occ in occurrences if occ.reservation.is_accepted] blocked_rooms = get_rooms_blockings([room], start_dt.date(), end_dt.date()) nonoverridable_blocked_rooms = group_blocked_rooms( filter_blocked_rooms(blocked_rooms, nonoverridable_only=True, explicit=True)).get(room.id, []) overridable_blocked_rooms = group_blocked_rooms( filter_blocked_rooms(blocked_rooms, overridable_only=True, explicit=True)).get(room.id, []) unbookable_hours = get_rooms_unbookable_hours([room]).get(room.id, []) nonbookable_periods = get_rooms_nonbookable_periods([room], start_dt, end_dt).get( room.id, []) availability = [] for day in dates: iso_day = day.isoformat() nb_periods = serialize_nonbookable_periods( group_nonbookable_periods(nonbookable_periods, dates)).get(iso_day) availability.append({ 'bookings': serialize_occurrences( group_by_occurrence_date(bookings)).get(iso_day), 'pre_bookings': serialize_occurrences( group_by_occurrence_date(pre_bookings)).get(iso_day), 'blockings': serialize_blockings( group_blockings(nonoverridable_blocked_rooms, dates)).get(iso_day), 'overridable_blockings': (serialize_blockings( group_blockings(overridable_blocked_rooms, dates)).get(iso_day)), 'nonbookable_periods': nb_periods, 'unbookable_hours': serialize_unbookable_hours(unbookable_hours), 'day': iso_day, }) return sorted(availability, key=itemgetter('day'))
def get_room_details_availability(room, start_dt, end_dt): dates = [d.date() for d in iterdays(start_dt, end_dt)] bookings = get_existing_room_occurrences(room, start_dt, end_dt, RepeatFrequency.DAY, 1, only_accepted=True) blockings = get_rooms_blockings([room], start_dt.date(), end_dt.date()).get(room.id, []) unbookable_hours = get_rooms_unbookable_hours([room]).get(room.id, []) nonbookable_periods = get_rooms_nonbookable_periods([room], start_dt, end_dt).get(room.id, []) availability = [] for day in dates: iso_day = day.isoformat() nb_periods = serialize_nonbookable_periods(group_nonbookable_periods(nonbookable_periods, dates)).get(iso_day) availability.append({ 'bookings': serialize_occurrences(group_by_occurrence_date(bookings)).get(iso_day), 'blockings': serialize_blockings(group_blockings(blockings, dates)).get(iso_day), 'nonbookable_periods': nb_periods, 'unbookable_hours': serialize_unbookable_hours(unbookable_hours), 'day': iso_day, }) return sorted(availability, key=itemgetter('day'))
def get_room_details_availability(room, start_dt, end_dt): dates = [d.date() for d in iterdays(start_dt, end_dt)] bookings = get_existing_room_occurrences(room, start_dt, end_dt, RepeatFrequency.DAY, 1, only_accepted=True) blockings = get_rooms_blockings([room], start_dt.date(), end_dt.date()).get(room.id, []) unbookable_hours = get_rooms_unbookable_hours([room]).get(room.id, []) nonbookable_periods = get_rooms_nonbookable_periods([room], start_dt, end_dt).get(room.id, []) availability = [] for day in dates: iso_day = day.isoformat() availability.append({ 'bookings': serialize_occurrences(group_by_occurrence_date(bookings)).get(iso_day), 'blockings': serialize_blockings(group_blockings(blockings, dates)).get(iso_day), 'nonbookable_periods': serialize_nonbookable_periods( group_nonbookable_periods(nonbookable_periods, dates)).get(iso_day), 'unbookable_hours': serialize_unbookable_hours(unbookable_hours), 'day': iso_day, }) return sorted(availability, key=itemgetter('day'))