class SpeakerOrgaSerializer(SpeakerSerializer): email = CharField(source="user.email") answers = AnswerSerializer(Answer.objects.none(), many=True, read_only=True) availabilities = AvailabilitySerializer( Availability.objects.none(), many=True, read_only=True ) def get_submissions(self, obj): return obj.user.submissions.filter(event=obj.event).values_list( "code", flat=True ) class Meta(SpeakerSerializer.Meta): fields = SpeakerSerializer.Meta.fields + ("answers", "email", "availabilities")
def _serialize(self, event, instance): if instance: availabilities = AvailabilitySerializer( instance.availabilities.all(), many=True).data else: availabilities = [] return json.dumps({ 'availabilities': availabilities, 'event': { 'timezone': event.timezone, 'date_from': str(event.date_from), 'date_to': str(event.date_to), }, })
def _serialize(self, event, instance): if instance: availabilities = AvailabilitySerializer( instance.availabilities.all(), many=True).data else: availabilities = [] return json.dumps({ "availabilities": availabilities, "event": { "timezone": event.timezone, "date_from": str(event.date_from), "date_to": str(event.date_to), }, })
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': AvailabilitySerializer(availabilities, many=True).data} )
def _serialize(self, event, instance): def is_valid(availability): return availability["end"] > availability["start"] if instance: availabilities = AvailabilitySerializer( instance.availabilities.all(), many=True).data else: availabilities = [] return json.dumps({ "availabilities": [a for a in availabilities if is_valid(a)], "event": { "timezone": event.timezone, "date_from": str(event.date_from), "date_to": str(event.date_to), }, })
def serialize(self) -> dict: from pretalx.api.serializers.room import AvailabilitySerializer return AvailabilitySerializer(self).data