45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
from rest_framework import serializers
 | 
						|
 | 
						|
from funkwhale_api.federation import models as federation_models
 | 
						|
 | 
						|
from . import models
 | 
						|
from . import serializers as moderation_serializers
 | 
						|
 | 
						|
 | 
						|
NOTE_TARGET_FIELDS = {
 | 
						|
    "report": {
 | 
						|
        "queryset": models.Report.objects.all(),
 | 
						|
        "id_attr": "uuid",
 | 
						|
        "id_field": serializers.UUIDField(),
 | 
						|
    },
 | 
						|
    "request": {
 | 
						|
        "queryset": models.UserRequest.objects.all(),
 | 
						|
        "id_attr": "uuid",
 | 
						|
        "id_field": serializers.UUIDField(),
 | 
						|
    },
 | 
						|
    "account": {
 | 
						|
        "queryset": federation_models.Actor.objects.all(),
 | 
						|
        "id_attr": "full_username",
 | 
						|
        "id_field": serializers.EmailField(),
 | 
						|
        "get_query": moderation_serializers.get_actor_query,
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def get_signup_form_additional_fields_serializer(customization):
 | 
						|
    fields = (customization or {}).get("fields", []) or []
 | 
						|
 | 
						|
    class AdditionalFieldsSerializer(serializers.Serializer):
 | 
						|
        def __init__(self, *args, **kwargs):
 | 
						|
            super().__init__(*args, **kwargs)
 | 
						|
            for field in fields:
 | 
						|
                required = bool(field.get("required", True))
 | 
						|
                self.fields[field["label"]] = serializers.CharField(
 | 
						|
                    max_length=5000,
 | 
						|
                    required=required,
 | 
						|
                    allow_null=not required,
 | 
						|
                    allow_blank=not required,
 | 
						|
                )
 | 
						|
 | 
						|
    return AdditionalFieldsSerializer(required=fields, allow_null=not fields)
 |