← 返回首页
fix: more accurate group areas (red API) (#10462) · ietf-tools/datatracker@18902ff · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

Commit 18902ff

Browse files
fix: more accurate group areas (red API) (#10462)
* fix: RFC area only for ietf stream * fix: no ADs for inactive areas
1 parent abf5e0d commit 18902ff

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

‎ietf/doc/serializers.py‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ class RfcMetadataSerializer(serializers.ModelSerializer):
229229
status = RfcStatusSerializer(source="*")
230230
authors = serializers.SerializerMethodField()
231231
group = GroupSerializer()
232-
area = AreaSerializer(source="group.area", required=False)
232+
area = serializers.SerializerMethodField()
233233
stream = StreamNameSerializer()
234234
ad = AreaDirectorSerializer(read_only=True, allow_null=True)
235235
group_list_email = serializers.EmailField(source="group.list_email", read_only=True)
@@ -287,6 +287,23 @@ def get_authors(self, doc: Document):
287287
many=True,
288288
).data
289289

290+
@extend_schema_field(AreaSerializer(required=False))
291+
def get_area(self, doc: Document):
292+
"""Get area for the RFC
293+
294+
This logic might be better moved to Document or a combination of Document
295+
and Group. The current (2026-02-24) Group.area() method is not strict enough:
296+
it does not limit to WG groups or IETF-stream documents.
297+
"""
298+
if doc.stream_id != "ietf":
299+
return None
300+
if doc.group is None:
301+
return None
302+
parent = doc.group.parent
303+
if parent.type_id == "area":
304+
return AreaSerializer(parent).data
305+
return None
306+
290307
@extend_schema_field(DocIdentifierSerializer(many=True))
291308
def get_identifiers(self, doc: Document):
292309
identifiers = []

‎ietf/group/serializers.py‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,15 @@ def get_email(self, instance: Email | Role):
3030

3131

3232
class AreaSerializer(serializers.ModelSerializer):
33-
ads = AreaDirectorSerializer(many=True, read_only=True)
33+
ads = serializers.SerializerMethodField()
3434

3535
class Meta:
3636
model = Group
3737
fields = ["acronym", "name", "type", "ads"]
38+
39+
@extend_schema_field(AreaDirectorSerializer(many=True))
40+
def get_ads(self, area: Group):
41+
return AreaDirectorSerializer(
42+
area.ads() if area.is_active else Role.objects.none(),
43+
many=True,
44+
).data

0 commit comments

Comments
 (0)

Footer

© 2026 GitHub, Inc.