kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
34 wiersze
1018 B
Python
34 wiersze
1018 B
Python
from django.conf import settings
|
|
from rest_framework import serializers
|
|
|
|
from . import models
|
|
|
|
|
|
class TagSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = models.Tag
|
|
fields = ["name", "creation_date"]
|
|
|
|
|
|
class TagNameField(serializers.CharField):
|
|
def to_internal_value(self, value):
|
|
value = super().to_internal_value(value)
|
|
if not models.TAG_REGEX.match(value):
|
|
raise serializers.ValidationError(f'Invalid tag "{value}"')
|
|
return value
|
|
|
|
|
|
class TagsListField(serializers.ListField):
|
|
def __init__(self, *args, **kwargs):
|
|
kwargs.setdefault("min_length", 0)
|
|
kwargs.setdefault("child", TagNameField())
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def to_internal_value(self, value):
|
|
value = super().to_internal_value(value)
|
|
if not value:
|
|
return value
|
|
# we ignore any extra tags if the length of the list is higher
|
|
# than our accepted size
|
|
return value[: settings.TAGS_MAX_BY_OBJ]
|