Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
3203f91
chore: merge main to release
jennifer-richards May 15, 2026
1bb33ca
chore: merge release to main
jennifer-richards May 20, 2026
e2604a5
chore: merge main to release
jennifer-richards May 20, 2026
c5ce328
ci: numeric settings -> int for searchindex cfg (#10904)
jennifer-richards May 20, 2026
e13132c
chore: merge release to main
jennifer-richards May 20, 2026
432aa3b
chore: merge main to release
jennifer-richards May 20, 2026
c6b49e7
fix: remove no longer needed notification to the rfc-editor (#10911)
rjsparks May 21, 2026
35b4048
fix: meeting_stats -> 404 for nonexistent meeting (#10896)
jennifer-richards May 21, 2026
d7ce42f
fix: set searchindex hiddenDefault flag (#10916)
jennifer-richards May 21, 2026
24b05cc
chore: merge release to main
jennifer-richards May 21, 2026
b77e617
chore: merge main to release
jennifer-richards May 21, 2026
2cc68c6
ci: pin xym until we can adapt to new required arguments (#10939)
rjsparks May 27, 2026
ff31802
ci: update base image target version to 20260527T1529
jennifer-richards May 27, 2026
e7c939a
fix: adjust searchindex abstract sanitiziation (#10950)
jennifer-richards May 29, 2026
2ffbfcd
chore: add items to tracked yarn cache (#10964)
rjsparks Jun 1, 2026
5b5f3a1
chore: configurable I-D submit timeout for k8s (#10971)
jennifer-richards Jun 2, 2026
ce4345f
feat: update rfc json (#10951)
rjsparks Jun 2, 2026
cb482f0
chore: nginx -> 1.30 (#10978)
jennifer-richards Jun 3, 2026
aa66fa1
chore: "nginxinc" GH org is now "nginx" (#10981)
jennifer-richards Jun 3, 2026
60c9f28
chore: use redis for django caches (#10975)
jennifer-richards Jun 4, 2026
0860d3d
ci: update base image target version to 20260604T1454
jennifer-richards Jun 4, 2026
a47c26d
chore: merge release to main
jennifer-richards Jun 4, 2026
efaf725
chore: merge main to release
jennifer-richards Jun 4, 2026
c06ee41
ci: remove guard against missing CACHES in prod (#10986)
jennifer-richards Jun 4, 2026
3a034f5
chore: merge main into release
jennifer-richards Jun 4, 2026
9ee33fa
chore: revert switch to redis (#10991)
jennifer-richards Jun 5, 2026
586a5fa
ci: update base image target version to 20260605T2314
jennifer-richards Jun 5, 2026
042255b
feat: add group type to search index (#11001)
jennifer-richards Jun 8, 2026
d3d1f22
feat: self-serve queries for inputs to reporting and survey purposes …
rjsparks Jun 8, 2026
ae6b993
Merge pull request #11003 from ietf-tools/release
jennifer-richards Jun 8, 2026
7dff4a7
ci: remove strategy from dt manifests (#11004)
jennifer-richards Jun 8, 2026
7e3e3cb
fix: tweak logging settings to avoid spurious keyerrors (#11009)
rjsparks Jun 9, 2026
c342bef
fix: improved source and keywords for rfc json (#11008)
rjsparks Jun 10, 2026
1cccb08
test: make check for April 1 resilient across line-breaks (#11006)
rjsparks Jun 10, 2026
28a5e96
chore(dev): fix nginx config (#11014)
jennifer-richards Jun 10, 2026
c742b8a
Merge branch 'feat/bibgen' into main2
kesara Jun 10, 2026
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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion dev/build/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ghcr.io/ietf-tools/datatracker-app-base:20260512T1629
FROM ghcr.io/ietf-tools/datatracker-app-base:20260605T2314
LABEL maintainer="IETF Tools Team <tools-discuss@ietf.org>"

ENV DEBIAN_FRONTEND=noninteractive
Expand Down
2 changes: 1 addition & 1 deletion dev/build/TARGET_BASE
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20260512T1629
20260605T2314
2 changes: 2 additions & 0 deletions docker/configs/nginx-proxy.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
upstream datatracker_backend {
server 127.0.0.1:8001;
# Uncomment when changing to nginx 1.29.7 or later.
# keepalive 0; # default = 32 since nginx 1.29.7
}

server {
Expand Down
74 changes: 74 additions & 0 deletions ietf/api/tests_views_rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -565,3 +565,77 @@ def test_process_rpc_queue(self, mock_task_delay):
)
self.assertEqual(response.status_code, 202)
mock_task_delay.assert_called_once_with(queue_entries)

@override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]})
@mock.patch("ietf.api.serializers_rpc.update_rfc_searchindex_task.delay")
@mock.patch("ietf.api.serializers_rpc.trigger_red_precomputer_task.delay")
@mock.patch("ietf.api.views_rpc.update_rfc_json_task.delay")
def test_rfc_patch_triggers_json_update(
self, mock_delay, mock_precompute_delay, mock_searchindex_delay
):
"""PATCHing RFC metadata dispatches update_rfc_json_task for that RFC."""
rfc = WgRfcFactory()
url = urlreverse(
"ietf.api.purple_api.rfc-detail", kwargs={"rfc_number": rfc.rfc_number}
)
patch_data = {"title": "Updated Title"}
with self.captureOnCommitCallbacks(execute=True):
r = self.client.patch(
url,
data=patch_data,
format="json",
headers={"X-Api-Key": "valid-token"},
)
self.assertEqual(r.status_code, 200)
mock_delay.assert_called_once_with([rfc.rfc_number])

@override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]})
@mock.patch("ietf.doc.tasks.signal_update_rfc_metadata_task.delay")
@mock.patch("ietf.api.views_rpc.update_rfc_json_task.delay")
def test_rfc_publish_triggers_related_json_update(
self, mock_json_delay, mock_signal_delay
):
"""Publishing an RFC that obsoletes/updates existing RFCs triggers JSON update for related RFCs only."""
url = urlreverse("ietf.api.purple_api.notify_rfc_published")
area = GroupFactory(type_id="area")
rfc_group = GroupFactory(type_id="wg")
draft = WgDraftFactory(group__parent=area, stream_id="ietf")
obsoletes = RfcFactory.create_batch(2)
updates = RfcFactory.create_batch(1)
unused_rfc_number = (
Document.objects.filter(rfc_number__isnull=False).aggregate(
unused_rfc_number=Max("rfc_number") + 1
)["unused_rfc_number"]
or 20000
)
post_data = {
"published": "2025-06-01T00:00:00Z",
"draft_name": draft.name,
"draft_rev": draft.rev,
"rfc_number": unused_rfc_number,
"title": "New RFC",
"authors": [],
"group": rfc_group.acronym,
"stream": "ietf",
"abstract": "Abstract.",
"pages": 10,
"std_level": "ps",
"obsoletes": [o.rfc_number for o in obsoletes],
"updates": [u.rfc_number for u in updates],
"subseries": [],
}
with self.captureOnCommitCallbacks(execute=True):
r = self.client.post(
url,
data=post_data,
format="json",
headers={"X-Api-Key": "valid-token"},
)
self.assertEqual(r.status_code, 200)

# JSON update fired only for related RFCs, not for the new RFC itself
expected_related = sorted(
{o.rfc_number for o in obsoletes} | {u.rfc_number for u in updates}
)
mock_json_delay.assert_called_once_with(expected_related)
self.assertNotIn(unused_rfc_number, mock_json_delay.call_args[0][0])
11 changes: 9 additions & 2 deletions ietf/api/views_rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from tempfile import TemporaryDirectory

from django.conf import settings
from django.db import IntegrityError
from django.db import IntegrityError, transaction
from drf_spectacular.utils import OpenApiParameter
from rest_framework import mixins, parsers, serializers, viewsets, status
from rest_framework.decorators import action
Expand Down Expand Up @@ -48,7 +48,7 @@
)
from ietf.person.models import Email, Person
from ietf.sync.rfcindex import mark_rfcindex_as_dirty
from ietf.sync.tasks import process_rpc_queue_task
from ietf.sync.tasks import process_rpc_queue_task, update_rfc_json_task


class Conflict(APIException):
Expand Down Expand Up @@ -297,6 +297,8 @@ def perform_update(self, serializer):
desc="Metadata update from RFC Editor",
)
super().perform_update(serializer)
rfc_number = serializer.instance.rfc_number
transaction.on_commit(lambda: update_rfc_json_task.delay([rfc_number]))

@action(detail=False, serializer_class=OriginalStreamSerializer)
def rfc_original_stream(self, request):
Expand Down Expand Up @@ -457,6 +459,11 @@ def post(self, request):
)
rfc_number_list = sorted(set(rfc_number_list))
signal_update_rfc_metadata_task.delay(rfc_number_list=rfc_number_list)
related_numbers = sorted(
{d.rfc_number for d in rfc.related_that_doc(("updates", "obs"))}
)
if related_numbers:
transaction.on_commit(lambda: update_rfc_json_task.delay(related_numbers))
return Response(NotificationAckSerializer().data)


Expand Down
8 changes: 2 additions & 6 deletions ietf/doc/tests_ballot.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@


import datetime
from unittest import mock

from pyquery import PyQuery

Expand Down Expand Up @@ -716,11 +715,8 @@ def verify_can_see(username, url):
verify_can_see(username, url)

class ApproveBallotTests(TestCase):
@mock.patch('ietf.sync.rfceditor.requests.post', autospec=True)
def test_approve_ballot(self, mock_urlopen):
mock_urlopen.return_value.text = b'OK'
mock_urlopen.return_value.status_code = 200
#
def test_approve_ballot(self):

ad = Person.objects.get(name="Areað Irector")
draft = IndividualDraftFactory(ad=ad, intended_std_level_id='ps')
draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="iesg-eva")) # make sure it's approvable
Expand Down
8 changes: 2 additions & 6 deletions ietf/doc/tests_draft.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import os
import datetime
import io
from unittest import mock

from collections import Counter
from pathlib import Path
Expand Down Expand Up @@ -1549,11 +1548,8 @@ def test_confirm_submission_no_doc_ad(self):


class RequestPublicationTests(TestCase):
@mock.patch('ietf.sync.rfceditor.requests.post', autospec=True)
def test_request_publication(self, mockobj):
mockobj.return_value.text = b'OK'
mockobj.return_value.status_code = 200
#
def test_request_publication(self):

draft = IndividualDraftFactory(stream_id='iab',group__acronym='iab',intended_std_level_id='inf',states=[('draft-stream-iab','approved')])

url = urlreverse('ietf.doc.views_draft.request_publication', kwargs=dict(name=draft.name))
Expand Down
Loading
Loading