funkwhale/api/funkwhale_api/moderation/utils.py

44 wiersze
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)