class MeetingDetailSerializer(BasisModelSerializer): invitations = MeetingInvitationSerializer(many=True, read_only=True) report = ContentSerializerField() report_author = PublicUserField(queryset=User.objects.all(), allow_null=True, required=False) created_by = PublicUserField(read_only=True) comments = CommentSerializer(read_only=True, many=True) content_target = CharField(read_only=True) class Meta: model = Meeting fields = ( "id", "created_by", "title", "location", "start_time", "end_time", "report", "report_author", "invitations", "comments", "content_target", ) read_only = True def create(self, validated_data): meeting = Meeting.objects.create(**validated_data) owner = validated_data["current_user"] meeting.invite_user(owner, owner) return meeting
class PodcastCreateAndUpdateSerializer(BasisModelSerializer): description = ContentSerializerField() authors = PublicUserField(many=True, queryset=User.objects.all()) thanks = PublicUserField(many=True, queryset=User.objects.all()) class Meta: model = Podcast fields = ('id', 'source', 'description', 'authors', 'thanks')
class PodcastCreateAndUpdateSerializer(BasisModelSerializer): description = ContentSerializerField() authors = PublicUserField(many=True, queryset=User.objects.all()) thanks = PublicUserField(many=True, queryset=User.objects.all()) class Meta: model = Podcast fields = ("id", "source", "description", "authors", "thanks")
class MeetingListSerializer(BasisModelSerializer): report_author = PublicUserField(queryset=User.objects.all(), allow_null=True, required=False) created_by = PublicUserField(read_only=True) class Meta: model = Meeting fields = ('id', 'created_by', 'title', 'location', 'start_time', 'end_time', 'report_author')
class ApplicationSerializer(serializers.ModelSerializer): user = PublicUserField(read_only=True) class Meta: model = APIApplication fields = [ "id", "name", "description", "redirect_uris", "client_id", "client_secret", "user", ] read_only_fields = ["client_id", "client_secret", "user"] def save(self, **kwargs): """ Save application with secure parameters. """ request = self.context["request"] kwargs["user"] = request.user kwargs.update({ "skip_authorization": False, "client_type": APIApplication.CLIENT_PUBLIC, "authorization_grant_type": APIApplication.GRANT_AUTHORIZATION_CODE, }) return super().save(**kwargs)
class GalleryPictureSerializer(serializers.ModelSerializer): file = ImageField(required=True, options={"height": 700, "smart": True}) thumbnail = ImageField( source="file", read_only=True, options={"height": 200, "width": 300, "smart": True}, ) raw_file = FileField(source="file", read_only=True) comments = CommentSerializer(read_only=True, many=True) content_target = CharField(read_only=True) taggees = PublicUserField(many=True, queryset=User.objects.all(), required=False) class Meta: model = GalleryPicture fields = ( "id", "gallery", "description", "taggees", "active", "file", "thumbnail", "raw_file", "comments", "content_target", ) read_only_fields = ("raw_file", "thumbnail", "gallery") def validate(self, attrs): gallery = Gallery.objects.get(pk=self.context["view"].kwargs["gallery_pk"]) return {"gallery": gallery, **attrs}
class GalleryPictureSerializer(serializers.ModelSerializer): file = ImageField(required=True, options={'height': 700, 'smart': True}) thumbnail = ImageField(source='file', read_only=True, options={ 'height': 200, 'width': 300, 'smart': True }) raw_file = FileField(source='file', read_only=True) comments = CommentSerializer(read_only=True, many=True) comment_target = CharField(read_only=True) taggees = PublicUserField(many=True, queryset=User.objects.all(), required=False) class Meta: model = GalleryPicture fields = ('id', 'gallery', 'description', 'taggees', 'active', 'file', 'thumbnail', 'raw_file', 'comments', 'comment_target') read_only_fields = ('raw_file', 'thumbnail', 'gallery') def validate(self, attrs): gallery = Gallery.objects.get( pk=self.context['view'].kwargs['gallery_pk']) return {'gallery': gallery, **attrs}
class CompanyAdminDetailSerializer(BasisModelSerializer): comments = CommentSerializer(read_only=True, many=True) content_target = CharField(read_only=True) student_contact = PublicUserField(required=False, allow_null=True, queryset=User.objects.all()) semester_statuses = SemesterStatusDetailSerializer(many=True, read_only=True) company_contacts = CompanyContactSerializer(many=True, read_only=True) logo = ImageField(required=False, options={"height": 500}) files = CompanyFileSerializer(many=True, read_only=True) class Meta: model = Company fields = ( "id", "name", "student_contact", "description", "phone", "company_type", "website", "address", "payment_mail", "comments", "content_target", "semester_statuses", "active", "admin_comment", "logo", "files", "company_contacts", )
class ApplicationSerializer(serializers.ModelSerializer): user = PublicUserField(read_only=True) class Meta: model = APIApplication fields = [ 'id', 'name', 'description', 'redirect_uris', 'client_id', 'client_secret', 'user' ] read_only_fields = ['client_id', 'client_secret', 'user'] def save(self, **kwargs): """ Save application with secure parameters. """ request = self.context['request'] kwargs['user'] = request.user kwargs.update({ 'skip_authorization': False, 'client_type': APIApplication.CLIENT_PUBLIC, 'authorization_grant_type': APIApplication.GRANT_AUTHORIZATION_CODE, }) return super().save(**kwargs)
class UserEmailCreateSerializer(serializers.Serializer): user = PublicUserField(queryset=User.objects.all()) internal_email = EmailAddressField(queryset=EmailAddress.objects.all()) internal_email_enabled = serializers.BooleanField() def create(self, validated_data): user = validated_data["user"] internal_email = validated_data["internal_email"] internal_email_enabled = validated_data["internal_email_enabled"] user.internal_email = internal_email user.internal_email_enabled = internal_email_enabled user.save() return user def to_representation(self, instance): serializer = UserEmailSerializer(instance=instance) return serializer.data def validate_user(self, user): if user.internal_email_id is not None: raise exceptions.ValidationError( "User already has a internal email.") return user
class UserEmailSerializer(GSuiteAddressSerializer): user = PublicUserField(read_only=True, source='*') internal_email = EmailAddressField(queryset=EmailAddress.objects.all(), validators=[]) class Meta: model = User fields = ('id', 'user', 'internal_email', 'internal_email_enabled')
class MeetingListSerializer(BasisModelSerializer): report_author = PublicUserField(queryset=User.objects.all(), allow_null=True, required=False) created_by = PublicUserField(read_only=True) class Meta: model = Meeting fields = ( "id", "created_by", "title", "location", "start_time", "end_time", "report_author", )
class MembershipHistorySerializer(serializers.ModelSerializer): abakus_group = AbakusGroupField(read_only=True) user = PublicUserField(read_only=True) class Meta: model = MembershipHistory fields = ("id", "user", "abakus_group", "role", "start_date", "end_date")
class MeetingDetailSerializer(BasisModelSerializer): invitations = MeetingInvitationSerializer(many=True, read_only=True) report = ContentSerializerField() report_author = PublicUserField(queryset=User.objects.all(), allow_null=True, required=False) created_by = PublicUserField(read_only=True) class Meta: model = Meeting fields = ('id', 'created_by', 'title', 'location', 'start_time', 'end_time', 'report', 'report_author', 'invitations') def create(self, validated_data): meeting = Meeting.objects.create(**validated_data) owner = validated_data['current_user'] meeting.invite_user(owner, owner) return meeting
class MembershipHistorySerializer(serializers.ModelSerializer): abakus_group = AbakusGroupField(read_only=True) user = PublicUserField(read_only=True) class Meta: model = MembershipHistory fields = ('id', 'user', 'abakus_group', 'role', 'start_date', 'end_date')
class UserEmailSerializer(GSuiteAddressSerializer): user = PublicUserField(read_only=True, source="*") internal_email = EmailAddressField(queryset=EmailAddress.objects.all(), validators=[]) class Meta: model = User fields = ("id", "user", "internal_email", "internal_email_enabled")
class CompanyAdminListSerializer(BasisModelSerializer): semester_statuses = SemesterStatusSerializer(many=True, read_only=True) student_contact = PublicUserField(required=False, queryset=User.objects.all()) class Meta: model = Company fields = ('id', 'name', 'semester_statuses', 'student_contact', 'admin_comment', 'active')
class FollowerSerializer(serializers.ModelSerializer): follower = PublicUserField(read_only=True) class Meta: fields = ("id", "follower", "target") def save(self, **kwargs): request = self.context["request"] kwargs["follower"] = request.user return super().save(**kwargs)
class GallerySerializer(BasisModelSerializer): cover = GalleryCoverField(queryset=GalleryPicture.objects.all(), required=False) photographers = PublicUserField(many=True, queryset=User.objects.all()) event = PublicEventField(queryset=Event.objects.all(), required=False) class Meta: model = Gallery fields = ('id', 'title', 'description', 'location', 'taken_at', 'created_at', 'event', 'photographers', 'cover', 'public_metadata') read_only_fields = ('created_at', 'pictures')
class ObjectPermissionsSerializerMixin(serializers.Serializer): class Meta: fields = ( "can_edit_users", "can_view_groups", "can_edit_groups", "require_auth", ) can_edit_users = PublicUserField( queryset=User.objects.all(), allow_null=True, required=False, many=True ) can_edit_groups = AbakusGroupField( queryset=AbakusGroup.objects.all(), allow_null=True, required=False, many=True ) can_view_groups = AbakusGroupField( queryset=AbakusGroup.objects.all(), allow_null=True, required=False, many=True )
class MembershipSerializer(serializers.ModelSerializer): user = PublicUserField(queryset=User.objects.all()) class Meta: model = Membership fields = ( "id", "user", "abakus_group", "role", "is_active", "email_lists_enabled", "created_at", ) read_only_fields = ("created_at", "abakus_group") def validate(self, attrs): group = AbakusGroup.objects.get( pk=self.context["view"].kwargs["group_pk"]) return {"abakus_group": group, **attrs}
class CompanyAdminDetailSerializer(BasisModelSerializer): comments = CommentSerializer(read_only=True, many=True) comment_target = CharField(read_only=True) student_contact = PublicUserField(required=False, allow_null=True, queryset=User.objects.all()) semester_statuses = SemesterStatusDetailSerializer(many=True, read_only=True) company_contacts = CompanyContactSerializer(many=True, read_only=True) logo = ImageField(required=False, options={'height': 500}) files = CompanyFileSerializer(many=True, read_only=True) class Meta: model = Company fields = ('id', 'name', 'student_contact', 'description', 'phone', 'company_type', 'website', 'address', 'payment_mail', 'comments', 'comment_target', 'semester_statuses', 'active', 'admin_comment', 'logo', 'files', 'company_contacts')
class GallerySerializer(BasisModelSerializer): cover = GalleryCoverField(queryset=GalleryPicture.objects.all(), required=False) photographers = PublicUserField(many=True, queryset=User.objects.all()) event = PublicEventField(queryset=Event.objects.all(), required=False) class Meta: model = Gallery fields = ( "id", "title", "description", "location", "taken_at", "created_at", "event", "photographers", "cover", "public_metadata", ) read_only_fields = ("created_at", "pictures")
class MembershipSerializer(serializers.ModelSerializer): user = PublicUserField(queryset=User.objects.all()) class Meta: model = Membership fields = ( 'id', 'user', 'abakus_group', 'role', 'is_active', 'email_lists_enabled', 'created_at', ) read_only_fields = ( 'created_at', 'abakus_group', ) def validate(self, attrs): group = AbakusGroup.objects.get( pk=self.context['view'].kwargs['group_pk']) return {'abakus_group': group, **attrs}