def test_intersection(availsets, expected): actual1 = Availability.intersection(*availsets) actual2 = Availability.intersection(*reversed(availsets)) assert len(actual1) == len(expected) assert len(actual2) == len(expected) for act1, act2, exp in zip(actual1, actual2, expected): assert act1.start == act2.start == exp.start assert act1.end == act2.end == exp.end
def get(self, request, event, talkid, roomid): talk = request.event.wip_schedule.talks.filter(pk=talkid).first() room = request.event.rooms.filter(pk=roomid).first() if not (talk and room): return JsonResponse({'results': []}) if talk.submission.availabilities: availabilitysets = [ room.availabilities.all(), talk.submission.availabilities, ] availabilities = Availability.intersection(*availabilitysets) else: availabilities = room.availabilities.all() return JsonResponse( {'results': [avail.serialize() for avail in availabilities]})
def get(self, request, event, talkid, roomid): talk = request.event.wip_schedule.talks.filter(pk=talkid).first() room = request.event.rooms.filter(pk=roomid).first() if not (talk and room): return JsonResponse({"results": []}) if talk.submission and talk.submission.availabilities: availabilitysets = [ room.availabilities.all(), talk.submission.availabilities, ] availabilities = Availability.intersection(*availabilitysets) else: availabilities = room.availabilities.all() return JsonResponse( {"results": AvailabilitySerializer(availabilities, many=True).data} )
def get(self, request, event, talkid, roomid): talk = request.event.wip_schedule.talks.get(pk=talkid) room = request.event.rooms.get(pk=roomid) availabilitysets = [ room.availabilities.all(), *[ speaker.profiles.filter( event=request.event).first().availabilities.all() for speaker in talk.submission.speakers.all() if speaker.profiles.filter(event=request.event).exists() ], ] availabilities = Availability.intersection(*availabilitysets) return JsonResponse({ 'results': [avail.serialize() for avail in availabilities], })