Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions ietf/api/serializers_rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from django.utils import timezone
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers
from rest_framework import fields, serializers

from ietf.doc.expire import move_draft_files_to_archive
from ietf.doc.models import (
Expand Down Expand Up @@ -265,6 +265,23 @@ def __init__(self, **kwargs):
super().__init__(regex, **kwargs)


class RfcGroupRelatedField(serializers.SlugRelatedField):
"""SlugRelatedField that translates None / "" to the acronym "none" """

def __init__(self, **kwargs):
super().__init__(
slug_field="acronym",
queryset=Group.objects.all(),
allow_null=True,
required=False,
)

def run_validation(self, data=fields.empty):
# Use the Group with acronym "none" when group is not specified
if data is fields.empty or data is None or data == "":
data = "none"
return super().run_validation(data)


class RfcPubSerializer(serializers.ModelSerializer):
"""Write-only serializer for RFC publication"""
Expand All @@ -279,9 +296,7 @@ class RfcPubSerializer(serializers.ModelSerializer):

# fields on the RFC Document that need tweaking from ModelSerializer defaults
rfc_number = serializers.IntegerField(min_value=1, required=True)
group = serializers.SlugRelatedField(
slug_field="acronym", queryset=Group.objects.all(), required=False
)
group = RfcGroupRelatedField()
stream = serializers.PrimaryKeyRelatedField(
queryset=StreamName.objects.filter(used=True)
)
Expand Down
Loading