Пример #1
0
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
Пример #2
0
 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]})
Пример #3
0
 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}
     )
Пример #4
0
    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],
        })