From 5e751a66a1d3ce9ea8809358a68f6239cf247e1a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 May 2026 00:56:15 -0300 Subject: [PATCH] fix: RFCs with no group use "none" Group (#10844) * fix: RFCs with no group use "none" Group Translates null/empty/blank "group" field into the Group with acronym="none" when publishing an RFC via the purple API. * refactor: imports * chore: remove dead code --- ietf/api/serializers_rpc.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index d888de4586c..401cb43a32c 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -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 ( @@ -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""" @@ -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) )