def test_submitter_serializer_without_profile(submission): user = submission.speakers.first() user.profiles.all().delete() data = SubmitterSerializer(user, context={'event': submission.event}).data assert data.keys() == {'name', 'code', 'biography', 'avatar'} assert data['name'] == user.name assert data['code'] == user.code assert data['biography'] == ''
def test_submitter_serializer_without_profile(submission): with scope(event=submission.event): user = submission.speakers.first() user.profiles.all().delete() data = SubmitterSerializer(user, context={ "event": submission.event }).data assert data.keys() == {"name", "code", "biography", "avatar"} assert data["name"] == user.name assert data["code"] == user.code assert data["biography"] == ""
def get_speakers(self, obj): request = self.context.get('request') has_slots = obj.slots.filter(is_visible=True) and obj.state == SubmissionStates.CONFIRMED has_permission = request and request.user.has_perm('orga.view_speakers', request.event) if has_slots or has_permission: return SubmitterSerializer(obj.speakers.all(), many=True).data return []
class SubmissionSerializer(I18nAwareModelSerializer): speakers = SubmitterSerializer(many=True) submission_type = SlugRelatedField(slug_field='name', read_only=True) slot = SlotSerializer(TalkSlot.objects.filter(is_visible=True), read_only=True) duration = SerializerMethodField() def get_duration(self, obj): return obj.export_duration class Meta: model = Submission fields = ( 'code', 'speakers', 'title', 'submission_type', 'state', 'abstract', 'description', 'duration', 'do_not_record', 'content_locale', 'slot', 'image', )
def get_speakers(self, obj): has_slots = (obj.slots.filter(is_visible=True) and obj.state == SubmissionStates.CONFIRMED) if has_slots or self.can_view_speakers: return SubmitterSerializer( obj.speakers.all(), many=True, context=self.context, ).data return []
class SubmissionSerializer(I18nAwareModelSerializer): speakers = SubmitterSerializer(many=True) submission_type = SlugRelatedField(slug_field='name', read_only=True) track = SlugRelatedField(slug_field='name', read_only=True) slot = SlotSerializer(TalkSlot.objects.filter(is_visible=True), read_only=True) duration = SerializerMethodField() answers = SerializerMethodField() @property def is_orga(self): request = self.context.get('request') if request: return request.user.has_perm('orga.view_submissions', request.event) return False @staticmethod def get_duration(obj): return obj.export_duration def get_answers(self, obj): if self.is_orga: return AnswerSerializer(Answer.objects.filter(submission=obj), many=True).data return [] class Meta: model = Submission fields = ( 'code', 'speakers', 'title', 'submission_type', 'track', 'state', 'abstract', 'description', 'duration', 'do_not_record', 'is_featured', 'content_locale', 'slot', 'image', 'answers', )
def test_submitter_serializer(submission): user = submission.speakers.first() data = SubmitterSerializer(user, context={'event': submission.event}).data assert data.keys() == {'name', 'code', 'biography', 'avatar'} assert data['name'] == user.name assert data['code'] == user.code
def test_submitter_serializer(submission): user = submission.speakers.first() data = SubmitterSerializer(user, context={"event": submission.event}).data assert data.keys() == {"name", "code", "biography", "avatar"} assert data["name"] == user.name assert data["code"] == user.code