Skip to content
Snippets Groups Projects
serializers.py 2.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.conf import settings
    from rest_auth.serializers import PasswordResetSerializer as PRS
    
    from rest_auth.registration.serializers import RegisterSerializer as RS
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    from rest_framework import serializers
    
    
    from funkwhale_api.activity import serializers as activity_serializers
    
    
    class RegisterSerializer(RS):
        invitation = serializers.CharField(
            required=False, allow_null=True, allow_blank=True
        )
    
        def validate_invitation(self, value):
            if not value:
                return
    
            try:
    
                return models.Invitation.objects.open().get(code__iexact=value)
    
            except models.Invitation.DoesNotExist:
                raise serializers.ValidationError("Invalid invitation code")
    
        def save(self, request):
            user = super().save(request)
            if self.validated_data.get("invitation"):
                user.invitation = self.validated_data.get("invitation")
                user.save(update_fields=["invitation"])
            return user
    
    
    
    class UserActivitySerializer(activity_serializers.ModelSerializer):
        type = serializers.SerializerMethodField()
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        name = serializers.CharField(source="username")
        local_id = serializers.CharField(source="username")
    
    
        class Meta:
            model = models.User
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            fields = ["id", "local_id", "name", "type"]
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            return "Person"
    
    class UserBasicSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.User
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            fields = ["id", "username", "name", "date_joined"]
    
    class UserWriteSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.User
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            fields = ["name", "privacy_level"]
    
    
    
    class UserReadSerializer(serializers.ModelSerializer):
    
    
        permissions = serializers.SerializerMethodField()
    
        class Meta:
            model = models.User
            fields = [
    
    Eliot Berriot's avatar
    Eliot Berriot committed
                "id",
                "username",
                "name",
                "email",
                "is_staff",
                "is_superuser",
                "permissions",
                "date_joined",
                "privacy_level",
    
            return o.get_permissions()
    
    
    
    class PasswordResetSerializer(PRS):
        def get_email_options(self):
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            return {"extra_email_context": {"funkwhale_url": settings.FUNKWHALE_URL}}