From 3b07c70435697625d5c20432f619a9f91c5c10e3 Mon Sep 17 00:00:00 2001 From: Absit Iniuria Date: Fri, 9 Jan 2026 15:59:30 +0000 Subject: [PATCH 001/161] feat: provide link to detailed submission status page for submission api (#10233) * feat: include link to detailed submission status page for submission api * chore: rename endpoint to submission_url --------- Co-authored-by: nouralmaa --- ietf/submit/tests.py | 9 ++++++++- ietf/submit/views.py | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index ede63d2752..216fc7de6b 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -2404,7 +2404,7 @@ def test_upload_draft(self): response = r.json() self.assertCountEqual( response.keys(), - ['id', 'name', 'rev', 'status_url'], + ['id', 'name', 'rev', 'status_url', 'submission_url'], ) submission_id = int(response['id']) self.assertEqual(response['name'], 'draft-somebody-test') @@ -2416,6 +2416,13 @@ def test_upload_draft(self): kwargs={'submission_id': submission_id}, ), ) + self.assertEqual( + response['submission_url'], + 'https://datatracker.example.com' + urlreverse( + 'ietf.submit.views.submission_status', + kwargs={'submission_id': submission_id}, + ) + ) self.assertEqual(mock_task.delay.call_count, 1) self.assertEqual(mock_task.delay.call_args.args, (submission_id,)) submission = Submission.objects.get(pk=submission_id) diff --git a/ietf/submit/views.py b/ietf/submit/views.py index 8329a312bb..2db3f51098 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -182,6 +182,10 @@ def err(code, error, messages=None): settings.IDTRACKER_BASE_URL, urlreverse(api_submission_status, kwargs={'submission_id': submission.pk}), ), + 'submission_url': urljoin( + settings.IDTRACKER_BASE_URL, + urlreverse("ietf.submit.views.submission_status", kwargs={'submission_id': submission.pk}), + ), } ) else: From 967fffaa61a5bb6ba69e2e6766f043dee86799ee Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 9 Jan 2026 12:25:00 -0400 Subject: [PATCH 002/161] fix: f-strings for replicator log msgs (#10234) --- ietf/blobdb/replication.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/blobdb/replication.py b/ietf/blobdb/replication.py index b9d55c9498..d251d3b95c 100644 --- a/ietf/blobdb/replication.py +++ b/ietf/blobdb/replication.py @@ -146,11 +146,11 @@ def replicate_blob(bucket, name): blob = fetch_blob_via_sql(bucket, name) if blob is None: if verbose_logging_enabled(): - log.log("Deleting {bucket}:{name} from replica") + log.log(f"Deleting {bucket}:{name} from replica") try: destination_storage.delete(name) except Exception as e: - log.log("Failed to delete {bucket}:{name} from replica: {e}") + log.log(f"Failed to delete {bucket}:{name} from replica: {e}") raise ReplicationError from e else: # Add metadata expected by the MetadataS3Storage @@ -170,7 +170,7 @@ def replicate_blob(bucket, name): try: destination_storage.save(name, file_with_metadata) except Exception as e: - log.log("Failed to save {bucket}:{name} to replica: {e}") + log.log(f"Failed to save {bucket}:{name} to replica: {e}") raise ReplicationError from e From 79cb013a190080c3cf3cf0032253da9193d36491 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 9 Jan 2026 19:18:59 -0400 Subject: [PATCH 003/161] chore: squelch pyparsing deprecation warnings (#10239) --- ietf/settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ietf/settings.py b/ietf/settings.py index f8d8a28d65..05eab0f12f 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -35,6 +35,8 @@ warnings.filterwarnings("ignore", message="datetime.datetime.utcfromtimestamp\\(\\) is deprecated", module="oic.utils.time_util") warnings.filterwarnings("ignore", message="datetime.datetime.utcfromtimestamp\\(\\) is deprecated", module="pytz.tzinfo") warnings.filterwarnings("ignore", message="'instantiateVariableFont' is deprecated", module="weasyprint") +warnings.filterwarnings("ignore", category=DeprecationWarning, module="bibtexparser") # https://github.com/sciunto-org/python-bibtexparser/issues/502 +warnings.filterwarnings("ignore", category=DeprecationWarning, module="pyparsing") # https://github.com/sciunto-org/python-bibtexparser/issues/502 base_path = pathlib.Path(__file__).resolve().parent From d06001f640315502988ec6eb99ae3d6f08b3fc6c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 14 Jan 2026 13:55:12 -0400 Subject: [PATCH 004/161] feat: RPC modernization APIs (#9631) * feat: Add rpc_person API call * chore: Add OpenAPI yaml for RPC API * feat: api endpoint for docs submitted to the rpc * chore: remove some debug * feat: api for created demo people * feat: optimize fetching persons * feat: api for creating demo drafts (#6402) * fix: Typo in rpcapi.yaml * refactor: Allow existing Person in create_demo_person (#6398) * fix: include pubreq docevents in demo drafts (#6404) * fix: Minor API fixes (#6405) * chore: Document 404 from rpcapi get_person_by_id * feat: adding rev to demo doc creation (#6425) * feat: adding rev to demo doc creation * fix: remove attempt to control required * refactor: Replace api token checks with decorator (#6434) * feat: Add @requires_api_token decorator * refactor: Use @requires_api_token * refactor: Tweak api token endpoints This might be drifting from the design intent, but at least uses the defined endpoint values. Further cleanup may well be needed. * refactor: Improve usability of @requires_api_token * feat: get_draft_by_id api call (#6446) * fix: construct the cdn photo url correctly (#6491) * chore: restructure the rpc api (#6505) * fix: authenticate person api correctly * chore: Fix plain_name lookup * feat: subject_id -> Person api call (#6566) * feat: subject_id -> Person api call * doc: Add error responses to openapi spec * feat: rpc api drafts by names (#6853) * feat: get stream rfcs were first published into (#7814) * feat: get stream rfcs were first published into * chore: black * fix: deal with the case of no DocHistory having a stream * fix: return "none" from drafts_by_names if a draft has a stream of None (#7863) * feat: API changes needed for "real" draft imports (#7877) * style: black * fix: submitted as DateTime, not Date * fix: pk -> id in API * feat: rpc_draft source_format * feat: add shepherd to rpc_draft() api * fix: "unknown" src fmt instead of error * feat: add intended_std_level to api * refactor: blank, not None, for shepherd / std_level * style: black * fix: typo in drafts_by_names() (#7912) * feat: support for building rfc authors (#7983) * feat: support for building rfc authors * chore: copyrights * feat: api to gather draft authors (#8126) * feat: api to gather draft authors * chore: black * ci: tag feature branch release images * chore: fix git nonsense * feat: API for RFC metadata fetch/filtering (#8291) * feat: RFC API for rfceditor website (WIP) * feat: pagination + ordered RFC index * feat: filter by publication date * feat: stream + stream filtering * feat: DOI * feat: group/area for RFCs * feat: group/area filtering * feat: result sorting * refactor: send rfc number, not name * feat: search rfc title/abstract * style: Black * feat: add 'status' field * feat: filter by 'status' * style: remove redundant parentheses * feat: add updated_by/obsoleted_by fields * feat: add 'abstract' to rpc api * chore: fix unused/duplicate imports * chore: fix mypy lint * chore: unused import * feat: retrieve single rfc, including text (#8346) * feat: retrieve single rfc Use RFC number instead of doc PK as id * feat: include text in single-rfc response * chore: drop doc id from api response * fix: many=True for identifiers (#8425) * feat: add more rfc api fields (many stubs) * chore: adding postscript (ps) to rfc meta serializer (#8560) * fix: acknowledge not-issued in RfcStatusSlugT * feat: Add API call to get references * fix: Filter drafts * chore: Optimize the data query * test: Test for norminative references API call * chore: Fix typos in tests * chore: Fix typos * refactor: Separate demo logic (#8937) * refactor: Separate demo logic * chore: Skip tests * fix: trailing slashes for all rpc api endpoints (#8940) * chore: Add RPC references API call to OpenAPI spec (#8941) * chore: Remove line noise * chore: Add RPC references API call to OpenAPI spec * chore: Update rpcapi.yaml Co-authored-by: Robert Sparks --------- Co-authored-by: Robert Sparks * fix: Fix OpenAPI spec errors (#8943) * chore: Remove more line noise * fix: Fix OpenAPI spec errors * feat: include picture URL in rpc_person API (#9009) * feat: person search endpoint (#9062) * feat: person search endpoint * refactor: address review comments * improved naming of operation/components in API schema * reused Person schema component * added serializers_rpc.py * chore: RpcPersonSerializer -> PersonSerializer Better matches the hand-written schema. * fix: search for entire term, not word-by-word * fix: only look at name/plain in search Including ascii / ascii_short might be useful eventually, but since we only show plain_name in the response it can cause confusing results. By the same reasoning we could remove email__address as well, but that's useful and I expect we'll include email addresses in our response soon anyway. * refactor: reimplement purple API in django-rest-framework (#9097) * refactor: rpc_person -> PersonViewSet * refactor: rpc_subject_person -> SubjectPersonView * refactor: rpc_persons -> RpcPersonsView * refactor: move get_persons into PersonViewSet Changes the interface to return a list of Persons instead of a map from ID to name. * refactor: rpc_draft -> DraftViewSet * refactor: drafts_by_names -> DraftsByNameView * refactor: submitted_to_rpc -> DraftViewSet * refactor: rfc_original_stream -> RfcViewSet * refactor: rpc demo APIs -> viewset * refactor: get_draft_refs -> DraftViewSet * refactor: persons_by_email -> PersonViewSet * refactor: rfc_authors -> RfcViewSet * refactor: draft_authors -> DraftViewSet * refactor: avoid \x00 in regex validator Gets turned into a literal nul somewhere in the process of generating a schema and building a Python client for purple. This has the same effect but avoids the nul. * fix: missing arg on references() action * style: ruff, remove unused imports * style: ruff ruff * chore: remove rpcapi.yaml * refactor: move API to /api/purple Side effect is that the purple API client is named PurpleApi instead of RpcApi. * fix: get_draft_authors returns DraftWithAuthors * fix: distinguish CharField flavors * fix: no serializer validators for draft name/title This prevents at least one existing draft from being looked up. * fix: get_draft_authors works with str, not int * Revert "refactor: avoid \x00 in regex validator" This reverts commit 63f40cf2 * Revert "Revert "refactor: avoid \x00 in regex validator"" (#9111) This reverts commit d8656f470045c21542824d7b9b9be41bdcb8866d. * ci: only migrate blobdb if it is configured * feat: add email/url to purple person API (#9127) * feat: expose consensus in submission api * feat: subseries api for red (#9556) * refactor: central def of subseries doc types * feat: subseries doc API * refactor: optimize queries via prefetch Reduced 4500 to 18 queries * chore: remove debug * fix: fix serialization of draft field * refactor: clean up prefetch a bit * feat: filter by subseries type * fix: restore max_limit for RFC pagination * feat: add subseries+stub titlepage_name to rfc serializer (#9569) * feat: add subseries to RfcMetadataSerializer * feat: titlepage_name for RfcAuthorSerializer Always blank for now * chore: update copyrights * refactor: use py3.12 typing syntax * fix: renumber migrations * feat: add consensus on FullDraftSerializer * feat: add type field in serializer * feat: tag subseries API endpoints for purple (#9763) * feat: tag subseries API endpoints for purple * ruff * feat: change slugs/names (#9778) * change slugs/names * change slug names * fix: update RfcStatusSlugT * fix: remove double tag (#9787) This was meant to include the API call in both purple and red API clients. It seems this does not work, at least with some generators. Need to investigate further, but we should be able to work around it. * feat: rfc authors (#9937) * feat: rfc authors * fix: distinct rfc search results * fix: include titlepage_name in author name searches * fix: add is_editor to rfcauthor model. Adjust FK on_delete. Tweak admin. * fix: renumber migration * refactor: realistic titlepage_name in factory * refactor: comment + rename iteration var * chore: bump copyright year * chore: remove country from RfcAuthor Not planning to track this * refactor: make blank=False explicit * chore: remove country from admin * fix: author_list() for type=rfc * fix: blankable RfcAuthor.person * feat: RfcAuthor-aware document_json() * feat: limit docs to rfcs for RfcAuthor admin * test: document_json authors * fix: use author_names() for get_document_emails() * feat: suggest affiliation based on RfcAuthor * chore: revert "remove country from RfcAuthor" This reverts commit 3044d10439bed2137e28356f27250600ce7a2529. * chore: revert "remove country from admin" This reverts commit 208879368fa5be5ecf79ae67b0be636db8a7e81f. * feat: use rfcauthors for nomcom eligibility (#9629) * refactor: author-based eligibility cleanup * feat: use rfcauthor recs for nomcom eligbility * chore: remove commented code * refactor: factor out helper for testing * test: test_get_qualified_author_queryset * fix: restore a necessary import * test: fix test_elig_by_author * test: fix test_decorate_volunteers_with_qualifications * test: add comment * fix: drop test for draft-rfceditor state Attempted to limit to drafts literally in the queue, but was not a valid check when looking back in time. As a practical matter, the test is not necessary. * fix: exclude double counting, not rfc pub state * test: update test --------- Co-authored-by: Robert Sparks * fix: renumber migrations * feat: basic RfcAuthor API (#9940) * refactor: move get_rfc_authors API URL * refactor: drop format_suffixes from router Creates a bunch of API endpoints we have no intention of ever using * feat: RfcAuthor API (WIP) * fix: remove debug code * style: remove stray whitespace * fix: authors API for xfer (#9961) * fix: partial implementation of rfc authors() Does not handle RfcAuthor instances where person is None yet. * refactor: authors -> bulk_authors for URL consistency * fix: add OpenApi param definition doc_id (#9962) * fix: add OpenApi param definition doc_id * add schema def for person_id * feat: RFC publication API (#9975) * feat: API to publish RFC (WIP) Incomplete and in need of refactoring, but publishes an RFC. * feat: group / formal_languages from draft * feat: allow optional formal_languages via API Could do the same with group, but not clear it would ever be used. * feat: fill in overrides/updates * feat: subseries membership * fix: tolerate race to create related docs * fix: wrap pub in a transaction * feat: prevent re-publishing draft as RFC * chore: remove stale code * chore: remove debug * feat: RFC file upload API (WIP) Checkpointing progress before going further. * feat: specify RFC, validate file exts * feat: move uploaded files into place * feat: add replace option * fix: add rest of replace option * feat: handle ad/group more consistently * chore: remove inadvertent change * chore: drop external_url, get note from draft * refactor: clarify default value logic * refactor: ID obsoletes/updates by number * fix: handle draft-stream-editorial * feat: split unknown vs already published draft error (#10011) * feat: use RfcAuthor for red API (#10014) * refactor: combine redundant serializers * feat: edit authors via RFC update API * fix: remove all None authors, not just first (#10044) * refactor: extract update_rfcauthors() method * feat: EditedRfcAuthorsDocEvent * refactor: reduce RfcAuthor instance churn * feat: create RfcAuthor edit DocEvents * feat: handle DocumentAuthor->RfcAuthor updates * refactor: reduce code duplication * fix: remove leftover import * chore: relabel titlepage_name in DocEvent desc * feat: transaction * chore: make RfcAuthorViewset read-only This can perhaps go away entirely * style: undo accidental whitespace change * fix: actual RFC file extensions/locations + tests (#10131) * chore: update list of rfc file exts * refactor: _destination() helper * fix: .notprepped.xml -> prerelease/ subdir * refactor: better prefixed DRF Routers * test: fix references API test * test: test notify_rfc_published * test: test upload_rfc_files * chore: remove unused imports * chore: remove unused imports * chore: add a todo * fix: find pubreq event for editorial stream * chore: remove obsolete rpc demo API * chore: clean up outdated comments * feat: api key for red api (#10232) * fix: avoid over-return (#10231) * fix: avoid over-return * chore: undo accidental commit This is a separate bug fix on main; let it come in from there. * refactor: authors() -> author_persons() (#10237) * refactor: authors() -> author_persons() * refactor: select_related() a couple more places * refactor: update uses of Document.authors() * chore: remove debug * fix: typo * fix: mypy lint and minor bugs; mypy->1.11.2 (#10249) * fix: doc property authors needs refactoring (#10250) * fix: doc property needs refactoring * fix: set source for author fields * chore: comment * chore: fix random typo --------- Co-authored-by: Jennifer Richards * chore: remove completed todo, add comment * chore(dev): accept devtoken for red api --------- Co-authored-by: Robert Sparks Co-authored-by: Matthew Holloway Co-authored-by: Kesara Rathnayake Co-authored-by: Rudi Matz --- dev/build/migration-start.sh | 8 +- dev/deploy-to-container/settings_local.py | 6 +- docker/configs/settings_local.py | 5 + ietf/api/routers.py | 25 +- ietf/api/serializers_rpc.py | 609 ++++++++++++++++++ ietf/api/tests_views_rpc.py | 299 +++++++++ ietf/api/urls.py | 19 +- ietf/api/urls_rpc.py | 42 ++ ietf/api/views.py | 2 +- ietf/api/views_rpc.py | 434 +++++++++++++ ietf/community/utils.py | 13 +- ietf/doc/admin.py | 10 +- ietf/doc/api.py | 194 ++++++ ietf/doc/factories.py | 15 +- .../management/commands/reset_rfc_authors.py | 69 -- ietf/doc/management/commands/tests.py | 72 --- ...r_dochistory_title_alter_document_title.py | 41 ++ ietf/doc/migrations/0028_rfcauthor.py | 84 +++ .../0029_editedrfcauthorsdocevent.py | 30 + ...r_dochistory_title_alter_document_title.py | 41 ++ ietf/doc/models.py | 134 +++- ietf/doc/resources.py | 55 +- ietf/doc/serializers.py | 316 +++++++++ ietf/doc/tests.py | 88 ++- ietf/doc/tests_draft.py | 8 +- ietf/doc/tests_review.py | 2 +- ietf/doc/utils.py | 175 ++++- ietf/doc/views_doc.py | 19 +- ietf/doc/views_search.py | 13 +- ietf/group/models.py | 3 + ietf/group/serializers.py | 11 + ietf/ietfauth/utils.py | 2 +- ietf/ipr/views.py | 3 +- ietf/name/serializers.py | 11 + ietf/nomcom/tests.py | 194 +++++- ietf/nomcom/utils.py | 123 +++- ietf/person/models.py | 12 +- ietf/secr/telechat/tests.py | 4 +- ietf/settings.py | 2 + ietf/submit/tests.py | 2 +- ietf/submit/utils.py | 2 +- ietf/sync/rfceditor.py | 16 +- ietf/sync/tests.py | 2 +- ietf/templates/doc/document_info.html | 6 +- ietf/templates/doc/index_active_drafts.html | 2 +- ietf/templates/doc/opengraph.html | 4 +- ietf/templates/doc/review/request_info.html | 6 +- .../group/manage_review_requests.html | 6 +- ietf/utils/test_utils.py | 9 + ietf/utils/validators.py | 5 +- mypy.ini | 3 + requirements.txt | 4 +- 52 files changed, 2945 insertions(+), 315 deletions(-) create mode 100644 ietf/api/serializers_rpc.py create mode 100644 ietf/api/tests_views_rpc.py create mode 100644 ietf/api/urls_rpc.py create mode 100644 ietf/api/views_rpc.py create mode 100644 ietf/doc/api.py delete mode 100644 ietf/doc/management/commands/reset_rfc_authors.py delete mode 100644 ietf/doc/management/commands/tests.py create mode 100644 ietf/doc/migrations/0027_alter_dochistory_title_alter_document_title.py create mode 100644 ietf/doc/migrations/0028_rfcauthor.py create mode 100644 ietf/doc/migrations/0029_editedrfcauthorsdocevent.py create mode 100644 ietf/doc/migrations/0030_alter_dochistory_title_alter_document_title.py create mode 100644 ietf/doc/serializers.py create mode 100644 ietf/group/serializers.py create mode 100644 ietf/name/serializers.py diff --git a/dev/build/migration-start.sh b/dev/build/migration-start.sh index 901026e53b..578daf5cef 100644 --- a/dev/build/migration-start.sh +++ b/dev/build/migration-start.sh @@ -3,7 +3,11 @@ echo "Running Datatracker migrations..." ./ietf/manage.py migrate --settings=settings_local -echo "Running Blobdb migrations ..." -./ietf/manage.py migrate --settings=settings_local --database=blobdb +# Check whether the blobdb database exists - inspectdb will return a false +# status if not. +if ./ietf/manage.py inspectdb --database blobdb > /dev/null 2>&1; then + echo "Running Blobdb migrations ..." + ./ietf/manage.py migrate --settings=settings_local --database=blobdb +fi echo "Done!" diff --git a/dev/deploy-to-container/settings_local.py b/dev/deploy-to-container/settings_local.py index aacf000093..055b48d0f5 100644 --- a/dev/deploy-to-container/settings_local.py +++ b/dev/deploy-to-container/settings_local.py @@ -71,11 +71,11 @@ DE_GFM_BINARY = '/usr/local/bin/de-gfm' -# No real secrets here, these are public testing values _only_ APP_API_TOKENS = { - "ietf.api.views.ingest_email_test": ["ingestion-test-token"] + "ietf.api.red_api" : ["devtoken", "redtoken"], # Not a real secret + "ietf.api.views.ingest_email_test": ["ingestion-test-token"], # Not a real secret + "ietf.api.views_rpc" : ["devtoken"], # Not a real secret } - # OIDC configuration SITE_URL = 'https://__HOSTNAME__' diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index 3ee7a4295d..e357ce3f73 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -100,3 +100,8 @@ bucket_name=f"{storagename}", ), } + +APP_API_TOKENS = { + "ietf.api.red_api" : ["devtoken", "redtoken"], # Not a real secret + "ietf.api.views_rpc" : ["devtoken"], # Not a real secret +} diff --git a/ietf/api/routers.py b/ietf/api/routers.py index 745ddaa811..99afdb242a 100644 --- a/ietf/api/routers.py +++ b/ietf/api/routers.py @@ -3,14 +3,29 @@ from django.core.exceptions import ImproperlyConfigured from rest_framework import routers -class PrefixedSimpleRouter(routers.SimpleRouter): - """SimpleRouter that adds a dot-separated prefix to its basename""" + +class PrefixedBasenameMixin: + """Mixin to add a prefix to the basename of a rest_framework BaseRouter""" def __init__(self, name_prefix="", *args, **kwargs): self.name_prefix = name_prefix if len(self.name_prefix) == 0 or self.name_prefix[-1] == ".": raise ImproperlyConfigured("Cannot use a name_prefix that is empty or ends with '.'") super().__init__(*args, **kwargs) - def get_default_basename(self, viewset): - basename = super().get_default_basename(viewset) - return f"{self.name_prefix}.{basename}" + def register(self, prefix, viewset, basename=None): + # Get the superclass "register" method from the class this is mixed-in with. + # This avoids typing issues with calling super().register() directly in a + # mixin class. + super_register = getattr(super(), "register") + if not super_register or not callable(super_register): + raise TypeError("Must mixin with superclass that has register() method") + super_register(prefix, viewset, basename=f"{self.name_prefix}.{basename}") + + +class PrefixedSimpleRouter(PrefixedBasenameMixin, routers.SimpleRouter): + """SimpleRouter that adds a dot-separated prefix to its basename""" + + +class PrefixedDefaultRouter(PrefixedBasenameMixin, routers.DefaultRouter): + """DefaultRouter that adds a dot-separated prefix to its basename""" + diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py new file mode 100644 index 0000000000..2223f04aeb --- /dev/null +++ b/ietf/api/serializers_rpc.py @@ -0,0 +1,609 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +import datetime +from pathlib import Path +from typing import Literal, Optional + +from django.db import transaction +from django.urls import reverse as urlreverse +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers + +from ietf.doc.expire import move_draft_files_to_archive +from ietf.doc.models import ( + DocumentAuthor, + Document, + RelatedDocument, + State, + DocEvent, + RfcAuthor, +) +from ietf.doc.serializers import RfcAuthorSerializer +from ietf.doc.utils import ( + default_consensus, + prettify_std_name, + update_action_holders, + update_rfcauthors, +) +from ietf.group.models import Group +from ietf.name.models import StreamName, StdLevelName, FormalLanguageName +from ietf.person.models import Person +from ietf.utils import log + + +class PersonSerializer(serializers.ModelSerializer): + email = serializers.EmailField(read_only=True) + picture = serializers.URLField(source="cdn_photo_url", read_only=True) + url = serializers.SerializerMethodField( + help_text="relative URL for datatracker person page" + ) + + class Meta: + model = Person + fields = ["id", "plain_name", "email", "picture", "url"] + read_only_fields = ["id", "plain_name", "email", "picture", "url"] + + @extend_schema_field(OpenApiTypes.URI) + def get_url(self, object: Person): + return urlreverse( + "ietf.person.views.profile", + kwargs={"email_or_name": object.email_address() or object.name}, + ) + + +class EmailPersonSerializer(serializers.Serializer): + email = serializers.EmailField(source="address") + person_pk = serializers.IntegerField(source="person.pk") + name = serializers.CharField(source="person.name") + last_name = serializers.CharField(source="person.last_name") + initials = serializers.CharField(source="person.initials") + + +class LowerCaseEmailField(serializers.EmailField): + def to_representation(self, value): + return super().to_representation(value).lower() + + +class AuthorPersonSerializer(serializers.ModelSerializer): + person_pk = serializers.IntegerField(source="pk", read_only=True) + last_name = serializers.CharField() + initials = serializers.CharField() + email_addresses = serializers.ListField( + source="email_set.all", child=LowerCaseEmailField() + ) + + class Meta: + model = Person + fields = ["person_pk", "name", "last_name", "initials", "email_addresses"] + + +class RfcWithAuthorsSerializer(serializers.ModelSerializer): + authors = AuthorPersonSerializer(many=True, source="author_persons") + + class Meta: + model = Document + fields = ["rfc_number", "authors"] + + +class DraftWithAuthorsSerializer(serializers.ModelSerializer): + draft_name = serializers.CharField(source="name") + authors = AuthorPersonSerializer(many=True, source="author_persons") + + class Meta: + model = Document + fields = ["draft_name", "authors"] + + +class DocumentAuthorSerializer(serializers.ModelSerializer): + """Serializer for a Person in a response""" + + plain_name = serializers.SerializerMethodField() + + class Meta: + model = DocumentAuthor + fields = ["person", "plain_name"] + + def get_plain_name(self, document_author: DocumentAuthor) -> str: + return document_author.person.plain_name() + + +class FullDraftSerializer(serializers.ModelSerializer): + # Redefine these fields so they don't pick up the regex validator patterns. + # There seem to be some non-compliant drafts in the system! If this serializer + # is used for a writeable view, the validation will need to be added back. + name = serializers.CharField(max_length=255) + title = serializers.CharField(max_length=255) + + # Other fields we need to add / adjust + source_format = serializers.SerializerMethodField() + authors = DocumentAuthorSerializer(many=True, source="documentauthor_set") + shepherd = serializers.SerializerMethodField() + consensus = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = [ + "id", + "name", + "rev", + "stream", + "title", + "pages", + "source_format", + "authors", + "shepherd", + "intended_std_level", + "consensus", + ] + + def get_consensus(self, doc: Document) -> Optional[bool]: + return default_consensus(doc) + + def get_source_format( + self, doc: Document + ) -> Literal["unknown", "xml-v2", "xml-v3", "txt"]: + submission = doc.submission() + if submission is None: + return "unknown" + if ".xml" in submission.file_types: + if submission.xml_version == "3": + return "xml-v3" + else: + return "xml-v2" + elif ".txt" in submission.file_types: + return "txt" + return "unknown" + + @extend_schema_field(OpenApiTypes.EMAIL) + def get_shepherd(self, doc: Document) -> str: + if doc.shepherd: + return doc.shepherd.formatted_ascii_email() + return "" + + +class DraftSerializer(FullDraftSerializer): + class Meta: + model = Document + fields = [ + "id", + "name", + "rev", + "stream", + "title", + "pages", + "source_format", + "authors", + ] + + +class SubmittedToQueueSerializer(FullDraftSerializer): + submitted = serializers.SerializerMethodField() + consensus = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = [ + "id", + "name", + "stream", + "submitted", + "consensus", + ] + + def get_submitted(self, doc) -> Optional[datetime.datetime]: + event = doc.sent_to_rfc_editor_event() + return None if event is None else event.time + + def get_consensus(self, doc) -> Optional[bool]: + return default_consensus(doc) + + +class OriginalStreamSerializer(serializers.ModelSerializer): + stream = serializers.CharField(read_only=True, source="orig_stream_id") + + class Meta: + model = Document + fields = ["rfc_number", "stream"] + + +class ReferenceSerializer(serializers.ModelSerializer): + class Meta: + model = Document + fields = ["id", "name"] + read_only_fields = ["id", "name"] + + +class EditableRfcSerializer(serializers.ModelSerializer): + # Would be nice to reconcile this with ietf.doc.serializers.RfcSerializer. + # The purposes of that serializer (representing data for Red) and this one + # (accepting updates from Purple) are different enough that separate formats + # may be needed, but if not it'd be nice to have a single RfcSerializer that + # can serve both. + # + # For now, only handles authors + authors = RfcAuthorSerializer(many=True, min_length=1, source="rfcauthor_set") + + class Meta: + model = Document + fields = ["id", "authors"] + + def update(self, instance, validated_data): + assert isinstance(instance, Document) + authors_data = validated_data.pop("rfcauthor_set", None) + if authors_data is not None: + # Construct unsaved instances from validated author data + new_authors = [RfcAuthor(**ad) for ad in authors_data] + # Update the RFC with the new author set + with transaction.atomic(): + change_events = update_rfcauthors(instance, new_authors) + for event in change_events: + event.save() + return instance + + +class RfcPubSerializer(serializers.ModelSerializer): + """Write-only serializer for RFC publication""" + # publication-related fields + published = serializers.DateTimeField(default_timezone=datetime.timezone.utc) + draft_name = serializers.RegexField( + required=False, regex=r"^draft-[a-zA-Z0-9-]+$" + ) + draft_rev = serializers.RegexField( + required=False, regex=r"^[0-9][0-9]$" + ) + + # 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 + ) + stream = serializers.PrimaryKeyRelatedField( + queryset=StreamName.objects.filter(used=True) + ) + formal_languages = serializers.PrimaryKeyRelatedField( + many=True, + required=False, + queryset=FormalLanguageName.objects.filter(used=True), + help_text=( + "formal languages used in RFC (defaults to those from draft, send empty" + "list to override)" + ) + ) + std_level = serializers.PrimaryKeyRelatedField( + queryset=StdLevelName.objects.filter(used=True), + ) + ad = serializers.PrimaryKeyRelatedField( + queryset=Person.objects.all(), + allow_null=True, + required=False, + ) + obsoletes = serializers.SlugRelatedField( + many=True, + required=False, + slug_field="rfc_number", + queryset=Document.objects.filter(type_id="rfc"), + ) + updates = serializers.SlugRelatedField( + many=True, + required=False, + slug_field="rfc_number", + queryset=Document.objects.filter(type_id="rfc"), + ) + subseries = serializers.ListField( + child=serializers.RegexField( + required=False, + # pattern: no leading 0, finite length (arbitrarily set to 5 digits) + regex=r"^(bcp|std|fyi)[1-9][0-9]{0,4}$", + ) + ) + # N.b., authors is _not_ a field on Document! + authors = RfcAuthorSerializer(many=True) + + class Meta: + model = Document + fields = [ + "published", + "draft_name", + "draft_rev", + "rfc_number", + "title", + "authors", + "group", + "stream", + "abstract", + "pages", + "words", + "formal_languages", + "std_level", + "ad", + "note", + "obsoletes", + "updates", + "subseries", + ] + + def validate(self, data): + if "draft_name" in data or "draft_rev" in data: + if "draft_name" not in data: + raise serializers.ValidationError( + {"draft_name": "Missing draft_name"}, + code="invalid-draft-spec", + ) + if "draft_rev" not in data: + raise serializers.ValidationError( + {"draft_rev": "Missing draft_rev"}, + code="invalid-draft-spec", + ) + return data + + def create(self, validated_data): + """Publish an RFC""" + published = validated_data.pop("published") + draft_name = validated_data.pop("draft_name", None) + draft_rev = validated_data.pop("draft_rev", None) + obsoletes = validated_data.pop("obsoletes", []) + updates = validated_data.pop("updates", []) + subseries = validated_data.pop("subseries", []) + + system_person = Person.objects.get(name="(System)") + + # If specified, retrieve draft and extract RFC default values from it + if draft_name is None: + draft = None + defaults_from_draft = { + "group": Group.objects.get(acronym="none", type_id="individ"), + } + else: + # validation enforces that draft_name and draft_rev are both present + draft = Document.objects.filter( + type_id="draft", + name=draft_name, + rev=draft_rev, + ).first() + if draft is None: + raise serializers.ValidationError( + { + "draft_name": "No such draft", + "draft_rev": "No such draft", + }, + code="invalid-draft" + ) + elif draft.get_state_slug() == "rfc": + raise serializers.ValidationError( + { + "draft_name": "Draft already published as RFC", + }, + code="already-published-draft", + ) + defaults_from_draft = { + "ad": draft.ad, + "formal_languages": draft.formal_languages.all(), + "group": draft.group, + "note": draft.note, + } + + # Transaction to clean up if something fails + with transaction.atomic(): + # create rfc, letting validated request data override draft defaults + rfc = self._create_rfc(defaults_from_draft | validated_data) + DocEvent.objects.create( + doc=rfc, + rev=rfc.rev, + type="published_rfc", + time=published, + by=system_person, + desc="RFC published", + ) + rfc.set_state(State.objects.get(used=True, type_id="rfc", slug="published")) + + # create updates / obsoletes relations + for obsoleted_rfc_pk in obsoletes: + RelatedDocument.objects.get_or_create( + source=rfc, target=obsoleted_rfc_pk, relationship_id="obs" + ) + for updated_rfc_pk in updates: + RelatedDocument.objects.get_or_create( + source=rfc, target=updated_rfc_pk, relationship_id="updates" + ) + + # create subseries relations + for subseries_doc_name in subseries: + ss_slug = subseries_doc_name[:3] + subseries_doc, ss_doc_created = Document.objects.get_or_create( + type_id=ss_slug, name=subseries_doc_name + ) + if ss_doc_created: + subseries_doc.docevent_set.create( + type=f"{ss_slug}_doc_created", + by=system_person, + desc=f"Created {subseries_doc_name} via publication of {rfc.name}", + ) + _, ss_rel_created = subseries_doc.relateddocument_set.get_or_create( + relationship_id="contains", target=rfc + ) + if ss_rel_created: + subseries_doc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Added {rfc.name} to {subseries_doc.name}", + ) + rfc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Added {rfc.name} to {subseries_doc.name}", + ) + + + # create relation with draft and update draft state + if draft is not None: + draft_changes = [] + draft_events = [] + if draft.get_state_slug() != "rfc": + draft.set_state( + State.objects.get(used=True, type="draft", slug="rfc") + ) + move_draft_files_to_archive(draft, draft.rev) + draft_changes.append(f"changed state to {draft.get_state()}") + + r, created_relateddoc = RelatedDocument.objects.get_or_create( + source=draft, target=rfc, relationship_id="became_rfc", + ) + if created_relateddoc: + change = "created {rel_name} relationship between {pretty_draft_name} and {pretty_rfc_name}".format( + rel_name=r.relationship.name.lower(), + pretty_draft_name=prettify_std_name(draft_name), + pretty_rfc_name=prettify_std_name(rfc.name), + ) + draft_changes.append(change) + + # Always set the "draft-iesg" state. This state should be set for all drafts, so + # log a warning if it is not set. What should happen here is that ietf stream + # RFCs come in as "rfcqueue" and are set to "pub" when they appear in the RFC index. + # Other stream documents should normally be "idexists" and be left that way. The + # code here *actually* leaves "draft-iesg" state alone if it is "idexists" or "pub", + # and changes any other state to "pub". If unset, it changes it to "idexists". + # This reflects historical behavior and should probably be updated, but a migration + # of existing drafts (and validation of the change) is needed before we change the + # handling. + prev_iesg_state = draft.get_state("draft-iesg") + if prev_iesg_state is None: + log.log(f'Warning while processing {rfc.name}: {draft.name} has no "draft-iesg" state') + new_iesg_state = State.objects.get(type_id="draft-iesg", slug="idexists") + elif prev_iesg_state.slug not in ("pub", "idexists"): + if prev_iesg_state.slug != "rfcqueue": + log.log( + 'Warning while processing {}: {} is in "draft-iesg" state {} (expected "rfcqueue")'.format( + rfc.name, draft.name, prev_iesg_state.slug + ) + ) + new_iesg_state = State.objects.get(type_id="draft-iesg", slug="pub") + else: + new_iesg_state = prev_iesg_state + + if new_iesg_state != prev_iesg_state: + draft.set_state(new_iesg_state) + draft_changes.append(f"changed {new_iesg_state.type.label} to {new_iesg_state}") + e = update_action_holders(draft, prev_iesg_state, new_iesg_state) + if e: + draft_events.append(e) + + # If the draft and RFC streams agree, move draft to "pub" stream state. If not, complain. + if draft.stream != rfc.stream: + log.log("Warning while processing {}: draft {} stream is {} but RFC stream is {}".format( + rfc.name, draft.name, draft.stream, rfc.stream + )) + elif draft.stream.slug in ["iab", "irtf", "ise", "editorial"]: + stream_slug = f"draft-stream-{draft.stream.slug}" + prev_state = draft.get_state(stream_slug) + if prev_state is not None and prev_state.slug != "pub": + new_state = State.objects.select_related("type").get(used=True, type__slug=stream_slug, slug="pub") + draft.set_state(new_state) + draft_changes.append( + f"changed {new_state.type.label} to {new_state}" + ) + e = update_action_holders(draft, prev_state, new_state) + if e: + draft_events.append(e) + if draft_changes: + draft_events.append( + DocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=system_person, + type="sync_from_rfc_editor", + desc=f"Updated while publishing {rfc.name} ({', '.join(draft_changes)})", + ) + ) + draft.save_with_history(draft_events) + + return rfc + + def _create_rfc(self, validated_data): + authors_data = validated_data.pop("authors") + formal_languages = validated_data.pop("formal_languages", []) + # todo ad field + rfc = Document.objects.create( + type_id="rfc", + name=f"rfc{validated_data['rfc_number']}", + **validated_data, + ) + rfc.formal_languages.set(formal_languages) # list of PKs is ok + for order, author_data in enumerate(authors_data): + rfc.rfcauthor_set.create( + order=order, + **author_data, + ) + return rfc + + +class RfcFileSerializer(serializers.Serializer): + # The structure of this serializer is constrained by what openapi-generator-cli's + # python generator can correctly serialize as multipart/form-data. It does not + # handle nested serializers well (or perhaps at all). ListFields with child + # ChoiceField or RegexField do not serialize correctly. DictFields don't seem + # to work. + # + # It does seem to correctly send filenames along with FileFields, even as a child + # in a ListField, so we use that to convey the file format of each item. There + # are other options we could consider (e.g., a structured CharField) but this + # works. + allowed_extensions = ( + ".html", + ".json", + ".notprepped.xml", + ".pdf", + ".txt", + ".xml", + ) + + rfc = serializers.SlugRelatedField( + slug_field="rfc_number", + queryset=Document.objects.filter(type_id="rfc"), + help_text="RFC number to which the contents belong", + ) + contents = serializers.ListField( + child=serializers.FileField( + allow_empty_file=False, + use_url=False, + ), + help_text=( + "List of content files. Filename extensions are used to identify " + "file types, but filenames are otherwise ignored." + ), + ) + replace = serializers.BooleanField( + required=False, + default=False, + help_text=( + "Replace existing files for this RFC. Defaults to false. When false, " + "if _any_ files already exist for the specified RFC the upload will be " + "rejected regardless of which files are being uploaded. When true," + "existing files will be removed and new ones will be put in place. BE" + "VERY CAREFUL WITH THIS OPTION IN PRODUCTION." + ), + ) + + def validate_contents(self, data): + found_extensions = [] + for uploaded_file in data: + if not hasattr(uploaded_file, "name"): + raise serializers.ValidationError( + "filename not specified for uploaded file", + code="missing-filename", + ) + ext = "".join(Path(uploaded_file.name).suffixes) + if ext not in self.allowed_extensions: + raise serializers.ValidationError( + f"File uploaded with invalid extension '{ext}'", + code="invalid-filename-ext", + ) + if ext in found_extensions: + raise serializers.ValidationError( + f"More than one file uploaded with extension '{ext}'", + code="duplicate-filename-ext", + ) + return data + + +class NotificationAckSerializer(serializers.Serializer): + message = serializers.CharField(default="ack") diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py new file mode 100644 index 0000000000..032b4b9495 --- /dev/null +++ b/ietf/api/tests_views_rpc.py @@ -0,0 +1,299 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +from io import StringIO +from pathlib import Path +from tempfile import TemporaryDirectory + +from django.conf import settings +from django.core.files.base import ContentFile +from django.db.models import Max +from django.test.utils import override_settings +from django.urls import reverse as urlreverse + +from ietf.doc.factories import IndividualDraftFactory, WgDraftFactory, WgRfcFactory +from ietf.doc.models import RelatedDocument, Document +from ietf.group.factories import RoleFactory, GroupFactory +from ietf.person.factories import PersonFactory +from ietf.utils.test_utils import APITestCase, reload_db_objects + + +class RpcApiTests(APITestCase): + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + def test_draftviewset_references(self): + viewname = "ietf.api.purple_api.draft-references" + + # non-existent draft + bad_id = Document.objects.aggregate(unused_id=Max("id") + 100)["unused_id"] + url = urlreverse(viewname, kwargs={"doc_id": bad_id}) + # Without credentials + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + # Add credentials + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 404) + + # draft without any normative references + draft = IndividualDraftFactory() + draft = reload_db_objects(draft) + url = urlreverse(viewname, kwargs={"doc_id": draft.id}) + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200) + refs = r.json() + self.assertEqual(refs, []) + + # draft without any normative references but with an informative reference + draft_foo = IndividualDraftFactory() + draft_foo = reload_db_objects(draft_foo) + RelatedDocument.objects.create( + source=draft, target=draft_foo, relationship_id="refinfo" + ) + url = urlreverse(viewname, kwargs={"doc_id": draft.id}) + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200) + refs = r.json() + self.assertEqual(refs, []) + + # draft with a normative reference + draft_bar = IndividualDraftFactory() + draft_bar = reload_db_objects(draft_bar) + RelatedDocument.objects.create( + source=draft, target=draft_bar, relationship_id="refnorm" + ) + url = urlreverse(viewname, kwargs={"doc_id": draft.id}) + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200) + refs = r.json() + self.assertEqual(len(refs), 1) + self.assertEqual(refs[0]["id"], draft_bar.id) + self.assertEqual(refs[0]["name"], draft_bar.name) + + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + def test_notify_rfc_published(self): + url = urlreverse("ietf.api.purple_api.notify_rfc_published") + area = GroupFactory(type_id="area") + draft_ad = RoleFactory(group=area, name_id="ad").person + authors = PersonFactory.create_batch(2) + draft = WgDraftFactory(group__parent=area, authors=authors) + assert isinstance(draft, Document), "WgDraftFactory should generate a Document" + unused_rfc_number = ( + Document.objects.filter(rfc_number__isnull=False).aggregate( + unused_rfc_number=Max("rfc_number") + 1 + )["unused_rfc_number"] + or 10000 + ) + + post_data = { + "published": "2025-12-17T20:29:00Z", + "draft_name": draft.name, + "draft_rev": draft.rev, + "rfc_number": unused_rfc_number, + "title": draft.title, + "authors": [ + { + "titlepage_name": f"titlepage {author.name}", + "is_editor": False, + "person": author.pk, + "email": author.email_address(), + "affiliation": "Some Affiliation", + "country": "CA", + } + for author in authors + ], + "group": draft.group.acronym, + "stream": draft.stream_id, + "abstract": draft.abstract, + "pages": draft.pages, + "words": draft.pages * 250, + "formal_languages": [], + "std_level": "ps", + "ad": draft_ad.pk, + "note": "noted", + "obsoletes": [], + "updates": [], + "subseries": [], + } + r = self.client.post(url, data=post_data, format="json") + self.assertEqual(r.status_code, 403) + + r = self.client.post( + url, data=post_data, format="json", headers={"X-Api-Key": "valid-token"} + ) + self.assertEqual(r.status_code, 200) + rfc = Document.objects.filter(rfc_number=unused_rfc_number).first() + self.assertIsNotNone(rfc) + self.assertEqual(rfc.came_from_draft(), draft) + self.assertEqual( + rfc.docevent_set.filter( + type="published_rfc", time="2025-12-17T20:29:00Z" + ).count(), + 1, + ) + self.assertEqual(rfc.title, draft.title) + self.assertEqual(rfc.documentauthor_set.count(), 0) + self.assertEqual( + list( + rfc.rfcauthor_set.values( + "titlepage_name", + "is_editor", + "person", + "email", + "affiliation", + "country", + ) + ), + [ + { + "titlepage_name": f"titlepage {author.name}", + "is_editor": False, + "person": author.pk, + "email": author.email_address(), + "affiliation": "Some Affiliation", + "country": "CA", + } + for author in authors + ], + ) + self.assertEqual(rfc.group, draft.group) + self.assertEqual(rfc.stream, draft.stream) + self.assertEqual(rfc.abstract, draft.abstract) + self.assertEqual(rfc.pages, draft.pages) + self.assertEqual(rfc.words, draft.pages * 250) + self.assertEqual(rfc.formal_languages.count(), 0) + self.assertEqual(rfc.std_level_id, "ps") + self.assertEqual(rfc.ad, draft_ad) + self.assertEqual(rfc.note, "noted") + self.assertEqual(rfc.related_that_doc("obs"), []) + self.assertEqual(rfc.related_that_doc("updates"), []) + self.assertEqual(rfc.part_of(), []) + self.assertEqual(draft.get_state().slug, "rfc") + # todo test non-empty relationships + # todo test references (when updating that is part of the handling) + + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + def test_upload_rfc_files(self): + def _valid_post_data(): + """Generate a valid post data dict + + Each API call needs a fresh set of files, so don't reuse the return + value from this for multiple calls! + """ + return { + "rfc": rfc.rfc_number, + "contents": [ + ContentFile(b"This is .xml", "myfile.xml"), + ContentFile(b"This is .txt", "myfile.txt"), + ContentFile(b"This is .html", "myfile.html"), + ContentFile(b"This is .pdf", "myfile.pdf"), + ContentFile(b"This is .json", "myfile.json"), + ContentFile(b"This is .notprepped.xml", "myfile.notprepped.xml"), + ], + "replace": False, + } + + url = urlreverse("ietf.api.purple_api.upload_rfc_files") + unused_rfc_number = ( + Document.objects.filter(rfc_number__isnull=False).aggregate( + unused_rfc_number=Max("rfc_number") + 1 + )["unused_rfc_number"] + or 10000 + ) + + rfc = WgRfcFactory(rfc_number=unused_rfc_number) + assert isinstance(rfc, Document), "WgRfcFactory should generate a Document" + with TemporaryDirectory() as rfc_dir: + settings.RFC_PATH = rfc_dir # affects overridden settings + rfc_path = Path(rfc_dir) + (rfc_path / "prerelease").mkdir() + content = StringIO("XML content\n") + content.name = "myrfc.xml" + + # no api key + r = self.client.post(url, _valid_post_data(), format="multipart") + self.assertEqual(r.status_code, 403) + + # invalid RFC + r = self.client.post( + url, + _valid_post_data() | {"rfc": unused_rfc_number + 1}, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + + # empty files + r = self.client.post( + url, + _valid_post_data() | { + "contents": [ + ContentFile(b"", "myfile.xml"), + ContentFile(b"", "myfile.txt"), + ContentFile(b"", "myfile.html"), + ContentFile(b"", "myfile.pdf"), + ContentFile(b"", "myfile.json"), + ContentFile(b"", "myfile.notprepped.xml"), + ] + }, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + + # bad file type + r = self.client.post( + url, + _valid_post_data() | { + "contents": [ + ContentFile(b"Some content", "myfile.jpg"), + ] + }, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + + # valid post + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + for suffix in [".xml", ".txt", ".html", ".pdf", ".json"]: + self.assertEqual( + (rfc_path / f"rfc{unused_rfc_number}") + .with_suffix(suffix) + .read_text(), + f"This is {suffix}", + f"{suffix} file should contain the expected content", + ) + self.assertEqual( + ( + rfc_path / "prerelease" / f"rfc{unused_rfc_number}.notprepped.xml" + ).read_text(), + "This is .notprepped.xml", + ".notprepped.xml file should contain the expected content", + ) + + # re-post with replace = False should now fail + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + + # re-post with replace = True should succeed + r = self.client.post( + url, + _valid_post_data() | {"replace": True}, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) # conflict diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 04575b34cb..7a082567b8 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -1,26 +1,31 @@ # Copyright The IETF Trust 2017-2024, All Rights Reserved +from drf_spectacular.views import SpectacularAPIView + from django.conf import settings -from django.urls import include +from django.urls import include, path from django.views.generic import TemplateView from ietf import api -from ietf.doc import views_ballot +from ietf.doc import views_ballot, api as doc_api from ietf.meeting import views as meeting_views from ietf.submit import views as submit_views from ietf.utils.urls import url from . import views as api_views +from .routers import PrefixedSimpleRouter # DRF API routing - disabled until we plan to use it -# from drf_spectacular.views import SpectacularAPIView -# from django.urls import path # from ietf.person import api as person_api -# from .routers import PrefixedSimpleRouter # core_router = PrefixedSimpleRouter(name_prefix="ietf.api.core_api") # core api router # core_router.register("email", person_api.EmailViewSet) # core_router.register("person", person_api.PersonViewSet) +# todo more general name for this API? +red_router = PrefixedSimpleRouter(name_prefix="ietf.api.red_api") # red api router +red_router.register("doc", doc_api.RfcViewSet) +red_router.register("subseries", doc_api.SubseriesViewSet, basename="subseries") + api.autodiscover() urlpatterns = [ @@ -32,7 +37,9 @@ url(r'^v2/person/person', api_views.ApiV2PersonExportView.as_view()), # --- DRF API --- # path("core/", include(core_router.urls)), - # path("schema/", SpectacularAPIView.as_view()), + path("purple/", include("ietf.api.urls_rpc")), + path("red/", include(red_router.urls)), + path("schema/", SpectacularAPIView.as_view()), # # --- Custom API endpoints, sorted alphabetically --- # Email alias information for drafts diff --git a/ietf/api/urls_rpc.py b/ietf/api/urls_rpc.py new file mode 100644 index 0000000000..9d41ac137f --- /dev/null +++ b/ietf/api/urls_rpc.py @@ -0,0 +1,42 @@ +# Copyright The IETF Trust 2023-2026, All Rights Reserved +from django.urls import include, path + +from ietf.api import views_rpc +from ietf.api.routers import PrefixedDefaultRouter +from ietf.utils.urls import url + +router = PrefixedDefaultRouter(use_regex_path=False, name_prefix="ietf.api.purple_api") +router.include_format_suffixes = False +router.register(r"draft", views_rpc.DraftViewSet, basename="draft") +router.register(r"person", views_rpc.PersonViewSet) +router.register(r"rfc", views_rpc.RfcViewSet, basename="rfc") + +router.register( + r"rfc//authors", + views_rpc.RfcAuthorViewSet, + basename="rfc-authors", +) + +urlpatterns = [ + url(r"^doc/drafts_by_names/", views_rpc.DraftsByNamesView.as_view()), + url(r"^persons/search/", views_rpc.RpcPersonSearch.as_view()), + path( + r"rfc/publish/", + views_rpc.RfcPubNotificationView.as_view(), + name="ietf.api.purple_api.notify_rfc_published", + ), + path( + r"rfc/publish/files/", + views_rpc.RfcPubFilesView.as_view(), + name="ietf.api.purple_api.upload_rfc_files", + ), + path(r"subject//person/", views_rpc.SubjectPersonView.as_view()), +] + +# add routers at the end so individual routes can steal parts of their address +# space (e.g., ^rfc/publish/ superseding the ^rfc/ routes of RfcViewSet) +urlpatterns.extend( + [ + path("", include(router.urls)), + ] +) diff --git a/ietf/api/views.py b/ietf/api/views.py index 22523b2f17..420bc39693 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -97,7 +97,7 @@ class PersonalInformationExportView(DetailView, JsonExportMixin): def get(self, request): person = get_object_or_404(self.model, user=request.user) - expand = ['searchrule', 'documentauthor', 'ad_document_set', 'ad_dochistory_set', 'docevent', + expand = ['searchrule', 'documentauthor', 'rfcauthor', 'ad_document_set', 'ad_dochistory_set', 'docevent', 'ballotpositiondocevent', 'deletedevent', 'email_set', 'groupevent', 'role', 'rolehistory', 'iprdisclosurebase', 'iprevent', 'liaisonstatementevent', 'allowlisted', 'schedule', 'constraint', 'schedulingevent', 'message', 'sendqueue', 'nominee', 'topicfeedbacklastseen', 'alias', 'email', 'apikeys', 'personevent', diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py new file mode 100644 index 0000000000..fce174ab72 --- /dev/null +++ b/ietf/api/views_rpc.py @@ -0,0 +1,434 @@ +# Copyright The IETF Trust 2023-2026, All Rights Reserved +import shutil +from pathlib import Path +from tempfile import TemporaryDirectory + +from django.conf import settings +from drf_spectacular.utils import OpenApiParameter +from rest_framework import mixins, parsers, serializers, viewsets, status +from rest_framework.decorators import action +from rest_framework.exceptions import APIException +from rest_framework.views import APIView +from rest_framework.response import Response + +from django.db.models import CharField as ModelCharField, OuterRef, Subquery, Q +from django.db.models.functions import Coalesce +from django.http import Http404 +from drf_spectacular.utils import extend_schema_view, extend_schema +from rest_framework import generics +from rest_framework.fields import CharField as DrfCharField +from rest_framework.filters import SearchFilter +from rest_framework.pagination import LimitOffsetPagination + +from ietf.api.serializers_rpc import ( + PersonSerializer, + FullDraftSerializer, + DraftSerializer, + SubmittedToQueueSerializer, + OriginalStreamSerializer, + ReferenceSerializer, + EmailPersonSerializer, + RfcWithAuthorsSerializer, + DraftWithAuthorsSerializer, + NotificationAckSerializer, RfcPubSerializer, RfcFileSerializer, + EditableRfcSerializer, +) +from ietf.doc.models import Document, DocHistory, RfcAuthor +from ietf.doc.serializers import RfcAuthorSerializer +from ietf.person.models import Email, Person + + +class Conflict(APIException): + status_code = status.HTTP_409_CONFLICT + default_detail = "Conflict." + default_code = "conflict" + + +@extend_schema_view( + retrieve=extend_schema( + operation_id="get_person_by_id", + summary="Find person by ID", + description="Returns a single person", + parameters=[ + OpenApiParameter( + name="person_id", + type=int, + location="path", + description="Person ID identifying this person.", + ), + ], + ), +) +class PersonViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): + queryset = Person.objects.all() + serializer_class = PersonSerializer + api_key_endpoint = "ietf.api.views_rpc" + lookup_url_kwarg = "person_id" + + @extend_schema( + operation_id="get_persons", + summary="Get a batch of persons", + description="Returns a list of persons matching requested ids. Omits any that are missing.", + request=list[int], + responses=PersonSerializer(many=True), + ) + @action(detail=False, methods=["post"]) + def batch(self, request): + """Get a batch of rpc person names""" + pks = request.data + return Response( + self.get_serializer(Person.objects.filter(pk__in=pks), many=True).data + ) + + @extend_schema( + operation_id="persons_by_email", + summary="Get a batch of persons by email addresses", + description=( + "Returns a list of persons matching requested ids. " + "Omits any that are missing." + ), + request=list[str], + responses=EmailPersonSerializer(many=True), + ) + @action(detail=False, methods=["post"], serializer_class=EmailPersonSerializer) + def batch_by_email(self, request): + emails = Email.objects.filter(address__in=request.data, person__isnull=False) + serializer = self.get_serializer(emails, many=True) + return Response(serializer.data) + + +class SubjectPersonView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + + @extend_schema( + operation_id="get_subject_person_by_id", + summary="Find person for OIDC subject by ID", + description="Returns a single person", + responses=PersonSerializer, + parameters=[ + OpenApiParameter( + name="subject_id", + type=str, + description="subject ID of person to return", + location="path", + ), + ], + ) + def get(self, request, subject_id: str): + try: + user_id = int(subject_id) + except ValueError: + raise serializers.ValidationError( + {"subject_id": "This field must be an integer value."} + ) + person = Person.objects.filter(user__pk=user_id).first() + if person: + return Response(PersonSerializer(person).data) + raise Http404 + + +class RpcLimitOffsetPagination(LimitOffsetPagination): + default_limit = 10 + max_limit = 100 + + +class SingleTermSearchFilter(SearchFilter): + """SearchFilter backend that does not split terms + + The default SearchFilter treats comma or whitespace-separated terms as individual + search terms. This backend instead searches for the exact term. + """ + + def get_search_terms(self, request): + value = request.query_params.get(self.search_param, "") + field = DrfCharField(trim_whitespace=False, allow_blank=True) + cleaned_value = field.run_validation(value) + return [cleaned_value] + + +@extend_schema_view( + get=extend_schema( + operation_id="search_person", + description="Get a list of persons, matching by partial name or email", + ), +) +class RpcPersonSearch(generics.ListAPIView): + # n.b. the OpenAPI schema for this can be generated by running + # ietf/manage.py spectacular --file spectacular.yaml + # and extracting / touching up the rpc_person_search_list operation + api_key_endpoint = "ietf.api.views_rpc" + queryset = Person.objects.all() + serializer_class = PersonSerializer + pagination_class = RpcLimitOffsetPagination + + # Searchable on all name-like fields or email addresses + filter_backends = [SingleTermSearchFilter] + search_fields = ["name", "plain", "email__address"] + + +@extend_schema_view( + retrieve=extend_schema( + operation_id="get_draft_by_id", + summary="Get a draft", + description="Returns the draft for the requested ID", + parameters=[ + OpenApiParameter( + name="doc_id", + type=int, + location="path", + description="Doc ID identifying this draft.", + ), + ], + ), + submitted_to_rpc=extend_schema( + operation_id="submitted_to_rpc", + summary="List documents ready to enter the RFC Editor Queue", + description="List documents ready to enter the RFC Editor Queue", + responses=SubmittedToQueueSerializer(many=True), + ), +) +class DraftViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): + queryset = Document.objects.filter(type_id="draft") + serializer_class = FullDraftSerializer + api_key_endpoint = "ietf.api.views_rpc" + lookup_url_kwarg = "doc_id" + + @action(detail=False, serializer_class=SubmittedToQueueSerializer) + def submitted_to_rpc(self, request): + """Return documents in datatracker that have been submitted to the RPC but are not yet in the queue + + Those queries overreturn - there may be things, particularly not from the IETF stream that are already in the queue. + """ + ietf_docs = Q(states__type_id="draft-iesg", states__slug__in=["ann"]) + irtf_iab_ise_docs = Q( + states__type_id__in=[ + "draft-stream-iab", + "draft-stream-irtf", + "draft-stream-ise", + ], + states__slug__in=["rfc-edit"], + ) + # TODO: Need a way to talk about editorial stream docs + docs = ( + self.get_queryset() + .filter(type_id="draft") + .filter(ietf_docs | irtf_iab_ise_docs) + ) + serializer = self.get_serializer(docs, many=True) + return Response(serializer.data) + + @extend_schema( + operation_id="get_draft_references", + summary="Get normative references to I-Ds", + description=( + "Returns the id and name of each normatively " + "referenced Internet-Draft for the given docId" + ), + parameters=[ + OpenApiParameter( + name="doc_id", + type=int, + location="path", + description="Doc ID identifying this draft.", + ), + ], + responses=ReferenceSerializer(many=True), + ) + @action(detail=True, serializer_class=ReferenceSerializer) + def references(self, request, doc_id=None): + doc = self.get_object() + serializer = self.get_serializer( + [ + reference + for reference in doc.related_that_doc("refnorm") + if reference.type_id == "draft" + ], + many=True, + ) + return Response(serializer.data) + + @extend_schema( + operation_id="get_draft_authors", + summary="Gather authors of the drafts with the given names", + description="returns a list mapping draft names to objects describing authors", + request=list[str], + responses=DraftWithAuthorsSerializer(many=True), + ) + @action(detail=False, methods=["post"], serializer_class=DraftWithAuthorsSerializer) + def bulk_authors(self, request): + drafts = self.get_queryset().filter(name__in=request.data) + serializer = self.get_serializer(drafts, many=True) + return Response(serializer.data) + + +@extend_schema_view( + rfc_original_stream=extend_schema( + operation_id="get_rfc_original_streams", + summary="Get the streams RFCs were originally published into", + description="returns a list of dicts associating an RFC with its originally published stream", + responses=OriginalStreamSerializer(many=True), + ) +) +class RfcViewSet(mixins.UpdateModelMixin, viewsets.GenericViewSet): + queryset = Document.objects.filter(type_id="rfc") + api_key_endpoint = "ietf.api.views_rpc" + lookup_field = "rfc_number" + serializer_class = EditableRfcSerializer + + @action(detail=False, serializer_class=OriginalStreamSerializer) + def rfc_original_stream(self, request): + rfcs = self.get_queryset().annotate( + orig_stream_id=Coalesce( + Subquery( + DocHistory.objects.filter(doc=OuterRef("pk")) + .exclude(stream__isnull=True) + .order_by("time") + .values_list("stream_id", flat=True)[:1] + ), + "stream_id", + output_field=ModelCharField(), + ), + ) + serializer = self.get_serializer(rfcs, many=True) + return Response(serializer.data) + + @extend_schema( + operation_id="get_rfc_authors", + summary="Gather authors of the RFCs with the given numbers", + description="returns a list mapping rfc numbers to objects describing authors", + request=list[int], + responses=RfcWithAuthorsSerializer(many=True), + ) + @action(detail=False, methods=["post"], serializer_class=RfcWithAuthorsSerializer) + def bulk_authors(self, request): + rfcs = self.get_queryset().filter(rfc_number__in=request.data) + serializer = self.get_serializer(rfcs, many=True) + return Response(serializer.data) + + +class DraftsByNamesView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + + @extend_schema( + operation_id="get_drafts_by_names", + summary="Get a batch of drafts by draft names", + description="returns a list of drafts with matching names", + request=list[str], + responses=DraftSerializer(many=True), + ) + def post(self, request): + names = request.data + docs = Document.objects.filter(type_id="draft", name__in=names) + return Response(DraftSerializer(docs, many=True).data) + + +class RfcAuthorViewSet(viewsets.ReadOnlyModelViewSet): + """ViewSet for RfcAuthor model + + Router needs to provide rfc_number as a kwarg + """ + api_key_endpoint = "ietf.api.views_rpc" + + queryset = RfcAuthor.objects.all() + serializer_class = RfcAuthorSerializer + lookup_url_kwarg = "author_id" + rfc_number_param = "rfc_number" + + def get_queryset(self): + return ( + super() + .get_queryset() + .filter( + document__type_id="rfc", + document__rfc_number=self.kwargs[self.rfc_number_param], + ) + ) + + +class RfcPubNotificationView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + + @extend_schema( + operation_id="notify_rfc_published", + summary="Notify datatracker of RFC publication", + request=RfcPubSerializer, + responses=NotificationAckSerializer, + ) + def post(self, request): + serializer = RfcPubSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + # Create RFC + serializer.save() + return Response(NotificationAckSerializer().data) + + +class RfcPubFilesView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + parser_classes = [parsers.MultiPartParser] + + def _destination(self, filename: str | Path) -> Path: + """Destination for an uploaded RFC file + + Strips any path components in filename and returns an absolute Path. + """ + rfc_path = Path(settings.RFC_PATH) + filename = Path(filename) # could potentially have directory components + extension = "".join(filename.suffixes) + if extension == ".notprepped.xml": + return rfc_path / "prerelease" / filename.name + return rfc_path / filename.name + + @extend_schema( + operation_id="upload_rfc_files", + summary="Upload files for a published RFC", + request=RfcFileSerializer, + responses=NotificationAckSerializer, + ) + def post(self, request): + serializer = RfcFileSerializer( + # many=True, + data=request.data, + ) + serializer.is_valid(raise_exception=True) + rfc = serializer.validated_data["rfc"] + uploaded_files = serializer.validated_data["contents"] # list[UploadedFile] + replace = serializer.validated_data["replace"] + dest_stem = f"rfc{rfc.rfc_number}" + + # List of files that might exist for an RFC + possible_rfc_files = [ + self._destination(dest_stem + ext) + for ext in serializer.allowed_extensions + ] + if not replace: + # this is the default: refuse to overwrite anything if not replacing + for possible_existing_file in possible_rfc_files: + if possible_existing_file.exists(): + raise Conflict( + "File(s) already exist for this RFC", + code="files-exist", + ) + + with TemporaryDirectory() as tempdir: + # Save files in a temporary directory. Use the uploaded filename + # extensions to identify files, but ignore the stems and generate our own. + files_to_move = [] # list[Path] + tmpfile_stem = Path(tempdir) / dest_stem + for upfile in uploaded_files: + uploaded_filename = Path(upfile.name) # name supplied by request + uploaded_ext = "".join(uploaded_filename.suffixes) + tempfile_path = tmpfile_stem.with_suffix(uploaded_ext) + with tempfile_path.open("wb") as dest: + for chunk in upfile.chunks(): + dest.write(chunk) + files_to_move.append(tempfile_path) + # copy files to final location, removing any existing ones first if the + # remove flag was set + if replace: + for possible_existing_file in possible_rfc_files: + possible_existing_file.unlink(missing_ok=True) + for ftm in files_to_move: + shutil.move(ftm, self._destination(ftm)) + # todo store in blob storage as well (need a bucket for RFCs) + + return Response(NotificationAckSerializer().data) diff --git a/ietf/community/utils.py b/ietf/community/utils.py index f23e8d26ab..b6137095ef 100644 --- a/ietf/community/utils.py +++ b/ietf/community/utils.py @@ -72,8 +72,10 @@ def docs_matching_community_list_rule(rule): return docs.filter(group=rule.group_id) elif rule.rule_type.startswith("state_"): return docs - elif rule.rule_type in ["author", "author_rfc"]: + elif rule.rule_type == "author": return docs.filter(documentauthor__person=rule.person) + elif rule.rule_type == "author_rfc": + return docs.filter(Q(rfcauthor__person=rule.person)|Q(rfcauthor__isnull=True,documentauthor__person=rule.person)) elif rule.rule_type == "ad": return docs.filter(ad=rule.person) elif rule.rule_type == "shepherd": @@ -122,9 +124,16 @@ def community_list_rules_matching_doc(doc): # author rules if doc.type_id == "rfc": + has_rfcauthors = doc.rfcauthor_set.exists() rules |= SearchRule.objects.filter( rule_type="author_rfc", - person__in=list(Person.objects.filter(documentauthor__document=doc)), + person__in=list( + Person.objects.filter( + Q(rfcauthor__document=doc) + if has_rfcauthors + else Q(documentauthor__document=doc) + ) + ), ) else: rules |= SearchRule.objects.filter( diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index 8f26b222e1..f082418935 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -13,7 +13,8 @@ TelechatDocEvent, BallotPositionDocEvent, ReviewRequestDocEvent, InitialReviewDocEvent, AddedMessageEvent, SubmissionDocEvent, DeletedEvent, EditedAuthorsDocEvent, DocumentURL, ReviewAssignmentDocEvent, IanaExpertDocEvent, IRSGBallotDocEvent, DocExtResource, DocumentActionHolder, - BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject ) + BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject, RfcAuthor, + EditedRfcAuthorsDocEvent) from ietf.utils.admin import SaferTabularInline from ietf.utils.validators import validate_external_resource_value @@ -174,6 +175,7 @@ def short_desc(self, obj): admin.site.register(TelechatDocEvent, DocEventAdmin) admin.site.register(InitialReviewDocEvent, DocEventAdmin) admin.site.register(EditedAuthorsDocEvent, DocEventAdmin) +admin.site.register(EditedRfcAuthorsDocEvent, DocEventAdmin) admin.site.register(IanaExpertDocEvent, DocEventAdmin) class BallotPositionDocEventAdmin(DocEventAdmin): @@ -237,3 +239,9 @@ def is_deleted(self, instance): admin.site.register(StoredObject, StoredObjectAdmin) + +class RfcAuthorAdmin(admin.ModelAdmin): + list_display = ['id', 'document', 'titlepage_name', 'person', 'email', 'affiliation', 'country', 'order'] + search_fields = ['document__name', 'titlepage_name', 'person__name', 'email__address', 'affiliation', 'country'] + raw_id_fields = ["document", "person", "email"] +admin.site.register(RfcAuthor, RfcAuthorAdmin) diff --git a/ietf/doc/api.py b/ietf/doc/api.py new file mode 100644 index 0000000000..47e7e6fffd --- /dev/null +++ b/ietf/doc/api.py @@ -0,0 +1,194 @@ +# Copyright The IETF Trust 2024-2026, All Rights Reserved +"""Doc API implementations""" + +from django.db.models import OuterRef, Subquery, Prefetch, Value, JSONField, QuerySet +from django.db.models.functions import TruncDate +from django_filters import rest_framework as filters +from rest_framework import filters as drf_filters +from rest_framework.mixins import ListModelMixin, RetrieveModelMixin +from rest_framework.pagination import LimitOffsetPagination +from rest_framework.viewsets import GenericViewSet + +from ietf.group.models import Group +from ietf.name.models import StreamName, DocTypeName +from ietf.utils.timezone import RPC_TZINFO +from .models import ( + Document, + DocEvent, + RelatedDocument, + DocumentAuthor, + SUBSERIES_DOC_TYPE_IDS, +) +from .serializers import ( + RfcMetadataSerializer, + RfcStatus, + RfcSerializer, + SubseriesDocSerializer, +) + + +class RfcLimitOffsetPagination(LimitOffsetPagination): + default_limit = 10 + max_limit = 500 + + +class RfcFilter(filters.FilterSet): + published = filters.DateFromToRangeFilter() + stream = filters.ModelMultipleChoiceFilter( + queryset=StreamName.objects.filter(used=True) + ) + group = filters.ModelMultipleChoiceFilter( + queryset=Group.objects.wgs(), + field_name="group__acronym", + to_field_name="acronym", + ) + area = filters.ModelMultipleChoiceFilter( + queryset=Group.objects.areas(), + field_name="group__parent__acronym", + to_field_name="acronym", + ) + status = filters.MultipleChoiceFilter( + choices=[(slug, slug) for slug in RfcStatus.status_slugs], + method=RfcStatus.filter, + ) + sort = filters.OrderingFilter( + fields=( + ("rfc_number", "number"), # ?sort=number / ?sort=-number + ("published", "published"), # ?sort=published / ?sort=-published + ), + ) + + +class PrefetchRelatedDocument(Prefetch): + """Prefetch via a RelatedDocument + + Prefetches following RelatedDocument relationships to other docs. By default, includes + those for which the current RFC is the `source`. If `reverse` is True, includes those + for which it is the `target` instead. Defaults to only "rfc" documents. + """ + + @staticmethod + def _get_queryset(relationship_id, reverse, doc_type_ids): + """Get queryset to use for the prefetch""" + if isinstance(doc_type_ids, str): + doc_type_ids = (doc_type_ids,) + + return RelatedDocument.objects.filter( + **{ + "relationship_id": relationship_id, + f"{'source' if reverse else 'target'}__type_id__in": doc_type_ids, + } + ).select_related("source" if reverse else "target") + + def __init__(self, to_attr, relationship_id, reverse=False, doc_type_ids="rfc"): + super().__init__( + lookup="targets_related" if reverse else "relateddocument_set", + queryset=self._get_queryset(relationship_id, reverse, doc_type_ids), + to_attr=to_attr, + ) + + +def augment_rfc_queryset(queryset: QuerySet[Document]): + return ( + queryset.select_related("std_level", "stream") + .prefetch_related( + Prefetch( + "group", + Group.objects.select_related("parent"), + ), + Prefetch( + "documentauthor_set", + DocumentAuthor.objects.select_related("email", "person"), + ), + PrefetchRelatedDocument( + to_attr="drafts", + relationship_id="became_rfc", + doc_type_ids="draft", + reverse=True, + ), + PrefetchRelatedDocument(to_attr="obsoletes", relationship_id="obs"), + PrefetchRelatedDocument( + to_attr="obsoleted_by", relationship_id="obs", reverse=True + ), + PrefetchRelatedDocument(to_attr="updates", relationship_id="updates"), + PrefetchRelatedDocument( + to_attr="updated_by", relationship_id="updates", reverse=True + ), + PrefetchRelatedDocument( + to_attr="subseries", + relationship_id="contains", + reverse=True, + doc_type_ids=SUBSERIES_DOC_TYPE_IDS, + ), + ) + .annotate( + published_datetime=Subquery( + DocEvent.objects.filter( + doc_id=OuterRef("pk"), + type="published_rfc", + ) + .order_by("-time") + .values("time")[:1] + ), + ) + .annotate(published=TruncDate("published_datetime", tzinfo=RPC_TZINFO)) + .annotate( + # TODO implement these fake fields for real + see_also=Value([], output_field=JSONField()), + formats=Value(["txt", "xml"], output_field=JSONField()), + keywords=Value(["keyword"], output_field=JSONField()), + errata=Value([], output_field=JSONField()), + ) + ) + + +class RfcViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): + api_key_endpoint = "ietf.api.red_api" # matches prefix in ietf/api/urls.py + lookup_field = "rfc_number" + queryset = augment_rfc_queryset( + Document.objects.filter(type_id="rfc", rfc_number__isnull=False) + ).order_by("-rfc_number") + + pagination_class = RfcLimitOffsetPagination + filter_backends = [filters.DjangoFilterBackend, drf_filters.SearchFilter] + filterset_class = RfcFilter + search_fields = ["title", "abstract"] + + def get_serializer_class(self): + if self.action == "retrieve": + return RfcSerializer + return RfcMetadataSerializer + + +class PrefetchSubseriesContents(Prefetch): + def __init__(self, to_attr): + super().__init__( + lookup="relateddocument_set", + queryset=RelatedDocument.objects.filter( + relationship_id="contains", + target__type_id="rfc", + ).prefetch_related( + Prefetch( + "target", + queryset=augment_rfc_queryset(Document.objects.all()), + ) + ), + to_attr=to_attr, + ) + + +class SubseriesFilter(filters.FilterSet): + type = filters.ModelMultipleChoiceFilter( + queryset=DocTypeName.objects.filter(pk__in=SUBSERIES_DOC_TYPE_IDS) + ) + + +class SubseriesViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): + api_key_endpoint = "ietf.api.red_api" # matches prefix in ietf/api/urls.py + lookup_field = "name" + serializer_class = SubseriesDocSerializer + queryset = Document.objects.subseries_docs().prefetch_related( + PrefetchSubseriesContents(to_attr="contents") + ) + filter_backends = [filters.DjangoFilterBackend] + filterset_class = SubseriesFilter diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index 19aa9ecc9c..aad01be04f 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -14,7 +14,7 @@ from ietf.doc.models import ( Document, DocEvent, NewRevisionDocEvent, State, DocumentAuthor, StateDocEvent, BallotPositionDocEvent, BallotDocEvent, BallotType, IRSGBallotDocEvent, TelechatDocEvent, - DocumentActionHolder, BofreqEditorDocEvent, BofreqResponsibleDocEvent, DocExtResource ) + DocumentActionHolder, BofreqEditorDocEvent, BofreqResponsibleDocEvent, DocExtResource, RfcAuthor ) from ietf.group.models import Group from ietf.person.factories import PersonFactory from ietf.group.factories import RoleFactory @@ -382,6 +382,19 @@ class Meta: country = factory.Faker('country') order = factory.LazyAttribute(lambda o: o.document.documentauthor_set.count() + 1) +class RfcAuthorFactory(factory.django.DjangoModelFactory): + class Meta: + model = RfcAuthor + + document = factory.SubFactory(DocumentFactory) + titlepage_name = factory.LazyAttribute( + lambda obj: " ".join([obj.person.initials(), obj.person.last_name()]) + ) + person = factory.SubFactory('ietf.person.factories.PersonFactory') + email = factory.LazyAttribute(lambda obj: obj.person.email()) + affiliation = factory.Faker('company') + order = factory.LazyAttribute(lambda o: o.document.rfcauthor_set.count() + 1) + class WgDocumentAuthorFactory(DocumentAuthorFactory): document = factory.SubFactory(WgDraftFactory) diff --git a/ietf/doc/management/commands/reset_rfc_authors.py b/ietf/doc/management/commands/reset_rfc_authors.py deleted file mode 100644 index e2ab5f1208..0000000000 --- a/ietf/doc/management/commands/reset_rfc_authors.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright The IETF Trust 2024, All Rights Reserved - -# Reset an RFC's authors to those of the draft it came from -from django.core.management.base import BaseCommand, CommandError - -from ietf.doc.models import Document, DocEvent -from ietf.person.models import Person - - -class Command(BaseCommand): - def add_arguments(self, parser): - parser.add_argument("rfcnum", type=int, help="RFC number to modify") - parser.add_argument( - "--force", - action="store_true", - help="reset even if RFC already has authors", - ) - - def handle(self, *args, **options): - try: - rfc = Document.objects.get(type="rfc", rfc_number=options["rfcnum"]) - except Document.DoesNotExist: - raise CommandError( - f"rfc{options['rfcnum']} does not exist in the Datatracker." - ) - - draft = rfc.came_from_draft() - if draft is None: - raise CommandError(f"{rfc.name} did not come from a draft. Can't reset.") - - orig_authors = rfc.documentauthor_set.all() - if orig_authors.exists(): - # Potentially dangerous, so refuse unless "--force" is specified - if not options["force"]: - raise CommandError( - f"{rfc.name} already has authors. Not resetting. Use '--force' to reset anyway." - ) - removed_auth_names = list(orig_authors.values_list("person__name", flat=True)) - rfc.documentauthor_set.all().delete() - DocEvent.objects.create( - doc=rfc, - by=Person.objects.get(name="(System)"), - type="edited_authors", - desc=f"Removed all authors: {', '.join(removed_auth_names)}", - ) - self.stdout.write( - self.style.SUCCESS( - f"Removed author(s): {', '.join(removed_auth_names)}" - ) - ) - - for author in draft.documentauthor_set.all(): - # Copy the author but point at the new doc. - # See https://docs.djangoproject.com/en/4.2/topics/db/queries/#copying-model-instances - author.pk = None - author.id = None - author._state.adding = True - author.document = rfc - author.save() - self.stdout.write( - self.style.SUCCESS(f"Added author {author.person.name} <{author.email}>") - ) - auth_names = draft.documentauthor_set.values_list("person__name", flat=True) - DocEvent.objects.create( - doc=rfc, - by=Person.objects.get(name="(System)"), - type="edited_authors", - desc=f"Set authors from rev {draft.rev} of {draft.name}: {', '.join(auth_names)}", - ) diff --git a/ietf/doc/management/commands/tests.py b/ietf/doc/management/commands/tests.py deleted file mode 100644 index 8244d87266..0000000000 --- a/ietf/doc/management/commands/tests.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright The IETF Trust 2024, All Rights Reserved -# -*- coding: utf-8 -*- - -from io import StringIO - -from django.core.management import call_command, CommandError - -from ietf.doc.factories import DocumentAuthorFactory, WgDraftFactory, WgRfcFactory -from ietf.doc.models import Document, DocumentAuthor -from ietf.utils.test_utils import TestCase - - -class CommandTests(TestCase): - @staticmethod - def _call_command(command_name, *args, **options): - """Call command, capturing (and suppressing) output""" - out = StringIO() - err = StringIO() - options["stdout"] = out - options["stderr"] = err - call_command(command_name, *args, **options) - return out.getvalue(), err.getvalue() - - def test_reset_rfc_authors(self): - command_name = "reset_rfc_authors" - - draft = WgDraftFactory() - DocumentAuthorFactory.create_batch(3, document=draft) - rfc = WgRfcFactory() # rfc does not yet have a draft - DocumentAuthorFactory.create_batch(3, document=rfc) - bad_rfc_num = ( - 1 - + Document.objects.filter(rfc_number__isnull=False) - .order_by("-rfc_number") - .first() - .rfc_number - ) - docauthor_fields = [ - field.name - for field in DocumentAuthor._meta.get_fields() - if field.name not in ["document", "id"] - ] - - with self.assertRaises(CommandError, msg="Cannot reset a bad RFC number"): - self._call_command(command_name, bad_rfc_num) - - with self.assertRaises(CommandError, msg="Cannot reset an RFC with no draft"): - self._call_command(command_name, rfc.rfc_number) - - with self.assertRaises(CommandError, msg="Cannot force-reset an RFC with no draft"): - self._call_command(command_name, rfc.rfc_number, "--force") - - # Link the draft to the rfc - rfc.targets_related.create(relationship_id="became_rfc", source=draft) - - with self.assertRaises(CommandError, msg="Cannot reset an RFC with authors"): - self._call_command(command_name, rfc.rfc_number) - - # Calling with force should work - self._call_command(command_name, rfc.rfc_number, "--force") - self.assertCountEqual( - draft.documentauthor_set.values(*docauthor_fields), - rfc.documentauthor_set.values(*docauthor_fields), - ) - - # Calling on an RFC with no authors should also work - rfc.documentauthor_set.all().delete() - self._call_command(command_name, rfc.rfc_number) - self.assertCountEqual( - draft.documentauthor_set.values(*docauthor_fields), - rfc.documentauthor_set.values(*docauthor_fields), - ) diff --git a/ietf/doc/migrations/0027_alter_dochistory_title_alter_document_title.py b/ietf/doc/migrations/0027_alter_dochistory_title_alter_document_title.py new file mode 100644 index 0000000000..e0d8560e6f --- /dev/null +++ b/ietf/doc/migrations/0027_alter_dochistory_title_alter_document_title.py @@ -0,0 +1,41 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0026_change_wg_state_descriptions"), + ] + + operations = [ + migrations.AlterField( + model_name="dochistory", + name="title", + field=models.CharField( + max_length=255, + validators=[ + django.core.validators.ProhibitNullCharactersValidator, # type:ignore + django.core.validators.RegexValidator( + message="Please enter a string without control characters.", + regex="^[^\x01-\x1f]*$", + ), + ], + ), + ), + migrations.AlterField( + model_name="document", + name="title", + field=models.CharField( + max_length=255, + validators=[ + django.core.validators.ProhibitNullCharactersValidator, # type:ignore + django.core.validators.RegexValidator( + message="Please enter a string without control characters.", + regex="^[^\x01-\x1f]*$", + ), + ], + ), + ), + ] diff --git a/ietf/doc/migrations/0028_rfcauthor.py b/ietf/doc/migrations/0028_rfcauthor.py new file mode 100644 index 0000000000..776dc22eb1 --- /dev/null +++ b/ietf/doc/migrations/0028_rfcauthor.py @@ -0,0 +1,84 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models + + +class Migration(migrations.Migration): + dependencies = [ + ("person", "0005_alter_historicalperson_pronouns_selectable_and_more"), + ("doc", "0027_alter_dochistory_title_alter_document_title"), + ] + + operations = [ + migrations.CreateModel( + name="RfcAuthor", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("titlepage_name", models.CharField(max_length=128)), + ("is_editor", models.BooleanField(default=False)), + ( + "affiliation", + models.CharField( + blank=True, + help_text="Organization/company used by author for submission", + max_length=100, + ), + ), + ( + "country", + models.CharField( + blank=True, + help_text="Country used by author for submission", + max_length=255, + ), + ), + ("order", models.IntegerField(default=1)), + ( + "document", + ietf.utils.models.ForeignKey( + limit_choices_to={"type_id": "rfc"}, + on_delete=django.db.models.deletion.CASCADE, + to="doc.document", + ), + ), + ( + "email", + ietf.utils.models.ForeignKey( + blank=True, + help_text="Email address used by author for submission", + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="person.email", + ), + ), + ( + "person", + ietf.utils.models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="person.person", + ), + ), + ], + options={ + "ordering": ["document", "order"], + "indexes": [ + models.Index( + fields=["document", "order"], + name="doc_rfcauth_documen_6b5dc4_idx", + ) + ], + }, + ), + ] diff --git a/ietf/doc/migrations/0029_editedrfcauthorsdocevent.py b/ietf/doc/migrations/0029_editedrfcauthorsdocevent.py new file mode 100644 index 0000000000..60837c5cb2 --- /dev/null +++ b/ietf/doc/migrations/0029_editedrfcauthorsdocevent.py @@ -0,0 +1,30 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0028_rfcauthor"), + ] + + operations = [ + migrations.CreateModel( + name="EditedRfcAuthorsDocEvent", + fields=[ + ( + "docevent_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="doc.docevent", + ), + ), + ], + bases=("doc.docevent",), + ), + ] diff --git a/ietf/doc/migrations/0030_alter_dochistory_title_alter_document_title.py b/ietf/doc/migrations/0030_alter_dochistory_title_alter_document_title.py new file mode 100644 index 0000000000..9ee858b2e8 --- /dev/null +++ b/ietf/doc/migrations/0030_alter_dochistory_title_alter_document_title.py @@ -0,0 +1,41 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0029_editedrfcauthorsdocevent"), + ] + + operations = [ + migrations.AlterField( + model_name="dochistory", + name="title", + field=models.CharField( + max_length=255, + validators=[ + django.core.validators.ProhibitNullCharactersValidator(), + django.core.validators.RegexValidator( + message="Please enter a string without control characters.", + regex="^[^\x01-\x1f]*$", + ), + ], + ), + ), + migrations.AlterField( + model_name="document", + name="title", + field=models.CharField( + max_length=255, + validators=[ + django.core.validators.ProhibitNullCharactersValidator(), + django.core.validators.RegexValidator( + message="Please enter a string without control characters.", + regex="^[^\x01-\x1f]*$", + ), + ], + ), + ), + ] diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 8bb79b64ed..cce9203d09 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1,7 +1,8 @@ -# Copyright The IETF Trust 2010-2025, All Rights Reserved +# Copyright The IETF Trust 2010-2026, All Rights Reserved # -*- coding: utf-8 -*- +from collections import namedtuple import datetime import logging import os @@ -20,7 +21,11 @@ from django.core import checks from django.core.files.base import File from django.core.cache import caches -from django.core.validators import URLValidator, RegexValidator +from django.core.validators import ( + URLValidator, + RegexValidator, + ProhibitNullCharactersValidator, +) from django.urls import reverse as urlreverse from django.contrib.contenttypes.models import ContentType from django.conf import settings @@ -107,7 +112,13 @@ class DocumentInfo(models.Model): time = models.DateTimeField(default=timezone.now) # should probably have auto_now=True type = ForeignKey(DocTypeName, blank=True, null=True) # Draft, Agenda, Minutes, Charter, Discuss, Guideline, Email, Review, Issue, Wiki, External ... - title = models.CharField(max_length=255, validators=[validate_no_control_chars, ]) + title = models.CharField( + max_length=255, + validators=[ + ProhibitNullCharactersValidator(), + validate_no_control_chars, + ], + ) states = models.ManyToManyField(State, blank=True) # plain state (Active/Expired/...), IESG state, stream state tags = models.ManyToManyField(DocTagName, blank=True) # Revised ID Needed, ExternalParty, AD Followup, ... @@ -407,9 +418,55 @@ def friendly_state(self): else: return state.name + def author_names(self): + """Author names as a list of strings""" + names = [] + if self.type_id == "rfc" and self.rfcauthor_set.exists(): + for author in self.rfcauthor_set.select_related("person"): + if author.person: + names.append(author.person.name) + else: + # titlepage_name cannot be blank + names.append(author.titlepage_name) + else: + names = [ + author.person.name + for author in self.documentauthor_set.select_related("person") + ] + return names + + def author_persons_or_names(self): + """Authors as a list of named tuples with person and/or titlepage_name""" + Author = namedtuple("Author", "person titlepage_name") + persons_or_names = [] + if self.type_id=="rfc" and self.rfcauthor_set.exists(): + for author in self.rfcauthor_set.select_related("person"): + persons_or_names.append(Author(person=author.person, titlepage_name=author.titlepage_name)) + else: + for author in self.documentauthor_set.select_related("person"): + persons_or_names.append(Author(person=author.person, titlepage_name="")) + return persons_or_names + + def author_persons(self): + """Authors as a list of Persons + + Omits any RfcAuthors with a null person field. + """ + if self.type_id == "rfc" and self.rfcauthor_set.exists(): + authors_qs = self.rfcauthor_set.filter(person__isnull=False) + else: + authors_qs = self.documentauthor_set.all() + return [a.person for a in authors_qs.select_related("person")] + def author_list(self): + """List of author emails""" + author_qs = ( + self.rfcauthor_set + if self.type_id == "rfc" and self.rfcauthor_set.exists() + else self.documentauthor_set + ).select_related("email").order_by("order") best_addresses = [] - for author in self.documentauthor_set.all(): + for author in author_qs: if author.email: if author.email.active or not author.email.person: best_addresses.append(author.email.address) @@ -417,9 +474,6 @@ def author_list(self): best_addresses.append(author.email.person.email_address()) return ", ".join(best_addresses) - def authors(self): - return [ a.person for a in self.documentauthor_set.all() ] - # This, and several other ballot related functions here, assume that there is only one active ballot for a document at any point in time. # If that assumption is violated, they will only expose the most recently created ballot def ballot_open(self, ballot_type_slug): @@ -721,7 +775,14 @@ def referenced_by_rfcs_as_rfc_or_draft(self): if self.type_id == "rfc" and self.came_from_draft(): refs_to |= self.came_from_draft().referenced_by_rfcs() return refs_to - + + def sent_to_rfc_editor_event(self): + if self.stream_id == "ietf": + return self.docevent_set.filter(type="iesg_approved").order_by("-time").first() + elif self.stream_id in ["editorial", "iab", "irtf", "ise"]: + return self.docevent_set.filter(type="requested_publication").order_by("-time").first() + else: + return None class Meta: abstract = True @@ -845,6 +906,45 @@ def is_approved_downref(self): return False +class RfcAuthor(models.Model): + """Captures the authors of an RFC as represented on the RFC title page. + + This deviates from DocumentAuthor in that it does not get moved into the DocHistory + hierarchy as documents are saved. It will attempt to preserve email, country, and affiliation + from the DocumentAuthor objects associated with the draft leading to this RFC (which + may be wrong if the author moves or changes affiliation while the document is in the + queue). + + It does not, at this time, attempt to capture the authors from anything _but_ the title + page. The datatracker may know more about such authors based on information from the draft + leading to the RFC, and future work may take that into account. + + Once doc.rfcauthor_set.exists() for a doc of type `rfc`, doc.documentauthor_set should be + ignored. + """ + + document = ForeignKey( + "Document", + on_delete=models.CASCADE, + limit_choices_to={"type_id": "rfc"}, # only affects ModelForms (e.g., admin) + ) + titlepage_name = models.CharField(max_length=128, blank=False) + is_editor = models.BooleanField(default=False) + person = ForeignKey(Person, null=True, blank=True, on_delete=models.PROTECT) + email = ForeignKey(Email, help_text="Email address used by author for submission", blank=True, null=True, on_delete=models.PROTECT) + affiliation = models.CharField(max_length=100, blank=True, help_text="Organization/company used by author for submission") + country = models.CharField(max_length=255, blank=True, help_text="Country used by author for submission") + order = models.IntegerField(default=1) + + def __str__(self): + return u"%s %s (%s)" % (self.document.name, self.person, self.order) + + class Meta: + ordering=["document", "order"] + indexes=[ + models.Index(fields=["document", "order"]) + ] + class DocumentAuthorInfo(models.Model): person = ForeignKey(Person) # email should only be null for some historic documents @@ -894,7 +994,7 @@ class Meta: def role_for_doc(self): """Brief string description of this person's relationship to the doc""" roles = [] - if self.person in self.document.authors(): + if self.person in self.document.author_persons(): roles.append('Author') if self.person == self.document.ad: roles.append('Responsible AD') @@ -920,7 +1020,18 @@ def role_for_doc(self): 'invalid' ) + +SUBSERIES_DOC_TYPE_IDS = ("bcp", "fyi", "std") + + +class DocumentQuerySet(models.QuerySet): + def subseries_docs(self): + return self.filter(type_id__in=SUBSERIES_DOC_TYPE_IDS) + + class Document(StorableMixin, DocumentInfo): + objects = DocumentQuerySet.as_manager() + name = models.CharField(max_length=255, validators=[validate_docname,], unique=True) # immutable action_holders = models.ManyToManyField(Person, through=DocumentActionHolder, blank=True) @@ -1581,6 +1692,11 @@ class EditedAuthorsDocEvent(DocEvent): """ basis = models.CharField(help_text="What is the source or reasoning for the changes to the author list",max_length=255) + +class EditedRfcAuthorsDocEvent(DocEvent): + """Change to the RfcAuthor list for a document""" + + class BofreqEditorDocEvent(DocEvent): """ Capture the proponents of a BOF Request.""" editors = models.ManyToManyField('person.Person', blank=True) diff --git a/ietf/doc/resources.py b/ietf/doc/resources.py index 157a3ad556..556465a522 100644 --- a/ietf/doc/resources.py +++ b/ietf/doc/resources.py @@ -17,8 +17,9 @@ InitialReviewDocEvent, DocHistoryAuthor, BallotDocEvent, RelatedDocument, RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent, SubmissionDocEvent, ReviewRequestDocEvent, ReviewAssignmentDocEvent, EditedAuthorsDocEvent, DocumentURL, - IanaExpertDocEvent, IRSGBallotDocEvent, DocExtResource, DocumentActionHolder, - BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject) + IanaExpertDocEvent, IRSGBallotDocEvent, DocExtResource, DocumentActionHolder, + BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject, RfcAuthor, + EditedRfcAuthorsDocEvent) from ietf.name.resources import BallotPositionNameResource, DocTypeNameResource class BallotTypeResource(ModelResource): @@ -650,6 +651,31 @@ class Meta: api.doc.register(EditedAuthorsDocEventResource()) + +from ietf.person.resources import PersonResource +class EditedRfcAuthorsDocEventResource(ModelResource): + by = ToOneField(PersonResource, 'by') + doc = ToOneField(DocumentResource, 'doc') + docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') + class Meta: + queryset = EditedRfcAuthorsDocEvent.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'editedrfcauthorsdocevent' + ordering = ['id', ] + filtering = { + "id": ALL, + "time": ALL, + "type": ALL, + "rev": ALL, + "desc": ALL, + "by": ALL_WITH_RELATIONS, + "doc": ALL_WITH_RELATIONS, + "docevent_ptr": ALL_WITH_RELATIONS, + } +api.doc.register(EditedRfcAuthorsDocEventResource()) + + from ietf.name.resources import DocUrlTagNameResource class DocumentURLResource(ModelResource): doc = ToOneField(DocumentResource, 'doc') @@ -865,3 +891,28 @@ class Meta: "deleted": ALL, } api.doc.register(StoredObjectResource()) + + +from ietf.person.resources import EmailResource, PersonResource +class RfcAuthorResource(ModelResource): + document = ToOneField(DocumentResource, 'document') + person = ToOneField(PersonResource, 'person', null=True) + email = ToOneField(EmailResource, 'email', null=True) + class Meta: + queryset = RfcAuthor.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'rfcauthor' + ordering = ['id', ] + filtering = { + "id": ALL, + "titlepage_name": ALL, + "is_editor": ALL, + "affiliation": ALL, + "country": ALL, + "order": ALL, + "document": ALL_WITH_RELATIONS, + "person": ALL_WITH_RELATIONS, + "email": ALL_WITH_RELATIONS, + } +api.doc.register(RfcAuthorResource()) diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py new file mode 100644 index 0000000000..05647d9ce1 --- /dev/null +++ b/ietf/doc/serializers.py @@ -0,0 +1,316 @@ +# Copyright The IETF Trust 2024-2026, All Rights Reserved +"""django-rest-framework serializers""" + +from dataclasses import dataclass +from typing import Literal, ClassVar + +from django.db.models.manager import BaseManager +from django.db.models.query import QuerySet +from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers + +from ietf.group.serializers import GroupSerializer +from ietf.name.serializers import StreamNameSerializer +from .models import Document, DocumentAuthor, RfcAuthor + + +class RfcAuthorSerializer(serializers.ModelSerializer): + """Serializer for an RfcAuthor / DocumentAuthor in a response""" + datatracker_person_path = serializers.URLField( + source="person.get_absolute_url", + required=False, + help_text="URL for person link (relative to datatracker base URL)", + ) + + class Meta: + model = RfcAuthor + fields = [ + "titlepage_name", + "is_editor", + "person", + "email", # relies on email.pk being email.address + "affiliation", + "country", + "datatracker_person_path", + ] + + def to_representation(self, instance): + """instance -> primitive data types + + Translates a DocumentAuthor into an equivalent RfcAuthor we can use the same + serializer for either type. + """ + if isinstance(instance, DocumentAuthor): + # create a non-persisted RfcAuthor as a shim - do not save it! + document_author = instance + instance = RfcAuthor( + titlepage_name=document_author.person.plain_name(), + is_editor=False, + person=document_author.person, + email=document_author.email, + affiliation=document_author.affiliation, + country=document_author.country, + order=document_author.order, + ) + return super().to_representation(instance) + + def validate(self, data): + email = data.get("email") + if email is not None: + person = data.get("person") + if person is None: + raise serializers.ValidationError( + { + "email": "cannot have an email without a person", + }, + code="email-without-person", + ) + if email.person_id != person.pk: + raise serializers.ValidationError( + { + "email": "email must belong to person", + }, + code="email-person-mismatch", + ) + return data + + +@dataclass +class DocIdentifier: + type: Literal["doi", "issn"] + value: str + + +class DocIdentifierSerializer(serializers.Serializer): + type = serializers.ChoiceField(choices=["doi", "issn"]) + value = serializers.CharField() + + +type RfcStatusSlugT = Literal[ + "std", "ps", "ds", "bcp", "inf", "exp", "hist", "unkn", "not-issued", +] + + +@dataclass +class RfcStatus: + """Helper to extract the 'Status' from an RFC document for serialization""" + + slug: RfcStatusSlugT + + # Names that aren't just the slug itself. ClassVar annotation prevents dataclass from treating this as a field. + fancy_names: ClassVar[dict[RfcStatusSlugT, str]] = { + "std": "internet standard", + "ps": "proposed standard", + "ds": "draft standard", + "bcp": "best current practice", + "inf": "informational", + "exp": "experimental", + "hist": "historic", + "unkn": "unknown", + } + + # ClassVar annotation prevents dataclass from treating this as a field + stdlevelname_slug_map: ClassVar[dict[str, RfcStatusSlugT]] = { + "bcp": "bcp", + "ds": "ds", + "exp": "exp", + "hist": "hist", + "inf": "inf", + "std": "std", + "ps": "ps", + "unkn": "unkn", + } + + # ClassVar annotation prevents dataclass from treating this as a field + status_slugs: ClassVar[list[RfcStatusSlugT]] = sorted( + # TODO implement "not-issued" RFCs + set(stdlevelname_slug_map.values()) | {"not-issued"} + ) + + @property + def name(self): + return RfcStatus.fancy_names.get(self.slug, self.slug) + + @classmethod + def from_document(cls, doc: Document): + """Decide the status that applies to a document""" + return cls( + slug=(cls.stdlevelname_slug_map.get(doc.std_level.slug, "unkn")), + ) + + @classmethod + def filter(cls, queryset, name, value: list[RfcStatusSlugT]): + """Filter a queryset by status + + This is basically the inverse of the from_document() method. Given a status name, filter + the queryset to those in that status. The queryset should be a Document queryset. + """ + interesting_slugs = [ + stdlevelname_slug + for stdlevelname_slug, status_slug in cls.stdlevelname_slug_map.items() + if status_slug in value + ] + if len(interesting_slugs) == 0: + return queryset.none() + return queryset.filter(std_level__slug__in=interesting_slugs) + + +class RfcStatusSerializer(serializers.Serializer): + """Status serializer for a Document instance""" + + slug = serializers.ChoiceField(choices=RfcStatus.status_slugs) + name = serializers.CharField() + + def to_representation(self, instance: Document): + return super().to_representation(instance=RfcStatus.from_document(instance)) + + +class RelatedDraftSerializer(serializers.Serializer): + id = serializers.IntegerField(source="source.id") + name = serializers.CharField(source="source.name") + title = serializers.CharField(source="source.title") + + +class RelatedRfcSerializer(serializers.Serializer): + id = serializers.IntegerField(source="target.id") + number = serializers.IntegerField(source="target.rfc_number") + title = serializers.CharField(source="target.title") + + +class ReverseRelatedRfcSerializer(serializers.Serializer): + id = serializers.IntegerField(source="source.id") + number = serializers.IntegerField(source="source.rfc_number") + title = serializers.CharField(source="source.title") + + +class ContainingSubseriesSerializer(serializers.Serializer): + name = serializers.CharField(source="source.name") + type = serializers.CharField(source="source.type_id") + + +class RfcMetadataSerializer(serializers.ModelSerializer): + """Serialize metadata of an RFC""" + + RFC_FORMATS = ("xml", "txt", "html", "htmlized", "pdf", "ps") + + number = serializers.IntegerField(source="rfc_number") + published = serializers.DateField() + status = RfcStatusSerializer(source="*") + authors = serializers.SerializerMethodField() + group = GroupSerializer() + area = GroupSerializer(source="group.area", required=False) + stream = StreamNameSerializer() + identifiers = serializers.SerializerMethodField() + draft = serializers.SerializerMethodField() + obsoletes = RelatedRfcSerializer(many=True, read_only=True) + obsoleted_by = ReverseRelatedRfcSerializer(many=True, read_only=True) + updates = RelatedRfcSerializer(many=True, read_only=True) + updated_by = ReverseRelatedRfcSerializer(many=True, read_only=True) + subseries = ContainingSubseriesSerializer(many=True, read_only=True) + see_also = serializers.ListField(child=serializers.CharField(), read_only=True) + formats = serializers.MultipleChoiceField(choices=RFC_FORMATS) + keywords = serializers.ListField(child=serializers.CharField(), read_only=True) + errata = serializers.ListField(child=serializers.CharField(), read_only=True) + + class Meta: + model = Document + fields = [ + "number", + "title", + "published", + "status", + "pages", + "authors", + "group", + "area", + "stream", + "identifiers", + "obsoletes", + "obsoleted_by", + "updates", + "updated_by", + "subseries", + "see_also", + "draft", + "abstract", + "formats", + "keywords", + "errata", + ] + + + @extend_schema_field(RfcAuthorSerializer(many=True)) + def get_authors(self, doc: Document): + # If doc has any RfcAuthors, use those, otherwise fall back to DocumentAuthors + author_queryset: QuerySet[RfcAuthor] | QuerySet[DocumentAuthor] = ( + doc.rfcauthor_set.all() + if doc.rfcauthor_set.exists() + else doc.documentauthor_set.all() + ) + # RfcAuthorSerializer can deal with DocumentAuthor instances + return RfcAuthorSerializer( + instance=author_queryset, + many=True, + ).data + + @extend_schema_field(DocIdentifierSerializer(many=True)) + def get_identifiers(self, doc: Document): + identifiers = [] + if doc.rfc_number: + identifiers.append( + DocIdentifier(type="doi", value=f"10.17487/RFC{doc.rfc_number:04d}") + ) + return DocIdentifierSerializer(instance=identifiers, many=True).data + + @extend_schema_field(RelatedDraftSerializer) + def get_draft(self, object): + try: + related_doc = object.drafts[0] + except IndexError: + return None + return RelatedDraftSerializer(related_doc).data + + +class RfcSerializer(RfcMetadataSerializer): + """Serialize an RFC, including its metadata and text content if available""" + + text = serializers.CharField(allow_null=True) + + class Meta: + model = RfcMetadataSerializer.Meta.model + fields = RfcMetadataSerializer.Meta.fields + ["text"] + + +class SubseriesContentListSerializer(serializers.ListSerializer): + """ListSerializer that gets its object from item.target""" + + def to_representation(self, data): + """ + List of object instances -> List of dicts of primitive datatypes. + """ + # Dealing with nested relationships, data can be a Manager, + # so, first get a queryset from the Manager if needed + iterable = data.all() if isinstance(data, BaseManager) else data + # Serialize item.target instead of item itself + return [self.child.to_representation(item.target) for item in iterable] + + +class SubseriesContentSerializer(RfcMetadataSerializer): + """Serialize RFC contained in a subseries doc""" + + class Meta(RfcMetadataSerializer.Meta): + list_serializer_class = SubseriesContentListSerializer + + +class SubseriesDocSerializer(serializers.ModelSerializer): + """Serialize a subseries document (e.g., a BCP or STD)""" + + contents = SubseriesContentSerializer(many=True) + + class Meta: + model = Document + fields = [ + "name", + "type", + "contents", + ] diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 16dcfb7754..f92c9648e6 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -39,11 +39,15 @@ from ietf.doc.models import ( Document, DocRelationshipName, RelatedDocument, State, DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent, BallotType, EditedAuthorsDocEvent, StateType) -from ietf.doc.factories import ( DocumentFactory, DocEventFactory, CharterFactory, - ConflictReviewFactory, WgDraftFactory, IndividualDraftFactory, WgRfcFactory, - IndividualRfcFactory, StateDocEventFactory, BallotPositionDocEventFactory, - BallotDocEventFactory, DocumentAuthorFactory, NewRevisionDocEventFactory, - StatusChangeFactory, DocExtResourceFactory, RgDraftFactory, BcpFactory) +from ietf.doc.factories import (DocumentFactory, DocEventFactory, CharterFactory, + ConflictReviewFactory, WgDraftFactory, + IndividualDraftFactory, WgRfcFactory, + IndividualRfcFactory, StateDocEventFactory, + BallotPositionDocEventFactory, + BallotDocEventFactory, DocumentAuthorFactory, + NewRevisionDocEventFactory, + StatusChangeFactory, DocExtResourceFactory, + RgDraftFactory, BcpFactory, RfcAuthorFactory) from ietf.doc.forms import NotifyForm from ietf.doc.fields import SearchableDocumentsField from ietf.doc.utils import ( @@ -979,7 +983,7 @@ def test_edit_authors_permissions(self): # Relevant users not authorized to edit authors unauthorized_usernames = [ 'plain', - *[author.user.username for author in draft.authors()], + *[author.user.username for author in draft.author_persons()], draft.group.get_chair().person.user.username, 'ad' ] @@ -994,7 +998,7 @@ def test_edit_authors_permissions(self): self.client.logout() # Try to add an author via POST - still only the secretary should be able to do this. - orig_authors = draft.authors() + orig_authors = draft.author_persons() post_data = self.make_edit_authors_post_data( basis='permission test', authors=draft.documentauthor_set.all(), @@ -1012,12 +1016,12 @@ def test_edit_authors_permissions(self): for username in unauthorized_usernames: login_testing_unauthorized(self, username, url, method='post', request_kwargs=dict(data=post_data)) draft = Document.objects.get(pk=draft.pk) - self.assertEqual(draft.authors(), orig_authors) # ensure draft author list was not modified + self.assertEqual(draft.author_persons(), orig_authors) # ensure draft author list was not modified login_testing_unauthorized(self, 'secretary', url, method='post', request_kwargs=dict(data=post_data)) r = self.client.post(url, post_data) self.assertEqual(r.status_code, 302) draft = Document.objects.get(pk=draft.pk) - self.assertEqual(draft.authors(), orig_authors + [new_auth_person]) + self.assertEqual(draft.author_persons(), orig_authors + [new_auth_person]) def make_edit_authors_post_data(self, basis, authors): """Helper to generate edit_authors POST data for a set of authors""" @@ -1365,8 +1369,8 @@ def test_edit_authors_edit_fields(self): basis=change_reason ) - old_address = draft.authors()[0].email() - new_email = EmailFactory(person=draft.authors()[0], address=f'changed-{old_address}') + old_address = draft.author_persons()[0].email() + new_email = EmailFactory(person=draft.author_persons()[0], address=f'changed-{old_address}') post_data['author-0-email'] = new_email.address post_data['author-1-affiliation'] = 'University of Nowhere' post_data['author-2-country'] = 'Chile' @@ -1399,17 +1403,17 @@ def test_edit_authors_edit_fields(self): country_event = change_events.filter(desc__icontains='changed country').first() self.assertIsNotNone(email_event) - self.assertIn(draft.authors()[0].name, email_event.desc) + self.assertIn(draft.author_persons()[0].name, email_event.desc) self.assertIn(before[0]['email'], email_event.desc) self.assertIn(after[0]['email'], email_event.desc) self.assertIsNotNone(affiliation_event) - self.assertIn(draft.authors()[1].name, affiliation_event.desc) + self.assertIn(draft.author_persons()[1].name, affiliation_event.desc) self.assertIn(before[1]['affiliation'], affiliation_event.desc) self.assertIn(after[1]['affiliation'], affiliation_event.desc) self.assertIsNotNone(country_event) - self.assertIn(draft.authors()[2].name, country_event.desc) + self.assertIn(draft.author_persons()[2].name, country_event.desc) self.assertIn(before[2]['country'], country_event.desc) self.assertIn(after[2]['country'], country_event.desc) @@ -1863,13 +1867,63 @@ def test_document_ballot_needed_positions(self): def test_document_json(self): doc = IndividualDraftFactory() - + author = DocumentAuthorFactory(document=doc) + r = self.client.get(urlreverse("ietf.doc.views_doc.document_json", kwargs=dict(name=doc.name))) self.assertEqual(r.status_code, 200) data = r.json() - self.assertEqual(doc.name, data['name']) - self.assertEqual(doc.pages,data['pages']) + self.assertEqual(data["name"], doc.name) + self.assertEqual(data["pages"], doc.pages) + self.assertEqual( + data["authors"], + [ + { + "name": author.person.name, + "email": author.email.address, + "affiliation": author.affiliation, + } + ] + ) + def test_document_json_rfc(self): + doc = IndividualRfcFactory() + old_style_author = DocumentAuthorFactory(document=doc) + url = urlreverse("ietf.doc.views_doc.document_json", kwargs=dict(name=doc.name)) + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + data = r.json() + self.assertEqual(data["name"], doc.name) + self.assertEqual(data["pages"], doc.pages) + self.assertEqual( + data["authors"], + [ + { + "name": old_style_author.person.name, + "email": old_style_author.email.address, + "affiliation": old_style_author.affiliation, + } + ] + ) + + new_style_author = RfcAuthorFactory(document=doc) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + data = r.json() + self.assertEqual(data["name"], doc.name) + self.assertEqual(data["pages"], doc.pages) + self.assertEqual( + data["authors"], + [ + { + "name": new_style_author.titlepage_name, + "email": new_style_author.email.address, + "affiliation": new_style_author.affiliation, + } + ] + ) + + def test_writeup(self): doc = IndividualDraftFactory(states = [('draft','active'),('draft-iesg','iesg-eva')],) diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index cebeac1f27..21a873c5c0 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -140,7 +140,7 @@ def test_change_state(self): self.assertEqual(draft.get_state_slug("draft-iesg"), "review-e") self.assertTrue(not draft.tags.filter(slug="ad-f-up")) self.assertTrue(draft.tags.filter(slug="need-rev")) - self.assertCountEqual(draft.action_holders.all(), [ad] + draft.authors()) + self.assertCountEqual(draft.action_holders.all(), [ad] + draft.author_persons()) self.assertEqual(draft.docevent_set.count(), events_before + 3) self.assertTrue("Test comment" in draft.docevent_set.all()[0].desc) self.assertTrue("Changed action holders" in draft.docevent_set.all()[1].desc) @@ -179,7 +179,7 @@ def test_pull_from_rfc_queue(self): states=[('draft-iesg','rfcqueue')], ) DocEventFactory(type='started_iesg_process',by=ad,doc=draft,rev=draft.rev,desc="Started IESG Process") - draft.action_holders.add(*(draft.authors())) + draft.action_holders.add(*(draft.author_persons())) url = urlreverse('ietf.doc.views_draft.change_state', kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) @@ -279,7 +279,7 @@ def test_request_last_call(self): states=[('draft-iesg','ad-eval')], ) DocEventFactory(type='started_iesg_process',by=ad,doc=draft,rev=draft.rev,desc="Started IESG Process") - draft.action_holders.add(*(draft.authors())) + draft.action_holders.add(*(draft.author_persons())) self.client.login(username="secretary", password="secretary+password") url = urlreverse('ietf.doc.views_draft.change_state', kwargs=dict(name=draft.name)) @@ -1369,7 +1369,7 @@ def _test_changing_ah(action_holders, reason): _test_changing_ah([doc.ad, doc.shepherd.person], 'this is a first test') _test_changing_ah([doc.ad], 'this is a second test') - _test_changing_ah(doc.authors(), 'authors can do it, too') + _test_changing_ah(doc.author_persons(), 'authors can do it, too') _test_changing_ah([], 'clear it back out') def test_doc_change_action_holders_as_doc_manager(self): diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index 8c1fc99ffe..82d1b5c232 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -822,7 +822,7 @@ def test_complete_review_upload_content(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertContains(r, assignment.review_request.team.list_email) - for author in assignment.review_request.doc.authors(): + for author in assignment.review_request.doc.author_persons(): self.assertContains(r, author.formatted_email()) # faulty post diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 2bd9a3d314..0715471551 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -13,7 +13,7 @@ from dataclasses import dataclass from hashlib import sha384 from pathlib import Path -from typing import Iterator, Optional, Union +from typing import Iterator, Optional, Union, Iterable from zoneinfo import ZoneInfo from django.conf import settings @@ -33,7 +33,14 @@ from ietf.community.models import CommunityList from ietf.community.utils import docs_tracked_by_community_list -from ietf.doc.models import Document, DocHistory, State, DocumentAuthor, DocHistoryAuthor +from ietf.doc.models import ( + DocHistory, + DocHistoryAuthor, + Document, + DocumentAuthor, + RfcAuthor, + State, EditedRfcAuthorsDocEvent, +) from ietf.doc.models import RelatedDocument, RelatedDocHistory, BallotType, DocReminder from ietf.doc.models import DocEvent, ConsensusDocEvent, BallotDocEvent, IRSGBallotDocEvent, NewRevisionDocEvent, StateDocEvent from ietf.doc.models import TelechatDocEvent, DocumentActionHolder, EditedAuthorsDocEvent, BallotPositionDocEvent @@ -534,7 +541,7 @@ def update_action_holders(doc, prev_state=None, new_state=None, prev_tags=None, doc.action_holders.clear() if tags.removed("need-rev"): # Removed the 'need-rev' tag - drop authors from the action holders list - DocumentActionHolder.objects.filter(document=doc, person__in=doc.authors()).delete() + DocumentActionHolder.objects.filter(document=doc, person__in=doc.author_persons()).delete() elif tags.added("need-rev"): # Remove the AD if we're asking for a new revision DocumentActionHolder.objects.filter(document=doc, person=doc.ad).delete() @@ -549,7 +556,7 @@ def update_action_holders(doc, prev_state=None, new_state=None, prev_tags=None, doc.action_holders.add(doc.ad) # Authors get the action if a revision is needed if tags.added("need-rev"): - for auth in doc.authors(): + for auth in doc.author_persons(): doc.action_holders.add(auth) # Now create an event if we changed the set @@ -561,6 +568,40 @@ def update_action_holders(doc, prev_state=None, new_state=None, prev_tags=None, ) +def _change_field_and_describe( + author: DocumentAuthor | RfcAuthor, + field: str, + newval, + field_display_name: str | None = None, +): + # make the change + oldval = getattr(author, field) + setattr(author, field, newval) + + was_empty = oldval is None or len(str(oldval)) == 0 + now_empty = newval is None or len(str(newval)) == 0 + + # describe the change + if oldval == newval: + return None + else: + if field_display_name is None: + field_display_name = field + + if was_empty and not now_empty: + return 'set {field} to "{new}"'.format( + field=field_display_name, new=newval + ) + elif now_empty and not was_empty: + return 'cleared {field} (was "{old}")'.format( + field=field_display_name, old=oldval + ) + else: + return 'changed {field} from "{old}" to "{new}"'.format( + field=field_display_name, old=oldval, new=newval + ) + + def update_documentauthors(doc, new_docauthors, by=None, basis=None): """Update the list of authors for a document @@ -573,27 +614,6 @@ def update_documentauthors(doc, new_docauthors, by=None, basis=None): used. These objects will not be saved, their attributes will be used to create new DocumentAuthor instances. (The document and order fields will be ignored.) """ - def _change_field_and_describe(auth, field, newval): - # make the change - oldval = getattr(auth, field) - setattr(auth, field, newval) - - was_empty = oldval is None or len(str(oldval)) == 0 - now_empty = newval is None or len(str(newval)) == 0 - - # describe the change - if oldval == newval: - return None - else: - if was_empty and not now_empty: - return 'set {field} to "{new}"'.format(field=field, new=newval) - elif now_empty and not was_empty: - return 'cleared {field} (was "{old}")'.format(field=field, old=oldval) - else: - return 'changed {field} from "{old}" to "{new}"'.format( - field=field, old=oldval, new=newval - ) - persons = [] changes = [] # list of change descriptions @@ -637,6 +657,111 @@ def _change_field_and_describe(auth, field, newval): ) for change in changes ] + +def update_rfcauthors( + rfc: Document, new_rfcauthors: Iterable[RfcAuthor], by: Person | None = None +) -> Iterable[EditedRfcAuthorsDocEvent]: + def _find_matching_author( + author_to_match: RfcAuthor, existing_authors: Iterable[RfcAuthor] + ) -> RfcAuthor | None: + """Helper to find a matching existing author""" + if author_to_match.person_id is not None: + for candidate in existing_authors: + if candidate.person_id == author_to_match.person_id: + return candidate + return None # no match + # author does not have a person, match on titlepage name + for candidate in existing_authors: + if candidate.titlepage_name == author_to_match.titlepage_name: + return candidate + return None # no match + + def _rfcauthor_from_documentauthor(docauthor: DocumentAuthor) -> RfcAuthor: + """Helper to create an equivalent RfcAuthor from a DocumentAuthor""" + return RfcAuthor( + document_id=docauthor.document_id, + titlepage_name=docauthor.person.plain_name(), # closest thing we have + is_editor=False, + person_id=docauthor.person_id, + affiliation=docauthor.affiliation, + country=docauthor.country, + order=docauthor.order, + ) + + # Is this the first time this document is getting an RfcAuthor? If so, the + # updates will need to account for the model change. + converting_from_docauthors = not rfc.rfcauthor_set.exists() + + if converting_from_docauthors: + original_authors = [ + _rfcauthor_from_documentauthor(da) for da in rfc.documentauthor_set.all() + ] + else: + original_authors = list(rfc.rfcauthor_set.all()) + + authors_to_commit = [] + changes = [] + for order, new_author in enumerate(new_rfcauthors): + matching_author = _find_matching_author(new_author, original_authors) + if matching_author is not None: + # Update existing matching author using new_author data + authors_to_commit.append(matching_author) + original_authors.remove(matching_author) # avoid reuse + # Describe changes to this author + author_changes = [] + # Update fields other than order + for field in ["titlepage_name", "is_editor", "affiliation", "country"]: + author_changes.append( + _change_field_and_describe( + matching_author, + field, + getattr(new_author, field), + # List titlepage_name as "name" in logs + "name" if field == "titlepage_name" else field, + ) + ) + # Update order + author_changes.append( + _change_field_and_describe(matching_author, "order", order + 1) + ) + matching_author.save() + author_change_summary = ", ".join( + [ch for ch in author_changes if ch is not None] + ) + if len(author_change_summary) > 0: + changes.append( + 'Changed author "{name}": {summary}'.format( + name=matching_author.titlepage_name, + summary=author_change_summary, + ) + ) + else: + # No author matched, so update the new_author and use that + new_author.document = rfc + new_author.order = order + 1 + new_author.save() + changes.append(f'Added "{new_author.titlepage_name}" as author') + # Any authors left in original_authors are no longer in the list, so remove them + for removed_author in original_authors: + # Skip actual removal of old authors if we are converting from the + # DocumentAuthor models - the original_authors were just stand-ins anyway. + if not converting_from_docauthors: + removed_author.delete() + changes.append(f'Removed "{removed_author.titlepage_name}" as author') + # Create DocEvents, but leave it up to caller to save + if by is None: + by = Person.objects.get(name="(System)") + return [ + EditedRfcAuthorsDocEvent( + type="edited_authors", + by=by, + doc=rfc, + desc=change, + ) + for change in changes + ] + + def update_reminder(doc, reminder_type_slug, event, due_date): reminder_type = DocReminderTypeName.objects.get(slug=reminder_type_slug) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 5564904504..0578da1b77 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1653,11 +1653,18 @@ def extract_name(s): data["state"] = extract_name(doc.get_state()) data["intended_std_level"] = extract_name(doc.intended_std_level) data["std_level"] = extract_name(doc.std_level) + author_qs = ( + doc.rfcauthor_set + if doc.type_id == "rfc" and doc.rfcauthor_set.exists() + else doc.documentauthor_set + ).select_related("person", "email").order_by("order") data["authors"] = [ - dict(name=author.person.name, - email=author.email.address if author.email else None, - affiliation=author.affiliation) - for author in doc.documentauthor_set.all().select_related("person", "email").order_by("order") + { + "name": author.titlepage_name if hasattr(author, "titlepage_name") else author.person.name, + "email": author.email.address if author.email else None, + "affiliation": author.affiliation, + } + for author in author_qs ] data["shepherd"] = doc.shepherd.formatted_email() if doc.shepherd else None data["ad"] = doc.ad.role_email("ad").formatted_email() if doc.ad else None @@ -1941,9 +1948,9 @@ def edit_action_holders(request, name): role_ids = dict() # maps role slug to list of Person IDs (assumed numeric in the JavaScript) extra_prefetch = [] # list of Person objects to prefetch for select2 field - if len(doc.authors()) > 0: + authors = doc.author_persons() + if len(authors) > 0: doc_role_labels.append(dict(slug='authors', label='Authors')) - authors = doc.authors() role_ids['authors'] = [p.pk for p in authors] extra_prefetch += authors diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index 3b67061b05..4232d77f6c 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -219,7 +219,7 @@ def retrieve_search_results(form, all_types=False): queries.extend([Q(targets_related__source__name__icontains=look_for, targets_related__relationship_id="became_rfc")]) combined_query = reduce(operator.or_, queries) - docs = docs.filter(combined_query).distinct() + docs = docs.filter(combined_query) # rfc/active/old check buttons allowed_draft_states = [] @@ -229,20 +229,23 @@ def retrieve_search_results(form, all_types=False): allowed_draft_states.extend(['repl', 'expired', 'auth-rm', 'ietf-rm']) docs = docs.filter(Q(states__slug__in=allowed_draft_states) | - ~Q(type__slug='draft')).distinct() + ~Q(type__slug='draft')) # radio choices by = query["by"] if by == "author": docs = docs.filter( Q(documentauthor__person__alias__name__icontains=query["author"]) | - Q(documentauthor__person__email__address__icontains=query["author"]) + Q(documentauthor__person__email__address__icontains=query["author"]) | + Q(rfcauthor__person__alias__name__icontains=query["author"]) | + Q(rfcauthor__person__email__address__icontains=query["author"]) | + Q(rfcauthor__titlepage_name__icontains=query["author"]) ) elif by == "group": docs = docs.filter(group__acronym__iexact=query["group"]) elif by == "area": docs = docs.filter(Q(group__type="wg", group__parent=query["area"]) | - Q(group=query["area"])).distinct() + Q(group=query["area"])) elif by == "ad": docs = docs.filter(ad=query["ad"]) elif by == "state": @@ -255,6 +258,8 @@ def retrieve_search_results(form, all_types=False): elif by == "stream": docs = docs.filter(stream=query["stream"]) + docs=docs.distinct() + return docs diff --git a/ietf/group/models.py b/ietf/group/models.py index 2d5e7c4e6f..a7e3c6616e 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -111,6 +111,9 @@ def active_wgs(self): def closed_wgs(self): return self.wgs().exclude(state__in=Group.ACTIVE_STATE_IDS) + def areas(self): + return self.get_queryset().filter(type="area") + def with_meetings(self): return self.get_queryset().filter(type__features__has_meetings=True) diff --git a/ietf/group/serializers.py b/ietf/group/serializers.py new file mode 100644 index 0000000000..08e6bba81a --- /dev/null +++ b/ietf/group/serializers.py @@ -0,0 +1,11 @@ +# Copyright The IETF Trust 2024, All Rights Reserved +"""django-rest-framework serializers""" +from rest_framework import serializers + +from .models import Group + + +class GroupSerializer(serializers.ModelSerializer): + class Meta: + model = Group + fields = ["acronym", "name", "type"] diff --git a/ietf/ietfauth/utils.py b/ietf/ietfauth/utils.py index 1f634278be..0df667fbd2 100644 --- a/ietf/ietfauth/utils.py +++ b/ietf/ietfauth/utils.py @@ -287,7 +287,7 @@ def is_individual_draft_author(user, doc): if not hasattr(user, 'person'): return False - if user.person in doc.authors(): + if user.person in doc.author_persons(): return True return False diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 665c99dc43..0a43ff2c27 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -81,7 +81,8 @@ def get_document_emails(ipr): addrs = gather_address_lists('ipr_posted_on_doc',doc=doc).as_strings(compact=False) - author_names = ', '.join(a.person.name for a in doc.documentauthor_set.select_related("person")) + # Get a list of author names for the salutation in the body of the email + author_names = ', '.join(doc.author_names()) context = dict( settings=settings, diff --git a/ietf/name/serializers.py b/ietf/name/serializers.py new file mode 100644 index 0000000000..a764f56051 --- /dev/null +++ b/ietf/name/serializers.py @@ -0,0 +1,11 @@ +# Copyright The IETF Trust 2024, All Rights Reserved +"""django-rest-framework serializers""" +from rest_framework import serializers + +from .models import StreamName + + +class StreamNameSerializer(serializers.ModelSerializer): + class Meta: + model = StreamName + fields = ["slug", "name", "desc"] diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index dcdb9ef836..b6e8c57da7 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -1,5 +1,4 @@ -# Copyright The IETF Trust 2012-2023, All Rights Reserved -# -*- coding: utf-8 -*- +# Copyright The IETF Trust 2012-2025, All Rights Reserved import datetime @@ -27,8 +26,14 @@ from ietf.api.views import EmailIngestionError from ietf.dbtemplate.factories import DBTemplateFactory from ietf.dbtemplate.models import DBTemplate -from ietf.doc.factories import DocEventFactory, WgDocumentAuthorFactory, \ - NewRevisionDocEventFactory, DocumentAuthorFactory +from ietf.doc.factories import ( + DocEventFactory, + WgDocumentAuthorFactory, + NewRevisionDocEventFactory, + DocumentAuthorFactory, + RfcAuthorFactory, + WgDraftFactory, WgRfcFactory, +) from ietf.group.factories import GroupFactory, GroupHistoryFactory, RoleFactory, RoleHistoryFactory from ietf.group.models import Group, Role from ietf.meeting.factories import MeetingFactory, AttendedFactory, RegistrationFactory @@ -45,10 +50,20 @@ nomcom_kwargs_for_year, provide_private_key_to_test_client, \ key from ietf.nomcom.tasks import send_nomcom_reminders_task -from ietf.nomcom.utils import get_nomcom_by_year, make_nomineeposition, \ - get_hash_nominee_position, is_eligible, list_eligible, \ - get_eligibility_date, suggest_affiliation, ingest_feedback_email, \ - decorate_volunteers_with_qualifications, send_reminders, _is_time_to_send_reminder +from ietf.nomcom.utils import ( + get_nomcom_by_year, + make_nomineeposition, + get_hash_nominee_position, + is_eligible, + list_eligible, + get_eligibility_date, + suggest_affiliation, + ingest_feedback_email, + decorate_volunteers_with_qualifications, + send_reminders, + _is_time_to_send_reminder, + get_qualified_author_queryset, +) from ietf.person.factories import PersonFactory, EmailFactory from ietf.person.models import Email, Person from ietf.utils.mail import outbox, empty_outbox, get_payload_text @@ -2440,6 +2455,86 @@ def test_get_eligibility_date(self): NomComFactory(group__acronym=f'nomcom{this_year}', first_call_for_volunteers=datetime.date(this_year,5,6)) self.assertEqual(get_eligibility_date(),datetime.date(this_year,5,6)) + def test_get_qualified_author_queryset(self): + """get_qualified_author_queryset implements the eligiblity rules correctly + + This is not an exhaustive test of corner cases. Overlaps considerably with + rfc8989EligibilityTests.test_elig_by_author(). + """ + people = PersonFactory.create_batch(2) + extra_person = PersonFactory() + base_qs = Person.objects.filter(pk__in=[person.pk for person in people]) + now = datetime.datetime.now(tz=datetime.UTC) + one_year = datetime.timedelta(days=365) + + # Authors with no qualifying drafts + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 5 * one_year, now), [] + ) + + # Authors with one qualifying draft + approved_draft = WgDraftFactory(authors=people, states=[("draft", "active")]) + DocEventFactory( + type="iesg_approved", + doc=approved_draft, + time=now - 4 * one_year, + ) + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 5 * one_year, now), [] + ) + + # Create a draft that was published into an RFC. Give it an extra author who + # should not be eligible. + published_draft = WgDraftFactory(authors=people, states=[("draft", "rfc")]) + DocEventFactory( + type="iesg_approved", + doc=published_draft, + time=now - 5.5 * one_year, # < 6 years ago + ) + rfc = WgRfcFactory( + authors=people + [extra_person], + group=published_draft.group, + ) + DocEventFactory( + type="published_rfc", + doc=rfc, + time=now - 0.5 * one_year, # < 1 year ago + ) + # Period 6 years ago to 1 year ago - authors are eligible due to the + # iesg-approved draft in this window + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 6 * one_year, now - one_year), + people, + ) + + # Period 5 years ago to now - authors are eligible due to the RFC publication + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 5 * one_year, now), + people, + ) + + # Use the extra_person to check that a single doc can't count both as an + # RFC _and_ an approved draft. Use an eligibility interval that includes both + # the approval and the RFC publication + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 6 * one_year, now), + people, # does not include extra_person! + ) + + # Now add an RfcAuthor for only one of the two authors to the RFC. This should + # remove the other author from the eligibility list because the DocumentAuthor + # records are no longer used. + RfcAuthorFactory( + document=rfc, + person=people[0], + titlepage_name="P. Zero", + email=people[0].email_set.first(), + ) + self.assertCountEqual( + get_qualified_author_queryset(base_qs, now - 5 * one_year, now), + [people[0]], + ) + class rfc8713EligibilityTests(TestCase): @@ -2724,33 +2819,41 @@ def test_elig_by_author(self): ineligible = set() p = PersonFactory() - ineligible.add(p) - + ineligible.add(p) # no RFCs or iesg-approved drafts p = PersonFactory() - da = WgDocumentAuthorFactory(person=p) - DocEventFactory(type='published_rfc',doc=da.document,time=middle_date) - ineligible.add(p) + doc = WgRfcFactory(authors=[p]) + DocEventFactory(type='published_rfc', doc=doc, time=middle_date) + ineligible.add(p) # only one RFC p = PersonFactory() - da = WgDocumentAuthorFactory(person=p) + da = WgDocumentAuthorFactory( + person=p, + document__states=[("draft", "active"), ("draft-rfceditor", "ref")], + ) DocEventFactory(type='iesg_approved',doc=da.document,time=last_date) - da = WgDocumentAuthorFactory(person=p) - DocEventFactory(type='published_rfc',doc=da.document,time=first_date) - eligible.add(p) + doc = WgRfcFactory(authors=[p]) + DocEventFactory(type='published_rfc', doc=doc, time=first_date) + eligible.add(p) # one RFC and one iesg-approved draft p = PersonFactory() - da = WgDocumentAuthorFactory(person=p) + da = WgDocumentAuthorFactory( + person=p, + document__states=[("draft", "active"), ("draft-rfceditor", "ref")], + ) DocEventFactory(type='iesg_approved',doc=da.document,time=middle_date) - da = WgDocumentAuthorFactory(person=p) - DocEventFactory(type='published_rfc',doc=da.document,time=day_before_first_date) - ineligible.add(p) + doc = WgRfcFactory(authors=[p]) + DocEventFactory(type='published_rfc', doc=doc, time=day_before_first_date) + ineligible.add(p) # RFC is out of the eligibility window p = PersonFactory() - da = WgDocumentAuthorFactory(person=p) + da = WgDocumentAuthorFactory( + person=p, + document__states=[("draft", "active"), ("draft-rfceditor", "ref")], + ) DocEventFactory(type='iesg_approved',doc=da.document,time=day_after_last_date) - da = WgDocumentAuthorFactory(person=p) - DocEventFactory(type='published_rfc',doc=da.document,time=middle_date) - ineligible.add(p) + doc = WgRfcFactory(authors=[p]) + DocEventFactory(type='published_rfc', doc=doc, time=middle_date) + ineligible.add(p) # iesg approval is outside the eligibility window for person in eligible: self.assertTrue(is_eligible(person,nomcom)) @@ -2878,15 +2981,38 @@ def test_volunteer(self): def test_suggest_affiliation(self): person = PersonFactory() - self.assertEqual(suggest_affiliation(person), '') - da = DocumentAuthorFactory(person=person,affiliation='auth_affil') + self.assertEqual(suggest_affiliation(person), "") + rfc_da = DocumentAuthorFactory( + person=person, + document__type_id="rfc", + affiliation="", + ) + rfc = rfc_da.document + DocEventFactory(doc=rfc, type="published_rfc") + self.assertEqual(suggest_affiliation(person), "") + + rfc_da.affiliation = "rfc_da_affil" + rfc_da.save() + self.assertEqual(suggest_affiliation(person), "rfc_da_affil") + + rfc_ra = RfcAuthorFactory(person=person, document=rfc, affiliation="") + self.assertEqual(suggest_affiliation(person), "") + + rfc_ra.affiliation = "rfc_ra_affil" + rfc_ra.save() + self.assertEqual(suggest_affiliation(person), "rfc_ra_affil") + + da = DocumentAuthorFactory(person=person, affiliation="auth_affil") NewRevisionDocEventFactory(doc=da.document) - self.assertEqual(suggest_affiliation(person), 'auth_affil') + self.assertEqual(suggest_affiliation(person), "auth_affil") + nc = NomComFactory() - nc.volunteer_set.create(person=person,affiliation='volunteer_affil') - self.assertEqual(suggest_affiliation(person), 'volunteer_affil') - RegistrationFactory(person=person, affiliation='meeting_affil') - self.assertEqual(suggest_affiliation(person), 'meeting_affil') + nc.volunteer_set.create(person=person, affiliation="volunteer_affil") + self.assertEqual(suggest_affiliation(person), "volunteer_affil") + + RegistrationFactory(person=person, affiliation="meeting_affil") + self.assertEqual(suggest_affiliation(person), "meeting_affil") + class VolunteerDecoratorUnitTests(TestCase): def test_decorate_volunteers_with_qualifications(self): @@ -2922,10 +3048,10 @@ def test_decorate_volunteers_with_qualifications(self): author_person = PersonFactory() for i in range(2): - da = WgDocumentAuthorFactory(person=author_person) + doc = WgRfcFactory(authors=[author_person]) DocEventFactory( type='published_rfc', - doc=da.document, + doc=doc, time=datetime.datetime( elig_date.year - 3, elig_date.month, diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index dd651c2941..a2ab680df6 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -18,7 +18,7 @@ from email.utils import parseaddr from textwrap import dedent -from django.db.models import Q, Count +from django.db.models import Q, Count, F, QuerySet from django.conf import settings from django.contrib.sites.models import Site from django.core.exceptions import ObjectDoesNotExist @@ -27,7 +27,7 @@ from django.shortcuts import get_object_or_404 from ietf.dbtemplate.models import DBTemplate -from ietf.doc.models import DocEvent, NewRevisionDocEvent +from ietf.doc.models import DocEvent, NewRevisionDocEvent, Document from ietf.group.models import Group, Role from ietf.person.models import Email, Person from ietf.mailtrigger.utils import gather_address_lists @@ -576,6 +576,70 @@ def get_8989_eligibility_querysets(date, base_qs): def get_9389_eligibility_querysets(date, base_qs): return get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable=three_of_five_eligible_9389) + +def get_qualified_author_queryset( + base_qs: QuerySet[Person], + eligibility_period_start: datetime.datetime, + eligibility_period_end: datetime.datetime, +): + """Filter a Person queryset, keeping those qualified by RFC 8989's author path + + The author path is defined by "path 3" in section 4 of RFC 8989. It qualifies + a person who has been a front-page listed author or editor of at least two IETF- + stream RFCs within the last five years. An I-D in the RFC Editor queue that was + approved by the IESG is treated as an RFC, using the date of entry to the RFC + Editor queue as the date for qualification. + + This method does not strictly enforce "in the RFC Editor queue" for IESG-approved + drafts when computing eligibility. In the overwhelming majority of cases, an IESG- + approved draft immediately enters the queue and goes on to be published, so this + simplification makes the calculation much easier and virtually never affects + eligibility. + + Arguments eligibility_period_start and eligibility_period_end are datetimes that + mark the start and end of the eligibility period. These should be five years apart. + """ + # First, get the RFCs using publication date + qualifying_rfc_pub_events = DocEvent.objects.filter( + type='published_rfc', + time__gte=eligibility_period_start, + time__lte=eligibility_period_end, + ) + qualifying_rfcs = Document.objects.filter( + type_id="rfc", + docevent__in=qualifying_rfc_pub_events + ).annotate( + rfcauthor_count=Count("rfcauthor") + ) + rfcs_with_rfcauthors = qualifying_rfcs.filter(rfcauthor_count__gt=0).distinct() + rfcs_without_rfcauthors = qualifying_rfcs.filter(rfcauthor_count=0).distinct() + + # Second, get the IESG-approved I-Ds excluding any we're already counting as rfcs + qualifying_approval_events = DocEvent.objects.filter( + type='iesg_approved', + time__gte=eligibility_period_start, + time__lte=eligibility_period_end, + ) + qualifying_drafts = Document.objects.filter( + type_id="draft", + docevent__in=qualifying_approval_events, + ).exclude( + relateddocument__relationship_id="became_rfc", + relateddocument__target__in=qualifying_rfcs, + ).distinct() + + return base_qs.filter( + Q(documentauthor__document__in=qualifying_drafts) + | Q(rfcauthor__document__in=rfcs_with_rfcauthors) + | Q(documentauthor__document__in=rfcs_without_rfcauthors) + ).annotate( + document_author_count=Count('documentauthor'), + rfc_author_count=Count("rfcauthor") + ).annotate( + authorship_count=F("document_author_count") + F("rfc_author_count") + ).filter(authorship_count__gte=2) + + def get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable): if not base_qs: base_qs = Person.objects.all() @@ -608,14 +672,7 @@ def get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable): ) ).distinct() - rfc_pks = set(DocEvent.objects.filter(type='published_rfc', time__gte=five_years_ago, time__lte=date_as_dt).values_list('doc__pk', flat=True)) - iesgappr_pks = set(DocEvent.objects.filter(type='iesg_approved', time__gte=five_years_ago, time__lte=date_as_dt).values_list('doc__pk',flat=True)) - qualifying_pks = rfc_pks.union(iesgappr_pks.difference(rfc_pks)) - author_qs = base_qs.filter( - documentauthor__document__pk__in=qualifying_pks - ).annotate( - document_author_count = Count('documentauthor') - ).filter(document_author_count__gte=2) + author_qs = get_qualified_author_queryset(base_qs, five_years_ago, date_as_dt) return three_of_five_qs, officer_qs, author_qs def list_eligible_8989(date, base_qs=None): @@ -691,18 +748,42 @@ def three_of_five_eligible_9389(previous_five, queryset=None): counts[id] += 1 return queryset.filter(pk__in=[id for id, count in counts.items() if count >= 3]) -def suggest_affiliation(person): +def suggest_affiliation(person) -> str: + """Heuristically suggest a current affiliation for a Person""" recent_meeting = person.registration_set.order_by('-meeting__date').first() - affiliation = recent_meeting.affiliation if recent_meeting else '' - if not affiliation: - recent_volunteer = person.volunteer_set.order_by('-nomcom__group__acronym').first() - if recent_volunteer: - affiliation = recent_volunteer.affiliation - if not affiliation: - recent_draft_revision = NewRevisionDocEvent.objects.filter(doc__type_id='draft',doc__documentauthor__person=person).order_by('-time').first() - if recent_draft_revision: - affiliation = recent_draft_revision.doc.documentauthor_set.filter(person=person).first().affiliation - return affiliation + if recent_meeting and recent_meeting.affiliation: + return recent_meeting.affiliation + + recent_volunteer = person.volunteer_set.order_by('-nomcom__group__acronym').first() + if recent_volunteer and recent_volunteer.affiliation: + return recent_volunteer.affiliation + + recent_draft_revision = NewRevisionDocEvent.objects.filter( + doc__type_id="draft", + doc__documentauthor__person=person, + ).order_by("-time").first() + if recent_draft_revision: + draft_author = recent_draft_revision.doc.documentauthor_set.filter( + person=person + ).first() + if draft_author and draft_author.affiliation: + return draft_author.affiliation + + recent_rfc_publication = DocEvent.objects.filter( + Q(doc__documentauthor__person=person) | Q(doc__rfcauthor__person=person), + doc__type_id="rfc", + type="published_rfc", + ).order_by("-time").first() + if recent_rfc_publication: + rfc = recent_rfc_publication.doc + if rfc.rfcauthor_set.exists(): + rfc_author = rfc.rfcauthor_set.filter(person=person).first() + else: + rfc_author = rfc.documentauthor_set.filter(person=person).first() + if rfc_author and rfc_author.affiliation: + return rfc_author.affiliation + return "" + def extract_volunteers(year): nomcom = get_nomcom_by_year(year) diff --git a/ietf/person/models.py b/ietf/person/models.py index 03cf0c87fb..3ab89289a6 100644 --- a/ietf/person/models.py +++ b/ietf/person/models.py @@ -87,7 +87,7 @@ def short(self): else: prefix, first, middle, last, suffix = self.ascii_parts() return (first and first[0]+"." or "")+(middle or "")+" "+last+(suffix and " "+suffix or "") - def plain_name(self): + def plain_name(self) -> str: if not hasattr(self, '_cached_plain_name'): if self.plain: self._cached_plain_name = self.plain @@ -203,7 +203,10 @@ def has_drafts(self): def rfcs(self): from ietf.doc.models import Document - rfcs = list(Document.objects.filter(documentauthor__person=self, type='rfc')) + # When RfcAuthors are populated, this may over-return if an author is dropped + # from the author list between the final draft and the published RFC. Should + # ignore DocumentAuthors when an RfcAuthor exists for a draft. + rfcs = list(Document.objects.filter(type="rfc").filter(models.Q(documentauthor__person=self)|models.Q(rfcauthor__person=self)).distinct()) rfcs.sort(key=lambda d: d.name ) return rfcs @@ -266,11 +269,16 @@ def available_api_endpoints(self): def cdn_photo_url(self, size=80): if self.photo: if settings.SERVE_CDN_PHOTOS: + if settings.SERVER_MODE != "production": + original_media_dir = settings.MEDIA_URL + settings.MEDIA_URL = "https://www.ietf.org/lib/dt/media/" source_url = self.photo.url if source_url.startswith(settings.IETF_HOST_URL): source_url = source_url[len(settings.IETF_HOST_URL):] elif source_url.startswith('/'): source_url = source_url[1:] + if settings.SERVER_MODE != "production": + settings.MEDIA_URL = original_media_dir return f'{settings.IETF_HOST_URL}cdn-cgi/image/fit=scale-down,width={size},height={size}/{source_url}' else: datatracker_photo_path = urlreverse('ietf.person.views.photo', kwargs={'email_or_name': self.email()}) diff --git a/ietf/secr/telechat/tests.py b/ietf/secr/telechat/tests.py index fa26d33a5c..91ccde2187 100644 --- a/ietf/secr/telechat/tests.py +++ b/ietf/secr/telechat/tests.py @@ -256,7 +256,7 @@ def test_doc_detail_post_update_state_action_holder_automation(self): self.assertEqual(response.status_code,302) draft = Document.objects.get(name=draft.name) self.assertEqual(draft.get_state('draft-iesg').slug,'defer') - self.assertCountEqual(draft.action_holders.all(), [draft.ad] + draft.authors()) + self.assertCountEqual(draft.action_holders.all(), [draft.ad] + draft.author_persons()) self.assertEqual(draft.docevent_set.filter(type='changed_action_holders').count(), 1) # Removing need-rev should remove authors @@ -273,7 +273,7 @@ def test_doc_detail_post_update_state_action_holder_automation(self): # Setting to approved should remove all action holders # noinspection DjangoOrm - draft.action_holders.add(*(draft.authors())) # add() with through model ok in Django 2.2+ + draft.action_holders.add(*(draft.author_persons())) # add() with through model ok in Django 2.2+ response = self.client.post(url,{ 'submit': 'update_state', 'state': State.objects.get(type_id='draft-iesg', slug='approved').pk, diff --git a/ietf/settings.py b/ietf/settings.py index 05eab0f12f..fedd313ca0 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -22,6 +22,7 @@ warnings.filterwarnings("ignore", message="The django.utils.timezone.utc alias is deprecated.", module="oidc_provider") warnings.filterwarnings("ignore", message="The django.utils.datetime_safe module is deprecated.", module="tastypie") warnings.filterwarnings("ignore", message="The USE_DEPRECATED_PYTZ setting,") # https://github.com/ietf-tools/datatracker/issues/5635 +warnings.filterwarnings("ignore", message="The is_dst argument to make_aware\\(\\)") # caused by django-filters when USE_DEPRECATED_PYTZ is true warnings.filterwarnings("ignore", message="The USE_L10N setting is deprecated.") # https://github.com/ietf-tools/datatracker/issues/5648 warnings.filterwarnings("ignore", message="django.contrib.auth.hashers.CryptPasswordHasher is deprecated.") # https://github.com/ietf-tools/datatracker/issues/5663 @@ -502,6 +503,7 @@ def skip_unreadable_post(record): 'django_celery_results', 'corsheaders', 'django_markup', + 'django_filters', 'oidc_provider', 'drf_spectacular', 'drf_standardized_errors', diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 216fc7de6b..400d0d8c7d 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -595,7 +595,7 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_ TestBlobstoreManager().emptyTestBlobstores() def _assert_authors_are_action_holders(draft, expect=True): - for author in draft.authors(): + for author in draft.author_persons(): if expect: self.assertIn(author, draft.action_holders.all()) else: diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index a0c7dd8511..9a7c358a6d 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -1268,7 +1268,7 @@ def process_submission_text(filename, revision): if title: title = _normalize_title(title) - # Translation taable drops \r, \n, <, >. + # Translation table drops \r, \n, <, >. trans_table = str.maketrans("", "", "\r\n<>") authors = [ { diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py index b3234a87e2..cdcdeb5989 100644 --- a/ietf/sync/rfceditor.py +++ b/ietf/sync/rfceditor.py @@ -468,14 +468,18 @@ def update_docs_from_rfc_index( doc.set_state(rfc_published_state) if draft: doc.formal_languages.set(draft.formal_languages.all()) - for author in draft.documentauthor_set.all(): + # Create authors based on the last draft in the datatracker. This + # path will go away when we publish via the modernized RPC workflow + # but until then, these are the only data we have for authors that + # are easily connected to Person records. + for documentauthor in draft.documentauthor_set.all(): # Copy the author but point at the new doc. # See https://docs.djangoproject.com/en/4.2/topics/db/queries/#copying-model-instances - author.pk = None - author.id = None - author._state.adding = True - author.document = doc - author.save() + documentauthor.pk = None + documentauthor.id = None + documentauthor._state.adding = True + documentauthor.document = doc + documentauthor.save() if draft: draft_events = [] diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index 3432f6214a..888920ae9d 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -446,7 +446,7 @@ def test_rfc_index(self): rfc_doc = Document.objects.filter(rfc_number=1234, type_id="rfc").first() self.assertIsNotNone(rfc_doc, "RFC document should have been created") - self.assertEqual(rfc_doc.authors(), draft_doc.authors()) + self.assertEqual(rfc_doc.author_persons_or_names(), draft_doc.author_persons_or_names()) rfc_events = rfc_doc.docevent_set.all() self.assertEqual(len(rfc_events), 8) expected_events = [ diff --git a/ietf/templates/doc/document_info.html b/ietf/templates/doc/document_info.html index 71050f9d41..d6d8d43071 100644 --- a/ietf/templates/doc/document_info.html +++ b/ietf/templates/doc/document_info.html @@ -87,7 +87,7 @@ {% endif %} - Author{% if doc.pk %}{{ doc.authors|pluralize }}{% endif %} + Author{% if doc.pk %}{{ doc.author_persons_or_names|pluralize }}{% endif %} {% if can_edit_authors %} {# Implementation that uses the current primary email for each author #} - {% if doc.pk %}{% for author in doc.authors %} - {% person_link author %}{% if not forloop.last %},{% endif %} + {% if doc.pk %}{% for author in doc.author_persons_or_names %} + {% if author.person %}{% person_link author.person %}{% else %}{{ author.titlepage_name }}{% endif %}{% if not forloop.last %},{% endif %} {% endfor %}{% endif %} {% if document_html and not snapshot or document_html and doc.rev == latest_rev%}
diff --git a/ietf/templates/doc/index_active_drafts.html b/ietf/templates/doc/index_active_drafts.html index 06ea2c4ff5..607385f56f 100644 --- a/ietf/templates/doc/index_active_drafts.html +++ b/ietf/templates/doc/index_active_drafts.html @@ -29,7 +29,7 @@

Active Internet-Drafts

{% for group in groups %}

{{ group.name }} ({{ group.acronym }})

- {% for d in group.active_drafts %} + {% for d in group.active_drafts %}{# n.b., d is a dict, not a Document #}
{{ d.title }}. diff --git a/ietf/templates/doc/opengraph.html b/ietf/templates/doc/opengraph.html index 4fe39b6209..1c8c5abe91 100644 --- a/ietf/templates/doc/opengraph.html +++ b/ietf/templates/doc/opengraph.html @@ -1,4 +1,4 @@ -{# Copyright The IETF Trust 2016-2020, All Rights Reserved #} +{# Copyright The IETF Trust 2016-2025, All Rights Reserved #} {% load origin %} {% load static %} {% load ietf_filters %} @@ -36,7 +36,7 @@ {% else %}{# TODO: We need a card image for individual I-Ds. #} {% endif %} -{% if doc.pk %}{% for author in doc.documentauthor_set.all %} +{% if doc.pk %}{% for author_name in doc.author_names %} {% endfor %}{% endif %} {% if published %}{% endif %} {% if expires %}{% endif %} \ No newline at end of file diff --git a/ietf/templates/doc/review/request_info.html b/ietf/templates/doc/review/request_info.html index 9ad126d59e..51aea10a02 100644 --- a/ietf/templates/doc/review/request_info.html +++ b/ietf/templates/doc/review/request_info.html @@ -74,13 +74,13 @@ {% person_link review_req.requested_by %} {% endif %} - {% if review_req.doc.authors %} + {% if review_req.doc.author_persons_or_names %} Authors - {% for author in review_req.doc.authors %} - {% person_link author %}{% if not forloop.last %},{% endif %} + {% for person, tp_name in review_req.doc.author_persons_or_names %} + {% if person %}{% person_link person %}{% else %}{{ tp_name }}{% endif %}{% if not forloop.last %},{% endif %} {% endfor %} diff --git a/ietf/templates/group/manage_review_requests.html b/ietf/templates/group/manage_review_requests.html index 99b23c138a..d240ef24fa 100644 --- a/ietf/templates/group/manage_review_requests.html +++ b/ietf/templates/group/manage_review_requests.html @@ -66,10 +66,10 @@

Auto-suggested
{% endif %} - {% if r.doc.authors %} + {% if r.doc.author_persons_or_names %} Authors: - {% for person in r.doc.authors %} - {% person_link person %}{% if not forloop.last %},{% endif %} + {% for person, tp_name in r.doc.author_persons_or_names %} + {% if person %}{% person_link person %}{% else %}{{ tp_name }}{% endif %}{% if not forloop.last %},{% endif %} {% endfor %}
{% endif %} diff --git a/ietf/utils/test_utils.py b/ietf/utils/test_utils.py index 86c5a0c1c3..5faf83d93f 100644 --- a/ietf/utils/test_utils.py +++ b/ietf/utils/test_utils.py @@ -38,6 +38,7 @@ import re import email import html5lib +import rest_framework.test import requests_mock import shutil import sys @@ -312,3 +313,11 @@ def tearDown(self): shutil.rmtree(dir) self.requests_mock.stop() super().tearDown() + + +class APITestCase(TestCase): + """Test case that uses rest_framework's APIClient + + This is equivalent to rest_framework.test.APITestCase, but picks up our + """ + client_class = rest_framework.test.APIClient diff --git a/ietf/utils/validators.py b/ietf/utils/validators.py index 92a20f5a26..a99de72724 100644 --- a/ietf/utils/validators.py +++ b/ietf/utils/validators.py @@ -33,8 +33,9 @@ # Note that this is an instantiation of the regex validator, _not_ the # regex-string validator defined right below validate_no_control_chars = RegexValidator( - regex="^[^\x00-\x1f]*$", - message="Please enter a string without control characters." ) + regex="^[^\x01-\x1f]*$", + message="Please enter a string without control characters.", +) @deconstructible diff --git a/mypy.ini b/mypy.ini index 19df7ec9b0..4acaf98c95 100644 --- a/mypy.ini +++ b/mypy.ini @@ -2,6 +2,9 @@ ignore_missing_imports = True +# allow PEP 695 type aliases (flag needed until mypy >= 1.13) +enable_incomplete_feature = NewGenericSyntax + plugins = mypy_django_plugin.main diff --git a/requirements.txt b/requirements.txt index 02a4cf5fd0..3f89f6f16c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,8 +19,10 @@ django-analytical>=3.2.0 django-bootstrap5>=25.1 django-celery-beat>=2.7.0,<2.8.0 # pin until https://github.com/celery/django-celery-beat/issues/875 is resolved, then revisit django-celery-results>=2.6.0 +django-csp>=3.7 django-cors-headers>=4.7.0 django-debug-toolbar>=6.0.0 +django-filter>=24.3 django-markup>=1.10 # Limited use - need to reconcile against direct use of markdown django-oidc-provider==0.8.2 # 0.8.3 changes logout flow and claim return django-simple-history>=3.10.1 @@ -50,7 +52,7 @@ markdown>=3.8.0 types-markdown>=3.8.0 mock>=5.2.0 # should replace with unittest.mock and remove dependency types-mock>=5.2.0 -mypy~=1.7.0 # Version requirements determined by django-stubs. +mypy~=1.11.2 # Version requirements loosely determined by django-stubs. oic>=1.7.0 # Used only by tests opentelemetry-sdk>=1.38.0 opentelemetry-instrumentation-django>=0.59b0 From c845aa788b7d1b215636a7730756365c6d27ebd8 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:11:50 +0000 Subject: [PATCH 005/161] ci: update base image target version to 20260114T1756 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index e05ad51d1b..41ff295eec 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20251219T2152 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260114T1756 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index f8afdadf36..3ad31c7e25 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20251219T2152 +20260114T1756 From c1e8eb658ce6a204f450cd6d61857d49f6bbfcee Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 15 Jan 2026 12:01:00 -0500 Subject: [PATCH 006/161] ci: Increase wait-for-completion timeouts in build.yml --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e91445202..d97889fbb8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -426,7 +426,7 @@ jobs: token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}", "namespace":"${{ env.DEPLOY_NAMESPACE }}", "disableDailyDbRefresh":${{ inputs.devNoDbRefresh }} }' wait-for-completion: true - wait-for-completion-timeout: 30m + wait-for-completion-timeout: 60m wait-for-completion-interval: 30s display-workflow-run-url: false @@ -453,7 +453,7 @@ jobs: token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "manifest":"postgres", "forceRecreate":true, "restoreToLastFullSnapshot":true, "waitClusterReady":true }' wait-for-completion: true - wait-for-completion-timeout: 60m + wait-for-completion-timeout: 120m wait-for-completion-interval: 20s display-workflow-run-url: false From ac2fced3113f16e54eb84fd2b5c1b3000f0f2c87 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 15 Jan 2026 14:58:04 -0400 Subject: [PATCH 007/161] fix: remove notice from bofreq template (#10265) --- ietf/templates/doc/bofreq/new_bofreq.html | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/ietf/templates/doc/bofreq/new_bofreq.html b/ietf/templates/doc/bofreq/new_bofreq.html index c6aa0054f9..cda6f73b90 100644 --- a/ietf/templates/doc/bofreq/new_bofreq.html +++ b/ietf/templates/doc/bofreq/new_bofreq.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2021, All Rights Reserved #} +{# Copyright The IETF Trust 2021-2026, All Rights Reserved #} {% load origin django_bootstrap5 static textfilters %} {% block title %}Start a new BOF Request{% endblock %} {% block content %} @@ -12,21 +12,6 @@

Start a new BOF Request

  • Process: RFC 2418 Section 2.4
  • Considerations for having a successful BoF: RFC 5434
  • - {# The following block needs to be commented out after the BoF deadline and re-opened before next BoF request opening #} -
    -

    - Announcement for IETF 124: The IESG and the IAB have organized Ask Me Anything (AMA) virtual sessions - for the community to help proponents who are interested in putting up BoF proposals for IETF 124 - (see also the IETF-announce email): -

    -
      -
    • 28th of August 13:00-14:00 UTC -
    • -
    • 28th of August 19:00-20:00 UTC -
    • -
    -
    - {# End of the temporary block #}

    The IAB will also attempt to provide BoF Shepherds as described in their document on the subject only on request from the IESG. If you feel that your BoF would benefit from an IAB BoF Shepherd, please discuss this with your Area Director. From 0b6e887c36b37f3b66cf653360471f5151cd7796 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 16 Jan 2026 15:38:26 -0400 Subject: [PATCH 008/161] test: more robust URL coverage; improve badly formed test (#10270) * test: use bad ID with correct format * test: use Django resolver for URL coverage * chore: f-strings are hard --- ietf/api/tests_views_rpc.py | 5 +++- ietf/utils/test_runner.py | 56 ++++++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 032b4b9495..ece2af1b85 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -6,6 +6,7 @@ from django.conf import settings from django.core.files.base import ContentFile from django.db.models import Max +from django.db.models.functions import Coalesce from django.test.utils import override_settings from django.urls import reverse as urlreverse @@ -22,7 +23,9 @@ def test_draftviewset_references(self): viewname = "ietf.api.purple_api.draft-references" # non-existent draft - bad_id = Document.objects.aggregate(unused_id=Max("id") + 100)["unused_id"] + bad_id = Document.objects.aggregate(unused_id=Coalesce(Max("id"), 0) + 100)[ + "unused_id" + ] url = urlreverse(viewname, kwargs={"doc_id": bad_id}) # Without credentials r = self.client.get(url) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 1a3d4e5c3d..df8ed1fd61 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -70,7 +70,7 @@ from django.template.loaders.filesystem import Loader as BaseLoader from django.test.runner import DiscoverRunner from django.core.management import call_command -from django.urls import URLResolver # type: ignore +from django.urls import URLResolver, resolve, Resolver404 # type: ignore from django.template.backends.django import DjangoTemplates from django.template.backends.django import Template # type: ignore[attr-defined] from django.utils import timezone @@ -88,6 +88,26 @@ from mypy_boto3_s3.service_resource import Bucket +class UrlCoverageWarning(UserWarning): + """Warning category for URL coverage-related warnings""" + pass + + +class UninterestingPatternWarning(UrlCoverageWarning): + """Warning category for unexpected URL match patterns + + These are common, caused by tests that hit a URL that is not selected for + coverage checking. The warning is in place to help with a putative future + review of whether we're selecting the right patterns to check for coverage. + """ + pass + + +# Configure warnings for reasonable output quantity +warnings.simplefilter("once", UrlCoverageWarning) +warnings.simplefilter("ignore", UninterestingPatternWarning) + + loaded_templates: set[str] = set() visited_urls: set[str] = set() test_database_name: Optional[str] = None @@ -550,21 +570,37 @@ def ignore_pattern(regex, pattern): ) or pattern.callback == django.views.static.serve) - patterns = [(regex, re.compile(regex, re.U), obj) for regex, obj in url_patterns - if not ignore_pattern(regex, obj)] + patterns ={ + regex: obj + for regex, obj in url_patterns + if not ignore_pattern(regex, obj) + } covered = set() for url in visited_urls: - for regex, compiled, obj in patterns: - if regex not in covered and compiled.match(url[1:]): # strip leading / - covered.add(regex) - break + try: + resolved = resolve(url) # let Django resolve the URL for us + except Resolver404: + warnings.warn( + f"Unable to resolve visited URL {url}", UrlCoverageWarning + ) + continue + if resolved.route not in patterns: + warnings.warn( + f"WARNING: url resolved to an unexpected pattern (url='{url}', " + f"resolved to r'{resolved.route}'", + UninterestingPatternWarning, + ) + continue + covered.add(resolved.route) self.runner.coverage_data["url"] = { - "coverage": 1.0*len(covered)/len(patterns), - "covered": dict( (k, (o.lookup_str, k in covered)) for k,p,o in patterns ), + "coverage": 1.0 * len(covered) / len(patterns), + "covered": dict( + (k, (o.lookup_str, k in covered)) for k, o in patterns.items() + ), "format": 4, - } + } self.report_test_result("url") else: From 0e9e18efa187857a8992aee867d659d3c0276d2f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 16 Jan 2026 16:21:49 -0400 Subject: [PATCH 009/161] chore: suppress expected warnings (#10272) --- ietf/utils/test_runner.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index df8ed1fd61..a23416e87f 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -90,7 +90,11 @@ class UrlCoverageWarning(UserWarning): """Warning category for URL coverage-related warnings""" - pass + # URLs for which we don't expect patterns to match + IGNORE_URLS = ( + "/_doesnotexist/", + "/sitemap.xml.", + ) class UninterestingPatternWarning(UrlCoverageWarning): @@ -581,9 +585,10 @@ def ignore_pattern(regex, pattern): try: resolved = resolve(url) # let Django resolve the URL for us except Resolver404: - warnings.warn( - f"Unable to resolve visited URL {url}", UrlCoverageWarning - ) + if url not in UrlCoverageWarning.IGNORE_URLS: + warnings.warn( + f"Unable to resolve visited URL {url}", UrlCoverageWarning + ) continue if resolved.route not in patterns: warnings.warn( From 337a2311cbef23d46e4dc290742215de764a701c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 16 Jan 2026 14:28:12 -0600 Subject: [PATCH 010/161] feat: rsync rfc content, store in blob, rebuild references (#10255) * feat: rsync rfc content, store in blob, rebuild references * fix: isolate subprocess. Guard against missing file * fix: correct variable initialization. guard against unnecessary call * test: mock rsync task calls * fix: use list for typing rather than List * fix: string formatting * fix: generalize error string when there are no files to parse * fix: use delete_on_close with NamedTemporaryFile * fix: mtime is less distracting than m_time * fix: store the notprepped file on the fs * fix: typo * fix: fetch json, remove unneeded unlink * chore: ruff * fix: use list for typing * fix: typo * feat: bulk load rfcs into blob storage * fix: restrict the rsync_helper to rsync * test: test ietf.sync.utils * chore: honor typing choices * test: sync task tests * refactor: isolate the rsync from-file construction and test it * chore: ruff * fix: reflect current changes in older test * fix: address incorrect test assumption * chore: adhere to task naming conventions --- ietf/doc/tasks.py | 21 ++++++++++ ietf/doc/tests_utils.py | 4 +- ietf/doc/utils.py | 48 +++++++++++++++-------- ietf/settings.py | 1 + ietf/sync/tasks.py | 50 ++++++++++++++++++++++++ ietf/sync/tests.py | 82 +++++++++++++++++++++++++++++++++++++++- ietf/sync/tests_utils.py | 82 ++++++++++++++++++++++++++++++++++++++++ ietf/sync/utils.py | 69 +++++++++++++++++++++++++++++++++ 8 files changed, 338 insertions(+), 19 deletions(-) create mode 100644 ietf/sync/tests_utils.py create mode 100644 ietf/sync/utils.py diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index 4f7fe37782..02b7c2a07d 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -29,6 +29,7 @@ from .utils import ( generate_idnits2_rfc_status, generate_idnits2_rfcs_obsoleted, + rebuild_reference_relations, update_or_create_draft_bibxml_file, ensure_draft_bibxml_path_exists, investigate_fragment, @@ -128,3 +129,23 @@ def investigate_fragment_task(name_fragment: str): "name_fragment": name_fragment, "results": investigate_fragment(name_fragment), } + +@shared_task +def rebuild_reference_relations_task(doc_names: list[str]): + log.log(f"Task: Rebuilding reference relations for {doc_names}") + for doc in Document.objects.filter(name__in=doc_names, type__in=["rfc", "draft"]): + filenames = dict() + base = ( + settings.RFC_PATH + if doc.type_id == "rfc" + else settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR + ) + stem = doc.name if doc.type_id == "rfc" else f"{doc.name}-{doc.rev}" + for ext in ["xml", "txt"]: + path = Path(base) / f"{stem}.{ext}" + if path.is_file(): + filenames[ext] = str(path) + if len(filenames) > 0: + rebuild_reference_relations(doc, filenames) + else: + log.log(f"Found no content for {stem}") diff --git a/ietf/doc/tests_utils.py b/ietf/doc/tests_utils.py index ef71f6ae6e..a2784bc85e 100644 --- a/ietf/doc/tests_utils.py +++ b/ietf/doc/tests_utils.py @@ -389,13 +389,13 @@ def test_requires_txt_or_xml(self): result = rebuild_reference_relations(self.doc, {}) self.assertCountEqual(result.keys(), ['errors']) self.assertEqual(len(result['errors']), 1) - self.assertIn('No Internet-Draft text available', result['errors'][0], + self.assertIn('No file available', result['errors'][0], 'Error should be reported if no Internet-Draft file is given') result = rebuild_reference_relations(self.doc, {'md': 'cant-do-this.md'}) self.assertCountEqual(result.keys(), ['errors']) self.assertEqual(len(result['errors']), 1) - self.assertIn('No Internet-Draft text available', result['errors'][0], + self.assertIn('No file available', result['errors'][0], 'Error should be reported if no XML or plaintext file is given') @patch.object(XMLDraft, 'get_refs') diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 0715471551..42fab7d472 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -941,50 +941,66 @@ def rebuild_reference_relations(doc, filenames): filenames should be a dict mapping file ext (i.e., type) to the full path of each file. """ - if doc.type.slug != 'draft': + if doc.type.slug not in ["draft", "rfc"]: return None + + log.log(f"Rebuilding reference relations for {doc.name}") # try XML first - if 'xml' in filenames: - refs = XMLDraft(filenames['xml']).get_refs() - elif 'txt' in filenames: - filename = filenames['txt'] + if "xml" in filenames: + refs = XMLDraft(filenames["xml"]).get_refs() + elif "txt" in filenames: + filename = filenames["txt"] try: refs = draft.PlaintextDraft.from_file(filename).get_refs() except IOError as e: - return { 'errors': ["%s :%s" % (e.strerror, filename)] } + return {"errors": [f"{e.strerror}: {filename}"]} else: - return {'errors': ['No Internet-Draft text available for rebuilding reference relations. Need XML or plaintext.']} + return { + "errors": [ + "No file available for rebuilding reference relations. Need XML or plaintext." + ] + } - doc.relateddocument_set.filter(relationship__slug__in=['refnorm','refinfo','refold','refunk']).delete() + doc.relateddocument_set.filter( + relationship__slug__in=["refnorm", "refinfo", "refold", "refunk"] + ).delete() warnings = [] errors = [] unfound = set() - for ( ref, refType ) in refs.items(): + for ref, refType in refs.items(): refdoc = Document.objects.filter(name=ref) if not refdoc and re.match(r"^draft-.*-\d{2}$", ref): refdoc = Document.objects.filter(name=ref[:-3]) count = refdoc.count() if count == 0: - unfound.add( "%s" % ref ) + unfound.add("%s" % ref) continue elif count > 1: - errors.append("Too many Document objects found for %s"%ref) + errors.append("Too many Document objects found for %s" % ref) else: # Don't add references to ourself if doc != refdoc[0]: - RelatedDocument.objects.get_or_create( source=doc, target=refdoc[ 0 ], relationship=DocRelationshipName.objects.get( slug='ref%s' % refType ) ) + RelatedDocument.objects.get_or_create( + source=doc, + target=refdoc[0], + relationship=DocRelationshipName.objects.get( + slug="ref%s" % refType + ), + ) if unfound: - warnings.append('There were %d references with no matching Document'%len(unfound)) + warnings.append( + "There were %d references with no matching Document" % len(unfound) + ) ret = {} if errors: - ret['errors']=errors + ret["errors"] = errors if warnings: - ret['warnings']=warnings + ret["warnings"] = warnings if unfound: - ret['unfound']=list(unfound) + ret["unfound"] = list(unfound) return ret diff --git a/ietf/settings.py b/ietf/settings.py index fedd313ca0..fd8d86a1ab 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -811,6 +811,7 @@ def skip_unreadable_post(record): "polls", "procmaterials", "review", + "rfc", "slides", "staging", "statchg", diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index e4174d3729..fc75a056ed 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -4,6 +4,8 @@ # import datetime import io +from pathlib import Path +from tempfile import NamedTemporaryFile import requests from celery import shared_task @@ -12,9 +14,11 @@ from django.utils import timezone from ietf.doc.models import DocEvent, RelatedDocument +from ietf.doc.tasks import rebuild_reference_relations_task from ietf.sync import iana from ietf.sync import rfceditor from ietf.sync.rfceditor import MIN_QUEUE_RESULTS, parse_queue, update_drafts_from_queue +from ietf.sync.utils import build_from_file_content, load_rfcs_into_blobdb, rsync_helper from ietf.utils import log from ietf.utils.timezone import date_today @@ -65,11 +69,16 @@ def rfc_editor_index_update_task(full_index=False): if len(errata_data) < rfceditor.MIN_ERRATA_RESULTS: log.log("Not enough errata entries, only %s" % len(errata_data)) return # failed + newly_published = set() for rfc_number, changes, doc, rfc_published in rfceditor.update_docs_from_rfc_index( index_data, errata_data, skip_older_than_date=skip_date ): for c in changes: log.log("RFC%s, %s: %s" % (rfc_number, doc.name, c)) + if rfc_published: + newly_published.add(rfc_number) + if len(newly_published) > 0: + rsync_rfcs_from_rfceditor_task.delay(list(newly_published)) @shared_task @@ -222,3 +231,44 @@ def fix_subseries_docevents_task(): DocEvent.objects.filter(type="sync_from_rfc_editor", desc=desc).update( time=obsoleting_time ) + +@shared_task +def rsync_rfcs_from_rfceditor_task(rfc_numbers: list[int]): + log.log(f"Rsyncing rfcs from rfc-editor: {rfc_numbers}") + from_file = None + with NamedTemporaryFile(mode="w", delete_on_close=False) as fp: + fp.write(build_from_file_content(rfc_numbers)) + fp.close() + from_file = Path(fp.name) + rsync_helper( + [ + "-a", + "--ignore-existing", + f"--include-from={from_file}", + "--exclude=*", + "rsync.rfc-editor.org::rfcs/", + f"{settings.RFC_PATH}", + ] + ) + load_rfcs_into_blobdb(rfc_numbers) + + rebuild_reference_relations_task.delay([f"rfc{num}" for num in rfc_numbers]) + + +@shared_task +def load_rfcs_into_blobdb_task(start: int, end: int): + """Move file content for rfcs from rfc{start} to rfc{end} inclusive + + As this is expected to be removed once the blobdb is populated, it + will truncate its work to a coded max end. + This will not overwrite any existing blob content, and will only + log a small complaint if asked to load a non-exsiting RFC. + """ + # Protect us from ourselves + if end < start: + return + if start < 1: + start = 1 + if end > 11000: # Arbitrarily chosen + end = 11000 + load_rfcs_into_blobdb(list(range(start, end + 1))) diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index 888920ae9d..bcc87a43aa 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -889,8 +889,9 @@ class TaskTests(TestCase): @mock.patch("ietf.sync.tasks.rfceditor.update_docs_from_rfc_index") @mock.patch("ietf.sync.tasks.rfceditor.parse_index") @mock.patch("ietf.sync.tasks.requests.get") + @mock.patch("ietf.sync.tasks.rsync_rfcs_from_rfceditor_task.delay") def test_rfc_editor_index_update_task( - self, requests_get_mock, parse_index_mock, update_docs_mock + self, rsync_task_mock, requests_get_mock, parse_index_mock, update_docs_mock ) -> None: # the annotation here prevents mypy from complaining about annotation-unchecked """rfc_editor_index_update_task calls helpers correctly @@ -922,6 +923,7 @@ def json(self): rfc = RfcFactory() # Test with full_index = False + rsync_task_mock.return_value = None requests_get_mock.side_effect = (index_response, errata_response) # will step through these parse_index_mock.return_value = MockIndexData(length=rfceditor.MIN_INDEX_RESULTS) update_docs_mock.return_value = ( @@ -947,10 +949,13 @@ def json(self): ) self.assertIsNotNone(update_docs_kwargs["skip_older_than_date"]) + self.assertFalse(rsync_task_mock.called) + # Test again with full_index = True requests_get_mock.reset_mock() parse_index_mock.reset_mock() update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() requests_get_mock.side_effect = (index_response, errata_response) # will step through these tasks.rfc_editor_index_update_task(full_index=True) @@ -971,40 +976,67 @@ def json(self): ) self.assertIsNone(update_docs_kwargs["skip_older_than_date"]) + self.assertFalse(rsync_task_mock.called) + + # Test again where the index would cause a new RFC to come into existance + requests_get_mock.reset_mock() + parse_index_mock.reset_mock() + update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() + requests_get_mock.side_effect = ( + index_response, + errata_response, + ) # will step through these + update_docs_mock.return_value = ( + (rfc.rfc_number, ("something changed",), rfc, True), + ) + tasks.rfc_editor_index_update_task(full_index=True) + self.assertTrue(rsync_task_mock.called) + rsync_task_args, rsync_task_kwargs = rsync_task_mock.call_args + self.assertEqual((([rfc.rfc_number],), {}), (rsync_task_args, rsync_task_kwargs)) + # Test error handling requests_get_mock.reset_mock() parse_index_mock.reset_mock() update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() requests_get_mock.side_effect = requests.Timeout # timeout on every get() tasks.rfc_editor_index_update_task(full_index=False) self.assertFalse(parse_index_mock.called) self.assertFalse(update_docs_mock.called) + self.assertFalse(rsync_task_mock.called) requests_get_mock.reset_mock() parse_index_mock.reset_mock() update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() requests_get_mock.side_effect = [index_response, requests.Timeout] # timeout second get() tasks.rfc_editor_index_update_task(full_index=False) self.assertFalse(update_docs_mock.called) + self.assertFalse(rsync_task_mock.called) requests_get_mock.reset_mock() parse_index_mock.reset_mock() update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() requests_get_mock.side_effect = [index_response, errata_response] # feed in an index that is too short parse_index_mock.return_value = MockIndexData(length=rfceditor.MIN_INDEX_RESULTS - 1) tasks.rfc_editor_index_update_task(full_index=False) self.assertTrue(parse_index_mock.called) self.assertFalse(update_docs_mock.called) + self.assertFalse(rsync_task_mock.called) requests_get_mock.reset_mock() parse_index_mock.reset_mock() update_docs_mock.reset_mock() + rsync_task_mock.reset_mock() requests_get_mock.side_effect = [index_response, errata_response] errata_response.json_length = rfceditor.MIN_ERRATA_RESULTS - 1 # too short parse_index_mock.return_value = MockIndexData(length=rfceditor.MIN_INDEX_RESULTS) tasks.rfc_editor_index_update_task(full_index=False) self.assertFalse(update_docs_mock.called) + self.assertFalse(rsync_task_mock.called) @override_settings(RFC_EDITOR_QUEUE_URL="https://rfc-editor.example.com/queue/") @mock.patch("ietf.sync.tasks.update_drafts_from_queue") @@ -1134,3 +1166,51 @@ def test_iana_protocols_update_task( self.assertTrue(requests_get_mock.called) self.assertFalse(parse_protocols_mock.called) self.assertFalse(update_rfc_log_mock.called) + + @mock.patch("ietf.sync.tasks.rsync_helper") + @mock.patch("ietf.sync.tasks.load_rfcs_into_blobdb") + @mock.patch("ietf.sync.tasks.rebuild_reference_relations_task.delay") + def test_rsync_rfcs_from_rfceditor_task( + self, + rebuild_relations_mock, + load_blobs_mock, + rsync_helper_mock, + ): + tasks.rsync_rfcs_from_rfceditor_task([12345, 54321]) + self.assertTrue(rsync_helper_mock.called) + self.assertTrue(load_blobs_mock.called) + load_blobs_args, load_blobs_kwargs = load_blobs_mock.call_args + self.assertEqual(load_blobs_args, ([12345, 54321],)) + self.assertEqual(load_blobs_kwargs, {}) + self.assertTrue(rebuild_relations_mock.called) + rebuild_args, rebuild_kwargs = rebuild_relations_mock.call_args + self.assertEqual(rebuild_args, (["rfc12345", "rfc54321"],)) + self.assertEqual(rebuild_kwargs, {}) + + @mock.patch("ietf.sync.tasks.load_rfcs_into_blobdb") + def test_load_rfcs_into_blobdb_task( + self, + load_blobs_mock, + ): + tasks.load_rfcs_into_blobdb_task(5, 3) + self.assertFalse(load_blobs_mock.called) + load_blobs_mock.reset_mock() + tasks.load_rfcs_into_blobdb_task(-1, 1) + self.assertTrue(load_blobs_mock.called) + mock_args, mock_kwargs = load_blobs_mock.call_args + self.assertEqual(mock_args, ([1],)) + self.assertEqual(mock_kwargs, {}) + load_blobs_mock.reset_mock() + tasks.load_rfcs_into_blobdb_task(10999, 50000) + self.assertTrue(load_blobs_mock.called) + mock_args, mock_kwargs = load_blobs_mock.call_args + self.assertEqual(mock_args, ([10999, 11000],)) + self.assertEqual(mock_kwargs, {}) + load_blobs_mock.reset_mock() + tasks.load_rfcs_into_blobdb_task(3261, 3263) + self.assertTrue(load_blobs_mock.called) + mock_args, mock_kwargs = load_blobs_mock.call_args + self.assertEqual(mock_args, ([3261, 3262, 3263],)) + self.assertEqual(mock_kwargs, {}) + + diff --git a/ietf/sync/tests_utils.py b/ietf/sync/tests_utils.py new file mode 100644 index 0000000000..eb4b4ddf74 --- /dev/null +++ b/ietf/sync/tests_utils.py @@ -0,0 +1,82 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from pathlib import Path +from tempfile import TemporaryDirectory + +from django.test import override_settings +from ietf import settings +from ietf.doc.storage_utils import exists_in_storage, retrieve_str +from ietf.sync.utils import build_from_file_content, load_rfcs_into_blobdb, rsync_helper +from ietf.utils.test_utils import TestCase + + +class RsyncHelperTests(TestCase): + def test_rsync_helper(self): + with ( + TemporaryDirectory() as source_dir, + TemporaryDirectory() as dest_dir, + ): + with (Path(source_dir) / "canary.txt").open("w") as canary_source_file: + canary_source_file.write("chirp") + rsync_helper( + [ + "-a", + f"{source_dir}/", + f"{dest_dir}/", + ] + ) + with (Path(dest_dir) / "canary.txt").open("r") as canary_dest_file: + chirp = canary_dest_file.read() + self.assertEqual(chirp, "chirp") + + def test_build_from_file_content(self): + content = build_from_file_content([12345, 54321]) + self.assertEqual( + content, + """prerelease/ +rfc12345.txt +rfc12345.html +rfc12345.xml +rfc12345.pdf +rfc12345.ps +rfc12345.json +prerelease/rfc12345.notprepped.xml +rfc54321.txt +rfc54321.html +rfc54321.xml +rfc54321.pdf +rfc54321.ps +rfc54321.json +prerelease/rfc54321.notprepped.xml +""", + ) + + +class RfcBlobUploadTests(TestCase): + def test_load_rfcs_into_blobdb(self): + with TemporaryDirectory() as faux_rfc_path: + with override_settings(RFC_PATH=faux_rfc_path): + rfc_path = Path(faux_rfc_path) + (rfc_path / "prerelease").mkdir() + for num in [12345, 54321]: + for ext in settings.RFC_FILE_TYPES + ("json",): + with (rfc_path / f"rfc{num}.{ext}").open("w") as f: + f.write(ext) + with (rfc_path / "rfc{num}.bogon").open("w") as f: + f.write("bogon") + with (rfc_path / "prerelease" / f"rfc{num}.notprepped.xml").open( + "w" + ) as f: + f.write("notprepped") + load_rfcs_into_blobdb([12345, 54321]) + for num in [12345, 54321]: + for ext in settings.RFC_FILE_TYPES + ("json",): + self.assertEqual( + retrieve_str("rfc", f"{ext}/rfc{num}.{ext}"), + ext, + ) + self.assertFalse(exists_in_storage("rfc", f"bogon/rfc{num}.bogon")) + self.assertEqual( + retrieve_str("rfc", f"notprepped/rfc{num}.notprepped.xml"), + "notprepped", + ) diff --git a/ietf/sync/utils.py b/ietf/sync/utils.py new file mode 100644 index 0000000000..5b5f8ff559 --- /dev/null +++ b/ietf/sync/utils.py @@ -0,0 +1,69 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import datetime +import subprocess + +from pathlib import Path + +from django.conf import settings + +from ietf.utils import log +from ietf.doc.storage_utils import AlreadyExistsError, store_bytes + + +def rsync_helper(subprocess_arg_array: list[str]): + subprocess.run(["/usr/bin/rsync"]+subprocess_arg_array) + +def build_from_file_content(rfc_numbers: list[int]) -> str: + types_to_sync = settings.RFC_FILE_TYPES + ("json",) + lines = [] + lines.append("prerelease/") + for num in rfc_numbers: + for ext in types_to_sync: + lines.append(f"rfc{num}.{ext}") + lines.append(f"prerelease/rfc{num}.notprepped.xml") + return "\n".join(lines)+"\n" + +def load_rfcs_into_blobdb(numbers: list[int]): + types_to_load = settings.RFC_FILE_TYPES + ("json",) + for num in numbers: + for ext in types_to_load: + fs_path = Path(settings.RFC_PATH) / f"rfc{num}.{ext}" + if fs_path.is_file(): + with fs_path.open("rb") as f: + bytes = f.read() + mtime = fs_path.stat().st_mtime + try: + store_bytes( + kind="rfc", + name=f"{ext}/rfc{num}.{ext}", + content=bytes, + allow_overwrite=False, # Intentionally not allowing overwrite. + doc_name=f"rfc{num}", + doc_rev=None, + # Not setting content_type + mtime=datetime.datetime.fromtimestamp(mtime, tz=datetime.UTC), + ) + except AlreadyExistsError as e: + log.log(str(e)) + + # store the not-prepped xml + name = f"rfc{num}.notprepped.xml" + source = Path(settings.RFC_PATH) / "prerelease" / name + if source.is_file(): + with open(source, "rb") as f: + bytes = f.read() + mtime = source.stat().st_mtime + try: + store_bytes( + kind="rfc", + name=f"notprepped/{name}", + content=bytes, + allow_overwrite=False, # Intentionally not allowing overwrite. + doc_name=f"rfc{num}", + doc_rev=None, + # Not setting content_type + mtime=datetime.datetime.fromtimestamp(mtime, tz=datetime.UTC), + ) + except AlreadyExistsError as e: + log.log(str(e)) From 37888b36b3f7e2262b857363ff7b3b4486dbcbe2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 16 Jan 2026 16:28:53 -0400 Subject: [PATCH 011/161] feat: store blobs+set mtime in RFC publish API (#10260) * feat: set mtime for RFC pub files * chore: add rfc storage * refactor: destination helper is fs-specific * feat: RFC files->blobstore in publish API * test: test blob writing * chore: remove completed todo comment --- ietf/api/serializers_rpc.py | 7 +++++ ietf/api/tests_views_rpc.py | 58 +++++++++++++++++++++++++++++++++---- ietf/api/views_rpc.py | 57 ++++++++++++++++++++++++++++++++---- 3 files changed, 111 insertions(+), 11 deletions(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 2223f04aeb..f2e735be7a 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -5,6 +5,7 @@ from django.db import transaction from django.urls import reverse as urlreverse +from django.utils import timezone from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field from rest_framework import serializers @@ -571,6 +572,12 @@ class RfcFileSerializer(serializers.Serializer): "file types, but filenames are otherwise ignored." ), ) + mtime = serializers.DateTimeField( + required=False, + default=timezone.now, + default_timezone=datetime.UTC, + help_text="Modification timestamp to apply to uploaded files", + ) replace = serializers.BooleanField( required=False, default=False, diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index ece2af1b85..ecb50ee76c 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -10,6 +10,7 @@ from django.test.utils import override_settings from django.urls import reverse as urlreverse +from ietf.blobdb.models import Blob from ietf.doc.factories import IndividualDraftFactory, WgDraftFactory, WgRfcFactory from ietf.doc.models import RelatedDocument, Document from ietf.group.factories import RoleFactory, GroupFactory @@ -259,6 +260,31 @@ def _valid_post_data(): ) self.assertEqual(r.status_code, 400) + # Put a file in the way. Post should fail because replace = False + file_in_the_way = (rfc_path / f"rfc{unused_rfc_number}.txt") + file_in_the_way.touch() + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + file_in_the_way.unlink() + + # Put a blob in the way. Post should fail because replace = False + blob_in_the_way = Blob.objects.create( + bucket="rfc", name=f"txt/rfc{unused_rfc_number}.txt", content=b"" + ) + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + blob_in_the_way.delete() + # valid post r = self.client.post( url, @@ -267,21 +293,41 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 200) - for suffix in [".xml", ".txt", ".html", ".pdf", ".json"]: + for extension in ["xml", "txt", "html", "pdf", "json"]: + filename = f"rfc{unused_rfc_number}.{extension}" self.assertEqual( - (rfc_path / f"rfc{unused_rfc_number}") - .with_suffix(suffix) + (rfc_path / filename) .read_text(), - f"This is {suffix}", - f"{suffix} file should contain the expected content", + f"This is .{extension}", + f"{extension} file should contain the expected content", + ) + self.assertEqual( + bytes( + Blob.objects.get( + bucket="rfc", name=f"{extension}/{filename}" + ).content + ), + f"This is .{extension}".encode("utf-8"), + f"{extension} blob should contain the expected content", ) + # special case for notprepped + notprepped_fn = f"rfc{unused_rfc_number}.notprepped.xml" self.assertEqual( ( - rfc_path / "prerelease" / f"rfc{unused_rfc_number}.notprepped.xml" + rfc_path / "prerelease" / notprepped_fn ).read_text(), "This is .notprepped.xml", ".notprepped.xml file should contain the expected content", ) + self.assertEqual( + bytes( + Blob.objects.get( + bucket="rfc", name=f"notprepped/{notprepped_fn}" + ).content + ), + b"This is .notprepped.xml", + ".notprepped.xml blob should contain the expected content", + ) # re-post with replace = False should now fail r = self.client.post( diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index fce174ab72..542836a857 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -1,4 +1,5 @@ # Copyright The IETF Trust 2023-2026, All Rights Reserved +import os import shutil from pathlib import Path from tempfile import TemporaryDirectory @@ -35,6 +36,7 @@ ) from ietf.doc.models import Document, DocHistory, RfcAuthor from ietf.doc.serializers import RfcAuthorSerializer +from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage from ietf.person.models import Email, Person @@ -366,8 +368,8 @@ class RfcPubFilesView(APIView): api_key_endpoint = "ietf.api.views_rpc" parser_classes = [parsers.MultiPartParser] - def _destination(self, filename: str | Path) -> Path: - """Destination for an uploaded RFC file + def _fs_destination(self, filename: str | Path) -> Path: + """Destination for an uploaded RFC file in the filesystem Strips any path components in filename and returns an absolute Path. """ @@ -378,6 +380,23 @@ def _destination(self, filename: str | Path) -> Path: return rfc_path / "prerelease" / filename.name return rfc_path / filename.name + def _blob_destination(self, filename: str | Path) -> str: + """Destination name for an uploaded RFC file in the blob store + + Strips any path components in filename and returns an absolute Path. + """ + filename = Path(filename) # could potentially have directory components + extension = "".join(filename.suffixes) + if extension == ".notprepped.xml": + file_type = "notprepped" + elif extension[0] == ".": + file_type = extension[1:] + else: + raise serializers.ValidationError( + f"Extension does not begin with '.'!? ({filename})", + ) + return f"{file_type}/{filename.name}" + @extend_schema( operation_id="upload_rfc_files", summary="Upload files for a published RFC", @@ -394,10 +413,17 @@ def post(self, request): uploaded_files = serializer.validated_data["contents"] # list[UploadedFile] replace = serializer.validated_data["replace"] dest_stem = f"rfc{rfc.rfc_number}" + mtime = serializer.validated_data["mtime"] + mtimestamp = mtime.timestamp() + blob_kind = "rfc" # List of files that might exist for an RFC possible_rfc_files = [ - self._destination(dest_stem + ext) + self._fs_destination(dest_stem + ext) + for ext in serializer.allowed_extensions + ] + possible_rfc_blobs = [ + self._blob_destination(dest_stem + ext) for ext in serializer.allowed_extensions ] if not replace: @@ -408,6 +434,14 @@ def post(self, request): "File(s) already exist for this RFC", code="files-exist", ) + for possible_existing_blob in possible_rfc_blobs: + if exists_in_storage( + kind=blob_kind, name=possible_existing_blob + ): + raise Conflict( + "Blob(s) already exist for this RFC", + code="blobs-exist", + ) with TemporaryDirectory() as tempdir: # Save files in a temporary directory. Use the uploaded filename @@ -421,14 +455,27 @@ def post(self, request): with tempfile_path.open("wb") as dest: for chunk in upfile.chunks(): dest.write(chunk) + os.utime(tempfile_path, (mtimestamp, mtimestamp)) files_to_move.append(tempfile_path) # copy files to final location, removing any existing ones first if the # remove flag was set if replace: for possible_existing_file in possible_rfc_files: possible_existing_file.unlink(missing_ok=True) + for possible_existing_blob in possible_rfc_blobs: + remove_from_storage( + blob_kind, possible_existing_blob, warn_if_missing=False + ) for ftm in files_to_move: - shutil.move(ftm, self._destination(ftm)) - # todo store in blob storage as well (need a bucket for RFCs) + with ftm.open("rb") as f: + store_file( + kind=blob_kind, + name=self._blob_destination(ftm), + file=f, + doc_name=rfc.name, + doc_rev=rfc.rev, # expect None, but match whatever it is + mtime=mtime, + ) + shutil.move(ftm, self._fs_destination(ftm)) return Response(NotificationAckSerializer().data) From 4aeb36e01803cf1fc93cc931aa53438417a75900 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 16 Jan 2026 16:46:48 -0400 Subject: [PATCH 012/161] chore: order is_auth'd middleware correctly (#10225) Needs to be earlier than ConditionalGetMiddleware or the flag will not be set for 304 responses. --- ietf/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/settings.py b/ietf/settings.py index fd8d86a1ab..1cda79e21b 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -454,6 +454,7 @@ def skip_unreadable_post(record): "django.contrib.sessions.middleware.SessionMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", + "ietf.middleware.is_authenticated_header_middleware", "django.middleware.http.ConditionalGetMiddleware", "simple_history.middleware.HistoryRequestMiddleware", # comment in this to get logging of SQL insert and update statements: @@ -464,7 +465,6 @@ def skip_unreadable_post(record): "django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.security.SecurityMiddleware", "ietf.middleware.unicode_nfkc_normalization_middleware", - "ietf.middleware.is_authenticated_header_middleware", ] ROOT_URLCONF = 'ietf.urls' From 3ff0154ce5044802c586961c8216e74393bbf6f6 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 16 Jan 2026 16:48:24 -0400 Subject: [PATCH 013/161] feat: include tickets in RegistrationResource (#10223) --- ietf/meeting/resources.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/resources.py b/ietf/meeting/resources.py index 88562a88fe..490b75f925 100644 --- a/ietf/meeting/resources.py +++ b/ietf/meeting/resources.py @@ -21,7 +21,13 @@ Attended, Registration, RegistrationTicket) -from ietf.name.resources import MeetingTypeNameResource +from ietf.name.resources import ( + AttendanceTypeNameResource, + MeetingTypeNameResource, + RegistrationTicketTypeNameResource, +) + + class MeetingResource(ModelResource): type = ToOneField(MeetingTypeNameResource, 'type') schedule = ToOneField('ietf.meeting.resources.ScheduleResource', 'schedule', null=True) @@ -437,11 +443,16 @@ class Meta: } api.meeting.register(AttendedResource()) -from ietf.meeting.resources import MeetingResource from ietf.person.resources import PersonResource class RegistrationResource(ModelResource): meeting = ToOneField(MeetingResource, 'meeting') person = ToOneField(PersonResource, 'person', null=True) + tickets = ToManyField( + 'ietf.meeting.resources.RegistrationTicketResource', + 'tickets', + full=True, + ) + class Meta: queryset = Registration.objects.all() serializer = api.Serializer() @@ -456,13 +467,17 @@ class Meta: "country_code": ALL, "email": ALL, "attended": ALL, + "checkedin": ALL, "meeting": ALL_WITH_RELATIONS, "person": ALL_WITH_RELATIONS, + "tickets": ALL_WITH_RELATIONS, } api.meeting.register(RegistrationResource()) class RegistrationTicketResource(ModelResource): registration = ToOneField(RegistrationResource, 'registration') + attendance_type = ToOneField(AttendanceTypeNameResource, 'attendance_type') + ticket_type = ToOneField(RegistrationTicketTypeNameResource, 'ticket_type') class Meta: queryset = RegistrationTicket.objects.all() serializer = api.Serializer() @@ -471,8 +486,8 @@ class Meta: ordering = ['id', ] filtering = { "id": ALL, - "ticket_type": ALL, - "attendance_type": ALL, + "ticket_type": ALL_WITH_RELATIONS, + "attendance_type": ALL_WITH_RELATIONS, "registration": ALL_WITH_RELATIONS, } api.meeting.register(RegistrationTicketResource()) From d53ceff5d408c0fc9daab4ebe7144e2507309fbf Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 21 Jan 2026 11:43:46 -0400 Subject: [PATCH 014/161] chore(dev): adjust dev settings for RFC file upload (#10287) * chore(dev): disable nginx max_body_size * chore(dev): create missing dest dir Create the "prerelease" directory, if needed, when accepting RFC publication files. Gated not to impact production, where this directory should already exist. --- docker/configs/nginx-proxy.conf | 1 + ietf/api/views_rpc.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docker/configs/nginx-proxy.conf b/docker/configs/nginx-proxy.conf index 3068cc71d7..5a9ae31ad0 100644 --- a/docker/configs/nginx-proxy.conf +++ b/docker/configs/nginx-proxy.conf @@ -4,6 +4,7 @@ server { proxy_read_timeout 1d; proxy_send_timeout 1d; + client_max_body_size 0; # disable checking root /var/www/html; index index.html index.htm index.nginx-debian.html; diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 542836a857..ea9c6348ca 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -476,6 +476,12 @@ def post(self, request): doc_rev=rfc.rev, # expect None, but match whatever it is mtime=mtime, ) - shutil.move(ftm, self._fs_destination(ftm)) + destination = self._fs_destination(ftm) + if ( + settings.SERVER_MODE != "production" + and not destination.parent.exists() + ): + destination.parent.mkdir() + shutil.move(ftm, destination) return Response(NotificationAckSerializer().data) From 50653e961556cf803b43707fad17c51077c68870 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 21 Jan 2026 11:44:49 -0400 Subject: [PATCH 015/161] fix: add Blob.__str__() (#10284) Keeps the model in sync with mailarchive's verison --- ietf/blobdb/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ietf/blobdb/models.py b/ietf/blobdb/models.py index fa7831f203..27325ada5d 100644 --- a/ietf/blobdb/models.py +++ b/ietf/blobdb/models.py @@ -64,6 +64,9 @@ class Meta: ), ] + def __str__(self): + return f"{self.bucket}:{self.name}" + def save(self, **kwargs): db = get_blobdb() with transaction.atomic(using=db): From 4ff48057e8dfc68d467effa396854dd7fdbede9a Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 21 Jan 2026 09:50:02 -0600 Subject: [PATCH 016/161] fix: restrict rfc bulkload to those with a Document object (#10289) * fix: restrict rfc bulkload to those with a Document object * fix: only query Document once * test: update test to match check for existing Document --- ietf/sync/tests_utils.py | 2 ++ ietf/sync/utils.py | 64 ++++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/ietf/sync/tests_utils.py b/ietf/sync/tests_utils.py index eb4b4ddf74..bb4a859e30 100644 --- a/ietf/sync/tests_utils.py +++ b/ietf/sync/tests_utils.py @@ -5,6 +5,7 @@ from django.test import override_settings from ietf import settings +from ietf.doc.factories import RfcFactory from ietf.doc.storage_utils import exists_in_storage, retrieve_str from ietf.sync.utils import build_from_file_content, load_rfcs_into_blobdb, rsync_helper from ietf.utils.test_utils import TestCase @@ -59,6 +60,7 @@ def test_load_rfcs_into_blobdb(self): rfc_path = Path(faux_rfc_path) (rfc_path / "prerelease").mkdir() for num in [12345, 54321]: + RfcFactory(rfc_number=num) for ext in settings.RFC_FILE_TYPES + ("json",): with (rfc_path / f"rfc{num}.{ext}").open("w") as f: f.write(ext) diff --git a/ietf/sync/utils.py b/ietf/sync/utils.py index 5b5f8ff559..b3bdd8d206 100644 --- a/ietf/sync/utils.py +++ b/ietf/sync/utils.py @@ -6,8 +6,8 @@ from pathlib import Path from django.conf import settings - from ietf.utils import log +from ietf.doc.models import Document from ietf.doc.storage_utils import AlreadyExistsError, store_bytes @@ -26,17 +26,42 @@ def build_from_file_content(rfc_numbers: list[int]) -> str: def load_rfcs_into_blobdb(numbers: list[int]): types_to_load = settings.RFC_FILE_TYPES + ("json",) + rfc_docs = Document.objects.filter(type="rfc", rfc_number__in=numbers).values_list("rfc_number", flat=True) for num in numbers: - for ext in types_to_load: - fs_path = Path(settings.RFC_PATH) / f"rfc{num}.{ext}" - if fs_path.is_file(): - with fs_path.open("rb") as f: + if num in rfc_docs: + for ext in types_to_load: + fs_path = Path(settings.RFC_PATH) / f"rfc{num}.{ext}" + if fs_path.is_file(): + with fs_path.open("rb") as f: + bytes = f.read() + mtime = fs_path.stat().st_mtime + try: + store_bytes( + kind="rfc", + name=f"{ext}/rfc{num}.{ext}", + content=bytes, + allow_overwrite=False, # Intentionally not allowing overwrite. + doc_name=f"rfc{num}", + doc_rev=None, + # Not setting content_type + mtime=datetime.datetime.fromtimestamp( + mtime, tz=datetime.UTC + ), + ) + except AlreadyExistsError as e: + log.log(str(e)) + + # store the not-prepped xml + name = f"rfc{num}.notprepped.xml" + source = Path(settings.RFC_PATH) / "prerelease" / name + if source.is_file(): + with open(source, "rb") as f: bytes = f.read() - mtime = fs_path.stat().st_mtime + mtime = source.stat().st_mtime try: store_bytes( kind="rfc", - name=f"{ext}/rfc{num}.{ext}", + name=f"notprepped/{name}", content=bytes, allow_overwrite=False, # Intentionally not allowing overwrite. doc_name=f"rfc{num}", @@ -46,24 +71,7 @@ def load_rfcs_into_blobdb(numbers: list[int]): ) except AlreadyExistsError as e: log.log(str(e)) - - # store the not-prepped xml - name = f"rfc{num}.notprepped.xml" - source = Path(settings.RFC_PATH) / "prerelease" / name - if source.is_file(): - with open(source, "rb") as f: - bytes = f.read() - mtime = source.stat().st_mtime - try: - store_bytes( - kind="rfc", - name=f"notprepped/{name}", - content=bytes, - allow_overwrite=False, # Intentionally not allowing overwrite. - doc_name=f"rfc{num}", - doc_rev=None, - # Not setting content_type - mtime=datetime.datetime.fromtimestamp(mtime, tz=datetime.UTC), - ) - except AlreadyExistsError as e: - log.log(str(e)) + else: + log.log( + f"Skipping loading rfc{num} into blobdb as no matching Document exists" + ) From a28594eecbe5000950ccd6a12bcadd5c61018183 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Wed, 21 Jan 2026 09:55:37 -0800 Subject: [PATCH 017/161] feat: add option to email users about duplicate accounts. Fixes #8174. (#9850) * feat: add option to email users about duplicate accounts. Fixes #8174. * fix: split person merge into two views * fix: use form for validation * fix: update text of merge request email * fix: update copyright date * fix: use custom field classes in MergeRequestForm --- ietf/person/forms.py | 21 ++++- ietf/person/tests.py | 34 ++++++-- ietf/person/urls.py | 4 + ietf/person/views.py | 86 ++++++++++++++++--- ietf/templates/person/merge.html | 36 +------- ietf/templates/person/merge_request_email.txt | 23 +++++ ietf/templates/person/merge_submit.html | 57 ++++++++++++ ietf/templates/person/send_merge_request.html | 20 +++++ ietf/utils/fields.py | 23 ++++- 9 files changed, 254 insertions(+), 50 deletions(-) create mode 100644 ietf/templates/person/merge_request_email.txt create mode 100644 ietf/templates/person/merge_submit.html create mode 100644 ietf/templates/person/send_merge_request.html diff --git a/ietf/person/forms.py b/ietf/person/forms.py index 81ee362561..7eef8aa17b 100644 --- a/ietf/person/forms.py +++ b/ietf/person/forms.py @@ -1,15 +1,26 @@ -# Copyright The IETF Trust 2018-2020, All Rights Reserved +# Copyright The IETF Trust 2018-2025, All Rights Reserved # -*- coding: utf-8 -*- from django import forms + from ietf.person.models import Person +from ietf.utils.fields import MultiEmailField, NameAddrEmailField class MergeForm(forms.Form): source = forms.IntegerField(label='Source Person ID') target = forms.IntegerField(label='Target Person ID') + def __init__(self, *args, **kwargs): + self.readonly = False + if 'readonly' in kwargs: + self.readonly = kwargs.pop('readonly') + super().__init__(*args, **kwargs) + if self.readonly: + self.fields['source'].widget.attrs['readonly'] = True + self.fields['target'].widget.attrs['readonly'] = True + def clean_source(self): return self.get_person(self.cleaned_data['source']) @@ -21,3 +32,11 @@ def get_person(self, pk): return Person.objects.get(pk=pk) except Person.DoesNotExist: raise forms.ValidationError("ID does not exist") + + +class MergeRequestForm(forms.Form): + to = MultiEmailField() + frm = NameAddrEmailField() + reply_to = MultiEmailField() + subject = forms.CharField() + body = forms.CharField(widget=forms.Textarea) diff --git a/ietf/person/tests.py b/ietf/person/tests.py index 6326362fd8..f55d8b8a34 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2014-2022, All Rights Reserved +# Copyright The IETF Trust 2014-2025, All Rights Reserved # -*- coding: utf-8 -*- @@ -10,7 +10,6 @@ from PIL import Image from pyquery import PyQuery - from django.core.exceptions import ValidationError from django.http import HttpRequest from django.test import override_settings @@ -23,6 +22,7 @@ from ietf.community.models import CommunityList from ietf.group.factories import RoleFactory from ietf.group.models import Group +from ietf.message.models import Message from ietf.nomcom.models import NomCom from ietf.nomcom.test_data import nomcom_test_data from ietf.nomcom.factories import NomComFactory, NomineeFactory, NominationFactory, FeedbackFactory, PositionFactory @@ -208,13 +208,13 @@ def test_merge(self): def test_merge_with_params(self): p1 = get_person_no_user() p2 = PersonFactory() - url = urlreverse("ietf.person.views.merge") + "?source={}&target={}".format(p1.pk, p2.pk) + url = urlreverse("ietf.person.views.merge_submit") + "?source={}&target={}".format(p1.pk, p2.pk) login_testing_unauthorized(self, "secretary", url) r = self.client.get(url) self.assertContains(r, 'retaining login', status_code=200) def test_merge_with_params_bad_id(self): - url = urlreverse("ietf.person.views.merge") + "?source=1000&target=2000" + url = urlreverse("ietf.person.views.merge_submit") + "?source=1000&target=2000" login_testing_unauthorized(self, "secretary", url) r = self.client.get(url) self.assertContains(r, 'ID does not exist', status_code=200) @@ -222,7 +222,7 @@ def test_merge_with_params_bad_id(self): def test_merge_post(self): p1 = get_person_no_user() p2 = PersonFactory() - url = urlreverse("ietf.person.views.merge") + url = urlreverse("ietf.person.views.merge_submit") expected_url = urlreverse("ietf.secr.rolodex.views.view", kwargs={'id': p2.pk}) login_testing_unauthorized(self, "secretary", url) data = {'source': p1.pk, 'target': p2.pk} @@ -451,6 +451,30 @@ def test_dots(self): ncchair = RoleFactory(group__acronym='nomcom2020',group__type_id='nomcom',name_id='chair').person self.assertEqual(get_dots(ncchair),['nomcom']) + def test_send_merge_request(self): + empty_outbox() + message_count_before = Message.objects.count() + source = PersonFactory() + target = PersonFactory() + url = urlreverse('ietf.person.views.send_merge_request') + url = url + f'?source={source.pk}&target={target.pk}' + login_testing_unauthorized(self, 'secretary', url) + r = self.client.get(url) + initial = r.context['form'].initial + subject = 'Action requested: Merging possible duplicate IETF Datatracker accounts' + self.assertEqual(initial['to'], ', '.join([source.user.username, target.user.username])) + self.assertEqual(initial['subject'], subject) + self.assertEqual(initial['reply_to'], 'support@ietf.org') + self.assertEqual(r.status_code, 200) + r = self.client.post(url, data=initial) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 1) + self.assertIn(source.user.username, outbox[0]['To']) + message_count_after = Message.objects.count() + message = Message.objects.last() + self.assertEqual(message_count_after, message_count_before + 1) + self.assertIn(source.user.username, message.to) + class TaskTests(TestCase): @mock.patch("ietf.person.tasks.log.log") diff --git a/ietf/person/urls.py b/ietf/person/urls.py index 867646fe39..f3eccd04b7 100644 --- a/ietf/person/urls.py +++ b/ietf/person/urls.py @@ -1,8 +1,12 @@ +# Copyright The IETF Trust 2009-2025, All Rights Reserved +# -*- coding: utf-8 -*- from ietf.person import views, ajax from ietf.utils.urls import url urlpatterns = [ url(r'^merge/?$', views.merge), + url(r'^merge/submit/?$', views.merge_submit), + url(r'^merge/send_request/?$', views.send_merge_request), url(r'^search/(?P(person|email))/$', views.ajax_select2_search), url(r'^(?P[0-9]+)/email.json$', ajax.person_email_json), url(r'^(?P[^/]+)$', views.profile), diff --git a/ietf/person/views.py b/ietf/person/views.py index a37b164311..d0b5912431 100644 --- a/ietf/person/views.py +++ b/ietf/person/views.py @@ -1,14 +1,16 @@ -# Copyright The IETF Trust 2012-2020, All Rights Reserved +# Copyright The IETF Trust 2012-2025, All Rights Reserved # -*- coding: utf-8 -*- from io import StringIO, BytesIO from PIL import Image +from django.conf import settings from django.contrib import messages from django.db.models import Q from django.http import HttpResponse, Http404 from django.shortcuts import render, redirect +from django.template.loader import render_to_string from django.utils import timezone import debug # pyflakes:ignore @@ -16,8 +18,9 @@ from ietf.ietfauth.utils import role_required from ietf.person.models import Email, Person from ietf.person.fields import select2_id_name_json -from ietf.person.forms import MergeForm +from ietf.person.forms import MergeForm, MergeRequestForm from ietf.person.utils import handle_users, merge_persons, lookup_persons +from ietf.utils.mail import send_mail_text def ajax_select2_search(request, model_name): @@ -98,16 +101,19 @@ def photo(request, email_or_name): @role_required("Secretariat") def merge(request): form = MergeForm() - method = 'get' + return render(request, 'person/merge.html', {'form': form}) + + +@role_required("Secretariat") +def merge_submit(request): change_details = '' warn_messages = [] source = None target = None if request.method == "GET": - form = MergeForm() if request.GET: - form = MergeForm(request.GET) + form = MergeForm(request.GET, readonly=True) if form.is_valid(): source = form.cleaned_data.get('source') target = form.cleaned_data.get('target') @@ -116,12 +122,9 @@ def merge(request): if source.user.last_login and target.user.last_login and source.user.last_login > target.user.last_login: warn_messages.append('WARNING: The most recently used login is being deleted!') change_details = handle_users(source, target, check_only=True) - method = 'post' - else: - method = 'get' if request.method == "POST": - form = MergeForm(request.POST) + form = MergeForm(request.POST, readonly=True) if form.is_valid(): source = form.cleaned_data.get('source') source_id = source.id @@ -136,11 +139,72 @@ def merge(request): messages.error(request, output) return redirect('ietf.secr.rolodex.views.view', id=target.pk) - return render(request, 'person/merge.html', { + return render(request, 'person/merge_submit.html', { 'form': form, - 'method': method, 'change_details': change_details, 'source': source, 'target': target, 'warn_messages': warn_messages, }) + + +@role_required("Secretariat") +def send_merge_request(request): + if request.method == 'GET': + merge_form = MergeForm(request.GET) + if merge_form.is_valid(): + source = merge_form.cleaned_data['source'] + target = merge_form.cleaned_data['target'] + to = [] + if source.email(): + to.append(source.email().address) + if target.email(): + to.append(target.email().address) + if source.user: + source_account = source.user.username + else: + source_account = source.email() + if target.user: + target_account = target.user.username + else: + target_account = target.email() + sender_name = request.user.person.name + subject = 'Action requested: Merging possible duplicate IETF Datatracker accounts' + context = { + 'source_account': source_account, + 'target_account': target_account, + 'sender_name': sender_name, + } + body = render_to_string('person/merge_request_email.txt', context) + initial = { + 'to': ', '.join(to), + 'frm': settings.DEFAULT_FROM_EMAIL, + 'reply_to': 'support@ietf.org', + 'subject': subject, + 'body': body, + 'by': request.user.person.pk, + } + form = MergeRequestForm(initial=initial) + else: + messages.error(request, "Error requesting merge email: " + merge_form.errors.as_text()) + return redirect("ietf.person.views.merge") + + if request.method == 'POST': + form = MergeRequestForm(request.POST) + if form.is_valid(): + extra = {"Reply-To": form.cleaned_data.get("reply_to")} + send_mail_text( + request, + form.cleaned_data.get("to"), + form.cleaned_data.get("frm"), + form.cleaned_data.get("subject"), + form.cleaned_data.get("body"), + extra=extra, + ) + + messages.success(request, "The merge confirmation email was sent.") + return redirect("ietf.person.views.merge") + + return render(request, "person/send_merge_request.html", { + "form": form, + }) diff --git a/ietf/templates/person/merge.html b/ietf/templates/person/merge.html index 36499ecdbc..5c3e6b0938 100644 --- a/ietf/templates/person/merge.html +++ b/ietf/templates/person/merge.html @@ -1,5 +1,5 @@ +{# Copyright The IETF Trust 2018-2025, All Rights Reserved #} {% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} {% load static %} {% load django_bootstrap5 %} {% block title %}Merge Persons{% endblock %} @@ -8,45 +8,17 @@

    Merge Person Records

    This tool will merge two Person records into one. If both records have logins and you want to retain the one on the left, use the Swap button to swap source and target records.

    -
    - {% if method == 'post' %} - {% csrf_token %} - {% endif %} +
    {% bootstrap_field form.source %} - {% if source %} - {% with person=source %} - {% include "person/person_info.html" %} - {% endwith %} - {% endif %}
    {% bootstrap_field form.target %} - {% if target %} - {% with person=target %} - {% include "person/person_info.html" %} - {% endwith %} - {% endif %}
    - {% if change_details %}{% endif %} - {% if warn_messages %} - {% for message in warn_messages %}{% endfor %} - {% endif %} - {% if method == 'post' %} - - Swap - - {% endif %} -
    {% endblock %} \ No newline at end of file diff --git a/ietf/templates/person/merge_request_email.txt b/ietf/templates/person/merge_request_email.txt new file mode 100644 index 0000000000..0a695f036c --- /dev/null +++ b/ietf/templates/person/merge_request_email.txt @@ -0,0 +1,23 @@ +Hello, + +We have identified multiple IETF Datatracker accounts that may represent a single person: + +https://datatracker.ietf.org/person/{{ source_account }} + +and + +https://datatracker.ietf.org/person/{{ target_account }} + +If this is so then it is important that we merge the accounts. + +This email is being sent to the primary emails associated with each Datatracker account. + +Please respond to this message individually from the email account(s) you control so we can take the appropriate action. + +If these should be merged, please identify which account you would like to keep the login credentials from. + +If you are associated with but no longer have access to one of the email accounts, then please let us know and we will follow up to determine how to proceed. + + +{{ sender_name }} +IETF Support \ No newline at end of file diff --git a/ietf/templates/person/merge_submit.html b/ietf/templates/person/merge_submit.html new file mode 100644 index 0000000000..30e1999f81 --- /dev/null +++ b/ietf/templates/person/merge_submit.html @@ -0,0 +1,57 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static %} +{% load django_bootstrap5 %} +{% block title %}Merge Persons{% endblock %} +{% block content %} +

    Merge Person Records

    +

    + This tool will merge two Person records into one. If both records have logins and you want to retain the one on the left, use the Swap button to swap source and target records. +

    +
    + {% csrf_token %} +
    +
    + {% bootstrap_field form.source %} + {% if source %} + {% with person=source %} + {% include "person/person_info.html" %} + {% endwith %} + {% endif %} +
    +
    + {% bootstrap_field form.target %} + {% if target %} + {% with person=target %} + {% include "person/person_info.html" %} + {% endwith %} + {% endif %} +
    +
    + {% if change_details %}{% endif %} + {% if warn_messages %} + {% for message in warn_messages %}{% endfor %} + {% endif %} + + + Swap + + + + + + Send Email + + + Back + +
    +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/person/send_merge_request.html b/ietf/templates/person/send_merge_request.html new file mode 100644 index 0000000000..f0c6272dca --- /dev/null +++ b/ietf/templates/person/send_merge_request.html @@ -0,0 +1,20 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static %} +{% load django_bootstrap5 %} +{% block title %}Send Merge Notice{% endblock %} +{% block content %} +

    Send Merge Notice

    + {% if form.non_field_errors %}
    {{ form.non_field_errors }}
    {% endif %} +
    + {% csrf_token %} + {% bootstrap_field form.to layout='horizontal' %} + {% bootstrap_field form.frm layout='horizontal' %} + {% bootstrap_field form.reply_to layout='horizontal' %} + {% bootstrap_field form.subject layout='horizontal' %} + {% bootstrap_field form.body layout='horizontal' %} + + Cancel +
    +{% endblock %} diff --git a/ietf/utils/fields.py b/ietf/utils/fields.py index ba3fecebc6..6e8765612f 100644 --- a/ietf/utils/fields.py +++ b/ietf/utils/fields.py @@ -1,10 +1,11 @@ -# Copyright The IETF Trust 2012-2020, All Rights Reserved +# Copyright The IETF Trust 2012-2025, All Rights Reserved # -*- coding: utf-8 -*- import datetime import json import re +from email.utils import parseaddr import debug # pyflakes:ignore @@ -16,6 +17,7 @@ from django.core.exceptions import ValidationError from django.utils.dateparse import parse_duration + class MultiEmailField(forms.Field): def to_python(self, value): "Normalize data to a list of strings." @@ -38,6 +40,25 @@ def validate(self, value): for email in value: validate_email(email) + +def validate_name_addr_email(value): + "Validate name-addr style email address" + name, addr = parseaddr(value) + if not addr: + raise ValidationError("Invalid email format.") + try: + validate_email(addr) # validate the actual address part + except ValidationError: + raise ValidationError("Invalid email address.") + + +class NameAddrEmailField(forms.CharField): + def validate(self, value): + "Check if value consists only of valid emails." + super().validate(value) + validate_name_addr_email(value) + + def yyyymmdd_to_strftime_format(fmt): translation_table = sorted([ ("yyyy", "%Y"), From 5d2790bb3cfff4e45be076d56dcc0fb209ed327e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 22 Jan 2026 11:52:17 -0400 Subject: [PATCH 018/161] feat: additional fields for purple API (#10299) * feat: include group, abstract in purple draft API * feat: include ad/shepherd in purple API --- ietf/api/serializers_rpc.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index f2e735be7a..fe7f609251 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -114,11 +114,14 @@ class FullDraftSerializer(serializers.ModelSerializer): # is used for a writeable view, the validation will need to be added back. name = serializers.CharField(max_length=255) title = serializers.CharField(max_length=255) + group = serializers.SlugRelatedField(slug_field="acronym", read_only=True) # Other fields we need to add / adjust source_format = serializers.SerializerMethodField() authors = DocumentAuthorSerializer(many=True, source="documentauthor_set") - shepherd = serializers.SerializerMethodField() + shepherd = serializers.PrimaryKeyRelatedField( + source="shepherd.person", read_only=True + ) consensus = serializers.SerializerMethodField() class Meta: @@ -129,12 +132,16 @@ class Meta: "rev", "stream", "title", + "group", + "abstract", "pages", "source_format", "authors", "shepherd", "intended_std_level", "consensus", + "shepherd", + "ad", ] def get_consensus(self, doc: Document) -> Optional[bool]: @@ -155,12 +162,6 @@ def get_source_format( return "txt" return "unknown" - @extend_schema_field(OpenApiTypes.EMAIL) - def get_shepherd(self, doc: Document) -> str: - if doc.shepherd: - return doc.shepherd.formatted_ascii_email() - return "" - class DraftSerializer(FullDraftSerializer): class Meta: @@ -171,6 +172,7 @@ class Meta: "rev", "stream", "title", + "group", "pages", "source_format", "authors", From f56bfcb2f618fbaded92519797d4e4baa34ac4a1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 23 Jan 2026 10:32:02 -0400 Subject: [PATCH 019/161] feat: more clickable message admin (#10307) --- ietf/message/admin.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ietf/message/admin.py b/ietf/message/admin.py index 250e1eb596..6a876cdc70 100644 --- a/ietf/message/admin.py +++ b/ietf/message/admin.py @@ -27,7 +27,8 @@ def queryset(self, request, queryset): class MessageAdmin(admin.ModelAdmin): - list_display = ["sent_status", "subject", "by", "time", "groups"] + list_display = ["sent_status", "display_subject", "by", "time", "groups"] + list_display_links = ["display_subject"] search_fields = ["subject", "body"] raw_id_fields = ["by", "related_groups", "related_docs"] list_filter = [ @@ -37,6 +38,10 @@ class MessageAdmin(admin.ModelAdmin): ordering = ["-time"] actions = ["retry_send"] + @admin.display(description="Subject", empty_value="(no subject)") + def display_subject(self, instance): + return instance.subject or None # None triggers the empty_value + def groups(self, instance): return ", ".join(g.acronym for g in instance.related_groups.all()) From 9c6fa92b7eed8b29bea96cb73148dba130678e63 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 27 Jan 2026 11:34:17 -0400 Subject: [PATCH 020/161] fix: update RPC publish API fields (#10308) * fix: update purple publish API fields * fix: handle IntegrityError more cleanly * fix: don't import RFC fields from draft * test: update test * chore: remove unused var/import * fix: f-string -> string --- ietf/api/serializers_rpc.py | 29 ++---------------------- ietf/api/tests_views_rpc.py | 44 ++++++++++++++++++------------------- ietf/api/views_rpc.py | 16 +++++++++++++- 3 files changed, 39 insertions(+), 50 deletions(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index fe7f609251..440c2a73d4 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -27,7 +27,7 @@ update_rfcauthors, ) from ietf.group.models import Group -from ietf.name.models import StreamName, StdLevelName, FormalLanguageName +from ietf.name.models import StreamName, StdLevelName from ietf.person.models import Person from ietf.utils import log @@ -137,7 +137,6 @@ class Meta: "pages", "source_format", "authors", - "shepherd", "intended_std_level", "consensus", "shepherd", @@ -263,15 +262,6 @@ class RfcPubSerializer(serializers.ModelSerializer): stream = serializers.PrimaryKeyRelatedField( queryset=StreamName.objects.filter(used=True) ) - formal_languages = serializers.PrimaryKeyRelatedField( - many=True, - required=False, - queryset=FormalLanguageName.objects.filter(used=True), - help_text=( - "formal languages used in RFC (defaults to those from draft, send empty" - "list to override)" - ) - ) std_level = serializers.PrimaryKeyRelatedField( queryset=StdLevelName.objects.filter(used=True), ) @@ -315,11 +305,8 @@ class Meta: "stream", "abstract", "pages", - "words", - "formal_languages", "std_level", "ad", - "note", "obsoletes", "updates", "subseries", @@ -353,9 +340,6 @@ def create(self, validated_data): # If specified, retrieve draft and extract RFC default values from it if draft_name is None: draft = None - defaults_from_draft = { - "group": Group.objects.get(acronym="none", type_id="individ"), - } else: # validation enforces that draft_name and draft_rev are both present draft = Document.objects.filter( @@ -378,17 +362,11 @@ def create(self, validated_data): }, code="already-published-draft", ) - defaults_from_draft = { - "ad": draft.ad, - "formal_languages": draft.formal_languages.all(), - "group": draft.group, - "note": draft.note, - } # Transaction to clean up if something fails with transaction.atomic(): # create rfc, letting validated request data override draft defaults - rfc = self._create_rfc(defaults_from_draft | validated_data) + rfc = self._create_rfc(validated_data) DocEvent.objects.create( doc=rfc, rev=rfc.rev, @@ -523,14 +501,11 @@ def create(self, validated_data): def _create_rfc(self, validated_data): authors_data = validated_data.pop("authors") - formal_languages = validated_data.pop("formal_languages", []) - # todo ad field rfc = Document.objects.create( type_id="rfc", name=f"rfc{validated_data['rfc_number']}", **validated_data, ) - rfc.formal_languages.set(formal_languages) # list of PKs is ok for order, author_data in enumerate(authors_data): rfc.rfcauthor_set.create( order=order, diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index ecb50ee76c..09fb40bf6e 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -80,9 +80,15 @@ def test_draftviewset_references(self): def test_notify_rfc_published(self): url = urlreverse("ietf.api.purple_api.notify_rfc_published") area = GroupFactory(type_id="area") + rfc_group = GroupFactory(type_id="wg") draft_ad = RoleFactory(group=area, name_id="ad").person - authors = PersonFactory.create_batch(2) - draft = WgDraftFactory(group__parent=area, authors=authors) + rfc_ad = PersonFactory() + draft_authors = PersonFactory.create_batch(2) + rfc_authors = PersonFactory.create_batch(3) + draft = WgDraftFactory( + group__parent=area, authors=draft_authors, ad=draft_ad, stream_id="ietf" + ) + rfc_stream_id = "ise" assert isinstance(draft, Document), "WgDraftFactory should generate a Document" unused_rfc_number = ( Document.objects.filter(rfc_number__isnull=False).aggregate( @@ -96,7 +102,7 @@ def test_notify_rfc_published(self): "draft_name": draft.name, "draft_rev": draft.rev, "rfc_number": unused_rfc_number, - "title": draft.title, + "title": "RFC " + draft.title, "authors": [ { "titlepage_name": f"titlepage {author.name}", @@ -106,17 +112,14 @@ def test_notify_rfc_published(self): "affiliation": "Some Affiliation", "country": "CA", } - for author in authors + for author in rfc_authors ], - "group": draft.group.acronym, - "stream": draft.stream_id, - "abstract": draft.abstract, - "pages": draft.pages, - "words": draft.pages * 250, - "formal_languages": [], + "group": rfc_group.acronym, + "stream": rfc_stream_id, + "abstract": "RFC version of " + draft.abstract, + "pages": draft.pages + 10, "std_level": "ps", - "ad": draft_ad.pk, - "note": "noted", + "ad": rfc_ad.pk, "obsoletes": [], "updates": [], "subseries": [], @@ -137,7 +140,7 @@ def test_notify_rfc_published(self): ).count(), 1, ) - self.assertEqual(rfc.title, draft.title) + self.assertEqual(rfc.title, "RFC " + draft.title) self.assertEqual(rfc.documentauthor_set.count(), 0) self.assertEqual( list( @@ -159,18 +162,15 @@ def test_notify_rfc_published(self): "affiliation": "Some Affiliation", "country": "CA", } - for author in authors + for author in rfc_authors ], ) - self.assertEqual(rfc.group, draft.group) - self.assertEqual(rfc.stream, draft.stream) - self.assertEqual(rfc.abstract, draft.abstract) - self.assertEqual(rfc.pages, draft.pages) - self.assertEqual(rfc.words, draft.pages * 250) - self.assertEqual(rfc.formal_languages.count(), 0) + self.assertEqual(rfc.group, rfc_group) + self.assertEqual(rfc.stream_id, rfc_stream_id) + self.assertEqual(rfc.abstract, "RFC version of " + draft.abstract) + self.assertEqual(rfc.pages, draft.pages + 10) self.assertEqual(rfc.std_level_id, "ps") - self.assertEqual(rfc.ad, draft_ad) - self.assertEqual(rfc.note, "noted") + self.assertEqual(rfc.ad, rfc_ad) self.assertEqual(rfc.related_that_doc("obs"), []) self.assertEqual(rfc.related_that_doc("updates"), []) self.assertEqual(rfc.part_of(), []) diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index ea9c6348ca..6b1799f654 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -5,6 +5,7 @@ from tempfile import TemporaryDirectory from django.conf import settings +from django.db import IntegrityError from drf_spectacular.utils import OpenApiParameter from rest_framework import mixins, parsers, serializers, viewsets, status from rest_framework.decorators import action @@ -360,7 +361,20 @@ def post(self, request): serializer = RfcPubSerializer(data=request.data) serializer.is_valid(raise_exception=True) # Create RFC - serializer.save() + try: + serializer.save() + except IntegrityError as err: + if Document.objects.filter( + rfc_number=serializer.validated_data["rfc_number"] + ): + raise serializers.ValidationError( + "RFC with that number already exists", + code="rfc-number-in-use", + ) + raise serializers.ValidationError( + f"Unable to publish: {err}", + code="unknown-integrity-error", + ) return Response(NotificationAckSerializer().data) From 33fe0bcb7cafadc2096bfd1386c3d7e8a6a915f5 Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Wed, 28 Jan 2026 13:47:48 -0500 Subject: [PATCH 021/161] feat: add consensus in Draft serializer (#10327) --- ietf/api/serializers_rpc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 440c2a73d4..34e2c791c0 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -175,6 +175,7 @@ class Meta: "pages", "source_format", "authors", + "consensus", ] From a174f43574c5ed4f20ddcc0d600d03e5156fb351 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 30 Jan 2026 14:49:47 -0400 Subject: [PATCH 022/161] fix: use current time for bofreq revisions (#10333) * fix: use current time for bofreq revisions * test: test time handling Adjusts assertion argument order to match our usual style --- ietf/doc/tests_bofreq.py | 19 ++++++++++++------- ietf/doc/views_bofreq.py | 1 - 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/ietf/doc/tests_bofreq.py b/ietf/doc/tests_bofreq.py index 6a7c9393ef..6b142149be 100644 --- a/ietf/doc/tests_bofreq.py +++ b/ietf/doc/tests_bofreq.py @@ -307,17 +307,20 @@ def test_submit(self): url = urlreverse('ietf.doc.views_bofreq.submit', kwargs=dict(name=doc.name)) rev = doc.rev + doc_time = doc.time r = self.client.post(url,{'bofreq_submission':'enter','bofreq_content':'# oiwefrase'}) self.assertEqual(r.status_code, 302) doc = reload_db_objects(doc) - self.assertEqual(rev, doc.rev) + self.assertEqual(doc.rev, rev) + self.assertEqual(doc.time, doc_time) nobody = PersonFactory() self.client.login(username=nobody.user.username, password=nobody.user.username+'+password') r = self.client.post(url,{'bofreq_submission':'enter','bofreq_content':'# oiwefrase'}) self.assertEqual(r.status_code, 403) doc = reload_db_objects(doc) - self.assertEqual(rev, doc.rev) + self.assertEqual(doc.rev, rev) + self.assertEqual(doc.time, doc_time) self.client.logout() editor = bofreq_editors(doc).first() @@ -339,12 +342,14 @@ def test_submit(self): r = self.client.post(url, postdict) self.assertEqual(r.status_code, 302) doc = reload_db_objects(doc) - self.assertEqual('%02d'%(int(rev)+1) ,doc.rev) - self.assertEqual(f'# {username}', doc.text()) - self.assertEqual(f'# {username}', retrieve_str('bofreq',doc.get_base_name())) - self.assertEqual(docevent_count+1, doc.docevent_set.count()) - self.assertEqual(1, len(outbox)) + self.assertEqual(doc.rev, '%02d'%(int(rev)+1)) + self.assertGreater(doc.time, doc_time) + self.assertEqual(doc.text(), f'# {username}') + self.assertEqual(retrieve_str('bofreq', doc.get_base_name()), f'# {username}') + self.assertEqual(doc.docevent_set.count(), docevent_count+1) + self.assertEqual(len(outbox), 1) rev = doc.rev + doc_time = doc.time finally: os.unlink(file.name) diff --git a/ietf/doc/views_bofreq.py b/ietf/doc/views_bofreq.py index 71cbe30491..94e3960dfa 100644 --- a/ietf/doc/views_bofreq.py +++ b/ietf/doc/views_bofreq.py @@ -91,7 +91,6 @@ def submit(request, name): by=request.user.person, rev=bofreq.rev, desc='New revision available', - time=bofreq.time, ) bofreq.save_with_history([e]) bofreq_submission = form.cleaned_data['bofreq_submission'] From 2dbe61e891752245447f4c2774353151f0bb34e5 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 9 Feb 2026 14:43:58 -0400 Subject: [PATCH 023/161] feat: speed up agenda.ics; cache more agenda data (#10362) * chore(dev): cprofile middleware settings * feat: precomputed agenda.ics (wip) * feat: precomp filtering support * fix: separately cache versioned hrefs Fixes https://github.com/ietf-tools/datatracker/issues/10355 * fix: versionless agenda href in agenda / ical * fix: preserve RESCHEDULED output * fix: fixup to agree with original output * feat: separate agenda cache, cache old meetings * feat: agenda refresh tasks * chore: undo accidental commit * chore: remove debug parameter * fix: convert session ID to int for comparison * test: update/fix tests, rename new task * refactor: rename task to have _task suffix Also changes a log msg so it won't contain "None" awkwardly * feat: no exceptions from agenda_data_refresh_task * test: explanatory comment * ci: agenda cache for k8s / testcrawl --- ietf/doc/models.py | 16 ++- ietf/meeting/tasks.py | 92 +++++++++++--- ietf/meeting/tests_tasks.py | 64 ++++++++-- ietf/meeting/views.py | 247 +++++++++++++++++++++++++++++++----- ietf/settings.py | 37 +++++- ietf/settings_testcrawl.py | 3 + k8s/settings_local.py | 10 ++ 7 files changed, 396 insertions(+), 73 deletions(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index cce9203d09..463aa6fd97 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -239,14 +239,14 @@ def revisions_by_newrevisionevent(self): return revisions def get_href(self, meeting=None): - return self._get_ref(meeting=meeting,meeting_doc_refs=settings.MEETING_DOC_HREFS) + return self._get_ref(meeting=meeting, versioned=True) def get_versionless_href(self, meeting=None): - return self._get_ref(meeting=meeting,meeting_doc_refs=settings.MEETING_DOC_GREFS) + return self._get_ref(meeting=meeting, versioned=False) - def _get_ref(self, meeting=None, meeting_doc_refs=settings.MEETING_DOC_HREFS): + def _get_ref(self, meeting=None, versioned=True): """ Returns an url to the document text. This differs from .get_absolute_url(), which returns an url to the datatracker page for the document. @@ -255,12 +255,16 @@ def _get_ref(self, meeting=None, meeting_doc_refs=settings.MEETING_DOC_HREFS): # the earlier resolution order, but there's at the moment one single # instance which matches this (with correct results), so we won't # break things all over the place. - if not hasattr(self, '_cached_href'): + cache_attr = "_cached_href" if versioned else "_cached_versionless_href" + if not hasattr(self, cache_attr): validator = URLValidator() if self.external_url and self.external_url.split(':')[0] in validator.schemes: validator(self.external_url) return self.external_url + meeting_doc_refs = ( + settings.MEETING_DOC_HREFS if versioned else settings.MEETING_DOC_GREFS + ) if self.type_id in settings.DOC_HREFS and self.type_id in meeting_doc_refs: if self.meeting_related(): self.is_meeting_related = True @@ -312,8 +316,8 @@ def _get_ref(self, meeting=None, meeting_doc_refs=settings.MEETING_DOC_HREFS): if href.startswith('/'): href = settings.IDTRACKER_BASE_URL + href - self._cached_href = href - return self._cached_href + setattr(self, cache_attr, href) + return getattr(self, cache_attr) def set_state(self, state): """Switch state type implicit in state to state. This just diff --git a/ietf/meeting/tasks.py b/ietf/meeting/tasks.py index c361325f9a..a73763560b 100644 --- a/ietf/meeting/tasks.py +++ b/ietf/meeting/tasks.py @@ -1,11 +1,14 @@ -# Copyright The IETF Trust 2024-2025, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved # # Celery task definitions # import datetime -from celery import shared_task -# from django.db.models import QuerySet +from itertools import batched + +from celery import shared_task, chain +from django.db.models import IntegerField +from django.db.models.functions import Cast from django.utils import timezone from ietf.utils import log @@ -19,9 +22,56 @@ from .utils import fetch_attendance_from_meetings +@shared_task +def agenda_data_refresh_task(num=None): + """Refresh agenda data for one plenary meeting + + If `num` is `None`, refreshes data for the current meeting. + """ + log.log( + f"Refreshing agenda data for {f"IETF-{num}" if num else "current IETF meeting"}" + ) + try: + generate_agenda_data(num, force_refresh=True) + except Exception as err: + # Log and swallow exceptions so failure on one meeting won't break a chain of + # tasks. This is used by agenda_data_refresh_all_task(). + log.log(f"ERROR: Refreshing agenda data failed for num={num}: {err}") + + @shared_task def agenda_data_refresh(): - generate_agenda_data(force_refresh=True) + """Deprecated. Use agenda_data_refresh_task() instead. + + TODO remove this after switching the periodic task to the new name + """ + log.log("Deprecated agenda_data_refresh task called!") + agenda_data_refresh_task() + + +@shared_task +def agenda_data_refresh_all_task(*, batch_size=10): + """Refresh agenda data for all plenary meetings + + Executes as a chain of tasks, each computing up to `batch_size` meetings + in a single task. + """ + meeting_numbers = sorted( + Meeting.objects.annotate( + number_as_int=Cast("number", output_field=IntegerField()) + ) + .filter(type_id="ietf", number_as_int__gt=64) + .values_list("number_as_int", flat=True) + ) + # Batch using chained maps rather than celery.chunk so we only use one worker + # at a time. + batched_task_chain = chain( + *( + agenda_data_refresh_task.map(nums) + for nums in batched(meeting_numbers, batch_size) + ) + ) + batched_task_chain.delay() @shared_task @@ -55,7 +105,9 @@ def proceedings_content_refresh_task(*, all=False): @shared_task def fetch_meeting_attendance_task(): # fetch most recent two meetings - meetings = Meeting.objects.filter(type="ietf", date__lte=timezone.now()).order_by("-date")[:2] + meetings = Meeting.objects.filter(type="ietf", date__lte=timezone.now()).order_by( + "-date" + )[:2] try: stats = fetch_attendance_from_meetings(meetings) except RuntimeError as err: @@ -64,8 +116,11 @@ def fetch_meeting_attendance_task(): for meeting, meeting_stats in zip(meetings, stats): log.log( "Fetched data for meeting {:>3}: {:4d} created, {:4d} updated, {:4d} deleted, {:4d} processed".format( - meeting.number, meeting_stats['created'], meeting_stats['updated'], meeting_stats['deleted'], - meeting_stats['processed'] + meeting.number, + meeting_stats["created"], + meeting_stats["updated"], + meeting_stats["deleted"], + meeting_stats["processed"], ) ) @@ -73,7 +128,7 @@ def fetch_meeting_attendance_task(): def _select_meetings( meetings: list[str] | None = None, meetings_since: str | None = None, - meetings_until: str | None = None + meetings_until: str | None = None, ): # nyah """Select meetings by number or date range""" # IETF-1 = 1986-01-16 @@ -130,15 +185,15 @@ def _select_meetings( @shared_task def resolve_meeting_materials_task( *, # only allow kw arguments - meetings: list[str] | None=None, - meetings_since: str | None=None, - meetings_until: str | None=None + meetings: list[str] | None = None, + meetings_since: str | None = None, + meetings_until: str | None = None, ): """Run materials resolver on meetings - + Can request a set of meetings by number by passing a list in the meetings arg, or by range by passing an iso-format timestamps in meetings_since / meetings_until. - To select all meetings, set meetings_since="zero" and omit other parameters. + To select all meetings, set meetings_since="zero" and omit other parameters. """ meetings_qs = _select_meetings(meetings, meetings_since, meetings_until) for meeting in meetings_qs.order_by("date"): @@ -155,7 +210,9 @@ def resolve_meeting_materials_task( f"meeting {meeting.number}: {err}" ) else: - log.log(f"Resolved in {(timezone.now() - mark).total_seconds():0.3f} seconds.") + log.log( + f"Resolved in {(timezone.now() - mark).total_seconds():0.3f} seconds." + ) @shared_task @@ -163,13 +220,13 @@ def store_meeting_materials_as_blobs_task( *, # only allow kw arguments meetings: list[str] | None = None, meetings_since: str | None = None, - meetings_until: str | None = None + meetings_until: str | None = None, ): """Push meeting materials into the blob store Can request a set of meetings by number by passing a list in the meetings arg, or by range by passing an iso-format timestamps in meetings_since / meetings_until. - To select all meetings, set meetings_since="zero" and omit other parameters. + To select all meetings, set meetings_since="zero" and omit other parameters. """ meetings_qs = _select_meetings(meetings, meetings_since, meetings_until) for meeting in meetings_qs.order_by("date"): @@ -187,4 +244,5 @@ def store_meeting_materials_as_blobs_task( ) else: log.log( - f"Blobs created in {(timezone.now() - mark).total_seconds():0.3f} seconds.") + f"Blobs created in {(timezone.now() - mark).total_seconds():0.3f} seconds." + ) diff --git a/ietf/meeting/tests_tasks.py b/ietf/meeting/tests_tasks.py index a5da00ecbf..2c5120a39d 100644 --- a/ietf/meeting/tests_tasks.py +++ b/ietf/meeting/tests_tasks.py @@ -5,23 +5,63 @@ from ietf.utils.test_utils import TestCase from ietf.utils.timezone import date_today from .factories import MeetingFactory -from .tasks import proceedings_content_refresh_task, agenda_data_refresh +from .tasks import ( + proceedings_content_refresh_task, + agenda_data_refresh_task, + agenda_data_refresh_all_task, +) from .tasks import fetch_meeting_attendance_task class TaskTests(TestCase): @patch("ietf.meeting.tasks.generate_agenda_data") - def test_agenda_data_refresh(self, mock_generate): - agenda_data_refresh() + def test_agenda_data_refresh_task(self, mock_generate): + agenda_data_refresh_task() self.assertTrue(mock_generate.called) - self.assertEqual(mock_generate.call_args, call(force_refresh=True)) + self.assertEqual(mock_generate.call_args, call(None, force_refresh=True)) + + mock_generate.reset_mock() + mock_generate.side_effect = RuntimeError + try: + agenda_data_refresh_task() + except Exception as err: + self.fail( + f"agenda_data_refresh_task should not raise exceptions (got {repr(err)})" + ) + + @patch("ietf.meeting.tasks.agenda_data_refresh_task") + @patch("ietf.meeting.tasks.chain") + def test_agenda_data_refresh_all_task(self, mock_chain, mock_agenda_data_refresh): + # Patch the agenda_data_refresh_task task with a mock whose `.map` attribute + # converts its argument, which is expected to be an iterator, to a list + # and returns it. We'll use this to check that the expected task chain + # was set up, but we don't actually run any celery tasks. + mock_agenda_data_refresh.map.side_effect = lambda x: list(x) + + meetings = MeetingFactory.create_batch(5, type_id="ietf") + numbers = sorted(int(m.number) for m in meetings) + agenda_data_refresh_all_task(batch_size=2) + self.assertTrue(mock_chain.called) + # The lists in the call() below are the output of the lambda we patched in + # via mock_agenda_data_refresh.map.side_effect above. I.e., this tests that + # map() was called with the correct batched data. + self.assertEqual( + mock_chain.call_args, + call( + [numbers[0], numbers[1]], + [numbers[2], numbers[3]], + [numbers[4]], + ), + ) + self.assertEqual(mock_agenda_data_refresh.call_count, 0) + self.assertEqual(mock_agenda_data_refresh.map.call_count, 3) @patch("ietf.meeting.tasks.generate_proceedings_content") def test_proceedings_content_refresh_task(self, mock_generate): # Generate a couple of meetings meeting120 = MeetingFactory(type_id="ietf", number="120") # 24 * 5 meeting127 = MeetingFactory(type_id="ietf", number="127") # 24 * 5 + 7 - + # Times to be returned now_utc = datetime.datetime.now(tz=datetime.UTC) hour_00_utc = now_utc.replace(hour=0) @@ -34,19 +74,19 @@ def test_proceedings_content_refresh_task(self, mock_generate): self.assertEqual(mock_generate.call_count, 1) self.assertEqual(mock_generate.call_args, call(meeting120, force_refresh=True)) mock_generate.reset_mock() - + # hour 01 - should call no meetings with patch("ietf.meeting.tasks.timezone.now", return_value=hour_01_utc): proceedings_content_refresh_task() self.assertEqual(mock_generate.call_count, 0) - + # hour 07 - should call meeting with number % 24 == 0 with patch("ietf.meeting.tasks.timezone.now", return_value=hour_07_utc): proceedings_content_refresh_task() self.assertEqual(mock_generate.call_count, 1) self.assertEqual(mock_generate.call_args, call(meeting127, force_refresh=True)) mock_generate.reset_mock() - + # With all=True, all should be called regardless of time. Reuse hour_01_utc which called none before with patch("ietf.meeting.tasks.timezone.now", return_value=hour_01_utc): proceedings_content_refresh_task(all=True) @@ -61,10 +101,10 @@ def test_fetch_meeting_attendance_task(self, mock_fetch_attendance): MeetingFactory(type_id="ietf", date=today - datetime.timedelta(days=3)), ] data = { - 'created': 1, - 'updated': 2, - 'deleted': 0, - 'processed': 3, + "created": 1, + "updated": 2, + "deleted": 0, + "processed": 3, } mock_fetch_attendance.return_value = [data, data] diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 903e3c7e79..8dccda9c87 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -40,7 +40,7 @@ from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile from django.core.validators import URLValidator -from django.urls import reverse,reverse_lazy +from django.urls import reverse, reverse_lazy, NoReverseMatch from django.db.models import F, Max, Q from django.forms.models import modelform_factory, inlineformset_factory from django.template import TemplateDoesNotExist @@ -1859,18 +1859,22 @@ def generate_agenda_data(num=None, force_refresh=False): :num: meeting number :force_refresh: True to force a refresh of the cache """ - cache = caches["default"] - cache_timeout = 6 * 60 - meeting = get_ietf_meeting(num) if meeting is None: raise Http404("No such full IETF meeting") elif int(meeting.number) <= 64: - return Http404("Pre-IETF 64 meetings are not available through this API") - else: - pass + raise Http404("Pre-IETF 64 meetings are not available through this API") + is_current_meeting = meeting.number == get_current_ietf_meeting_num() + + cache = caches["agenda"] + cache_timeout = ( + settings.AGENDA_CACHE_TIMEOUT_CURRENT_MEETING + if is_current_meeting + else settings.AGENDA_CACHE_TIMEOUT_DEFAULT + ) + cache_format = "1" # bump this on backward-incompatible data format changes - cache_key = f"generate_agenda_data_{meeting.number}" + cache_key = f"generate_agenda_data:{meeting.number}:v{cache_format}" if not force_refresh: cached_value = cache.get(cache_key) if cached_value is not None: @@ -1890,8 +1894,6 @@ def generate_agenda_data(num=None, force_refresh=False): filter_organizer = AgendaFilterOrganizer(assignments=filtered_assignments) - is_current_meeting = (num is None) or (num == get_current_ietf_meeting_num()) - # Get Floor Plans floors = FloorPlan.objects.filter(meeting=meeting).order_by('order') @@ -1966,21 +1968,32 @@ def api_get_session_materials(request, session_id=None): ) -def agenda_extract_schedule (item): +def agenda_extract_schedule(item): + if item.session.current_status == "resched": + resched_to = item.session.tombstone_for.official_timeslotassignment() + else: + resched_to = None return { "id": item.id, + "slug": item.slug(), "sessionId": item.session.id, - "room": item.room_name if item.timeslot.show_location else None, + "room": (item.timeslot.get_location() or None) if item.timeslot else None, "location": { "short": item.timeslot.location.floorplan.short, "name": item.timeslot.location.floorplan.name, } if (item.timeslot.show_location and item.timeslot.location and item.timeslot.location.floorplan) else {}, "acronym": item.acronym, - "duration": item.timeslot.duration.seconds, + "duration": item.timeslot.duration.total_seconds(), "name": item.session.name, + "slotId": item.timeslot.id, "slotName": item.timeslot.name, + "slotModified": item.timeslot.modified.isoformat(), "startDateTime": item.timeslot.time.isoformat(), "status": item.session.current_status, + "rescheduledTo": { + "startDateTime": resched_to.timeslot.time.isoformat(), + "duration": resched_to.timeslot.duration.total_seconds(), + } if resched_to is not None else {}, "type": item.session.type.slug, "purpose": item.session.purpose.slug, "isBoF": item.session.group_at_the_time().state_id == "bof", @@ -1998,7 +2011,7 @@ def agenda_extract_schedule (item): "showAgenda": True if (item.session.agenda() is not None or item.session.remote_instructions) else False }, "agenda": { - "url": item.session.agenda().get_href() + "url": item.session.agenda().get_versionless_href() } if item.session.agenda() is not None else { "url": None }, @@ -2290,10 +2303,131 @@ def ical_session_status(assignment): else: return "CONFIRMED" + +def render_icalendar_precomp(agenda_data): + ical_content = generate_agenda_ical_precomp(agenda_data) + return HttpResponse(ical_content, content_type="text/calendar") + + def render_icalendar(schedule, assignments): ical_content = generate_agenda_ical(schedule, assignments) return HttpResponse(ical_content, content_type="text/calendar") + +def generate_agenda_ical_precomp(agenda_data): + """Generate iCalendar from precomputed data using the icalendar library""" + + cal = Calendar() + cal.add("prodid", "-//IETF//datatracker.ietf.org ical agenda//EN") + cal.add("version", "2.0") + cal.add("method", "PUBLISH") + + meeting_data = agenda_data["meeting"] + for item in agenda_data["schedule"]: + event = Event() + + uid = f"ietf-{meeting_data["number"]}-{item["slotId"]}-{item["acronym"]}" + event.add("uid", uid) + + # add custom field with meeting's local TZ + event.add("x-meeting-tz", meeting_data["timezone"]) + + if item["name"]: + summary = item["name"] + else: + summary = f"{item["groupAcronym"]} - {item["groupName"]}" + + if item["note"]: + summary += f" ({item["note"]})" + + event.add("summary", summary) + + if item["room"]: + event.add("location", item["room"]) # room name + + if item["status"] == "canceled": + status = "CANCELLED" + elif item["status"] == "resched": + resched_to = item["rescheduledTo"] + if resched_to is None: + status = "RESCHEDULED" + else: + resched_start = datetime.datetime.fromisoformat( + resched_to["startDateTime"] + ) + dur = datetime.timedelta(seconds=resched_to["duration"]) + resched_end = resched_start + dur + formatted_start = resched_start.strftime("%A %H:%M").upper() + formatted_end = resched_end.strftime("%H:%M") + status = f"RESCHEDULED TO {formatted_start}-{formatted_end}" + else: + status = "CONFIRMED" + event.add("status", status) + + event.add("class", "PUBLIC") + + start_time = datetime.datetime.fromisoformat(item["startDateTime"]) + duration = datetime.timedelta(seconds=item["duration"]) + event.add("dtstart", start_time) + event.add("dtend", start_time + duration) + + # DTSTAMP: when the event was created or last modified (in UTC) + # n.b. timeslot.modified may not be an accurate measure of this + event.add("dtstamp", datetime.datetime.fromisoformat(item["slotModified"])) + + description_parts = [item["slotName"]] + + if item["note"]: + description_parts.append(f"Note: {item["note"]}") + + links = item["links"] + if links["onsiteTool"]: + description_parts.append(f"Onsite tool: {links["onsiteTool"]}") + + if links["videoStream"]: + description_parts.append(f"Meetecho: {links["videoStream"]}") + + if links["webex"]: + description_parts.append(f"Webex: {links["webex"]}") + + if item["remoteInstructions"]: + description_parts.append( + f"Remote instructions: {item["remoteInstructions"]}" + ) + + try: + materials_url = absurl( + "ietf.meeting.views.session_details", + num=meeting_data["number"], + acronym=item["acronym"], + ) + except NoReverseMatch: + pass + else: + description_parts.append(f"Session materials: {materials_url}") + event.add("url", materials_url) + + if meeting_data["number"].isdigit(): + try: + agenda_url = absurl("agenda", num=meeting_data["number"]) + except NoReverseMatch: + pass + else: + description_parts.append(f"See in schedule: {agenda_url}#row-{item["slug"]}") + + if item["agenda"] and item["agenda"]["url"]: + description_parts.append(f"Agenda {item["agenda"]["url"]}") + + # Join all description parts with 2 newlines + description = "\n\n".join(description_parts) + event.add("description", description) + + # Add event to calendar + cal.add_component(event) + + return cal.to_ical().decode("utf-8") + + def generate_agenda_ical(schedule, assignments): """Generate iCalendar using the icalendar library""" @@ -2428,10 +2562,66 @@ def parse_agenda_filter_params(querydict): def should_include_assignment(filter_params, assignment): """Decide whether to include an assignment""" - shown = len(set(filter_params['show']).intersection(assignment.filter_keywords)) > 0 - hidden = len(set(filter_params['hide']).intersection(assignment.filter_keywords)) > 0 + if hasattr(assignment, "filter_keywords"): + kw = assignment.filter_keywords + elif isinstance(assignment, dict): + kw = assignment.get("filterKeywords", []) + else: + raise ValueError("Unsupported assignment instance") + shown = len(set(filter_params['show']).intersection(kw)) > 0 + hidden = len(set(filter_params['hide']).intersection(kw)) > 0 return shown and not hidden + +def agenda_ical_ietf(meeting, filt_params, acronym=None, session_id=None): + agenda_data = generate_agenda_data(meeting.number, force_refresh=False) + if acronym: + agenda_data["schedule"] = [ + item + for item in agenda_data["schedule"] + if item["groupAcronym"] == acronym + ] + elif session_id: + agenda_data["schedule"] = [ + item + for item in agenda_data["schedule"] + if item["sessionId"] == session_id + ] + if filt_params is not None: + # Apply the filter + agenda_data["schedule"] = [ + item + for item in agenda_data["schedule"] + if should_include_assignment(filt_params, item) + ] + return render_icalendar_precomp(agenda_data) + + +def agenda_ical_interim(meeting, filt_params, acronym=None, session_id=None): + schedule = get_schedule(meeting) + + if schedule is None and acronym is None and session_id is None: + raise Http404 + + assignments = SchedTimeSessAssignment.objects.filter( + schedule__in=[schedule, schedule.base], + session__on_agenda=True, + ) + assignments = preprocess_assignments_for_agenda(assignments, meeting) + AgendaKeywordTagger(assignments=assignments).apply() + + if filt_params is not None: + # Apply the filter + assignments = [a for a in assignments if should_include_assignment(filt_params, a)] + + if acronym: + assignments = [ a for a in assignments if a.session.group_at_the_time().acronym == acronym ] + elif session_id: + assignments = [ a for a in assignments if a.session_id == int(session_id) ] + + return render_icalendar(schedule, assignments) + + def agenda_ical(request, num=None, acronym=None, session_id=None): """Agenda ical view @@ -2459,33 +2649,20 @@ def agenda_ical(request, num=None, acronym=None, session_id=None): raise Http404 else: meeting = get_meeting(num, type_in=None) # get requested meeting, whatever its type - schedule = get_schedule(meeting) - if schedule is None and acronym is None and session_id is None: - raise Http404 - - assignments = SchedTimeSessAssignment.objects.filter( - schedule__in=[schedule, schedule.base], - session__on_agenda=True, - ) - assignments = preprocess_assignments_for_agenda(assignments, meeting) - AgendaKeywordTagger(assignments=assignments).apply() + if isinstance(session_id, str) and session_id.isdigit(): + session_id = int(session_id) try: filt_params = parse_agenda_filter_params(request.GET) except ValueError as e: return HttpResponseBadRequest(str(e)) - if filt_params is not None: - # Apply the filter - assignments = [a for a in assignments if should_include_assignment(filt_params, a)] - - if acronym: - assignments = [ a for a in assignments if a.session.group_at_the_time().acronym == acronym ] - elif session_id: - assignments = [ a for a in assignments if a.session_id == int(session_id) ] + if meeting.type_id == "ietf": + return agenda_ical_ietf(meeting, filt_params, acronym, session_id) + else: + return agenda_ical_interim(meeting, filt_params, acronym, session_id) - return render_icalendar(schedule, assignments) @cache_page(15 * 60) def agenda_json(request, num=None): diff --git a/ietf/settings.py b/ietf/settings.py index 1cda79e21b..899a377ad7 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -228,6 +228,10 @@ BLOBSTORAGE_CONNECT_TIMEOUT = 10 # seconds; boto3 default is 60 BLOBSTORAGE_READ_TIMEOUT = 10 # seconds; boto3 default is 60 +# Caching for agenda data in seconds +AGENDA_CACHE_TIMEOUT_DEFAULT = 8 * 24 * 60 * 60 # 8 days +AGENDA_CACHE_TIMEOUT_CURRENT_MEETING = 6 * 60 # 6 minutes + WSGI_APPLICATION = "ietf.wsgi.application" AUTHENTICATION_BACKENDS = ( 'ietf.ietfauth.backends.CaseInsensitiveModelBackend', ) @@ -1400,6 +1404,16 @@ def skip_unreadable_post(record): f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" ), }, + "agenda": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt:agenda", + # Key function is default except with sha384-encoded key + "KEY_FUNCTION": lambda key, key_prefix, version: ( + f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" + ), + }, "proceedings": { "BACKEND": "ietf.utils.cache.LenientMemcacheCache", "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", @@ -1453,6 +1467,17 @@ def skip_unreadable_post(record): "VERSION": __version__, "KEY_PREFIX": "ietf:dt", }, + "agenda": { + "BACKEND": "django.core.cache.backends.dummy.DummyCache", + # "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + # "LOCATION": "127.0.0.1:11211", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt:agenda", + # Key function is default except with sha384-encoded key + "KEY_FUNCTION": lambda key, key_prefix, version: ( + f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" + ), + }, "proceedings": { "BACKEND": "django.core.cache.backends.dummy.DummyCache", # "BACKEND": "ietf.utils.cache.LenientMemcacheCache", @@ -1519,11 +1544,17 @@ def skip_unreadable_post(record): NOMCOM_APP_SECRET = b'\x9b\xdas1\xec\xd5\xa0SI~\xcb\xd4\xf5t\x99\xc4i\xd7\x9f\x0b\xa9\xe8\xfeY\x80$\x1e\x12tN:\x84' ALLOWED_HOSTS = ['*',] - + try: # see https://github.com/omarish/django-cprofile-middleware - import django_cprofile_middleware # pyflakes:ignore - MIDDLEWARE = MIDDLEWARE + ['django_cprofile_middleware.middleware.ProfilerMiddleware', ] + import django_cprofile_middleware # pyflakes:ignore + + MIDDLEWARE = MIDDLEWARE + [ + "django_cprofile_middleware.middleware.ProfilerMiddleware", + ] + DJANGO_CPROFILE_MIDDLEWARE_REQUIRE_STAFF = ( + False # Do not use this setting for a public site! + ) except ImportError: pass diff --git a/ietf/settings_testcrawl.py b/ietf/settings_testcrawl.py index 40744a228d..edb978757a 100644 --- a/ietf/settings_testcrawl.py +++ b/ietf/settings_testcrawl.py @@ -27,6 +27,9 @@ 'MAX_ENTRIES': 10000, }, }, + 'agenda': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + }, 'proceedings': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', }, diff --git a/k8s/settings_local.py b/k8s/settings_local.py index f8ffacc83f..0386dbbdf9 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -306,6 +306,16 @@ def _multiline_to_list(s): f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" ), }, + "agenda": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt:agenda", + # Key function is default except with sha384-encoded key + "KEY_FUNCTION": lambda key, key_prefix, version: ( + f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" + ), + }, "proceedings": { "BACKEND": "ietf.utils.cache.LenientMemcacheCache", "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", From f8be1436fb9570eb623c6408cbb755e39bb18b22 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 10 Feb 2026 13:33:39 -0400 Subject: [PATCH 024/161] fix: add id attr to liaisons ButtonWidget (#10389) --- ietf/liaisons/widgets.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ietf/liaisons/widgets.py b/ietf/liaisons/widgets.py index 74368e83f2..48db8af0a3 100644 --- a/ietf/liaisons/widgets.py +++ b/ietf/liaisons/widgets.py @@ -26,7 +26,9 @@ def render(self, name, value, **kwargs): html += '%s' % conditional_escape(i) required_str = 'Please fill in %s to attach a new file' % conditional_escape(self.required_label) html += '%s' % conditional_escape(required_str) - html += '' % conditional_escape(self.label) + html += ''.format( + f"id_{name}", conditional_escape(self.label) + ) return mark_safe(html) From 4a024d9d64e36714523b2f9e04bdbc3005aefc03 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 10 Feb 2026 12:25:43 -0600 Subject: [PATCH 025/161] fix: identify editorial drafts that should not expire (#10388) --- ietf/doc/expire.py | 50 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/ietf/doc/expire.py b/ietf/doc/expire.py index bf8523aa98..d42af628f8 100644 --- a/ietf/doc/expire.py +++ b/ietf/doc/expire.py @@ -38,22 +38,46 @@ def expirable_drafts(queryset=None): # Populate this first time through (but after django has been set up) if nonexpirable_states is None: # all IESG states except I-D Exists and Dead block expiry - nonexpirable_states = list(State.objects.filter(used=True, type="draft-iesg").exclude(slug__in=("idexists", "dead"))) + nonexpirable_states = list( + State.objects.filter(used=True, type="draft-iesg").exclude( + slug__in=("idexists", "dead") + ) + ) # sent to RFC Editor and RFC Published block expiry (the latter # shouldn't be possible for an active draft, though) - nonexpirable_states += list(State.objects.filter(used=True, type__in=("draft-stream-iab", "draft-stream-irtf", "draft-stream-ise"), slug__in=("rfc-edit", "pub"))) + nonexpirable_states += list( + State.objects.filter( + used=True, + type__in=( + "draft-stream-iab", + "draft-stream-irtf", + "draft-stream-ise", + "draft-stream-editorial", + ), + slug__in=("rfc-edit", "pub"), + ) + ) # other IRTF states that block expiration - nonexpirable_states += list(State.objects.filter(used=True, type_id="draft-stream-irtf", slug__in=("irsgpoll", "iesg-rev",))) - - return queryset.filter( - states__type="draft", states__slug="active" - ).exclude( - expires=None - ).exclude( - states__in=nonexpirable_states - ).exclude( - tags="rfc-rev" # under review by the RFC Editor blocks expiry - ).distinct() + nonexpirable_states += list( + State.objects.filter( + used=True, + type_id="draft-stream-irtf", + slug__in=( + "irsgpoll", + "iesg-rev", + ), + ) + ) + + return ( + queryset.filter(states__type="draft", states__slug="active") + .exclude(expires=None) + .exclude(states__in=nonexpirable_states) + .exclude( + tags="rfc-rev" # under review by the RFC Editor blocks expiry + ) + .distinct() + ) def get_soon_to_expire_drafts(days_of_warning): From 832c62e5c1f0cba736842cbe241236bfc8cf386f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 11 Feb 2026 11:41:58 -0400 Subject: [PATCH 026/161] feat: format+has_errata, drop see_also for red API (#10392) * fix: has_errata field for red API * chore: explanatory comment * feat: accurate format list for red API * refactor: specify blob names in API * chore: remove see_also field * fix: finish removing see_also field --- ietf/doc/api.py | 27 ++++++++++++++++++++++----- ietf/doc/models.py | 18 ++++++++++++++++++ ietf/doc/serializers.py | 33 +++++++++++++++++++++++---------- 3 files changed, 63 insertions(+), 15 deletions(-) diff --git a/ietf/doc/api.py b/ietf/doc/api.py index 47e7e6fffd..6a4c0c9fd5 100644 --- a/ietf/doc/api.py +++ b/ietf/doc/api.py @@ -1,7 +1,17 @@ # Copyright The IETF Trust 2024-2026, All Rights Reserved """Doc API implementations""" -from django.db.models import OuterRef, Subquery, Prefetch, Value, JSONField, QuerySet +from django.db.models import ( + BooleanField, + Count, + JSONField, + OuterRef, + Prefetch, + Q, + QuerySet, + Subquery, + Value, +) from django.db.models.functions import TruncDate from django_filters import rest_framework as filters from rest_framework import filters as drf_filters @@ -133,11 +143,18 @@ def augment_rfc_queryset(queryset: QuerySet[Document]): ) .annotate(published=TruncDate("published_datetime", tzinfo=RPC_TZINFO)) .annotate( - # TODO implement these fake fields for real - see_also=Value([], output_field=JSONField()), - formats=Value(["txt", "xml"], output_field=JSONField()), + # Count of "verified-errata" tags will be 1 or 0, convert to Boolean + has_errata=Count( + "tags", + filter=Q( + tags__slug="verified-errata", + ), + output_field=BooleanField(), + ) + ) + .annotate( + # TODO implement this fake field for real keywords=Value(["keyword"], output_field=JSONField()), - errata=Value([], output_field=JSONField()), ) ) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 463aa6fd97..ec9a25add8 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1284,6 +1284,24 @@ def action_holders_enabled(self): iesg_state = self.get_state('draft-iesg') return iesg_state and iesg_state.slug != 'idexists' + def formats(self): + """List of file formats available + + Only implemented for RFCs. Relies on StoredObject. + """ + if self.type_id != "rfc": + raise RuntimeError("Only allowed for type=rfc") + return [ + { + "fmt": Path(object_name).parts[0], + "name": object_name, + } + for object_name in StoredObject.objects.filter( + store="rfc", doc_name=self.name, doc_rev=self.rev + ).values_list("name", flat=True) + ] + + class DocumentURL(models.Model): doc = ForeignKey(Document) tag = ForeignKey(DocUrlTagName) diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index 05647d9ce1..e8d373164b 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -16,6 +16,7 @@ class RfcAuthorSerializer(serializers.ModelSerializer): """Serializer for an RfcAuthor / DocumentAuthor in a response""" + datatracker_person_path = serializers.URLField( source="person.get_absolute_url", required=False, @@ -36,7 +37,7 @@ class Meta: def to_representation(self, instance): """instance -> primitive data types - + Translates a DocumentAuthor into an equivalent RfcAuthor we can use the same serializer for either type. """ @@ -87,7 +88,15 @@ class DocIdentifierSerializer(serializers.Serializer): type RfcStatusSlugT = Literal[ - "std", "ps", "ds", "bcp", "inf", "exp", "hist", "unkn", "not-issued", + "std", + "ps", + "ds", + "bcp", + "inf", + "exp", + "hist", + "unkn", + "not-issued", ] @@ -188,11 +197,16 @@ class ContainingSubseriesSerializer(serializers.Serializer): type = serializers.CharField(source="source.type_id") +class RfcFormatSerializer(serializers.Serializer): + RFC_FORMATS = ("xml", "txt", "html", "pdf", "ps", "json", "notprepped") + + fmt = serializers.ChoiceField(choices=RFC_FORMATS) + name = serializers.CharField(help_text="Name of blob in the blob store") + + class RfcMetadataSerializer(serializers.ModelSerializer): """Serialize metadata of an RFC""" - RFC_FORMATS = ("xml", "txt", "html", "htmlized", "pdf", "ps") - number = serializers.IntegerField(source="rfc_number") published = serializers.DateField() status = RfcStatusSerializer(source="*") @@ -207,10 +221,11 @@ class RfcMetadataSerializer(serializers.ModelSerializer): updates = RelatedRfcSerializer(many=True, read_only=True) updated_by = ReverseRelatedRfcSerializer(many=True, read_only=True) subseries = ContainingSubseriesSerializer(many=True, read_only=True) - see_also = serializers.ListField(child=serializers.CharField(), read_only=True) - formats = serializers.MultipleChoiceField(choices=RFC_FORMATS) + formats = RfcFormatSerializer( + many=True, read_only=True, help_text="Available formats" + ) keywords = serializers.ListField(child=serializers.CharField(), read_only=True) - errata = serializers.ListField(child=serializers.CharField(), read_only=True) + has_errata = serializers.BooleanField(read_only=True) class Meta: model = Document @@ -230,15 +245,13 @@ class Meta: "updates", "updated_by", "subseries", - "see_also", "draft", "abstract", "formats", "keywords", - "errata", + "has_errata", ] - @extend_schema_field(RfcAuthorSerializer(many=True)) def get_authors(self, doc: Document): # If doc has any RfcAuthors, use those, otherwise fall back to DocumentAuthors From 66a1bf0a9ecae30036cf23fc07f6f26b27b1e94d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 11 Feb 2026 15:00:57 -0400 Subject: [PATCH 027/161] chore: un-squelch bibtexparser DeprecationWarnings (#10395) --- ietf/settings.py | 2 -- requirements.txt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index 899a377ad7..565e8825a9 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -36,8 +36,6 @@ warnings.filterwarnings("ignore", message="datetime.datetime.utcfromtimestamp\\(\\) is deprecated", module="oic.utils.time_util") warnings.filterwarnings("ignore", message="datetime.datetime.utcfromtimestamp\\(\\) is deprecated", module="pytz.tzinfo") warnings.filterwarnings("ignore", message="'instantiateVariableFont' is deprecated", module="weasyprint") -warnings.filterwarnings("ignore", category=DeprecationWarning, module="bibtexparser") # https://github.com/sciunto-org/python-bibtexparser/issues/502 -warnings.filterwarnings("ignore", category=DeprecationWarning, module="pyparsing") # https://github.com/sciunto-org/python-bibtexparser/issues/502 base_path = pathlib.Path(__file__).resolve().parent diff --git a/requirements.txt b/requirements.txt index 3f89f6f16c..cb583d5dc9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ setuptools>=80.9.0 # Require this first, to prevent later errors aiosmtpd>=1.4.6 argon2-cffi>=25.1.0 # For the Argon2 password hasher option beautifulsoup4>=4.13.4 # Only used in tests -bibtexparser>=1.4.3 # Only used in tests +bibtexparser>=1.4.4 # Only used in tests bleach>=6.2.0 # project is deprecated but supported types-bleach>=6.2.0 boto3>=1.39.15 From 0b637ef4ace72f31a963b7603a8f69a253420810 Mon Sep 17 00:00:00 2001 From: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> Date: Wed, 11 Feb 2026 19:13:44 +0000 Subject: [PATCH 028/161] ci: update base image target version to 20260211T1901 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 41ff295eec..71370fabee 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20260114T1756 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260211T1901 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 3ad31c7e25..947f3790e4 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20260114T1756 +20260211T1901 From 492888b8a22113becc2cbe3900ba3294cfc6d7f6 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 12 Feb 2026 11:34:11 -0400 Subject: [PATCH 029/161] fix: handle doc_rev is None in Document.formats (#10401) Likely a temporary fix, but safer for quick deployment while we work on the bigger project. --- ietf/api/views_rpc.py | 2 +- ietf/doc/models.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 6b1799f654..2bf16480f2 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -487,7 +487,7 @@ def post(self, request): name=self._blob_destination(ftm), file=f, doc_name=rfc.name, - doc_rev=rfc.rev, # expect None, but match whatever it is + doc_rev=rfc.rev, # expect blank, but match whatever it is mtime=mtime, ) destination = self._fs_destination(ftm) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index ec9a25add8..8f700bf496 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -12,6 +12,8 @@ from io import BufferedReader from pathlib import Path + +from django.db.models import Q from lxml import etree from typing import Optional, Protocol, TYPE_CHECKING, Union from weasyprint import HTML as wpHTML @@ -1291,13 +1293,21 @@ def formats(self): """ if self.type_id != "rfc": raise RuntimeError("Only allowed for type=rfc") + + # StoredObject.doc_rev can be null or "" to represent no rev. Match either + # of these when self.rev is "" (always expected to be the case for RFCs) + rev_q = Q(doc_rev=self.rev) + if self.rev == "": + rev_q |= Q(doc_rev__isnull=True) return [ { "fmt": Path(object_name).parts[0], "name": object_name, } for object_name in StoredObject.objects.filter( - store="rfc", doc_name=self.name, doc_rev=self.rev + rev_q, + store="rfc", + doc_name=self.name, ).values_list("name", flat=True) ] From 1b306eb7f3b9b45b3162101c7fc216ac7da3eab1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 12 Feb 2026 13:49:22 -0400 Subject: [PATCH 030/161] feat: bofreq timestamp fixup task (#10402) * feat: utility to fix up bofreq timestamps * fix: don't fix -00 (+ logging) * feat: task * chore: disable test coverage for one-off task --- ietf/doc/tasks.py | 8 ++- ietf/doc/utils_bofreq.py | 143 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 147 insertions(+), 4 deletions(-) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index 02b7c2a07d..b463b9cecf 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2024-2025, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved # # Celery task definitions # @@ -34,6 +34,7 @@ ensure_draft_bibxml_path_exists, investigate_fragment, ) +from .utils_bofreq import fixup_bofreq_timestamps @shared_task @@ -149,3 +150,8 @@ def rebuild_reference_relations_task(doc_names: list[str]): rebuild_reference_relations(doc, filenames) else: log.log(f"Found no content for {stem}") + + +@shared_task +def fixup_bofreq_timestamps_task(): # pragma: nocover + fixup_bofreq_timestamps() diff --git a/ietf/doc/utils_bofreq.py b/ietf/doc/utils_bofreq.py index aec8f60ad6..d01b039b8e 100644 --- a/ietf/doc/utils_bofreq.py +++ b/ietf/doc/utils_bofreq.py @@ -1,12 +1,149 @@ -# Copyright The IETF Trust 2021 All Rights Reserved +# Copyright The IETF Trust 2021-2026 All Rights Reserved +import datetime +from pathlib import Path -from ietf.doc.models import BofreqEditorDocEvent, BofreqResponsibleDocEvent +from django.conf import settings + +from ietf.doc.models import ( + BofreqEditorDocEvent, + BofreqResponsibleDocEvent, + DocEvent, + DocHistory, + Document, +) from ietf.person.models import Person +from ietf.utils import log + def bofreq_editors(bofreq): e = bofreq.latest_event(BofreqEditorDocEvent) return e.editors.all() if e else Person.objects.none() + def bofreq_responsible(bofreq): e = bofreq.latest_event(BofreqResponsibleDocEvent) - return e.responsible.all() if e else Person.objects.none() \ No newline at end of file + return e.responsible.all() if e else Person.objects.none() + + +def fixup_bofreq_timestamps(): # pragma: nocover + """Fixes bofreq event / document timestamps + + Timestamp errors resulted from the bug fixed by + https://github.com/ietf-tools/datatracker/pull/10333 + + Does not fix up -00 revs because the timestamps on these were not affected by + the bug. Replacing their timestamps creates a confusing event history because the + filesystem timestamp is usually a fraction of a second later than other events + created upon the initial rev creation. This causes the "New revision available" + event to appear _after_ these events in the history. Better to leave them as is. + """ + FIX_DEPLOYMENT_TIME = "2026-02-03T01:16:00+00:00" # 12.58.0 -> production + + def _get_doc_time(doc_name: str, rev: str): + path = Path(settings.BOFREQ_PATH) / f"{doc_name}-{rev}.md" + return datetime.datetime.fromtimestamp(path.stat().st_mtime, datetime.UTC) + + # Find affected DocEvents and DocHistories + new_bofreq_events = ( + DocEvent.objects.filter( + doc__type="bofreq", type="new_revision", time__lt=FIX_DEPLOYMENT_TIME + ) + .exclude(rev="00") # bug did not affect rev 00 events + .order_by("doc__name", "rev") + ) + log.log( + f"fixup_bofreq_timestamps: found {new_bofreq_events.count()} " + f"new_revision events before {FIX_DEPLOYMENT_TIME}" + ) + document_fixups = {} + for e in new_bofreq_events: + name = e.doc.name + rev = e.rev + filesystem_time = _get_doc_time(name, rev) + assert e.time < filesystem_time, ( + f"Rev {rev} event timestamp for {name} unexpectedly later than the " + "filesystem timestamp!" + ) + try: + dochistory = DocHistory.objects.filter( + name=name, time__lt=filesystem_time + ).get(rev=rev) + except DocHistory.MultipleObjectsReturned as err: + raise RuntimeError( + f"Multiple DocHistories for {name} rev {rev} exist earlier than the " + "filesystem timestamp!" + ) from err + except DocHistory.DoesNotExist as err: + if rev == "00": + # Unreachable because we don't adjust -00 revs, but could be needed + # if we did, in theory. In practice it's still not reached, but + # keeping the case for completeness. + dochistory = None + else: + raise RuntimeError( + f"No DocHistory for {name} rev {rev} exists earlier than the " + f"filesystem timestamp!" + ) from err + + if name not in document_fixups: + document_fixups[name] = [] + document_fixups[name].append( + { + "event": e, + "dochistory": dochistory, + "filesystem_time": filesystem_time, + } + ) + + # Now do the actual fixup + system_person = Person.objects.get(name="(System)") + for doc_name, fixups in document_fixups.items(): + bofreq = Document.objects.get(type="bofreq", name=doc_name) + log_msg_parts = [] + adjusted_revs = [] + for fixup in fixups: + event_to_fix = fixup["event"] + dh_to_fix = fixup["dochistory"] + new_time = fixup["filesystem_time"] + adjusted_revs.append(event_to_fix.rev) + + # Fix up the event + event_to_fix.time = new_time + event_to_fix.save() + log_msg_parts.append(f"rev {event_to_fix.rev} DocEvent") + + # Fix up the DocHistory + if dh_to_fix is not None: + dh_to_fix.time = new_time + dh_to_fix.save() + log_msg_parts.append(f"rev {dh_to_fix.rev} DocHistory") + + if event_to_fix.rev == bofreq.rev and bofreq.time < new_time: + # Update the Document without calling save(). Only update if + # the time has not changed so we don't inadvertently overwrite + # a concurrent update. + Document.objects.filter(pk=bofreq.pk, time=bofreq.time).update( + time=new_time + ) + bofreq.refresh_from_db() + if bofreq.rev == event_to_fix.rev: + log_msg_parts.append(f"rev {bofreq.rev} Document") + else: + log.log( + "fixup_bofreq_timestamps: WARNING: bofreq Document rev " + f"changed for {bofreq.name}" + ) + log.log(f"fixup_bofreq_timestamps: {bofreq.name}: " + ", ".join(log_msg_parts)) + + # Fix up the Document, if necessary, and add a record of the adjustment + DocEvent.objects.create( + type="added_comment", + by=system_person, + doc=bofreq, + rev=bofreq.rev, + desc=( + "Corrected inaccurate document and new revision event timestamps for " + + ("version " if len(adjusted_revs) == 1 else "versions ") + + ", ".join(adjusted_revs) + ), + ) From 4945809b7804c1f15de1b0340be269dd7e200f95 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 12 Feb 2026 13:56:46 -0400 Subject: [PATCH 031/161] chore(dev): update beat in docker-compose.yml (#10330) Fixes commented-out config --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2440faf121..ebe53cf95a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -129,7 +129,7 @@ services: # but can be enabled by uncommenting the following. # # beat: -# image: ghcr.io/ietf-tools/datatracker-celery:latest +# image: "${COMPOSE_PROJECT_NAME}-celery" # init: true # environment: # CELERY_APP: ietf From 8005a8baa6ffb72c47d6e35f44c0e5d78b456a2d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 13 Feb 2026 11:36:23 -0400 Subject: [PATCH 032/161] chore(dev): update docker-compose depends_on (#10410) * chore(dev): update docker-compose depends_on * chore(dev): another depends_on tweak app/celery don't actually use the blobstore container, but the Django config refers to it so we should probably depend on it anyway --- docker-compose.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ebe53cf95a..4c3f2f6b8e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,9 +13,10 @@ services: # network_mode: service:db depends_on: + - blobdb + - blobstore - db - mq - - blobstore ipc: host @@ -79,7 +80,10 @@ services: command: - '--loglevel=INFO' depends_on: + - blobdb + - blobstore - db + - mq restart: unless-stopped stop_grace_period: 1m volumes: @@ -102,7 +106,10 @@ services: - '--concurrency=1' depends_on: + - blobdb + - blobstore - db + - mq restart: unless-stopped stop_grace_period: 1m volumes: From 8d804f3427b4d4c40aa6bfadba92a433bd468b26 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 20 Feb 2026 15:22:24 -0400 Subject: [PATCH 033/161] feat: button to push slide decks to Meetecho (#10431) * refactor: eliminate inline script Partially removes jQuery from this corner * chore: indicate whether slide updates were sent * feat: admin button to push slide decks to Meetecho * test: new test * test: cover interim case --- ietf/meeting/tests_views.py | 63 +++++++++++++++- ietf/meeting/urls.py | 3 +- ietf/meeting/views.py | 46 ++++++++++++ ietf/static/js/session_details.js | 53 ++++++++++++++ ietf/templates/meeting/session_details.html | 81 ++++++--------------- ietf/utils/meetecho.py | 48 +++++++++--- ietf/utils/tests_meetecho.py | 47 ++++++++++-- package.json | 1 + 8 files changed, 268 insertions(+), 74 deletions(-) create mode 100644 ietf/static/js/session_details.js diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index b94229d969..168999d0aa 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -4754,7 +4754,7 @@ def _approval_url(slidesub): 0, "second session proposed slides should be linked for approval", ) - + class EditScheduleListTests(TestCase): def setUp(self): @@ -7345,6 +7345,67 @@ def test_submit_and_approve_multiple_versions(self, mock_slides_manager_cls): fd.close() self.assertIn('third version', contents) + @override_settings( + MEETECHO_API_CONFIG="fake settings" + ) # enough to trigger API calls + @patch("ietf.meeting.views.SlidesManager") + def test_notify_meetecho_of_all_slides(self, mock_slides_manager_cls): + for meeting_type in ["ietf", "interim"]: + # Reset for the sake of the second iteration + self.client.logout() + mock_slides_manager_cls.reset_mock() + + session = SessionFactory(meeting__type_id=meeting_type) + meeting = session.meeting + + # bad meeting + url = urlreverse( + "ietf.meeting.views.notify_meetecho_of_all_slides", + kwargs={"num": 9999, "acronym": session.group.acronym}, + ) + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + r = self.client.post(url) + self.assertEqual(r.status_code, 404) + self.assertFalse(mock_slides_manager_cls.called) + self.client.logout() + + # good meeting + url = urlreverse( + "ietf.meeting.views.notify_meetecho_of_all_slides", + kwargs={"num": meeting.number, "acronym": session.group.acronym}, + ) + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertEqual(r.status_code, 405) + self.assertFalse(mock_slides_manager_cls.called) + mock_slides_manager = mock_slides_manager_cls.return_value + mock_slides_manager.send_update.return_value = True + r = self.client.post(url) + self.assertEqual(r.status_code, 302) + self.assertEqual(mock_slides_manager.send_update.call_count, 1) + self.assertEqual(mock_slides_manager.send_update.call_args, call(session)) + r = self.client.get(r["Location"]) + messages = list(r.context["messages"]) + self.assertEqual(len(messages), 1) + self.assertEqual( + str(messages[0]), f"Notified Meetecho about slides for {session}" + ) + + mock_slides_manager.send_update.reset_mock() + mock_slides_manager.send_update.return_value = False + r = self.client.post(url) + self.assertEqual(r.status_code, 302) + self.assertEqual(mock_slides_manager.send_update.call_count, 1) + self.assertEqual(mock_slides_manager.send_update.call_args, call(session)) + r = self.client.get(r["Location"]) + messages = list(r.context["messages"]) + self.assertEqual(len(messages), 1) + self.assertIn( + "No sessions were eligible for Meetecho slides update.", str(messages[0]) + ) + @override_settings(IETF_NOTES_URL='https://notes.ietf.org/') class ImportNotesTests(TestCase): diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index af36a6656c..a038e1cfe6 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -15,6 +15,7 @@ def get_redirect_url(self, *args, **kwargs): safe_for_all_meeting_types = [ url(r'^session/(?P[-a-z0-9]+)/?$', views.session_details), + url(r'^session/(?P[-a-z0-9]+)/send_slide_notifications$', views.notify_meetecho_of_all_slides), url(r'^session/(?P\d+)/drafts$', views.add_session_drafts), url(r'^session/(?P\d+)/recordings$', views.add_session_recordings), url(r'^session/(?P\d+)/attendance$', views.session_attendance), @@ -30,7 +31,7 @@ def get_redirect_url(self, *args, **kwargs): url(r'^session/(?P\d+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation), url(r'^session/(?P\d+)\.ics$', views.agenda_ical), url(r'^sessions/(?P[-a-z0-9]+)\.ics$', views.agenda_ical), - url(r'^slidesubmission/(?P\d+)$', views.approve_proposed_slides) + url(r'^slidesubmission/(?P\d+)$', views.approve_proposed_slides), ] diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 8dccda9c87..731dfad88f 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -5710,6 +5710,52 @@ def approve_proposed_slides(request, slidesubmission_id, num): }) +@role_required("Secretariat") +def notify_meetecho_of_all_slides(request, num, acronym): + """Notify meetecho of state of all slides for the group + + Respects the usual notification window around each session. Meetecho will ignore + notices outside that window anyway, so no sense sending them. + """ + meeting = get_meeting(num=num, type_in=None) # raises 404 + if request.method != "POST": + return HttpResponseNotAllowed( + content="Method not allowed", + content_type=f"text/plain; charset={settings.DEFAULT_CHARSET}", + permitted_methods=("POST",), + ) + scheduled_sessions = [ + session + for session in get_sessions(meeting.number, acronym) + if session.current_status == "sched" + ] + sm = SlidesManager(api_config=settings.MEETECHO_API_CONFIG) + updated = [] + for session in scheduled_sessions: + if sm.send_update(session): + updated.append(session) + if len(updated) > 0: + messages.success( + request, + f"Notified Meetecho about slides for {','.join(str(s) for s in updated)}", + ) + elif sm.slides_notify_time is not None: + messages.warning( + request, + "No sessions were eligible for Meetecho slides update. Updates are " + f"only sent within {sm.slides_notify_time} before or after the session.", + ) + else: + messages.warning( + request, + "No sessions were eligible for Meetecho slides update. Updates are " + "currently disabled.", + ) + return redirect( + "ietf.meeting.views.session_details", num=meeting.number, acronym=acronym + ) + + def import_session_minutes(request, session_id, num): """Import session minutes from the ietf.notes.org site diff --git a/ietf/static/js/session_details.js b/ietf/static/js/session_details.js new file mode 100644 index 0000000000..03d1b2d3d9 --- /dev/null +++ b/ietf/static/js/session_details.js @@ -0,0 +1,53 @@ +// Copyright The IETF Trust 2026, All Rights Reserved +// Relies on other scripts being loaded, see usage in session_details.html +document.addEventListener('DOMContentLoaded', () => { + // Init with best guess at local timezone. + ietf_timezone.set_tz_change_callback(timezone_changed) // cb is in upcoming.js + ietf_timezone.initialize('local') + + // Set up sortable elements if the user can manage materials + if (document.getElementById('can-manage-materials-flag')) { + const sortables = [] + const options = { + group: 'slides', + animation: 150, + handle: '.drag-handle', + onAdd: function (event) {onAdd(event)}, + onRemove: function (event) {onRemove(event)}, + onEnd: function (event) {onEnd(event)} + } + + function onAdd (event) { + const old_session = event.from.getAttribute('data-session') + const new_session = event.to.getAttribute('data-session') + $.post(event.to.getAttribute('data-add-to-session'), { + 'order': event.newIndex + 1, + 'name': event.item.getAttribute('name') + }) + $(event.item).find('td:eq(1)').find('a').each(function () { + $(this).attr('href', $(this).attr('href').replace(old_session, new_session)) + }) + } + + function onRemove (event) { + const old_session = event.from.getAttribute('data-session') + $.post(event.from.getAttribute('data-remove-from-session'), { + 'oldIndex': event.oldIndex + 1, + 'name': event.item.getAttribute('name') + }) + } + + function onEnd (event) { + if (event.to == event.from) { + $.post(event.from.getAttribute('data-reorder-in-session'), { + 'oldIndex': event.oldIndex + 1, + 'newIndex': event.newIndex + 1 + }) + } + } + + for (const elt of document.querySelectorAll('.slides tbody')) { + sortables.push(Sortable.create(elt, options)) + } + } +}) diff --git a/ietf/templates/meeting/session_details.html b/ietf/templates/meeting/session_details.html index 55fa3d3857..a4d9ba1090 100644 --- a/ietf/templates/meeting/session_details.html +++ b/ietf/templates/meeting/session_details.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2026, All Rights Reserved #} {% load origin ietf_filters static %} {% block title %}{{ meeting }} : {{ group.acronym }}{% endblock %} {% block morecss %} @@ -53,69 +53,36 @@

    Unscheduled Sessions

    {% endif %} {% if forloop.last %}
    {% endif %} {% endfor %} + {% if user|has_role:"Secretariat" %} +
    +
    + Secretariat Only +
    +
    +
    + {% csrf_token %} + +
    +
    +
    + {% endif %} + {% comment %} + The existence of an element with id canManageMaterialsFlag is checked in + session_details.js to determine whether it should init the sortable tables. + Not the most elegant approach, but it works. + {% endcomment %} + {% if can_manage_materials %}
    {% endif %} {% endblock %} {% block js %} - {% if can_manage_materials %} - {% endif %} + {% endblock %} \ No newline at end of file diff --git a/ietf/utils/meetecho.py b/ietf/utils/meetecho.py index 7654f67cd1..943f3789ef 100644 --- a/ietf/utils/meetecho.py +++ b/ietf/utils/meetecho.py @@ -508,8 +508,13 @@ def _should_send_update(self, session): return (timeslot.time - self.slides_notify_time) < now < (timeslot.end_time() + self.slides_notify_time) def add(self, session: "Session", slides: "Document", order: int): + """Add a slide deck to the session + + Returns True if the update was sent, False if it was not sent because the + current time is outside the update window for the session. + """ if not self._should_send_update(session): - return + return False # Would like to confirm that session.presentations includes the slides Document, but we can't # (same problem regarding unsaved Documents discussed in the docstring) @@ -524,11 +529,16 @@ def add(self, session: "Session", slides: "Document", order: int): "order": order, } ) + return True def delete(self, session: "Session", slides: "Document"): - """Delete a slide deck from the session""" + """Delete a slide deck from the session + + Returns True if the update was sent, False if it was not sent because the + current time is outside the update window for the session. + """ if not self._should_send_update(session): - return + return False if session.presentations.filter(document=slides).exists(): # "order" problems are very likely to result if we delete slides that are actually still @@ -543,12 +553,17 @@ def delete(self, session: "Session", slides: "Document"): id=slides.pk, ) if session.presentations.filter(document__type_id="slides").exists(): - self.send_update(session) # adjust order to fill in the hole + self._send_update(session) # adjust order to fill in the hole + return True def revise(self, session: "Session", slides: "Document"): - """Replace existing deck with its current state""" + """Replace existing deck with its current state + + Returns True if the update was sent, False if it was not sent because the + current time is outside the update window for the session. + """ if not self._should_send_update(session): - return + return False sp = session.presentations.filter(document=slides).first() if sp is None: @@ -561,11 +576,13 @@ def revise(self, session: "Session", slides: "Document"): id=slides.pk, ) self.add(session, slides, order) # fill in the hole + return True - def send_update(self, session: "Session"): - if not self._should_send_update(session): - return - + def _send_update(self, session: "Session"): + """Notify of the current state of the session's slides (no time window check) + + This is a private helper - use send_update() (no leading underscore) instead. + """ self.api.update_slide_decks( wg_token=self.wg_token(session.group), session=str(session.pk), @@ -580,3 +597,14 @@ def send_update(self, session: "Session"): for deck in session.presentations.filter(document__type="slides") ] ) + + def send_update(self, session: "Session"): + """Notify of the current state of the session's slides + + Returns True if the update was sent, False if it was not sent because the + current time is outside the update window for the session. + """ + if not self._should_send_update(session): + return False + self._send_update(session) + return True diff --git a/ietf/utils/tests_meetecho.py b/ietf/utils/tests_meetecho.py index 502e936483..c076a3df74 100644 --- a/ietf/utils/tests_meetecho.py +++ b/ietf/utils/tests_meetecho.py @@ -547,7 +547,8 @@ def test_add(self, mock_add, mock_wg_token): sm = SlidesManager(settings.MEETECHO_API_CONFIG) session = SessionFactory() slides_doc = DocumentFactory(type_id="slides") - sm.add(session, slides_doc, 13) + retval = sm.add(session, slides_doc, 13) + self.assertIs(retval, True) self.assertTrue(mock_wg_token.called) self.assertTrue(mock_add.called) self.assertEqual( @@ -565,6 +566,14 @@ def test_add(self, mock_add, mock_wg_token): ), ) + # Test return value when no update is sent. Really ought to do a more + # careful test of the _should_send_update() method. + sm = SlidesManager( + settings.MEETECHO_API_CONFIG | {"slides_notify_time": None} + ) + retval = sm.add(session, slides_doc, 14) + self.assertIs(retval, False) + @patch("ietf.utils.meetecho.MeetechoAPI.update_slide_decks") @patch("ietf.utils.meetecho.MeetechoAPI.delete_slide_deck") def test_delete(self, mock_delete, mock_update, mock_wg_token): @@ -580,7 +589,8 @@ def test_delete(self, mock_delete, mock_update, mock_wg_token): sm.delete(session, slides_doc) # can't remove slides still attached to the session self.assertFalse(any([mock_wg_token.called, mock_delete.called, mock_update.called])) - sm.delete(session, removed_slides_doc) + retval = sm.delete(session, removed_slides_doc) + self.assertIs(retval, True) self.assertTrue(mock_wg_token.called) self.assertTrue(mock_delete.called) self.assertEqual( @@ -609,9 +619,18 @@ def test_delete(self, mock_delete, mock_update, mock_wg_token): # Delete the other session and check that we don't make the update call slides.delete() - sm.delete(session, slides_doc) + retval = sm.delete(session, slides_doc) + self.assertIs(retval, True) self.assertTrue(mock_delete.called) self.assertFalse(mock_update.called) + + # Test return value when no update is sent. Really ought to do a more + # careful test of the _should_send_update() method. + sm = SlidesManager( + settings.MEETECHO_API_CONFIG | {"slides_notify_time": None} + ) + retval = sm.delete(session, slides_doc) + self.assertIs(retval, False) @patch("ietf.utils.meetecho.MeetechoAPI.delete_slide_deck") @patch("ietf.utils.meetecho.MeetechoAPI.add_slide_deck") @@ -619,7 +638,8 @@ def test_revise(self, mock_add, mock_delete, mock_wg_token): sm = SlidesManager(settings.MEETECHO_API_CONFIG) slides = SessionPresentationFactory(document__type_id="slides", order=23) slides_doc = slides.document - sm.revise(slides.session, slides.document) + retval = sm.revise(slides.session, slides_doc) + self.assertIs(retval, True) self.assertTrue(mock_wg_token.called) self.assertTrue(mock_delete.called) self.assertEqual( @@ -642,13 +662,22 @@ def test_revise(self, mock_add, mock_delete, mock_wg_token): ), ) + # Test return value when no update is sent. Really ought to do a more + # careful test of the _should_send_update() method. + sm = SlidesManager( + settings.MEETECHO_API_CONFIG | {"slides_notify_time": None} + ) + retval = sm.revise(slides.session, slides_doc) + self.assertIs(retval, False) + @patch("ietf.utils.meetecho.MeetechoAPI.update_slide_decks") def test_send_update(self, mock_send_update, mock_wg_token): sm = SlidesManager(settings.MEETECHO_API_CONFIG) slides = SessionPresentationFactory(document__type_id="slides") SessionPresentationFactory(session=slides.session, document__type_id="agenda") - sm.send_update(slides.session) + retval = sm.send_update(slides.session) + self.assertIs(retval, True) self.assertTrue(mock_wg_token.called) self.assertTrue(mock_send_update.called) self.assertEqual( @@ -667,3 +696,11 @@ def test_send_update(self, mock_send_update, mock_wg_token): ] ) ) + + # Test return value when no update is sent. Really ought to do a more + # careful test of the _should_send_update() method. + sm = SlidesManager( + settings.MEETECHO_API_CONFIG | {"slides_notify_time": None} + ) + retval = sm.send_update(slides.session) + self.assertIs(retval, False) diff --git a/package.json b/package.json index e2e6fd7dab..fec29275b4 100644 --- a/package.json +++ b/package.json @@ -148,6 +148,7 @@ "ietf/static/js/moment.js", "ietf/static/js/password_strength.js", "ietf/static/js/select2.js", + "ietf/static/js/session_details.js", "ietf/static/js/session_details_form.js", "ietf/static/js/session_form.js", "ietf/static/js/session_request.js", From 619b2aee0f3b4acbc95a44f6fd3e8785163f6a93 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 20 Feb 2026 13:22:49 -0600 Subject: [PATCH 034/161] fix: adjust draft-stream-ietf state descriptions per IESG (#10437) --- ...ge_draft_stream_ietf_state_descriptions.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 ietf/doc/migrations/0031_change_draft_stream_ietf_state_descriptions.py diff --git a/ietf/doc/migrations/0031_change_draft_stream_ietf_state_descriptions.py b/ietf/doc/migrations/0031_change_draft_stream_ietf_state_descriptions.py new file mode 100644 index 0000000000..c664126da3 --- /dev/null +++ b/ietf/doc/migrations/0031_change_draft_stream_ietf_state_descriptions.py @@ -0,0 +1,57 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations + + +def forward(apps, schema_editor): + State = apps.get_model("doc", "State") + for name, desc in [ + ( + "Adopted by a WG", + "The individual submission document has been adopted by the Working Group (WG), but some administrative matter still needs to be completed (e.g., a WG document replacing this document with the typical naming convention of 'draft-ietf-wgname-topic-nn' has not yet been submitted).", + ), + ( + "WG Document", + "The document has been identified as a Working Group (WG) document and is under development per Section 7.2 of RFC2418.", + ), + ( + "Waiting for WG Chair Go-Ahead", + "The Working Group (WG) document has completed Working Group Last Call (WGLC), but the WG chairs are not yet ready to call consensus on the document. The reasons for this may include comments from the WGLC need to be responded to, or a revision to the document is needed.", + ), + ( + "Submitted to IESG for Publication", + "The Working Group (WG) document has been submitted to the Internet Engineering Steering Group (IESG) for evaluation and publication per Section 7.4 of RFC2418. See the “IESG State” or “RFC Editor State” for further details on the state of the document.", + ), + ]: + State.objects.filter(name=name).update(desc=desc, type="draft-stream-ietf") + + +def reverse(apps, schema_editor): + State = apps.get_model("doc", "State") + for name, desc in [ + ( + "Adopted by a WG", + "The individual submission document has been adopted by the Working Group (WG), but a WG document replacing this document with the typical naming convention of 'draft- ietf-wgname-topic-nn' has not yet been submitted.", + ), + ( + "WG Document", + "The document has been adopted by the Working Group (WG) and is under development. A document can only be adopted by one WG at a time. However, a document may be transferred between WGs.", + ), + ( + "Waiting for WG Chair Go-Ahead", + "The Working Group (WG) document has completed Working Group Last Call (WGLC), but the WG chair(s) are not yet ready to call consensus on the document. The reasons for this may include comments from the WGLC need to be responded to, or a revision to the document is needed", + ), + ( + "Submitted to IESG for Publication", + "The Working Group (WG) document has left the WG and been submitted to the Internet Engineering Steering Group (IESG) for evaluation and publication. See the “IESG State” or “RFC Editor State” for further details on the state of the document.", + ), + ]: + State.objects.filter(name=name).update(desc=desc, type="draft-stream-ietf") + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0030_alter_dochistory_title_alter_document_title"), + ] + + operations = [migrations.RunPython(forward, reverse)] From c4be6318f73cbf896b5cc1f3416040e12b4611f4 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 20 Feb 2026 15:25:57 -0400 Subject: [PATCH 035/161] feat: more API fields+filtering; drop RfcAuthor.email field (#10432) * feat: RfcAuthorSerializer.email is current email * refactor: RfcAuthor email field -> property * feat: more RfcMetadataSerializer fields * shepherd email (with a fallback to the draft) * doc ad email * area ad emails * group list email * fix: filter RFCs by any group type * feat: filter by RFC numbers * fix: shepherd -> draft object in response JSON * fix: consistent filter naming * chore: migration * test: update test_notify_rfc_published * fix: RfcAuthor.email() -> Email, not str * fix: update RfcAuthorFactory * fix: consistent blank value in email() * fix: guard against non-prefetched queryset * test: fix nomcom test * refactor: name-addr -> addr for ad/shepherd Also falls back to current primary email for ad/shepherd if the email on record is inactive. --- ietf/api/tests_views_rpc.py | 25 +++++----- ietf/doc/admin.py | 4 +- ietf/doc/api.py | 10 +++- ietf/doc/factories.py | 1 - .../migrations/0031_remove_rfcauthor_email.py | 16 ++++++ ietf/doc/models.py | 6 ++- ietf/doc/serializers.py | 50 +++++++++++++++---- ietf/doc/views_doc.py | 2 +- ietf/group/serializers.py | 32 ++++++++++-- ietf/nomcom/tests.py | 1 - 10 files changed, 115 insertions(+), 32 deletions(-) create mode 100644 ietf/doc/migrations/0031_remove_rfcauthor_email.py diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 09fb40bf6e..1fbb4c3f02 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -143,22 +143,23 @@ def test_notify_rfc_published(self): self.assertEqual(rfc.title, "RFC " + draft.title) self.assertEqual(rfc.documentauthor_set.count(), 0) self.assertEqual( - list( - rfc.rfcauthor_set.values( - "titlepage_name", - "is_editor", - "person", - "email", - "affiliation", - "country", - ) - ), + [ + { + "titlepage_name": ra.titlepage_name, + "is_editor": ra.is_editor, + "person": ra.person, + "email": ra.email, + "affiliation": ra.affiliation, + "country": ra.country, + } + for ra in rfc.rfcauthor_set.all() + ], [ { "titlepage_name": f"titlepage {author.name}", "is_editor": False, - "person": author.pk, - "email": author.email_address(), + "person": author, + "email": author.email(), "affiliation": "Some Affiliation", "country": "CA", } diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index f082418935..b604d4f096 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -242,6 +242,6 @@ def is_deleted(self, instance): class RfcAuthorAdmin(admin.ModelAdmin): list_display = ['id', 'document', 'titlepage_name', 'person', 'email', 'affiliation', 'country', 'order'] - search_fields = ['document__name', 'titlepage_name', 'person__name', 'email__address', 'affiliation', 'country'] - raw_id_fields = ["document", "person", "email"] + search_fields = ['document__name', 'titlepage_name', 'person__name', 'email', 'affiliation', 'country'] + raw_id_fields = ["document", "person"] admin.site.register(RfcAuthor, RfcAuthorAdmin) diff --git a/ietf/doc/api.py b/ietf/doc/api.py index 6a4c0c9fd5..75993f463e 100644 --- a/ietf/doc/api.py +++ b/ietf/doc/api.py @@ -42,13 +42,21 @@ class RfcLimitOffsetPagination(LimitOffsetPagination): max_limit = 500 +class NumberInFilter(filters.BaseInFilter, filters.NumberFilter): + """Filter against a comma-separated list of numbers""" + pass + + class RfcFilter(filters.FilterSet): published = filters.DateFromToRangeFilter() stream = filters.ModelMultipleChoiceFilter( queryset=StreamName.objects.filter(used=True) ) + number = NumberInFilter( + field_name="rfc_number" + ) group = filters.ModelMultipleChoiceFilter( - queryset=Group.objects.wgs(), + queryset=Group.objects.all(), field_name="group__acronym", to_field_name="acronym", ) diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index aad01be04f..bc38765446 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -391,7 +391,6 @@ class Meta: lambda obj: " ".join([obj.person.initials(), obj.person.last_name()]) ) person = factory.SubFactory('ietf.person.factories.PersonFactory') - email = factory.LazyAttribute(lambda obj: obj.person.email()) affiliation = factory.Faker('company') order = factory.LazyAttribute(lambda o: o.document.rfcauthor_set.count() + 1) diff --git a/ietf/doc/migrations/0031_remove_rfcauthor_email.py b/ietf/doc/migrations/0031_remove_rfcauthor_email.py new file mode 100644 index 0000000000..c4c1911bfe --- /dev/null +++ b/ietf/doc/migrations/0031_remove_rfcauthor_email.py @@ -0,0 +1,16 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0030_alter_dochistory_title_alter_document_title"), + ] + + operations = [ + migrations.RemoveField( + model_name="rfcauthor", + name="email", + ), + ] diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 8f700bf496..cc28951be0 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -937,7 +937,6 @@ class RfcAuthor(models.Model): titlepage_name = models.CharField(max_length=128, blank=False) is_editor = models.BooleanField(default=False) person = ForeignKey(Person, null=True, blank=True, on_delete=models.PROTECT) - email = ForeignKey(Email, help_text="Email address used by author for submission", blank=True, null=True, on_delete=models.PROTECT) affiliation = models.CharField(max_length=100, blank=True, help_text="Organization/company used by author for submission") country = models.CharField(max_length=255, blank=True, help_text="Country used by author for submission") order = models.IntegerField(default=1) @@ -951,6 +950,11 @@ class Meta: models.Index(fields=["document", "order"]) ] + @property + def email(self) -> Email | None: + return self.person.email() if self.person else None + + class DocumentAuthorInfo(models.Model): person = ForeignKey(Person) # email should only be null for some historic documents diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index e8d373164b..b054b074d7 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -9,14 +9,20 @@ from drf_spectacular.utils import extend_schema_field from rest_framework import serializers -from ietf.group.serializers import GroupSerializer +from ietf.group.serializers import ( + AreaDirectorSerializer, + AreaSerializer, + GroupSerializer, +) from ietf.name.serializers import StreamNameSerializer +from ietf.utils import log from .models import Document, DocumentAuthor, RfcAuthor class RfcAuthorSerializer(serializers.ModelSerializer): """Serializer for an RfcAuthor / DocumentAuthor in a response""" + email = serializers.EmailField(source="email.address", read_only=True) datatracker_person_path = serializers.URLField( source="person.get_absolute_url", required=False, @@ -29,7 +35,7 @@ class Meta: "titlepage_name", "is_editor", "person", - "email", # relies on email.pk being email.address + "email", "affiliation", "country", "datatracker_person_path", @@ -48,7 +54,6 @@ def to_representation(self, instance): titlepage_name=document_author.person.plain_name(), is_editor=False, person=document_author.person, - email=document_author.email, affiliation=document_author.affiliation, country=document_author.country, order=document_author.order, @@ -174,10 +179,16 @@ def to_representation(self, instance: Document): return super().to_representation(instance=RfcStatus.from_document(instance)) +class ShepherdSerializer(serializers.Serializer): + email = serializers.EmailField(source="email_address") + + class RelatedDraftSerializer(serializers.Serializer): id = serializers.IntegerField(source="source.id") name = serializers.CharField(source="source.name") title = serializers.CharField(source="source.title") + shepherd = ShepherdSerializer(source="source.shepherd") + ad = AreaDirectorSerializer(source="source.ad") class RelatedRfcSerializer(serializers.Serializer): @@ -205,15 +216,23 @@ class RfcFormatSerializer(serializers.Serializer): class RfcMetadataSerializer(serializers.ModelSerializer): - """Serialize metadata of an RFC""" + """Serialize metadata of an RFC + + This needs to be called with a Document queryset that has been processed with + api.augment_rfc_queryset() or it very likely will not work. Some of the typing + refers to Document, but this should really be WithAnnotations[Document, ...]. + However, have not been able to make that work yet. + """ number = serializers.IntegerField(source="rfc_number") published = serializers.DateField() status = RfcStatusSerializer(source="*") authors = serializers.SerializerMethodField() group = GroupSerializer() - area = GroupSerializer(source="group.area", required=False) + area = AreaSerializer(source="group.area", required=False) stream = StreamNameSerializer() + ad = AreaDirectorSerializer(read_only=True) + group_list_email = serializers.EmailField(source="group.list_email", read_only=True) identifiers = serializers.SerializerMethodField() draft = serializers.SerializerMethodField() obsoletes = RelatedRfcSerializer(many=True, read_only=True) @@ -239,6 +258,8 @@ class Meta: "group", "area", "stream", + "ad", + "group_list_email", "identifiers", "obsoletes", "obsoleted_by", @@ -276,11 +297,20 @@ def get_identifiers(self, doc: Document): return DocIdentifierSerializer(instance=identifiers, many=True).data @extend_schema_field(RelatedDraftSerializer) - def get_draft(self, object): - try: - related_doc = object.drafts[0] - except IndexError: - return None + def get_draft(self, doc: Document): + if hasattr(doc, "drafts"): + # This is the expected case - drafts is added by a Prefetch in + # the augment_rfc_queryset() method. + try: + related_doc = doc.drafts[0] + except IndexError: + return None + else: + # Fallback in case augment_rfc_queryset() was not called + log.log( + f"Warning: {self.__class__}.get_draft() called without prefetched draft" + ) + related_doc = doc.came_from_draft() return RelatedDraftSerializer(related_doc).data diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 0578da1b77..0ae7520681 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1657,7 +1657,7 @@ def extract_name(s): doc.rfcauthor_set if doc.type_id == "rfc" and doc.rfcauthor_set.exists() else doc.documentauthor_set - ).select_related("person", "email").order_by("order") + ).select_related("person").prefetch_related("person__email_set").order_by("order") data["authors"] = [ { "name": author.titlepage_name if hasattr(author, "titlepage_name") else author.person.name, diff --git a/ietf/group/serializers.py b/ietf/group/serializers.py index 08e6bba81a..85f209019c 100644 --- a/ietf/group/serializers.py +++ b/ietf/group/serializers.py @@ -1,11 +1,37 @@ -# Copyright The IETF Trust 2024, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved """django-rest-framework serializers""" + +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers -from .models import Group +from ietf.person.models import Email +from .models import Group, Role class GroupSerializer(serializers.ModelSerializer): class Meta: model = Group - fields = ["acronym", "name", "type"] + fields = ["acronym", "name", "type", "list_email"] + + +class AreaDirectorSerializer(serializers.Serializer): + """Serialize an area director + + Works with Email or Role + """ + + email = serializers.SerializerMethodField() + + @extend_schema_field(serializers.EmailField) + def get_email(self, instance: Email | Role): + if isinstance(instance, Role): + return instance.email.email_address() + return instance.email_address() + + +class AreaSerializer(serializers.ModelSerializer): + ads = AreaDirectorSerializer(many=True, read_only=True) + + class Meta: + model = Group + fields = ["acronym", "name", "type", "ads"] diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index b6e8c57da7..210788ce07 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -2528,7 +2528,6 @@ def test_get_qualified_author_queryset(self): document=rfc, person=people[0], titlepage_name="P. Zero", - email=people[0].email_set.first(), ) self.assertCountEqual( get_qualified_author_queryset(base_qs, now - 5 * one_year, now), From d7319030f3d3a38bf0c048e713bc1f068ca228ed Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 20 Feb 2026 16:12:43 -0400 Subject: [PATCH 036/161] chore: renumber migrations (#10441) --- ...remove_rfcauthor_email.py => 0032_remove_rfcauthor_email.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ietf/doc/migrations/{0031_remove_rfcauthor_email.py => 0032_remove_rfcauthor_email.py} (80%) diff --git a/ietf/doc/migrations/0031_remove_rfcauthor_email.py b/ietf/doc/migrations/0032_remove_rfcauthor_email.py similarity index 80% rename from ietf/doc/migrations/0031_remove_rfcauthor_email.py rename to ietf/doc/migrations/0032_remove_rfcauthor_email.py index c4c1911bfe..a0e147da59 100644 --- a/ietf/doc/migrations/0031_remove_rfcauthor_email.py +++ b/ietf/doc/migrations/0032_remove_rfcauthor_email.py @@ -5,7 +5,7 @@ class Migration(migrations.Migration): dependencies = [ - ("doc", "0030_alter_dochistory_title_alter_document_title"), + ("doc", "0031_change_draft_stream_ietf_state_descriptions"), ] operations = [ From abf5e0d97ca38ede129b218d3a895f9bb5ab441b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 20 Feb 2026 17:45:31 -0400 Subject: [PATCH 037/161] fix: allow null for shepherd/ad (#10443) --- ietf/doc/serializers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index b054b074d7..e42a6a0293 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -187,8 +187,8 @@ class RelatedDraftSerializer(serializers.Serializer): id = serializers.IntegerField(source="source.id") name = serializers.CharField(source="source.name") title = serializers.CharField(source="source.title") - shepherd = ShepherdSerializer(source="source.shepherd") - ad = AreaDirectorSerializer(source="source.ad") + shepherd = ShepherdSerializer(source="source.shepherd", allow_null=True) + ad = AreaDirectorSerializer(source="source.ad", allow_null=True) class RelatedRfcSerializer(serializers.Serializer): @@ -231,7 +231,7 @@ class RfcMetadataSerializer(serializers.ModelSerializer): group = GroupSerializer() area = AreaSerializer(source="group.area", required=False) stream = StreamNameSerializer() - ad = AreaDirectorSerializer(read_only=True) + ad = AreaDirectorSerializer(read_only=True, allow_null=True) group_list_email = serializers.EmailField(source="group.list_email", read_only=True) identifiers = serializers.SerializerMethodField() draft = serializers.SerializerMethodField() From 18902ff1be5746cafc958561e563f00be5f05176 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 24 Feb 2026 13:10:42 -0400 Subject: [PATCH 038/161] fix: more accurate group areas (red API) (#10462) * fix: RFC area only for ietf stream * fix: no ADs for inactive areas --- ietf/doc/serializers.py | 19 ++++++++++++++++++- ietf/group/serializers.py | 9 ++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index e42a6a0293..36076c30be 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -229,7 +229,7 @@ class RfcMetadataSerializer(serializers.ModelSerializer): status = RfcStatusSerializer(source="*") authors = serializers.SerializerMethodField() group = GroupSerializer() - area = AreaSerializer(source="group.area", required=False) + area = serializers.SerializerMethodField() stream = StreamNameSerializer() ad = AreaDirectorSerializer(read_only=True, allow_null=True) group_list_email = serializers.EmailField(source="group.list_email", read_only=True) @@ -287,6 +287,23 @@ def get_authors(self, doc: Document): many=True, ).data + @extend_schema_field(AreaSerializer(required=False)) + def get_area(self, doc: Document): + """Get area for the RFC + + This logic might be better moved to Document or a combination of Document + and Group. The current (2026-02-24) Group.area() method is not strict enough: + it does not limit to WG groups or IETF-stream documents. + """ + if doc.stream_id != "ietf": + return None + if doc.group is None: + return None + parent = doc.group.parent + if parent.type_id == "area": + return AreaSerializer(parent).data + return None + @extend_schema_field(DocIdentifierSerializer(many=True)) def get_identifiers(self, doc: Document): identifiers = [] diff --git a/ietf/group/serializers.py b/ietf/group/serializers.py index 85f209019c..4ba92232c5 100644 --- a/ietf/group/serializers.py +++ b/ietf/group/serializers.py @@ -30,8 +30,15 @@ def get_email(self, instance: Email | Role): class AreaSerializer(serializers.ModelSerializer): - ads = AreaDirectorSerializer(many=True, read_only=True) + ads = serializers.SerializerMethodField() class Meta: model = Group fields = ["acronym", "name", "type", "ads"] + + @extend_schema_field(AreaDirectorSerializer(many=True)) + def get_ads(self, area: Group): + return AreaDirectorSerializer( + area.ads() if area.is_active else Role.objects.none(), + many=True, + ).data From 07efd2b078a461da2eb7e197fc91f2ae0b45ac40 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 25 Feb 2026 12:58:57 -0400 Subject: [PATCH 039/161] fix: unbreak red API + group serializer tests (#10467) * test: group serializer tests * fix: Group.ads is a property * fix: no need for type in AreaSerializer --- ietf/group/serializers.py | 4 +- ietf/group/tests_serializers.py | 90 +++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 ietf/group/tests_serializers.py diff --git a/ietf/group/serializers.py b/ietf/group/serializers.py index 4ba92232c5..db3b37af48 100644 --- a/ietf/group/serializers.py +++ b/ietf/group/serializers.py @@ -34,11 +34,11 @@ class AreaSerializer(serializers.ModelSerializer): class Meta: model = Group - fields = ["acronym", "name", "type", "ads"] + fields = ["acronym", "name", "ads"] @extend_schema_field(AreaDirectorSerializer(many=True)) def get_ads(self, area: Group): return AreaDirectorSerializer( - area.ads() if area.is_active else Role.objects.none(), + area.ads if area.is_active else Role.objects.none(), many=True, ).data diff --git a/ietf/group/tests_serializers.py b/ietf/group/tests_serializers.py new file mode 100644 index 0000000000..bf29e6c8fd --- /dev/null +++ b/ietf/group/tests_serializers.py @@ -0,0 +1,90 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +from ietf.group.factories import RoleFactory, GroupFactory +from ietf.group.serializers import ( + AreaDirectorSerializer, + AreaSerializer, + GroupSerializer, +) +from ietf.person.factories import EmailFactory +from ietf.utils.test_utils import TestCase + + +class GroupSerializerTests(TestCase): + def test_serializes(self): + wg = GroupFactory() + serialized = GroupSerializer(wg).data + self.assertEqual( + serialized, + { + "acronym": wg.acronym, + "name": wg.name, + "type": "wg", + "list_email": wg.list_email, + }, + ) + + +class AreaDirectorSerializerTests(TestCase): + def test_serializes_role(self): + """Should serialize a Role correctly""" + role = RoleFactory(group__type_id="area", name_id="ad") + serialized = AreaDirectorSerializer(role).data + self.assertEqual( + serialized, + {"email": role.email.email_address()}, + ) + + def test_serializes_email(self): + """Should serialize an Email correctly""" + email = EmailFactory() + serialized = AreaDirectorSerializer(email).data + self.assertEqual( + serialized, + {"email": email.email_address()}, + ) + + +class AreaSerializerTests(TestCase): + def test_serializes_active_area(self): + """Should serialize an active area correctly""" + area = GroupFactory(type_id="area", state_id="active") + serialized = AreaSerializer(area).data + self.assertEqual( + serialized, + { + "acronym": area.acronym, + "name": area.name, + "ads": [], + }, + ) + ad_roles = RoleFactory.create_batch(2, group=area, name_id="ad") + serialized = AreaSerializer(area).data + self.assertEqual(serialized["acronym"], area.acronym) + self.assertEqual(serialized["name"], area.name) + self.assertCountEqual( + serialized["ads"], + [{"email": ad.email.email_address()} for ad in ad_roles], + ) + + def test_serializes_inactive_area(self): + """Should serialize an inactive area correctly""" + area = GroupFactory(type_id="area", state_id="conclude") + serialized = AreaSerializer(area).data + self.assertEqual( + serialized, + { + "acronym": area.acronym, + "name": area.name, + "ads": [], + }, + ) + RoleFactory.create_batch(2, group=area, name_id="ad") + serialized = AreaSerializer(area).data + self.assertEqual( + serialized, + { + "acronym": area.acronym, + "name": area.name, + "ads": [], + }, + ) From b81249884877e20c6e311478fe25b472c869c555 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 25 Feb 2026 13:24:30 -0600 Subject: [PATCH 040/161] feat: notify errata system of new rfc (#10465) * feat: notify errata system of new rfc * chore: ruff --- docker/configs/settings_local.py | 4 ++++ ietf/api/tests_views_rpc.py | 28 +++++++++++++++++++------ ietf/api/views_rpc.py | 9 +++++++- ietf/doc/tasks.py | 5 +++++ ietf/doc/utils_errata.py | 35 ++++++++++++++++++++++++++++++++ ietf/settings.py | 5 +++++ 6 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 ietf/doc/utils_errata.py diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index e357ce3f73..1d4e6916b9 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -105,3 +105,7 @@ "ietf.api.red_api" : ["devtoken", "redtoken"], # Not a real secret "ietf.api.views_rpc" : ["devtoken"], # Not a real secret } + +# Errata system api configuration +ERRATA_METADATA_NOTIFICATION_URL = "http://host.docker.internal:8808/api/rfc_metadata_update/" +ERRATA_METADATA_NOTIFICATION_API_KEY = "not a real secret" diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 1fbb4c3f02..6a5a5c9b88 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -9,9 +9,10 @@ from django.db.models.functions import Coalesce from django.test.utils import override_settings from django.urls import reverse as urlreverse +import mock from ietf.blobdb.models import Blob -from ietf.doc.factories import IndividualDraftFactory, WgDraftFactory, WgRfcFactory +from ietf.doc.factories import IndividualDraftFactory, RfcFactory, WgDraftFactory, WgRfcFactory from ietf.doc.models import RelatedDocument, Document from ietf.group.factories import RoleFactory, GroupFactory from ietf.person.factories import PersonFactory @@ -77,7 +78,8 @@ def test_draftviewset_references(self): self.assertEqual(refs[0]["name"], draft_bar.name) @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) - def test_notify_rfc_published(self): + @mock.patch("ietf.doc.tasks.signal_update_rfc_metadata_task.delay") + def test_notify_rfc_published(self, mock_task_delay): url = urlreverse("ietf.api.purple_api.notify_rfc_published") area = GroupFactory(type_id="area") rfc_group = GroupFactory(type_id="wg") @@ -90,6 +92,8 @@ def test_notify_rfc_published(self): ) rfc_stream_id = "ise" assert isinstance(draft, Document), "WgDraftFactory should generate a Document" + updates = RfcFactory.create_batch(2) + obsoletes = RfcFactory.create_batch(2) unused_rfc_number = ( Document.objects.filter(rfc_number__isnull=False).aggregate( unused_rfc_number=Max("rfc_number") + 1 @@ -120,8 +124,8 @@ def test_notify_rfc_published(self): "pages": draft.pages + 10, "std_level": "ps", "ad": rfc_ad.pk, - "obsoletes": [], - "updates": [], + "obsoletes": [o.rfc_number for o in obsoletes], + "updates": [o.rfc_number for o in updates], "subseries": [], } r = self.client.post(url, data=post_data, format="json") @@ -172,13 +176,25 @@ def test_notify_rfc_published(self): self.assertEqual(rfc.pages, draft.pages + 10) self.assertEqual(rfc.std_level_id, "ps") self.assertEqual(rfc.ad, rfc_ad) - self.assertEqual(rfc.related_that_doc("obs"), []) - self.assertEqual(rfc.related_that_doc("updates"), []) + self.assertEqual(set(rfc.related_that_doc("obs")), set([o for o in obsoletes])) + self.assertEqual( + set(rfc.related_that_doc("updates")), set([o for o in updates]) + ) self.assertEqual(rfc.part_of(), []) self.assertEqual(draft.get_state().slug, "rfc") # todo test non-empty relationships # todo test references (when updating that is part of the handling) + self.assertTrue(mock_task_delay.called) + mock_args, mock_kwargs = mock_task_delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + expected_rfc_number_list = [rfc.rfc_number] + expected_rfc_number_list.extend( + [d.rfc_number for d in updates + obsoletes] + ) + expected_rfc_number_list = sorted(set(expected_rfc_number_list)) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) def test_upload_rfc_files(self): def _valid_post_data(): diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 2bf16480f2..9273590b28 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -38,6 +38,7 @@ from ietf.doc.models import Document, DocHistory, RfcAuthor from ietf.doc.serializers import RfcAuthorSerializer from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage +from ietf.doc.tasks import signal_update_rfc_metadata_task from ietf.person.models import Email, Person @@ -362,7 +363,7 @@ def post(self, request): serializer.is_valid(raise_exception=True) # Create RFC try: - serializer.save() + rfc = serializer.save() except IntegrityError as err: if Document.objects.filter( rfc_number=serializer.validated_data["rfc_number"] @@ -375,6 +376,12 @@ def post(self, request): f"Unable to publish: {err}", code="unknown-integrity-error", ) + rfc_number_list = [rfc.rfc_number] + rfc_number_list.extend( + [d.rfc_number for d in rfc.related_that_doc(("updates", "obs"))] + ) + rfc_number_list = sorted(set(rfc_number_list)) + signal_update_rfc_metadata_task.delay(rfc_number_list=rfc_number_list) return Response(NotificationAckSerializer().data) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index b463b9cecf..90f4c80af5 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -35,6 +35,7 @@ investigate_fragment, ) from .utils_bofreq import fixup_bofreq_timestamps +from .utils_errata import signal_update_rfc_metadata @shared_task @@ -155,3 +156,7 @@ def rebuild_reference_relations_task(doc_names: list[str]): @shared_task def fixup_bofreq_timestamps_task(): # pragma: nocover fixup_bofreq_timestamps() + +@shared_task +def signal_update_rfc_metadata_task(rfc_number_list=()): + signal_update_rfc_metadata(rfc_number_list) diff --git a/ietf/doc/utils_errata.py b/ietf/doc/utils_errata.py new file mode 100644 index 0000000000..539262151f --- /dev/null +++ b/ietf/doc/utils_errata.py @@ -0,0 +1,35 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import requests + +from django.conf import settings + +from ietf.utils.log import log + + +def signal_update_rfc_metadata(rfc_number_list=()): + key = getattr(settings, "ERRATA_METADATA_NOTIFICATION_API_KEY", None) + if key is not None: + headers = {"X-Api-Key": settings.ERRATA_METADATA_NOTIFICATION_API_KEY} + post_dict = { + "rfc_number_list": list(rfc_number_list), + } + try: + response = requests.post( + settings.ERRATA_METADATA_NOTIFICATION_URL, + headers=headers, + json=post_dict, + timeout=settings.DEFAULT_REQUESTS_TIMEOUT, + ) + except requests.Timeout as e: + log( + f"POST request timed out for {settings.ERRATA_METADATA_NOTIFICATION_URL} ]: {e}" + ) + # raise RuntimeError(f'POST request timed out for {settings.ERRATA_METADATA_NOTIFICATION_URL}') from e + return + if response.status_code != 200: + log( + f"POST request failed for {settings.ERRATA_METADATA_NOTIFICATION_URL} ]: {response.status_code} {response.text}" + ) + else: + log("No API key configured for errata metadata notification, skipping") diff --git a/ietf/settings.py b/ietf/settings.py index 565e8825a9..71b110d762 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1368,6 +1368,11 @@ def skip_unreadable_post(record): MEETECHO_AUDIO_STREAM_URL = "https://mp3.conf.meetecho.com/ietf{session.meeting.number}/{session.pk}.m3u" MEETECHO_SESSION_RECORDING_URL = "https://meetecho-player.ietf.org/playout/?session={session_label}" +# Errata system api configuration +# settings should provide +# ERRATA_METADATA_NOTIFICATION_URL +# ERRATA_METADATA_NOTIFICATION_API_KEY + # Put the production SECRET_KEY in settings_local.py, and also any other # sensitive or site-specific changes. DO NOT commit settings_local.py to svn. from ietf.settings_local import * # pyflakes:ignore pylint: disable=wildcard-import From da5614c4963c3dc4ff8e901c1edd888296219a0d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 25 Feb 2026 18:14:47 -0400 Subject: [PATCH 041/161] test: avoid random fail in test_rfc_index (#10469) --- ietf/sync/tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index bcc87a43aa..21d6cb5cd5 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -301,6 +301,7 @@ def test_rfc_index(self): ad=Person.objects.get(user__username='ad'), external_url="http://my-external-url.example.com", note="this is a note", + pages=54, # make sure this is not 42 ) DocumentAuthorFactory.create_batch(2, document=draft_doc) draft_doc.action_holders.add(draft_doc.ad) # not normally set, but add to be sure it's cleared From c1c24d012d23135725f0206dbe1a6be1e2a7fef4 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 27 Feb 2026 14:31:40 -0400 Subject: [PATCH 042/161] feat: RFC metadata update API (#10476) * feat: more editable RFC fields for API (WIP) Checkpoint commit! * chore: avoid requiring prefetch Makes some fields write-only to achieve this. * refactor: replace EditableRfcSerializer * fix: mark read-only field properly * refactor: SubseriesNameField * test: EditableRfcSerializer * refactor: DocEvent adjustment * feat: record person ids for authors * chore: adjust history message * fix: always save!! * fix: better msg formatting * fix: _almost_ always save!! * fix: lint * refactor: rename var --- ietf/api/serializers_rpc.py | 227 ++++++++++++++++++++++++++---- ietf/api/tests_serializers_rpc.py | 139 ++++++++++++++++++ ietf/api/views_rpc.py | 12 +- ietf/doc/serializers.py | 1 + ietf/doc/utils.py | 16 ++- 5 files changed, 361 insertions(+), 34 deletions(-) create mode 100644 ietf/api/tests_serializers_rpc.py diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 34e2c791c0..d5f5363990 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -216,32 +216,24 @@ class Meta: read_only_fields = ["id", "name"] -class EditableRfcSerializer(serializers.ModelSerializer): - # Would be nice to reconcile this with ietf.doc.serializers.RfcSerializer. - # The purposes of that serializer (representing data for Red) and this one - # (accepting updates from Purple) are different enough that separate formats - # may be needed, but if not it'd be nice to have a single RfcSerializer that - # can serve both. - # - # For now, only handles authors - authors = RfcAuthorSerializer(many=True, min_length=1, source="rfcauthor_set") +def _update_authors(rfc, authors_data): + # Construct unsaved instances from validated author data + new_authors = [RfcAuthor(**authdata) for authdata in authors_data] + # Update the RFC with the new author set + with transaction.atomic(): + change_events = update_rfcauthors(rfc, new_authors) + for event in change_events: + event.save() + return change_events - class Meta: - model = Document - fields = ["id", "authors"] - def update(self, instance, validated_data): - assert isinstance(instance, Document) - authors_data = validated_data.pop("rfcauthor_set", None) - if authors_data is not None: - # Construct unsaved instances from validated author data - new_authors = [RfcAuthor(**ad) for ad in authors_data] - # Update the RFC with the new author set - with transaction.atomic(): - change_events = update_rfcauthors(instance, new_authors) - for event in change_events: - event.save() - return instance +class SubseriesNameField(serializers.RegexField): + + def __init__(self, **kwargs): + # pattern: no leading 0, finite length (arbitrarily set to 5 digits) + regex = r"^(bcp|std|fyi)[1-9][0-9]{0,4}$" + super().__init__(regex, **kwargs) + class RfcPubSerializer(serializers.ModelSerializer): @@ -283,13 +275,7 @@ class RfcPubSerializer(serializers.ModelSerializer): slug_field="rfc_number", queryset=Document.objects.filter(type_id="rfc"), ) - subseries = serializers.ListField( - child=serializers.RegexField( - required=False, - # pattern: no leading 0, finite length (arbitrarily set to 5 digits) - regex=r"^(bcp|std|fyi)[1-9][0-9]{0,4}$", - ) - ) + subseries = serializers.ListField(child=SubseriesNameField(required=False)) # N.b., authors is _not_ a field on Document! authors = RfcAuthorSerializer(many=True) @@ -327,6 +313,9 @@ def validate(self, data): ) return data + def update(self, instance, validated_data): + raise RuntimeError("Cannot update with this serializer") + def create(self, validated_data): """Publish an RFC""" published = validated_data.pop("published") @@ -515,6 +504,182 @@ def _create_rfc(self, validated_data): return rfc +class EditableRfcSerializer(serializers.ModelSerializer): + # Would be nice to reconcile this with ietf.doc.serializers.RfcSerializer. + # The purposes of that serializer (representing data for Red) and this one + # (accepting updates from Purple) are different enough that separate formats + # may be needed, but if not it'd be nice to have a single RfcSerializer that + # can serve both. + # + # Should also consider whether this and RfcPubSerializer should merge. + # + # Treats published and subseries fields as write-only. This isn't quite correct, + # but makes it easier and we don't currently use the serialized value except for + # debugging. + published = serializers.DateTimeField( + default_timezone=datetime.timezone.utc, + write_only=True, + ) + authors = RfcAuthorSerializer(many=True, min_length=1, source="rfcauthor_set") + subseries = serializers.ListField( + child=SubseriesNameField(required=False), + write_only=True, + ) + + class Meta: + model = Document + fields = [ + "published", + "title", + "authors", + "stream", + "abstract", + "pages", + "std_level", + "subseries", + ] + + def create(self, validated_data): + raise RuntimeError("Cannot create with this serializer") + + def update(self, instance, validated_data): + assert isinstance(instance, Document) + assert instance.type_id == "rfc" + rfc = instance # get better name + + system_person = Person.objects.get(name="(System)") + + # Remove data that needs special handling. Use a singleton object to detect + # missing values in case we ever support a value that needs None as an option. + omitted = object() + published = validated_data.pop("published", omitted) + subseries = validated_data.pop("subseries", omitted) + authors_data = validated_data.pop("rfcauthor_set", omitted) + + # Transaction to clean up if something fails + with transaction.atomic(): + # update the rfc Document itself + rfc_changes = [] + rfc_events = [] + + for attr, new_value in validated_data.items(): + old_value = getattr(rfc, attr) + if new_value != old_value: + rfc_changes.append( + f"changed {attr} to '{new_value}' from '{old_value}'" + ) + setattr(rfc, attr, new_value) + if len(rfc_changes) > 0: + rfc_change_summary = f"{', '.join(rfc_changes)}" + rfc_events.append( + DocEvent.objects.create( + doc=rfc, + rev=rfc.rev, + by=system_person, + type="sync_from_rfc_editor", + desc=f"Changed metadata: {rfc_change_summary}", + ) + ) + if authors_data is not omitted: + rfc_events.extend(_update_authors(instance, authors_data)) + + if published is not omitted: + published_event = rfc.latest_event(type="published_rfc") + if published_event is None: + # unexpected, but possible in theory + rfc_events.append( + DocEvent.objects.create( + doc=rfc, + rev=rfc.rev, + type="published_rfc", + time=published, + by=system_person, + desc="RFC published", + ) + ) + rfc_events.append( + DocEvent.objects.create( + doc=rfc, + rev=rfc.rev, + type="sync_from_rfc_editor", + by=system_person, + desc=( + f"Set publication timestamp to {published.isoformat()}" + ), + ) + ) + else: + original_pub_time = published_event.time + if published != original_pub_time: + published_event.time = published + published_event.save() + rfc_events.append( + DocEvent.objects.create( + doc=rfc, + rev=rfc.rev, + type="sync_from_rfc_editor", + by=system_person, + desc=( + f"Changed publication time to " + f"{published.isoformat()} from " + f"{original_pub_time.isoformat()}" + ) + ) + ) + + # update subseries relations + if subseries is not omitted: + for subseries_doc_name in subseries: + ss_slug = subseries_doc_name[:3] + subseries_doc, ss_doc_created = Document.objects.get_or_create( + type_id=ss_slug, name=subseries_doc_name + ) + if ss_doc_created: + subseries_doc.docevent_set.create( + type=f"{ss_slug}_doc_created", + by=system_person, + desc=f"Created {subseries_doc_name} via update of {rfc.name}", + ) + _, ss_rel_created = subseries_doc.relateddocument_set.get_or_create( + relationship_id="contains", target=rfc + ) + if ss_rel_created: + subseries_doc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Added {rfc.name} to {subseries_doc.name}", + ) + rfc_events.append( + rfc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Added {rfc.name} to {subseries_doc.name}", + ) + ) + # Delete subseries relations that are no longer current + stale_subseries_relations = rfc.relations_that("contains").exclude( + source__name__in=subseries + ) + for stale_relation in stale_subseries_relations: + stale_subseries_doc = stale_relation.source + rfc_events.append( + rfc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Removed {rfc.name} from {stale_subseries_doc.name}", + ) + ) + stale_subseries_doc.docevent_set.create( + type="sync_from_rfc_editor", + by=system_person, + desc=f"Removed {rfc.name} from {stale_subseries_doc.name}", + ) + stale_subseries_relations.delete() + if len(rfc_events) > 0: + rfc.save_with_history(rfc_events) + return rfc + + class RfcFileSerializer(serializers.Serializer): # The structure of this serializer is constrained by what openapi-generator-cli's # python generator can correctly serialize as multipart/form-data. It does not diff --git a/ietf/api/tests_serializers_rpc.py b/ietf/api/tests_serializers_rpc.py new file mode 100644 index 0000000000..1babb4c30f --- /dev/null +++ b/ietf/api/tests_serializers_rpc.py @@ -0,0 +1,139 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +from django.utils import timezone + +from ietf.utils.test_utils import TestCase +from ietf.doc.models import Document +from ietf.doc.factories import WgRfcFactory +from .serializers_rpc import EditableRfcSerializer + + +class EditableRfcSerializerTests(TestCase): + def test_create(self): + serializer = EditableRfcSerializer( + data={ + "published": timezone.now(), + "title": "Yadda yadda yadda", + "authors": [ + { + "titlepage_name": "B. Fett", + "is_editor": False, + "affiliation": "DBA Galactic Empire", + "country": "", + }, + ], + "stream": "ietf", + "abstract": "A long time ago in a galaxy far, far away...", + "pages": 3, + "std_level": "inf", + "subseries": ["fyi999"], + } + ) + self.assertTrue(serializer.is_valid()) + with self.assertRaises(RuntimeError, msg="serializer does not allow create()"): + serializer.save() + + def test_update(self): + rfc = WgRfcFactory(pages=10) + serializer = EditableRfcSerializer( + instance=rfc, + data={ + "published": timezone.now(), + "title": "Yadda yadda yadda", + "authors": [ + { + "titlepage_name": "B. Fett", + "is_editor": False, + "affiliation": "DBA Galactic Empire", + "country": "", + }, + ], + "stream": "ise", + "abstract": "A long time ago in a galaxy far, far away...", + "pages": 3, + "std_level": "inf", + "subseries": ["fyi999"], + }, + ) + self.assertTrue(serializer.is_valid()) + result = serializer.save() + result.refresh_from_db() + self.assertEqual(result.title, "Yadda yadda yadda") + self.assertEqual( + list( + result.rfcauthor_set.values( + "titlepage_name", "is_editor", "affiliation", "country" + ) + ), + [ + { + "titlepage_name": "B. Fett", + "is_editor": False, + "affiliation": "DBA Galactic Empire", + "country": "", + }, + ], + ) + self.assertEqual(result.stream_id, "ise") + self.assertEqual( + result.abstract, "A long time ago in a galaxy far, far away..." + ) + self.assertEqual(result.pages, 3) + self.assertEqual(result.std_level_id, "inf") + self.assertEqual( + result.part_of(), + [Document.objects.get(name="fyi999")], + ) + + def test_partial_update(self): + # We could test other permutations of fields, but authors is a partial update + # we know we are going to use, so verifying that one in particular. + rfc = WgRfcFactory(pages=10, abstract="do or do not", title="padawan") + serializer = EditableRfcSerializer( + partial=True, + instance=rfc, + data={ + "authors": [ + { + "titlepage_name": "B. Fett", + "is_editor": False, + "affiliation": "DBA Galactic Empire", + "country": "", + }, + ], + }, + ) + self.assertTrue(serializer.is_valid()) + result = serializer.save() + result.refresh_from_db() + self.assertEqual(rfc.title, "padawan") + self.assertEqual( + list( + result.rfcauthor_set.values( + "titlepage_name", "is_editor", "affiliation", "country" + ) + ), + [ + { + "titlepage_name": "B. Fett", + "is_editor": False, + "affiliation": "DBA Galactic Empire", + "country": "", + }, + ], + ) + self.assertEqual(result.stream_id, "ietf") + self.assertEqual(result.abstract, "do or do not") + self.assertEqual(result.pages, 10) + self.assertEqual(result.std_level_id, "ps") + self.assertEqual(result.part_of(), []) + + # Test only a field on the Document itself to be sure that it works + serializer = EditableRfcSerializer( + partial=True, + instance=rfc, + data={"title": "jedi master"}, + ) + self.assertTrue(serializer.is_valid()) + result = serializer.save() + result.refresh_from_db() + self.assertEqual(rfc.title, "jedi master") diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 9273590b28..8862bbf866 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -35,7 +35,7 @@ NotificationAckSerializer, RfcPubSerializer, RfcFileSerializer, EditableRfcSerializer, ) -from ietf.doc.models import Document, DocHistory, RfcAuthor +from ietf.doc.models import Document, DocHistory, RfcAuthor, DocEvent from ietf.doc.serializers import RfcAuthorSerializer from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage from ietf.doc.tasks import signal_update_rfc_metadata_task @@ -279,6 +279,16 @@ class RfcViewSet(mixins.UpdateModelMixin, viewsets.GenericViewSet): lookup_field = "rfc_number" serializer_class = EditableRfcSerializer + def perform_update(self, serializer): + DocEvent.objects.create( + doc=serializer.instance, + rev=serializer.instance.rev, + by=Person.objects.get(name="(System)"), + type="sync_from_rfc_editor", + desc="Metadata update from RFC Editor", + ) + super().perform_update(serializer) + @action(detail=False, serializer_class=OriginalStreamSerializer) def rfc_original_stream(self, request): rfcs = self.get_queryset().annotate( diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index 36076c30be..a7ea640be8 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -27,6 +27,7 @@ class RfcAuthorSerializer(serializers.ModelSerializer): source="person.get_absolute_url", required=False, help_text="URL for person link (relative to datatracker base URL)", + read_only=True, ) class Meta: diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 42fab7d472..396b3fcfa4 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -740,14 +740,26 @@ def _rfcauthor_from_documentauthor(docauthor: DocumentAuthor) -> RfcAuthor: new_author.document = rfc new_author.order = order + 1 new_author.save() - changes.append(f'Added "{new_author.titlepage_name}" as author') + if new_author.person_id is not None: + person_desc = f"Person {new_author.person_id}" + else: + person_desc = "no Person linked" + changes.append( + f'Added "{new_author.titlepage_name}" ({person_desc}) as author' + ) # Any authors left in original_authors are no longer in the list, so remove them for removed_author in original_authors: # Skip actual removal of old authors if we are converting from the # DocumentAuthor models - the original_authors were just stand-ins anyway. if not converting_from_docauthors: removed_author.delete() - changes.append(f'Removed "{removed_author.titlepage_name}" as author') + if removed_author.person_id is not None: + person_desc = f"Person {removed_author.person_id}" + else: + person_desc = "no Person linked" + changes.append( + f'Removed "{removed_author.titlepage_name}" ({person_desc}) as author' + ) # Create DocEvents, but leave it up to caller to save if by is None: by = Person.objects.get(name="(System)") From 481054511b9f07a47c41f854105e00616e61d3e2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 3 Mar 2026 11:36:45 -0400 Subject: [PATCH 043/161] feat: add area to FullDraftSerializer (#10487) * refactor: Document.area() + serializer * feat: add area to FullDraftSerializer --- ietf/api/serializers_rpc.py | 3 +++ ietf/doc/models.py | 16 ++++++++++++++++ ietf/doc/serializers.py | 19 +------------------ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index d5f5363990..e51b917be4 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -27,6 +27,7 @@ update_rfcauthors, ) from ietf.group.models import Group +from ietf.group.serializers import AreaSerializer from ietf.name.models import StreamName, StdLevelName from ietf.person.models import Person from ietf.utils import log @@ -115,6 +116,7 @@ class FullDraftSerializer(serializers.ModelSerializer): name = serializers.CharField(max_length=255) title = serializers.CharField(max_length=255) group = serializers.SlugRelatedField(slug_field="acronym", read_only=True) + area = AreaSerializer(read_only=True) # Other fields we need to add / adjust source_format = serializers.SerializerMethodField() @@ -133,6 +135,7 @@ class Meta: "stream", "title", "group", + "area", "abstract", "pages", "source_format", diff --git a/ietf/doc/models.py b/ietf/doc/models.py index cc28951be0..f1b319367e 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1147,6 +1147,22 @@ def request_closed_time(self, review_req): e = self.latest_event(ReviewRequestDocEvent, type="closed_review_request", review_request=review_req) return e.time if e and e.time else None + @property + def area(self) -> Group | None: + """Get area for document, if one exists + + None for non-IETF-stream documents. N.b., this is stricter than Group.area() and + uses different logic from Document.area_acronym(). + """ + if self.stream_id != "ietf": + return None + if self.group is None: + return None + parent = self.group.parent + if parent.type_id == "area": + return parent + return None + def area_acronym(self): g = self.group if g: diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index a7ea640be8..139ae9aa7e 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -230,7 +230,7 @@ class RfcMetadataSerializer(serializers.ModelSerializer): status = RfcStatusSerializer(source="*") authors = serializers.SerializerMethodField() group = GroupSerializer() - area = serializers.SerializerMethodField() + area = AreaSerializer(read_only=True) stream = StreamNameSerializer() ad = AreaDirectorSerializer(read_only=True, allow_null=True) group_list_email = serializers.EmailField(source="group.list_email", read_only=True) @@ -288,23 +288,6 @@ def get_authors(self, doc: Document): many=True, ).data - @extend_schema_field(AreaSerializer(required=False)) - def get_area(self, doc: Document): - """Get area for the RFC - - This logic might be better moved to Document or a combination of Document - and Group. The current (2026-02-24) Group.area() method is not strict enough: - it does not limit to WG groups or IETF-stream documents. - """ - if doc.stream_id != "ietf": - return None - if doc.group is None: - return None - parent = doc.group.parent - if parent.type_id == "area": - return AreaSerializer(parent).data - return None - @extend_schema_field(DocIdentifierSerializer(many=True)) def get_identifiers(self, doc: Document): identifiers = [] From 47d3734955071d1ccc54787698e751c74ce4d303 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:32:36 -0400 Subject: [PATCH 044/161] chore(deps): bump types-pytz from 2025.2.0.20250809 to 2025.2.0.20251108 (#10424) Bumps [types-pytz](https://github.com/typeshed-internal/stub_uploader) from 2025.2.0.20250809 to 2025.2.0.20251108. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-pytz dependency-version: 2025.2.0.20251108 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cb583d5dc9..3d54b104ee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -74,7 +74,7 @@ python-magic==0.4.18 # Versions beyond the yanked .19 and .20 introduce form pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache python-mimeparse>=2.0.0 # from TastyPie pytz==2025.2 # Pinned as changes need to be vetted for their effect on Meeting fields -types-pytz==2025.2.0.20250809 # match pytz version +types-pytz==2025.2.0.20251108 # match pytz version requests>=2.32.4 types-requests>=2.32.4 requests-mock>=1.12.1 From 1799245dc6ce82301b0790412957ccfa19910dc1 Mon Sep 17 00:00:00 2001 From: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> Date: Wed, 4 Mar 2026 16:45:46 +0000 Subject: [PATCH 045/161] ci: update base image target version to 20260304T1633 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 71370fabee..ce1828052e 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20260211T1901 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260304T1633 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 947f3790e4..6be54fb6b0 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20260211T1901 +20260304T1633 From 7f28542c82e2c51210daf77ca10f9682c0ea709d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 9 Mar 2026 14:02:57 -0300 Subject: [PATCH 046/161] fix: finish dropping email as RfcAuthor field (#10512) * fix: fix admin / Document.author_list() * fix: update RfcAuthorResource email is still accessible, but read only * fix: admin search by RfcAuthor email --- ietf/doc/admin.py | 4 +++- ietf/doc/models.py | 16 +++++++++++----- ietf/doc/resources.py | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index b604d4f096..0d04e8db3a 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -241,7 +241,9 @@ def is_deleted(self, instance): admin.site.register(StoredObject, StoredObjectAdmin) class RfcAuthorAdmin(admin.ModelAdmin): + # the email field in the list_display/readonly_fields works through a @property list_display = ['id', 'document', 'titlepage_name', 'person', 'email', 'affiliation', 'country', 'order'] - search_fields = ['document__name', 'titlepage_name', 'person__name', 'email', 'affiliation', 'country'] + search_fields = ['document__name', 'titlepage_name', 'person__name', 'person__email__address', 'affiliation', 'country'] raw_id_fields = ["document", "person"] + readonly_fields = ["email"] admin.site.register(RfcAuthor, RfcAuthorAdmin) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index f1b319367e..868bc4ac47 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -466,11 +466,12 @@ def author_persons(self): def author_list(self): """List of author emails""" - author_qs = ( - self.rfcauthor_set - if self.type_id == "rfc" and self.rfcauthor_set.exists() - else self.documentauthor_set - ).select_related("email").order_by("order") + if self.type_id == "rfc" and self.rfcauthor_set.exists(): + author_qs = self.rfcauthor_set.select_related("person").order_by("order") + else: + author_qs = self.documentauthor_set.select_related("email").order_by( + "order" + ) best_addresses = [] for author in author_qs: if author.email: @@ -953,6 +954,11 @@ class Meta: @property def email(self) -> Email | None: return self.person.email() if self.person else None + + def format_for_titlepage(self): + if self.is_editor: + return f"{self.titlepage_name}, Ed." + return self.titlepage_name class DocumentAuthorInfo(models.Model): diff --git a/ietf/doc/resources.py b/ietf/doc/resources.py index 556465a522..1d86df78d0 100644 --- a/ietf/doc/resources.py +++ b/ietf/doc/resources.py @@ -897,7 +897,7 @@ class Meta: class RfcAuthorResource(ModelResource): document = ToOneField(DocumentResource, 'document') person = ToOneField(PersonResource, 'person', null=True) - email = ToOneField(EmailResource, 'email', null=True) + email = ToOneField(EmailResource, 'email', null=True, readonly=True) class Meta: queryset = RfcAuthor.objects.all() serializer = api.Serializer() From 809e7682db30279cb715f47c89ae546e320c9c76 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 11 Mar 2026 13:07:27 -0500 Subject: [PATCH 047/161] chore: remove task explorer from devcontainer (#10532) --- .devcontainer/devcontainer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2cfff78853..e4964e8909 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -32,7 +32,6 @@ "mutantdino.resourcemonitor", "oderwat.indent-rainbow", "redhat.vscode-yaml", - "spmeesseman.vscode-taskexplorer", "ms-python.pylint", "charliermarsh.ruff" ], From d4a594ddd4a9dd0bd575465748627f7fea68aac3 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 11 Mar 2026 15:12:22 -0300 Subject: [PATCH 048/161] feat: rfc-index generation (#10526) * chore: stand-in red_bucket STORAGE for dev * feat: rfc index text generation (WIP) Text generation works. Also includes XML generation that is not yet converted. Based on Kesara's implementations in the purple repo. * feat: rfc index XML generation (WIP) * feat: Document.keywords + migration * feat: keywords API * feat: keywords in rfc-index.xml * fix: better stream/area/wg_acronym Still some disagreements, not sure if that's data or logic driven * fix: NON WORKING GROUP logic May need more attention * fix: add rev to draft name * fix: interleave unpublished RFC records * fix: lint * refactor: use lxml * fix: multi-paragraph abstracts * feat: RFCINDEX_MATCH_LEGACY_XML option * fix: zero pad DOIs * fix: better NON WORKING GROUP id * fix: reorder elements * refactor: extract repeated code * refactor: unify DOI generation * fix: modern DOI proxy URL for ATOM feed * refactor: settings.RFC_EDITOR_ERRATA_BASE_URL Drop unused settings.RFC_EDITOR_ERRATA_URL * chore: real red_bucket storage cfg * fix: handle missing json for prod/dev/test * chore: straighten out S3 saving * chore(dev): FileSystemStorage for red_bucket dev (commented out) * chore: configurable bucket path for JSON inputs * test: tests_rfcindex.py Not great coverage, but exercises the generators a bit. * fix: lint + consistent var naming * test: improve test coverage / testability * fix: lint --- docker/configs/settings_local.py | 11 + ietf/api/serializers_rpc.py | 2 + ietf/doc/api.py | 6 - ietf/doc/factories.py | 6 + ietf/doc/feeds.py | 9 +- ...3_dochistory_keywords_document_keywords.py | 31 ++ ietf/doc/models.py | 21 + ietf/doc/serializers.py | 4 +- ietf/doc/views_doc.py | 4 +- ietf/settings.py | 10 +- ietf/settings_test.py | 8 +- ietf/sync/rfcindex.py | 480 ++++++++++++++++++ ietf/sync/tests_rfcindex.py | 230 +++++++++ ietf/templates/sync/rfc-index.txt | 69 +++ k8s/settings_local.py | 33 ++ 15 files changed, 907 insertions(+), 17 deletions(-) create mode 100644 ietf/doc/migrations/0033_dochistory_keywords_document_keywords.py create mode 100644 ietf/sync/rfcindex.py create mode 100644 ietf/sync/tests_rfcindex.py create mode 100644 ietf/templates/sync/rfc-index.txt diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index 1d4e6916b9..94adc516a4 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -101,6 +101,17 @@ ), } +# For dev on rfc-index generation, create a red_bucket/ directory in the project root +# and uncomment these settings. Generated files will appear in this directory. To +# generate an accurate index, put up-to-date copies of unusable-rfc-numbers.json, +# april-first-rfc-numbers.json, and publication-std-levels.json in this directory +# before generating the index. +# +# STORAGES["red_bucket"] = { +# "BACKEND": "django.core.files.storage.FileSystemStorage", +# "OPTIONS": {"location": "red_bucket"}, +# } + APP_API_TOKENS = { "ietf.api.red_api" : ["devtoken", "redtoken"], # Not a real secret "ietf.api.views_rpc" : ["devtoken"], # Not a real secret diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index e51b917be4..c17cbc64ce 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -300,6 +300,7 @@ class Meta: "obsoletes", "updates", "subseries", + "keywords", ] def validate(self, data): @@ -540,6 +541,7 @@ class Meta: "pages", "std_level", "subseries", + "keywords", ] def create(self, validated_data): diff --git a/ietf/doc/api.py b/ietf/doc/api.py index 75993f463e..73fff6b27f 100644 --- a/ietf/doc/api.py +++ b/ietf/doc/api.py @@ -4,13 +4,11 @@ from django.db.models import ( BooleanField, Count, - JSONField, OuterRef, Prefetch, Q, QuerySet, Subquery, - Value, ) from django.db.models.functions import TruncDate from django_filters import rest_framework as filters @@ -160,10 +158,6 @@ def augment_rfc_queryset(queryset: QuerySet[Document]): output_field=BooleanField(), ) ) - .annotate( - # TODO implement this fake field for real - keywords=Value(["keyword"], output_field=JSONField()), - ) ) diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index bc38765446..1a178c6f31 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -311,6 +311,12 @@ class Meta: def desc(self): return 'New version available %s-%s'%(self.doc.name,self.rev) +class PublishedRfcDocEventFactory(DocEventFactory): + class Meta: + model = DocEvent + type = "published_rfc" + doc = factory.SubFactory(WgRfcFactory) + class StateDocEventFactory(DocEventFactory): class Meta: model = StateDocEvent diff --git a/ietf/doc/feeds.py b/ietf/doc/feeds.py index 500ed3cb18..afe96cf0df 100644 --- a/ietf/doc/feeds.py +++ b/ietf/doc/feeds.py @@ -1,5 +1,4 @@ -# Copyright The IETF Trust 2007-2020, All Rights Reserved -# -*- coding: utf-8 -*- +# Copyright The IETF Trust 2007-2026, All Rights Reserved import debug # pyflakes:ignore @@ -263,9 +262,11 @@ def item_extra_kwargs(self, item): ) extra.update({"media_contents": media_contents}) - extra.update({"doi": "10.17487/%s" % item.name.upper()}) extra.update( - {"doiuri": "http://dx.doi.org/10.17487/%s" % item.name.upper()} + { + "doi": item.doi, + "doiuri": f"https://doi.org/{item.doi}", + } ) # R104 Publisher (Mandatory - but we need a string from them first) diff --git a/ietf/doc/migrations/0033_dochistory_keywords_document_keywords.py b/ietf/doc/migrations/0033_dochistory_keywords_document_keywords.py new file mode 100644 index 0000000000..5e2513e15a --- /dev/null +++ b/ietf/doc/migrations/0033_dochistory_keywords_document_keywords.py @@ -0,0 +1,31 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations, models +import ietf.doc.models + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0032_remove_rfcauthor_email"), + ] + + operations = [ + migrations.AddField( + model_name="dochistory", + name="keywords", + field=models.JSONField( + default=list, + max_length=1000, + validators=[ietf.doc.models.validate_doc_keywords], + ), + ), + migrations.AddField( + model_name="document", + name="keywords", + field=models.JSONField( + default=list, + max_length=1000, + validators=[ietf.doc.models.validate_doc_keywords], + ), + ), + ] diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 868bc4ac47..7b23a62c45 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -13,6 +13,7 @@ from io import BufferedReader from pathlib import Path +from django.core.exceptions import ValidationError from django.db.models import Q from lxml import etree from typing import Optional, Protocol, TYPE_CHECKING, Union @@ -109,6 +110,15 @@ class Meta: IESG_STATCHG_CONFLREV_ACTIVE_STATES = ("iesgeval", "defer") IESG_SUBSTATE_TAGS = ('ad-f-up', 'need-rev', 'extpty') + +def validate_doc_keywords(value): + if ( + not isinstance(value, list | tuple | set) + or not all(isinstance(elt, str) for elt in value) + ): + raise ValidationError("Value must be an array of strings") + + class DocumentInfo(models.Model): """Any kind of document. Draft, RFC, Charter, IPR Statement, Liaison Statement""" time = models.DateTimeField(default=timezone.now) # should probably have auto_now=True @@ -142,6 +152,17 @@ class DocumentInfo(models.Model): uploaded_filename = models.TextField(blank=True) note = models.TextField(blank=True) rfc_number = models.PositiveIntegerField(blank=True, null=True) # only valid for type="rfc" + keywords = models.JSONField( + default=list, + max_length=1000, + validators=[validate_doc_keywords], + ) + + @property + def doi(self) -> str | None: + if self.type_id == "rfc" and self.rfc_number is not None: + return f"{settings.IETF_DOI_PREFIX}/RFC{self.rfc_number:04d}" + return None def file_extension(self): if not hasattr(self, '_cached_extension'): diff --git a/ietf/doc/serializers.py b/ietf/doc/serializers.py index 139ae9aa7e..3651670962 100644 --- a/ietf/doc/serializers.py +++ b/ietf/doc/serializers.py @@ -291,9 +291,9 @@ def get_authors(self, doc: Document): @extend_schema_field(DocIdentifierSerializer(many=True)) def get_identifiers(self, doc: Document): identifiers = [] - if doc.rfc_number: + if doc.doi: identifiers.append( - DocIdentifier(type="doi", value=f"10.17487/RFC{doc.rfc_number:04d}") + DocIdentifier(type="doi", value=doc.doi) ) return DocIdentifierSerializer(instance=identifiers, many=True).data diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 0ae7520681..c1f6352ac3 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1285,9 +1285,7 @@ def document_bibtex(request, name, rev=None): break elif doc.type_id == "rfc": - # This needs to be replaced with a lookup, as the mapping may change - # over time. - doi = f"10.17487/RFC{doc.rfc_number:04d}" + doi = doc.doi if doc.is_dochistory(): latest_event = doc.latest_event(type='new_revision', rev=rev) diff --git a/ietf/settings.py b/ietf/settings.py index 71b110d762..e0b4f20118 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -838,6 +838,11 @@ def skip_unreadable_post(record): "slides", ] +# Other storages +STORAGES["red_bucket"] = { + "BACKEND": "django.core.files.storage.InMemoryStorage", + "OPTIONS": {"location": "red_bucket"}, +} # Override this in settings_local.py if needed # *_PATH variables ends with a slash/ . @@ -932,10 +937,11 @@ def skip_unreadable_post(record): RFC_EDITOR_QUEUE_URL = "https://www.rfc-editor.org/queue2.xml" RFC_EDITOR_INDEX_URL = "https://www.rfc-editor.org/rfc/rfc-index.xml" RFC_EDITOR_ERRATA_JSON_URL = "https://www.rfc-editor.org/errata.json" -RFC_EDITOR_ERRATA_URL = "https://www.rfc-editor.org/errata_search.php?rfc={rfc_number}" RFC_EDITOR_INLINE_ERRATA_URL = "https://www.rfc-editor.org/rfc/inline-errata/rfc{rfc_number}.html" +RFC_EDITOR_ERRATA_BASE_URL = "https://www.rfc-editor.org/errata/" RFC_EDITOR_INFO_BASE_URL = "https://www.rfc-editor.org/info/" + # NomCom Tool settings ROLODEX_URL = "" NOMCOM_PUBLIC_KEYS_DIR = '/a/www/nomcom/public_keys/' @@ -1570,3 +1576,5 @@ def skip_unreadable_post(record): YOUTUBE_DOMAINS = ['www.youtube.com', 'youtube.com', 'youtu.be', 'm.youtube.com', 'youtube-nocookie.com', 'www.youtube-nocookie.com'] + +IETF_DOI_PREFIX = "10.17487" diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 6479069db0..1f5a7e8ddc 100755 --- a/ietf/settings_test.py +++ b/ietf/settings_test.py @@ -14,7 +14,7 @@ import shutil import tempfile from ietf.settings import * # pyflakes:ignore -from ietf.settings import ORIG_AUTH_PASSWORD_VALIDATORS +from ietf.settings import ORIG_AUTH_PASSWORD_VALIDATORS, STORAGES import debug # pyflakes:ignore debug.debug = True @@ -114,3 +114,9 @@ def tempdir_with_cleanup(**kwargs): AUTH_PASSWORD_VALIDATORS = ORIG_AUTH_PASSWORD_VALIDATORS except NameError: pass + +# Use InMemoryStorage for red bucket storage +STORAGES["red_bucket"] = { + "BACKEND": "django.core.files.storage.InMemoryStorage", + "OPTIONS": {"location": "red_bucket"}, +} diff --git a/ietf/sync/rfcindex.py b/ietf/sync/rfcindex.py new file mode 100644 index 0000000000..b15846094f --- /dev/null +++ b/ietf/sync/rfcindex.py @@ -0,0 +1,480 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +import json +from collections import defaultdict +from collections.abc import Container +from dataclasses import dataclass +from io import StringIO, BytesIO +from itertools import chain +from operator import attrgetter, itemgetter +from pathlib import Path +from textwrap import fill +from urllib.parse import urljoin + +from django.conf import settings +from lxml import etree + +from django.core.files.storage import storages +from django.db import models +from django.db.models.functions import Substr, Cast +from django.template.loader import render_to_string +from django.utils import timezone + +from ietf.doc.models import Document +from ietf.name.models import StdLevelName +from ietf.utils.log import log + +FORMATS_FOR_INDEX = ["txt", "html", "pdf", "xml", "ps"] + + +def format_rfc_number(n): + """Format an RFC number (or subseries doc number) + + Set settings.RFCINDEX_MATCH_LEGACY_XML=True for the legacy (leading-zero) format. + That is for debugging only - tests will fail. + """ + if getattr(settings, "RFCINDEX_MATCH_LEGACY_XML", False): + return format(n, "04") + else: + return format(n) + + +def errata_url(rfc: Document): + return urljoin(settings.RFC_EDITOR_ERRATA_BASE_URL + "/", f"rfc{rfc.rfc_number}") + + +def save_to_red_bucket(filename: str, content: BytesIO | StringIO): + red_bucket = storages["red_bucket"] + bucket_path = str(Path(getattr(settings, "RFCINDEX_OUTPUT_PATH", "")) / filename) + if getattr(settings, "RFCINDEX_DELETE_THEN_WRITE", True): + # Django 4.2's FileSystemStorage does not support allow_overwrite. + red_bucket.delete(bucket_path) + red_bucket.save(bucket_path, content) + log(f"Saved {bucket_path} in red_bucket storage") + + +@dataclass +class UnusableRfcNumber: + rfc_number: int + comment: str + + +def get_unusable_rfc_numbers() -> list[UnusableRfcNumber]: + FILENAME = "unusable-rfc-numbers.json" + bucket_path = str(Path(getattr(settings, "RFCINDEX_INPUT_PATH", "")) / FILENAME) + try: + with storages["red_bucket"].open(bucket_path) as urn_file: + records = json.load(urn_file) + except FileNotFoundError: + if settings.SERVER_MODE == "development": + log( + f"Unable to open {bucket_path} in red_bucket storage. This is okay in dev " + "but generated rfc-index will not agree with RFC Editor values." + ) # pragma: no cover + return [] # pragma: no cover + log(f"Error: unable to open {bucket_path} in red_bucket storage") + raise + except json.JSONDecodeError: + log(f"Error: unable to parse {bucket_path} in red_bucket storage") + if settings.SERVER_MODE == "development": + return [] # pragma: no cover + raise + assert all(isinstance(record["number"], int) for record in records) + assert all(isinstance(record["comment"], str) for record in records) + return [ + UnusableRfcNumber(rfc_number=record["number"], comment=record["comment"]) + for record in sorted(records, key=itemgetter("number")) + ] + + +def get_april1_rfc_numbers() -> Container[int]: + FILENAME = "april-first-rfc-numbers.json" + bucket_path = str(Path(getattr(settings, "RFCINDEX_INPUT_PATH", "")) / FILENAME) + try: + with storages["red_bucket"].open(bucket_path) as urn_file: + records = json.load(urn_file) + except FileNotFoundError: + if settings.SERVER_MODE == "development": + log( + f"Unable to open {bucket_path} in red_bucket storage. This is okay in dev " + "but generated rfc-index will not agree with RFC Editor values." + ) # pragma: no cover + return [] # pragma: no cover + log(f"Error: unable to open {bucket_path} in red_bucket storage") + raise + except json.JSONDecodeError: + log(f"Error: unable to parse {bucket_path} in red_bucket storage") + if settings.SERVER_MODE == "development": + return [] # pragma: no cover + raise + assert all(isinstance(record, int) for record in records) + return records + + +def get_publication_std_levels() -> dict[int, StdLevelName]: + FILENAME = "publication-std-levels.json" + bucket_path = str(Path(getattr(settings, "RFCINDEX_INPUT_PATH", "")) / FILENAME) + values: dict[int, StdLevelName] = {} + try: + with storages["red_bucket"].open(bucket_path) as urn_file: + records = json.load(urn_file) + except FileNotFoundError: + if settings.SERVER_MODE == "development": + log( + f"Unable to open {bucket_path} in red_bucket storage. This is okay in dev " + "but generated rfc-index will not agree with RFC Editor values." + ) # pragma: no cover + # intentionally fall through instead of return here + else: + log(f"Error: unable to open {bucket_path} in red_bucket storage") + raise + except json.JSONDecodeError: + log(f"Error: unable to parse {bucket_path} in red_bucket storage") + if settings.SERVER_MODE != "development": + raise + else: + assert all(isinstance(record["number"], int) for record in records) + values = { + record["number"]: StdLevelName.objects.get( + slug=record["publication_std_level"] + ) + for record in records + } + # defaultdict to return "unknown" for any missing values + unknown_std_level = StdLevelName.objects.get(slug="unkn") + return defaultdict(lambda: unknown_std_level, values) + + +def format_ordering(rfc_number): + if rfc_number < 8650: + ordering = ["txt", "ps", "pdf", "html", "xml"] + else: + ordering = ["html", "txt", "ps", "pdf", "xml"] + return ordering.index # return the method + + +def get_rfc_text_index_entries(): + """Returns RFC entries for rfc-index.txt""" + entries = [] + april1_rfc_numbers = get_april1_rfc_numbers() + published_rfcs = Document.objects.filter(type_id="rfc").order_by("rfc_number") + rfcs = sorted( + chain(published_rfcs, get_unusable_rfc_numbers()), key=attrgetter("rfc_number") + ) + for rfc in rfcs: + if isinstance(rfc, UnusableRfcNumber): + entries.append(f"{format_rfc_number(rfc.rfc_number)} Not Issued.") + else: + assert isinstance(rfc, Document) + authors = ", ".join( + author.format_for_titlepage() for author in rfc.rfcauthor_set.all() + ) + published_at = rfc.pub_date() + date = ( + published_at.strftime("1 %B %Y") + if rfc.rfc_number in april1_rfc_numbers + else published_at.strftime("%B %Y") + ) + + # formats + formats = ", ".join( + sorted( + [ + format["fmt"] + for format in rfc.formats() + if format["fmt"] in FORMATS_FOR_INDEX + ], + key=format_ordering(rfc.rfc_number), + ) + ).upper() + + # obsoletes + obsoletes = "" + obsoletes_documents = sorted( + rfc.related_that_doc("obs"), + key=attrgetter("rfc_number"), + ) + if len(obsoletes_documents) > 0: + obsoletes_names = ", ".join( + f"RFC{format_rfc_number(doc.rfc_number)}" + for doc in obsoletes_documents + ) + obsoletes = f" (Obsoletes {obsoletes_names})" + + # obsoleted by + obsoleted_by = "" + obsoleted_by_documents = sorted( + rfc.related_that("obs"), + key=attrgetter("rfc_number"), + ) + if len(obsoleted_by_documents) > 0: + obsoleted_by_names = ", ".join( + f"RFC{format_rfc_number(doc.rfc_number)}" + for doc in obsoleted_by_documents + ) + obsoleted_by = f" (Obsoleted by {obsoleted_by_names})" + + # updates + updates = "" + updates_documents = sorted( + rfc.related_that_doc("updates"), + key=attrgetter("rfc_number"), + ) + if len(updates_documents) > 0: + updates_names = ", ".join( + f"RFC{format_rfc_number(doc.rfc_number)}" + for doc in updates_documents + ) + updates = f" (Updates {updates_names})" + + # updated by + updated_by = "" + updated_by_documents = sorted( + rfc.related_that("updates"), + key=attrgetter("rfc_number"), + ) + if len(updated_by_documents) > 0: + updated_by_names = ", ".join( + f"RFC{format_rfc_number(doc.rfc_number)}" + for doc in updated_by_documents + ) + updated_by = f" (Updated by {updated_by_names})" + + doc_relations = f"{obsoletes}{obsoleted_by}{updates}{updated_by} " + + # subseries + subseries = ",".join( + f"{container.type.slug}{format_rfc_number(int(container.name[3:]))}" + for container in rfc.part_of() + ).upper() + if subseries: + subseries = f"(Also {subseries}) " + + entry = fill( + ( + f"{format_rfc_number(rfc.rfc_number)} {rfc.title}. {authors}. {date}. " + f"(Format: {formats}){doc_relations}{subseries}" + f"(Status: {str(rfc.std_level).upper()}) " + f"(DOI: {rfc.doi})" + ), + width=73, + subsequent_indent=" " * 5, + ) + entries.append(entry) + + return entries + + +def add_subseries_xml_index_entries(rfc_index, ss_type, include_all=False): + """Add subseries entries for rfc-index.xml""" + # subseries docs annotated with numeric number + ss_docs = list( + Document.objects.filter(type_id=ss_type) + .annotate( + number=Cast( + Substr("name", 4, None), + output_field=models.IntegerField(), + ) + ) + .order_by("-number") + ) + if len(ss_docs) == 0: + return # very much not expected + highest_number = ss_docs[0].number + for ss_number in range(1, highest_number + 1): + if ss_docs[-1].number == ss_number: + this_ss_doc = ss_docs.pop() + contained_rfcs = this_ss_doc.contains() + else: + contained_rfcs = [] + if len(contained_rfcs) == 0 and not include_all: + continue + entry = etree.SubElement(rfc_index, f"{ss_type}-entry") + etree.SubElement( + entry, "doc-id" + ).text = f"{ss_type.upper()}{format_rfc_number(ss_number)}" + if len(contained_rfcs) > 0: + is_also = etree.SubElement(entry, "is-also") + for rfc in sorted(contained_rfcs, key=attrgetter("rfc_number")): + etree.SubElement( + is_also, "doc-id" + ).text = f"RFC{format_rfc_number(rfc.rfc_number)}" + + +def add_related_xml_index_entries(root: etree.Element, rfc: Document, tag: str): + relation_getter = { + "obsoletes": lambda doc: doc.related_that_doc("obs"), + "obsoleted-by": lambda doc: doc.related_that("obs"), + "updates": lambda doc: doc.related_that_doc("updates"), + "updated-by": lambda doc: doc.related_that("updates"), + } + related_docs = sorted( + relation_getter[tag](rfc), + key=attrgetter("rfc_number"), + ) + if len(related_docs) > 0: + element = etree.SubElement(root, tag) + for doc in related_docs: + etree.SubElement( + element, "doc-id" + ).text = f"RFC{format_rfc_number(doc.rfc_number)}" + + +def add_rfc_xml_index_entries(rfc_index): + """Add RFC entries for rfc-index.xml""" + entries = [] + april1_rfc_numbers = get_april1_rfc_numbers() + publication_statuses = get_publication_std_levels() + + published_rfcs = Document.objects.filter(type_id="rfc").order_by("rfc_number") + + # Iterators for unpublished and published, both sorted by number + unpublished_iter = iter(get_unusable_rfc_numbers()) + published_iter = iter(published_rfcs) + + # Prime the next_* values + next_unpublished = next(unpublished_iter, None) + next_published = next(published_iter, None) + + while next_published is not None or next_unpublished is not None: + if next_unpublished is not None and ( + next_published is None + or next_unpublished.rfc_number < next_published.rfc_number + ): + entry = etree.SubElement(rfc_index, "rfc-not-issued-entry") + etree.SubElement( + entry, "doc-id" + ).text = f"RFC{format_rfc_number(next_unpublished.rfc_number)}" + entries.append(entry) + next_unpublished = next(unpublished_iter, None) + continue + + rfc = next_published # hang on to this + next_published = next(published_iter, None) # prep for next iteration + entry = etree.SubElement(rfc_index, "rfc-entry") + + etree.SubElement( + entry, "doc-id" + ).text = f"RFC{format_rfc_number(rfc.rfc_number)}" + etree.SubElement(entry, "title").text = rfc.title + + for author in rfc.rfcauthor_set.all(): + author_element = etree.SubElement(entry, "author") + etree.SubElement(author_element, "name").text = author.titlepage_name + if author.is_editor: + etree.SubElement(author_element, "title").text = "Editor" + + date = etree.SubElement(entry, "date") + published_at = rfc.pub_date() + etree.SubElement(date, "month").text = published_at.strftime("%B") + if rfc.rfc_number in april1_rfc_numbers: + etree.SubElement(date, "day").text = str(published_at.day) + etree.SubElement(date, "year").text = str(published_at.year) + + format_ = etree.SubElement(entry, "format") + fmts = [ff["fmt"] for ff in rfc.formats() if ff["fmt"] in FORMATS_FOR_INDEX] + for fmt in sorted(fmts, key=format_ordering(rfc.rfc_number)): + match_legacy = getattr(settings, "RFCINDEX_MATCH_LEGACY_XML", False) + etree.SubElement(format_, "file-format").text = ( + "ASCII" if match_legacy and fmt == "txt" else fmt.upper() + ) + + etree.SubElement(entry, "page-count").text = str(rfc.pages) + + if len(rfc.keywords) > 0: + keywords = etree.SubElement(entry, "keywords") + for keyword in rfc.keywords: + etree.SubElement(keywords, "kw").text = keyword.strip() + + if rfc.abstract: + abstract = etree.SubElement(entry, "abstract") + for paragraph in rfc.abstract.split("\n\n"): + etree.SubElement(abstract, "p").text = paragraph.strip() + + draft = rfc.came_from_draft() + if draft is not None: + etree.SubElement(entry, "draft").text = f"{draft.name}-{draft.rev}" + + part_of_documents = rfc.part_of() + if len(part_of_documents) > 0: + is_also = etree.SubElement(entry, "is-also") + for doc in part_of_documents: + etree.SubElement(is_also, "doc-id").text = doc.name.upper() + + add_related_xml_index_entries(entry, rfc, "obsoletes") + add_related_xml_index_entries(entry, rfc, "obsoleted-by") + add_related_xml_index_entries(entry, rfc, "updates") + add_related_xml_index_entries(entry, rfc, "updated-by") + + etree.SubElement(entry, "current-status").text = rfc.std_level.name.upper() + etree.SubElement(entry, "publication-status").text = publication_statuses[ + rfc.rfc_number + ].name.upper() + etree.SubElement(entry, "stream").text = ( + "INDEPENDENT" if rfc.stream_id == "ise" else rfc.stream.name + ) + + # Add area / wg_acronym + if rfc.stream_id == "ietf": + if rfc.group.type_id in ["individ", "area"]: + etree.SubElement(entry, "wg_acronym").text = "NON WORKING GROUP" + else: + if rfc.area is not None: + etree.SubElement(entry, "area").text = rfc.area.acronym + if rfc.group: + etree.SubElement(entry, "wg_acronym").text = rfc.group.acronym + + if rfc.tags.filter(slug="errata").exists(): + etree.SubElement(entry, "errata-url").text = errata_url(rfc) + etree.SubElement(entry, "doi").text = rfc.doi + entries.append(entry) + + +def create_rfc_txt_index(): + """Create text index of published documents""" + DATE_FMT = "%m/%d/%Y" + created_on = timezone.now().strftime(DATE_FMT) + log("Creating rfc-index.txt") + index = render_to_string( + "sync/rfc-index.txt", + { + "created_on": created_on, + "rfcs": get_rfc_text_index_entries(), + }, + ) + save_to_red_bucket("rfc-index.txt", StringIO(index)) + + +def create_rfc_xml_index(): + """Create XML index of published documents""" + XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance" + XSI = "{" + XSI_NAMESPACE + "}" + + log("Creating rfc-index.xml") + rfc_index = etree.Element( + "rfc-index", + nsmap={ + None: "https://www.rfc-editor.org/rfc-index", + "xsi": XSI_NAMESPACE, + }, + attrib={ + XSI + "schemaLocation": ( + "https://www.rfc-editor.org/rfc-index " + "https://www.rfc-editor.org/rfc-index.xsd" + ), + }, + ) + + # add data + add_subseries_xml_index_entries(rfc_index, "bcp", include_all=True) + add_subseries_xml_index_entries(rfc_index, "fyi") + add_rfc_xml_index_entries(rfc_index) + add_subseries_xml_index_entries(rfc_index, "std") + + # make it pretty + pretty_index = etree.tostring( + rfc_index, + encoding="utf-8", + xml_declaration=True, + pretty_print=4, + ) + save_to_red_bucket("rfc-index.xml", BytesIO(pretty_index)) diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py new file mode 100644 index 0000000000..b0a8712fe1 --- /dev/null +++ b/ietf/sync/tests_rfcindex.py @@ -0,0 +1,230 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +import json +from io import BytesIO, StringIO +from unittest import mock + +from django.core.files.storage import storages +from django.test.utils import override_settings +from lxml import etree + +from ietf.doc.factories import PublishedRfcDocEventFactory, IndividualRfcFactory +from ietf.name.models import DocTagName +from ietf.sync.rfcindex import ( + create_rfc_txt_index, + create_rfc_xml_index, + format_rfc_number, + save_to_red_bucket, get_unusable_rfc_numbers, get_april1_rfc_numbers, + get_publication_std_levels, +) +from ietf.utils.test_utils import TestCase + + +class RfcIndexTests(TestCase): + """Tests of rfc-index generation + + Tests are limited and should cover more cases. Needs: + * test of subseries docs + * test of related docs (obsoletes/updates + reverse directions) + * more thorough validation of index contents + + Be careful when calling create_rfc_txt_index() or create_rfc_xml_index(). These + will save to a storage by default, which can introduce cross-talk between tests. + Best to patch that method with a mock. + """ + + def setUp(self): + super().setUp() + red_bucket = storages["red_bucket"] + + # Create an unused RFC number + red_bucket.save( + "input/unusable-rfc-numbers.json", + StringIO(json.dumps([{"number": 123, "comment": ""}])), + ) + + # actual April 1 RFC + self.april_fools_rfc = PublishedRfcDocEventFactory( + time="2020-04-01T12:00:00Z", + doc=IndividualRfcFactory( + name="rfc4560", + rfc_number=4560, + stream_id="ise", + std_level_id="inf", + ), + ).doc + # Set up a JSON file to flag the April 1 RFC + red_bucket.save( + "input/april-first-rfc-numbers.json", + StringIO(json.dumps([self.april_fools_rfc.rfc_number])), + ) + + # non-April Fools RFC that happens to have been published on April 1 + self.rfc = PublishedRfcDocEventFactory( + time="2021-04-01T12:00:00Z", + doc__name="rfc10000", + doc__rfc_number=10000, + doc__std_level_id="std", + ).doc + self.rfc.tags.add(DocTagName.objects.get(slug="errata")) + + # Set up a publication-std-levels.json file to indicate the publication + # standard of self.rfc as different from its current value + red_bucket.save( + "input/publication-std-levels.json", + StringIO( + json.dumps( + [{"number": self.rfc.rfc_number, "publication_std_level": "ps"}] + ) + ), + ) + + def tearDown(self): + red_bucket = storages["red_bucket"] + red_bucket.delete("input/unusable-rfc-numbers.json") + red_bucket.delete("input/april-first-rfc-numbers.json") + red_bucket.delete("input/publication-std-levels.json") + super().tearDown() + + @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") + def test_create_rfc_txt_index(self, mock_save): + create_rfc_txt_index() + self.assertEqual(mock_save.call_count, 1) + self.assertEqual(mock_save.call_args[0][0], "rfc-index.txt") + contents = mock_save.call_args[0][1].read() + self.assertIn( + "123 Not Issued.", + contents, + ) + # No zero prefix! + self.assertNotIn( + "0123 Not Issued.", + contents, + ) + self.assertIn( + f"{self.april_fools_rfc.rfc_number} {self.april_fools_rfc.title}", + contents, + ) + self.assertIn("1 April 2020", contents) # from the April 1 RFC + self.assertIn( + f"{self.rfc.rfc_number} {self.rfc.title}", + contents, + ) + self.assertIn("April 2021", contents) # from the non-April 1 RFC + self.assertNotIn("1 April 2021", contents) + + @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") + def test_create_rfc_xml_index(self, mock_save): + create_rfc_xml_index() + self.assertEqual(mock_save.call_count, 1) + self.assertEqual(mock_save.call_args[0][0], "rfc-index.xml") + contents = mock_save.call_args[0][1].read() + ns = "{https://www.rfc-editor.org/rfc-index}" # NOT an f-string + index = etree.fromstring(contents) + + # We can aspire to validating the schema - currently does not conform because + # XSD expects 4-digit RFC numbers (etc). + # + # xmlschema = etree.XMLSchema(etree.fromstring( + # Path(__file__).with_name("rfc-index.xsd").read_bytes()) + # ) + # xmlschema.assertValid(index) + + children = list(index) # elements as list + # Should be one rfc-not-issued-entry + self.assertEqual(len(children), 3) + self.assertEqual( + [ + c.find(f"{ns}doc-id").text + for c in children + if c.tag == f"{ns}rfc-not-issued-entry" + ], + ["RFC123"], + ) + # Should be two rfc-entries + rfc_entries = { + c.find(f"{ns}doc-id").text: c for c in children if c.tag == f"{ns}rfc-entry" + } + + # Check the April Fool's entry + april_fools_entry = rfc_entries[self.april_fools_rfc.name.upper()] + self.assertEqual( + april_fools_entry.find(f"{ns}title").text, + self.april_fools_rfc.title, + ) + self.assertEqual( + [(c.tag, c.text) for c in april_fools_entry.find(f"{ns}date")], + [(f"{ns}month", "April"), (f"{ns}day", "1"), (f"{ns}year", "2020")], + ) + self.assertEqual( + april_fools_entry.find(f"{ns}current-status").text, + "INFORMATIONAL", + ) + self.assertEqual( + april_fools_entry.find(f"{ns}publication-status").text, + "UNKNOWN", + ) + + # Check the Regular entry + rfc_entry = rfc_entries[self.rfc.name.upper()] + self.assertEqual(rfc_entry.find(f"{ns}title").text, self.rfc.title) + self.assertEqual( + rfc_entry.find(f"{ns}current-status").text, "INTERNET STANDARD" + ) + self.assertEqual( + rfc_entry.find(f"{ns}publication-status").text, "PROPOSED STANDARD" + ) + self.assertEqual( + [(c.tag, c.text) for c in rfc_entry.find(f"{ns}date")], + [(f"{ns}month", "April"), (f"{ns}year", "2021")], + ) + + +class HelperTests(TestCase): + def test_format_rfc_number(self): + self.assertEqual(format_rfc_number(10), "10") + with override_settings(RFCINDEX_MATCH_LEGACY_XML=True): + self.assertEqual(format_rfc_number(10), "0010") + + def test_save_to_red_bucket(self): + red_bucket = storages["red_bucket"] + with override_settings(RFCINDEX_DELETE_THEN_WRITE=False): + save_to_red_bucket("test", StringIO("contents")) + with red_bucket.open("test", "r") as f: + self.assertEqual(f.read(), "contents") + with override_settings(RFCINDEX_DELETE_THEN_WRITE=True): + save_to_red_bucket("test", BytesIO(b"new contents")) + with red_bucket.open("test", "r") as f: + self.assertEqual(f.read(), "new contents") + red_bucket.delete("test") # clean up like a good child + + def test_get_unusable_rfc_numbers_raises(self): + """get_unusable_rfc_numbers should bail on errors""" + with self.assertRaises(FileNotFoundError): + get_unusable_rfc_numbers() + red_bucket = storages["red_bucket"] + red_bucket.save("unusable-rfc-numbers.json", StringIO("not json")) + with self.assertRaises(json.JSONDecodeError): + get_unusable_rfc_numbers() + red_bucket.delete("unusable-rfc-numbers.json") + + def test_get_april1_rfc_numbers_raises(self): + """get_april1_rfc_numbers should bail on errors""" + with self.assertRaises(FileNotFoundError): + get_april1_rfc_numbers() + red_bucket = storages["red_bucket"] + red_bucket.save("april-first-rfc-numbers.json", StringIO("not json")) + with self.assertRaises(json.JSONDecodeError): + get_april1_rfc_numbers() + red_bucket.delete("april-first-rfc-numbers.json") + + def test_get_publication_std_levels_raises(self): + """get_publication_std_levels should bail on errors""" + with self.assertRaises(FileNotFoundError): + get_publication_std_levels() + red_bucket = storages["red_bucket"] + red_bucket.save("publication-std-levels.json", StringIO("not json")) + with self.assertRaises(json.JSONDecodeError): + get_publication_std_levels() + red_bucket.delete("publication-std-levels.json") diff --git a/ietf/templates/sync/rfc-index.txt b/ietf/templates/sync/rfc-index.txt new file mode 100644 index 0000000000..0f01ddfa90 --- /dev/null +++ b/ietf/templates/sync/rfc-index.txt @@ -0,0 +1,69 @@ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + RFC INDEX + ------------- + +(CREATED ON: {{created_on}}.) + +This file contains citations for all RFCs in numeric order. + +RFC citations appear in this format: + + #### Title of RFC. Author 1, Author 2, Author 3. Issue date. + (Format: ASCII) (Obsoletes xxx) (Obsoleted by xxx) (Updates xxx) + (Updated by xxx) (Also FYI ####) (Status: ssssss) (DOI: ddd) + +or + + #### Not Issued. + +For example: + + 1129 Internet Time Synchronization: The Network Time Protocol. D.L. + Mills. October 1989. (Format: TXT, PS, PDF, HTML) (Also RFC1119) + (Status: INFORMATIONAL) (DOI: 10.17487/RFC1129) + +Key to citations: + +#### is the RFC number. + +Following the RFC number are the title, the author(s), and the +publication date of the RFC. Each of these is terminated by a period. + +Following the number are the title (terminated with a period), the +author, or list of authors (terminated with a period), and the date +(terminated with a period). + +The format follows in parentheses. One or more of the following formats +are listed: text (TXT), PostScript (PS), Portable Document Format +(PDF), HTML, XML. + +Obsoletes xxxx refers to other RFCs that this one replaces; +Obsoleted by xxxx refers to RFCs that have replaced this one. +Updates xxxx refers to other RFCs that this one merely updates (but +does not replace); Updated by xxxx refers to RFCs that have updated +(but not replaced) this one. Generally, only immediately succeeding +and/or preceding RFCs are indicated, not the entire history of each +related earlier or later RFC in a related series. + +The (Also FYI ##) or (Also STD ##) or (Also BCP ##) phrase gives the +equivalent FYI, STD, or BCP number if the RFC is also in those +document sub-series. The Status field gives the document's +current status (see RFC 2026). The (DOI ddd) field gives the +Digital Object Identifier. + +RFCs may be obtained in a number of ways, using HTTP, FTP, or email. +See the RFC Editor Web page http://www.rfc-editor.org + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + RFC INDEX + --------- + + + +{% for rfc in rfcs %}{{rfc|safe}} + +{% endfor %} diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 0386dbbdf9..5ca4ba5cd9 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -417,6 +417,39 @@ def _multiline_to_list(s): ), } +# Configure storage for the red bucket - assume it uses the same credentials as +# other blobs +_red_bucket_name = os.environ.get("DATATRACKER_BLOB_STORE_RED_BUCKET_NAME", "").strip() +if _red_bucket_name == "": + raise RuntimeError("DATATRACKER_BLOB_STORE_RED_BUCKET_NAME must be set") + +STORAGES["red_bucket"] = { + "BACKEND": "storages.backends.s3.S3Storage", + "OPTIONS": dict( + endpoint_url=_blob_store_endpoint_url, + access_key=_blob_store_access_key, + secret_key=_blob_store_secret_key, + security_token=None, + client_config=botocore.config.Config( + request_checksum_calculation="when_required", + response_checksum_validation="when_required", + signature_version="s3v4", + connect_timeout=_blob_store_connect_timeout, + read_timeout=_blob_store_read_timeout, + retries={"total_max_attempts": _blob_store_max_attempts}, + ), + verify=False, + bucket_name=_red_bucket_name, + ), +} +RFCINDEX_DELETE_THEN_WRITE = False # S3Storage allows file_overwrite by default +RFCINDEX_OUTPUT_PATH = os.environ.get( + "DATATRACKER_RFCINDEX_OUTPUT_PATH", "other/" +) +RFCINDEX_INPUT_PATH = os.environ.get( + "DATATRACKR_RFCINDEX_INPUT_PATH", "" +) + # Configure the blobdb app for artifact storage _blobdb_replication_enabled = ( os.environ.get("DATATRACKER_BLOBDB_REPLICATION_ENABLED", "true").lower() == "true" From c226749c301fbecfd5503ebd66ba3692187d2946 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 12 Mar 2026 16:31:56 -0300 Subject: [PATCH 049/161] feat: task + API for rfc-index creation (#10537) * chore: fix typo in k8s/settings_local.py * feat: refresh_rfc_index() API * fix: use ContentFile, manually encode str Works better with S3Storage * chore(dev): expose blobstore on fixed ports Simplifies connecting purple to the blob store * chore(dev): typo * test: fix + test encoding more carefully * test: cover the new url --- .devcontainer/docker-compose.extend.yml | 4 +-- docker/docker-compose.extend.yml | 4 +-- ietf/api/tests_views_rpc.py | 15 ++++++++++ ietf/api/urls_rpc.py | 5 ++++ ietf/api/views_rpc.py | 16 +++++++++++ ietf/sync/rfcindex.py | 17 ++++++----- ietf/sync/tasks.py | 10 ++++++- ietf/sync/tests_rfcindex.py | 38 ++++++++++++++----------- k8s/settings_local.py | 2 +- 9 files changed, 82 insertions(+), 29 deletions(-) diff --git a/.devcontainer/docker-compose.extend.yml b/.devcontainer/docker-compose.extend.yml index a92f42bc6d..ce1ce259fd 100644 --- a/.devcontainer/docker-compose.extend.yml +++ b/.devcontainer/docker-compose.extend.yml @@ -14,8 +14,8 @@ services: network_mode: service:db blobstore: ports: - - '9000' - - '9001' + - '9000:9000' + - '9001:9001' volumes: datatracker-vscode-ext: diff --git a/docker/docker-compose.extend.yml b/docker/docker-compose.extend.yml index a69a453110..12ebe447d5 100644 --- a/docker/docker-compose.extend.yml +++ b/docker/docker-compose.extend.yml @@ -18,8 +18,8 @@ services: - '5433' blobstore: ports: - - '9000' - - '9001' + - '9000:9000' + - '9001:9001' celery: volumes: - .:/workspace diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 6a5a5c9b88..7ab8778d28 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -363,3 +363,18 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 200) # conflict + + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + @mock.patch("ietf.api.views_rpc.create_rfc_index_task") + def test_refresh_rfc_index(self, mock_task): + url = urlreverse("ietf.api.purple_api.refresh_rfc_index") + response = self.client.get(url) + self.assertEqual(response.status_code, 403) + response = self.client.get(url, headers={"X-Api-Key": "invalid-token"}) + self.assertEqual(response.status_code, 403) + response = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(response.status_code, 405) + self.assertFalse(mock_task.delay.called) + response = self.client.post(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(response.status_code, 202) + self.assertTrue(mock_task.delay.called) diff --git a/ietf/api/urls_rpc.py b/ietf/api/urls_rpc.py index 9d41ac137f..8555610dc3 100644 --- a/ietf/api/urls_rpc.py +++ b/ietf/api/urls_rpc.py @@ -30,6 +30,11 @@ views_rpc.RfcPubFilesView.as_view(), name="ietf.api.purple_api.upload_rfc_files", ), + path( + r"rfc_index/refresh/", + views_rpc.RfcIndexView.as_view(), + name="ietf.api.purple_api.refresh_rfc_index", + ), path(r"subject//person/", views_rpc.SubjectPersonView.as_view()), ] diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 8862bbf866..c7ae699005 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -40,6 +40,7 @@ from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage from ietf.doc.tasks import signal_update_rfc_metadata_task from ietf.person.models import Email, Person +from ietf.sync.tasks import create_rfc_index_task class Conflict(APIException): @@ -516,3 +517,18 @@ def post(self, request): shutil.move(ftm, destination) return Response(NotificationAckSerializer().data) + + +class RfcIndexView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + + @extend_schema( + operation_id="refresh_rfc_index", + summary="Refresh rfc-index files", + description="Requests creation of rfc-index.xml and rfc-index.txt files", + responses={202: None}, + request=None, + ) + def post(self, request): + create_rfc_index_task.delay() + return Response(status=202) diff --git a/ietf/sync/rfcindex.py b/ietf/sync/rfcindex.py index b15846094f..63c2044931 100644 --- a/ietf/sync/rfcindex.py +++ b/ietf/sync/rfcindex.py @@ -3,7 +3,6 @@ from collections import defaultdict from collections.abc import Container from dataclasses import dataclass -from io import StringIO, BytesIO from itertools import chain from operator import attrgetter, itemgetter from pathlib import Path @@ -11,6 +10,7 @@ from urllib.parse import urljoin from django.conf import settings +from django.core.files.base import ContentFile from lxml import etree from django.core.files.storage import storages @@ -28,7 +28,7 @@ def format_rfc_number(n): """Format an RFC number (or subseries doc number) - + Set settings.RFCINDEX_MATCH_LEGACY_XML=True for the legacy (leading-zero) format. That is for debugging only - tests will fail. """ @@ -42,13 +42,16 @@ def errata_url(rfc: Document): return urljoin(settings.RFC_EDITOR_ERRATA_BASE_URL + "/", f"rfc{rfc.rfc_number}") -def save_to_red_bucket(filename: str, content: BytesIO | StringIO): +def save_to_red_bucket(filename: str, content: str | bytes): red_bucket = storages["red_bucket"] bucket_path = str(Path(getattr(settings, "RFCINDEX_OUTPUT_PATH", "")) / filename) if getattr(settings, "RFCINDEX_DELETE_THEN_WRITE", True): # Django 4.2's FileSystemStorage does not support allow_overwrite. red_bucket.delete(bucket_path) - red_bucket.save(bucket_path, content) + red_bucket.save( + bucket_path, + ContentFile(content if isinstance(content, bytes) else content.encode("utf-8")), + ) log(f"Saved {bucket_path} in red_bucket storage") @@ -76,7 +79,7 @@ def get_unusable_rfc_numbers() -> list[UnusableRfcNumber]: except json.JSONDecodeError: log(f"Error: unable to parse {bucket_path} in red_bucket storage") if settings.SERVER_MODE == "development": - return [] # pragma: no cover + return [] # pragma: no cover raise assert all(isinstance(record["number"], int) for record in records) assert all(isinstance(record["comment"], str) for record in records) @@ -441,7 +444,7 @@ def create_rfc_txt_index(): "rfcs": get_rfc_text_index_entries(), }, ) - save_to_red_bucket("rfc-index.txt", StringIO(index)) + save_to_red_bucket("rfc-index.txt", index) def create_rfc_xml_index(): @@ -477,4 +480,4 @@ def create_rfc_xml_index(): xml_declaration=True, pretty_print=4, ) - save_to_red_bucket("rfc-index.xml", BytesIO(pretty_index)) + save_to_red_bucket("rfc-index.xml", pretty_index) diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index fc75a056ed..4c84dc581e 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2024, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved # # Celery task definitions # @@ -18,6 +18,7 @@ from ietf.sync import iana from ietf.sync import rfceditor from ietf.sync.rfceditor import MIN_QUEUE_RESULTS, parse_queue, update_drafts_from_queue +from ietf.sync.rfcindex import create_rfc_txt_index, create_rfc_xml_index from ietf.sync.utils import build_from_file_content, load_rfcs_into_blobdb, rsync_helper from ietf.utils import log from ietf.utils.timezone import date_today @@ -272,3 +273,10 @@ def load_rfcs_into_blobdb_task(start: int, end: int): if end > 11000: # Arbitrarily chosen end = 11000 load_rfcs_into_blobdb(list(range(start, end + 1))) + + +@shared_task +def create_rfc_index_task(): + create_rfc_txt_index() + create_rfc_xml_index() + diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py index b0a8712fe1..e682c016f5 100644 --- a/ietf/sync/tests_rfcindex.py +++ b/ietf/sync/tests_rfcindex.py @@ -1,8 +1,8 @@ # Copyright The IETF Trust 2026, All Rights Reserved import json -from io import BytesIO, StringIO from unittest import mock +from django.core.files.base import ContentFile from django.core.files.storage import storages from django.test.utils import override_settings from lxml import etree @@ -13,7 +13,9 @@ create_rfc_txt_index, create_rfc_xml_index, format_rfc_number, - save_to_red_bucket, get_unusable_rfc_numbers, get_april1_rfc_numbers, + save_to_red_bucket, + get_unusable_rfc_numbers, + get_april1_rfc_numbers, get_publication_std_levels, ) from ietf.utils.test_utils import TestCase @@ -39,7 +41,7 @@ def setUp(self): # Create an unused RFC number red_bucket.save( "input/unusable-rfc-numbers.json", - StringIO(json.dumps([{"number": 123, "comment": ""}])), + ContentFile(json.dumps([{"number": 123, "comment": ""}])), ) # actual April 1 RFC @@ -55,7 +57,7 @@ def setUp(self): # Set up a JSON file to flag the April 1 RFC red_bucket.save( "input/april-first-rfc-numbers.json", - StringIO(json.dumps([self.april_fools_rfc.rfc_number])), + ContentFile(json.dumps([self.april_fools_rfc.rfc_number])), ) # non-April Fools RFC that happens to have been published on April 1 @@ -71,7 +73,7 @@ def setUp(self): # standard of self.rfc as different from its current value red_bucket.save( "input/publication-std-levels.json", - StringIO( + ContentFile( json.dumps( [{"number": self.rfc.rfc_number, "publication_std_level": "ps"}] ) @@ -91,7 +93,8 @@ def test_create_rfc_txt_index(self, mock_save): create_rfc_txt_index() self.assertEqual(mock_save.call_count, 1) self.assertEqual(mock_save.call_args[0][0], "rfc-index.txt") - contents = mock_save.call_args[0][1].read() + contents = mock_save.call_args[0][1] + self.assertTrue(isinstance(contents, str)) self.assertIn( "123 Not Issued.", contents, @@ -119,7 +122,8 @@ def test_create_rfc_xml_index(self, mock_save): create_rfc_xml_index() self.assertEqual(mock_save.call_count, 1) self.assertEqual(mock_save.call_args[0][0], "rfc-index.xml") - contents = mock_save.call_args[0][1].read() + contents = mock_save.call_args[0][1] + self.assertTrue(isinstance(contents, bytes)) ns = "{https://www.rfc-editor.org/rfc-index}" # NOT an f-string index = etree.fromstring(contents) @@ -190,13 +194,15 @@ def test_format_rfc_number(self): def test_save_to_red_bucket(self): red_bucket = storages["red_bucket"] with override_settings(RFCINDEX_DELETE_THEN_WRITE=False): - save_to_red_bucket("test", StringIO("contents")) - with red_bucket.open("test", "r") as f: - self.assertEqual(f.read(), "contents") + save_to_red_bucket("test", "contents \U0001f600") + # Read as binary and explicitly decode to confirm encoding + with red_bucket.open("test", "rb") as f: + self.assertEqual(f.read().decode("utf-8"), "contents \U0001f600") with override_settings(RFCINDEX_DELETE_THEN_WRITE=True): - save_to_red_bucket("test", BytesIO(b"new contents")) - with red_bucket.open("test", "r") as f: - self.assertEqual(f.read(), "new contents") + save_to_red_bucket("test", "new contents \U0001fae0".encode("utf-8")) + # Read as binary and explicitly decode to confirm encoding + with red_bucket.open("test", "rb") as f: + self.assertEqual(f.read().decode("utf-8"), "new contents \U0001fae0") red_bucket.delete("test") # clean up like a good child def test_get_unusable_rfc_numbers_raises(self): @@ -204,7 +210,7 @@ def test_get_unusable_rfc_numbers_raises(self): with self.assertRaises(FileNotFoundError): get_unusable_rfc_numbers() red_bucket = storages["red_bucket"] - red_bucket.save("unusable-rfc-numbers.json", StringIO("not json")) + red_bucket.save("unusable-rfc-numbers.json", ContentFile("not json")) with self.assertRaises(json.JSONDecodeError): get_unusable_rfc_numbers() red_bucket.delete("unusable-rfc-numbers.json") @@ -214,7 +220,7 @@ def test_get_april1_rfc_numbers_raises(self): with self.assertRaises(FileNotFoundError): get_april1_rfc_numbers() red_bucket = storages["red_bucket"] - red_bucket.save("april-first-rfc-numbers.json", StringIO("not json")) + red_bucket.save("april-first-rfc-numbers.json", ContentFile("not json")) with self.assertRaises(json.JSONDecodeError): get_april1_rfc_numbers() red_bucket.delete("april-first-rfc-numbers.json") @@ -224,7 +230,7 @@ def test_get_publication_std_levels_raises(self): with self.assertRaises(FileNotFoundError): get_publication_std_levels() red_bucket = storages["red_bucket"] - red_bucket.save("publication-std-levels.json", StringIO("not json")) + red_bucket.save("publication-std-levels.json", ContentFile("not json")) with self.assertRaises(json.JSONDecodeError): get_publication_std_levels() red_bucket.delete("publication-std-levels.json") diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 5ca4ba5cd9..56e395c5ac 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -447,7 +447,7 @@ def _multiline_to_list(s): "DATATRACKER_RFCINDEX_OUTPUT_PATH", "other/" ) RFCINDEX_INPUT_PATH = os.environ.get( - "DATATRACKR_RFCINDEX_INPUT_PATH", "" + "DATATRACKER_RFCINDEX_INPUT_PATH", "" ) # Configure the blobdb app for artifact storage From 2c59afe783216285b9695e99ee64547fe4e66469 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 13 Mar 2026 16:14:38 -0300 Subject: [PATCH 050/161] fix: drop stale obs/updates in rfced sync (#10543) * fix: drop stale obs/updates in rfced sync * refactor: partial revert, orig was safer --- ietf/sync/rfceditor.py | 73 +++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py index cdcdeb5989..aa0e643b20 100644 --- a/ietf/sync/rfceditor.py +++ b/ietf/sync/rfceditor.py @@ -636,43 +636,70 @@ def update_docs_from_rfc_index( ) rfc_published = True - def parse_relation_list(l): - res = [] - for x in l: - for a in Document.objects.filter(name=x.lower(), type_id="rfc"): - if a not in res: - res.append(a) - return res - - for x in parse_relation_list(obsoletes): - if not RelatedDocument.objects.filter( - source=doc, target=x, relationship=relationship_obsoletes + def parse_relation_list(rel_list: list[str]) -> list[Document]: + return list( + Document.objects.filter( + name__in=[name.strip().lower() for name in rel_list], + type_id="rfc" + ) + ) + + # Create missing obsoletes relations + docs_this_obsoletes = parse_relation_list(obsoletes) + for obs_doc in docs_this_obsoletes: + if not doc.relateddocument_set.filter( + target=obs_doc, relationship=relationship_obsoletes ): - r = RelatedDocument.objects.create( - source=doc, target=x, relationship=relationship_obsoletes + r = doc.relateddocument_set.create( + target=obs_doc, relationship=relationship_obsoletes ) rfc_changes.append( - "created {rel_name} relation between {src_name} and {tgt_name}".format( + "created {rel_name} relation between {src} and {tgt}".format( rel_name=r.relationship.name.lower(), - src_name=prettify_std_name(r.source.name), - tgt_name=prettify_std_name(r.target.name), + src=prettify_std_name(r.source.name), + tgt=prettify_std_name(r.target.name), ) ) + # Remove stale obsoletes relations + for r in doc.relateddocument_set.filter( + relationship=relationship_obsoletes + ).exclude(target_id__in=[d.pk for d in docs_this_obsoletes]): + r.delete() + rfc_changes.append( + "removed {rel_name} relation between {src} and {tgt}".format( + rel_name=r.relationship.name.lower(), + src=prettify_std_name(r.source.name), + tgt=prettify_std_name(r.target.name), + ) + ) - for x in parse_relation_list(updates): + docs_this_updates = parse_relation_list(updates) + for upd_doc in docs_this_updates: if not RelatedDocument.objects.filter( - source=doc, target=x, relationship=relationship_updates + source=doc, target=upd_doc, relationship=relationship_updates ): - r = RelatedDocument.objects.create( - source=doc, target=x, relationship=relationship_updates + r = doc.relateddocument_set.create( + target=upd_doc, relationship=relationship_updates ) rfc_changes.append( - "created {rel_name} relation between {src_name} and {tgt_name}".format( + "created {rel_name} relation between {src} and {tgt}".format( rel_name=r.relationship.name.lower(), - src_name=prettify_std_name(r.source.name), - tgt_name=prettify_std_name(r.target.name), + src=prettify_std_name(r.source.name), + tgt=prettify_std_name(r.target.name), ) ) + # Remove stale updates relations + for r in doc.relateddocument_set.filter( + relationship=relationship_updates + ).exclude(target_id__in=[d.pk for d in docs_this_updates]): + r.delete() + rfc_changes.append( + "removed {rel_name} relation between {src} and {tgt}".format( + rel_name=r.relationship.name.lower(), + src=prettify_std_name(r.source.name), + tgt=prettify_std_name(r.target.name), + ) + ) if also: # recondition also to have proper subseries document names: From 76fd25a1f39093a214be8ac2e0a9ed452beb7a47 Mon Sep 17 00:00:00 2001 From: Tianyi Gao Date: Sat, 14 Mar 2026 12:19:51 +0800 Subject: [PATCH 051/161] fix: wording in id_expired_email template (#10154) --- ietf/templates/doc/draft/id_expired_email.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/templates/doc/draft/id_expired_email.txt b/ietf/templates/doc/draft/id_expired_email.txt index afbf253ee2..161146a301 100644 --- a/ietf/templates/doc/draft/id_expired_email.txt +++ b/ietf/templates/doc/draft/id_expired_email.txt @@ -1,4 +1,4 @@ -{% autoescape off %}{{ doc.file_tag|safe }} was just expired. +{% autoescape off %}{{ doc.file_tag|safe }} just expired. This Internet-Draft is in the state "{{ state }}" in the Datatracker. From 9646edc20378e101ab48ff24253861fc5ea78fe9 Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Sun, 15 Mar 2026 02:17:40 +0800 Subject: [PATCH 052/161] feat: add author affiliation in serializer (#10549) --- ietf/api/serializers_rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index c17cbc64ce..a18dc588c4 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -103,7 +103,7 @@ class DocumentAuthorSerializer(serializers.ModelSerializer): class Meta: model = DocumentAuthor - fields = ["person", "plain_name"] + fields = ["person", "plain_name", "affiliation"] def get_plain_name(self, document_author: DocumentAuthor) -> str: return document_author.person.plain_name() From 36fa518ec387f425b1f11f6f9040a73e8f61df30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 10:02:47 -0400 Subject: [PATCH 053/161] chore(deps): bump the npm group across /dev/deploy-to-container with 5 updates (#10560) Bumps the npm group with 5 updates in the /dev/deploy-to-container directory: | Package | From | To | | --- | --- | --- | | [dockerode](https://github.com/apocas/dockerode) | `4.0.6` | `4.0.9` | | [fs-extra](https://github.com/jprichardson/node-fs-extra) | `11.3.0` | `11.3.4` | | [nanoid](https://github.com/ai/nanoid) | `5.1.5` | `5.1.7` | | [slugify](https://github.com/simov/slugify) | `1.6.6` | `1.6.8` | | [tar](https://github.com/isaacs/node-tar) | `7.4.3` | `7.5.11` | Updates `dockerode` from 4.0.6 to 4.0.9 - [Release notes](https://github.com/apocas/dockerode/releases) - [Commits](https://github.com/apocas/dockerode/compare/v4.0.6...v4.0.9) Updates `fs-extra` from 11.3.0 to 11.3.4 - [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md) - [Commits](https://github.com/jprichardson/node-fs-extra/compare/11.3.0...11.3.4) Updates `nanoid` from 5.1.5 to 5.1.7 - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/5.1.5...5.1.7) Updates `slugify` from 1.6.6 to 1.6.8 - [Changelog](https://github.com/simov/slugify/blob/master/CHANGELOG.md) - [Commits](https://github.com/simov/slugify/compare/v1.6.6...v1.6.8) Updates `tar` from 7.4.3 to 7.5.11 - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.11) --- updated-dependencies: - dependency-name: dockerode dependency-version: 4.0.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: fs-extra dependency-version: 11.3.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: nanoid dependency-version: 5.1.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: slugify dependency-version: 1.6.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: tar dependency-version: 7.5.11 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev/deploy-to-container/package-lock.json | 733 +++------------------- dev/deploy-to-container/package.json | 10 +- 2 files changed, 76 insertions(+), 667 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index 0954ec9af4..b62109f0e2 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -6,12 +6,12 @@ "": { "name": "deploy-to-container", "dependencies": { - "dockerode": "^4.0.6", - "fs-extra": "^11.3.0", - "nanoid": "5.1.5", + "dockerode": "^4.0.9", + "fs-extra": "^11.3.4", + "nanoid": "5.1.7", "nanoid-dictionary": "5.0.0", - "slugify": "1.6.6", - "tar": "^7.4.3", + "slugify": "1.6.8", + "tar": "^7.5.11", "yargs": "^17.7.2" }, "engines": { @@ -52,95 +52,6 @@ "node": ">=6" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -161,15 +72,6 @@ "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -263,11 +165,6 @@ "safer-buffer": "~2.1.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -285,8 +182,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", @@ -301,21 +197,12 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -334,7 +221,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -352,8 +238,7 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/cliui": { "version": "8.0.1", @@ -398,19 +283,6 @@ "node": ">=10.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -444,38 +316,31 @@ } }, "node_modules/dockerode": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.6.tgz", - "integrity": "sha512-FbVf3Z8fY/kALB9s+P9epCpWhfi/r0N2DgYYcYpsAUlaTxPjdsitsFobnltb+lyCgAIvf9C+4PSWlTnHlJMf1w==", - "license": "Apache-2.0", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.9.tgz", + "integrity": "sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==", "dependencies": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.11.1", "@grpc/proto-loader": "^0.7.13", "docker-modem": "^5.0.6", "protobufjs": "^7.3.2", - "tar-fs": "~2.1.2", + "tar-fs": "^2.1.4", "uuid": "^10.0.0" }, "engines": { "node": ">= 8.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dependencies": { "once": "^1.4.0" } @@ -488,32 +353,15 @@ "node": ">=6" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "license": "MIT", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -531,27 +379,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -574,8 +401,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/inherits": { "version": "2.0.4", @@ -590,28 +416,6 @@ "node": ">=8" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -633,28 +437,6 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==" }, - "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -664,36 +446,20 @@ } }, "node_modules/minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" + "minipass": "^7.1.2" }, "engines": { "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT" + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/ms": { "version": "2.1.3", @@ -709,16 +475,15 @@ "optional": true }, "node_modules/nanoid": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", - "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz", + "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -736,34 +501,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", "dependencies": { "wrappy": "1" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/protobufjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", @@ -788,10 +529,9 @@ } }, "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "license": "MIT", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -818,23 +558,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -860,40 +583,10 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.8.tgz", + "integrity": "sha512-HVk9X1E0gz3mSpoi60h/saazLKXKaZThMLU3u/aNwoYn8/xQyX2MGxL0ui2eaokkD7tF+Zo+cKTHUbe1mmmGzA==", "engines": { "node": ">=8.0.0" } @@ -942,20 +635,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -967,28 +646,15 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { @@ -996,10 +662,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "license": "MIT", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -1011,7 +676,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -1067,20 +731,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1097,28 +747,10 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/y18n": { "version": "5.0.8", @@ -1188,64 +820,6 @@ "yargs": "^17.7.2" } }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, "@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -1259,12 +833,6 @@ "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==" }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true - }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -1348,11 +916,6 @@ "safer-buffer": "~2.1.0" } }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1376,14 +939,6 @@ "readable-stream": "^3.4.0" } }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1437,16 +992,6 @@ "nan": "^2.19.0" } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -1467,33 +1012,28 @@ } }, "dockerode": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.6.tgz", - "integrity": "sha512-FbVf3Z8fY/kALB9s+P9epCpWhfi/r0N2DgYYcYpsAUlaTxPjdsitsFobnltb+lyCgAIvf9C+4PSWlTnHlJMf1w==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.9.tgz", + "integrity": "sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==", "requires": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.11.1", "@grpc/proto-loader": "^0.7.13", "docker-modem": "^5.0.6", "protobufjs": "^7.3.2", - "tar-fs": "~2.1.2", + "tar-fs": "^2.1.4", "uuid": "^10.0.0" } }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "requires": { "once": "^1.4.0" } @@ -1503,24 +1043,15 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1532,18 +1063,6 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - } - }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -1564,20 +1083,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -1597,38 +1102,19 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==" }, - "lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" - }, - "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, "minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" }, "minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "requires": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" + "minipass": "^7.1.2" } }, - "mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" - }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -1646,9 +1132,9 @@ "optional": true }, "nanoid": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", - "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==" + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz", + "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==" }, "nanoid-dictionary": { "version": "5.0.0", @@ -1663,20 +1149,6 @@ "wrappy": "1" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - } - }, "protobufjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", @@ -1697,9 +1169,9 @@ } }, "pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1720,14 +1192,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "requires": { - "glob": "^10.3.7" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1738,28 +1202,10 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - }, "slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.8.tgz", + "integrity": "sha512-HVk9X1E0gz3mSpoi60h/saazLKXKaZThMLU3u/aNwoYn8/xQyX2MGxL0ui2eaokkD7tF+Zo+cKTHUbe1mmmGzA==" }, "split-ca": { "version": "1.0.1", @@ -1795,16 +1241,6 @@ "strip-ansi": "^6.0.1" } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1813,24 +1249,15 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, "tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "requires": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "dependencies": { @@ -1842,9 +1269,9 @@ } }, "tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -1889,14 +1316,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1907,16 +1326,6 @@ "strip-ansi": "^6.0.0" } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index 09716c3094..1c95a4540c 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -2,12 +2,12 @@ "name": "deploy-to-container", "type": "module", "dependencies": { - "dockerode": "^4.0.6", - "fs-extra": "^11.3.0", - "nanoid": "5.1.5", + "dockerode": "^4.0.9", + "fs-extra": "^11.3.4", + "nanoid": "5.1.7", "nanoid-dictionary": "5.0.0", - "slugify": "1.6.6", - "tar": "^7.4.3", + "slugify": "1.6.8", + "tar": "^7.5.11", "yargs": "^17.7.2" }, "engines": { From dcce2df0300879078690a2fbd3522602d467cf38 Mon Sep 17 00:00:00 2001 From: Lars Eggert Date: Fri, 20 Mar 2026 12:03:18 +0900 Subject: [PATCH 054/161] feat: add attendance summary and pie chart to meeting attendees page (#10481) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add attendance summary and pie chart to meeting attendees page For IETF meetings ≥ 118, the attendees proceedings page now shows an Onsite / Remote / Total summary row matching the counts displayed on registration.ietf.org, together with a "View chart" button that opens a Bootstrap modal containing a Highcharts pie chart. * Split out attendees-chart.js --- ietf/meeting/tests_views.py | 13 +++++ ietf/meeting/views.py | 33 +++++++++-- ietf/static/js/attendees-chart.js | 58 +++++++++++++++++++ .../meeting/proceedings_attendees.html | 53 ++++++++++++++++- package.json | 1 + 5 files changed, 151 insertions(+), 7 deletions(-) create mode 100644 ietf/static/js/attendees-chart.js diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 168999d0aa..258ffe554c 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -9007,6 +9007,8 @@ def test_proceedings_attendees(self): - assert onsite checkedin=True appears, not onsite checkedin=False - assert remote attended appears, not remote not attended - prefer onsite checkedin=True to remote attended when same person has both + - summary stats row shows correct counts + - chart data JSON is embedded with correct values """ m = MeetingFactory(type_id='ietf', date=datetime.date(2023, 11, 4), number="118") @@ -9028,6 +9030,17 @@ def test_proceedings_attendees(self): text = q('#id_attendees tbody tr').text().replace('\n', ' ') self.assertEqual(text, f"A Person {areg.affiliation} {areg.country_code} onsite C Person {creg.affiliation} {creg.country_code} remote") + # Summary stats row: Onsite / Remote / Total (matches registration.ietf.org) + self.assertContains(response, 'Onsite:') + self.assertContains(response, 'Remote:') + self.assertContains(response, 'Total:') + self.assertContains(response, '1') # onsite and remote + self.assertContains(response, '2') # total + + # Chart data embedded in page + chart_json = json.loads(q('#attendees-chart-data').text()) + self.assertEqual(chart_json['type'], [['Onsite', 1], ['Remote', 1]]) + def test_proceedings_overview(self): '''Test proceedings IETF Overview page. Note: old meetings aren't supported so need to add a new meeting then test. diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 731dfad88f..67a81305b4 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -109,7 +109,7 @@ from ietf.meeting.utils import get_activity_stats, post_process, create_recording, delete_recording from ietf.meeting.utils import participants_for_meeting, generate_bluesheet, bluesheet_data, save_bluesheet from ietf.message.utils import infer_message -from ietf.name.models import SlideSubmissionStatusName, ProceedingsMaterialTypeName, SessionPurposeName +from ietf.name.models import SlideSubmissionStatusName, ProceedingsMaterialTypeName, SessionPurposeName, CountryName from ietf.utils import markdown from ietf.utils.decorators import require_api_key from ietf.utils.hedgedoc import Note, NoteError @@ -4812,15 +4812,36 @@ def proceedings_attendees(request, num=None): template = None registrations = None + stats = None + chart_data = None + if int(meeting.number) >= 118: checked_in, attended = participants_for_meeting(meeting) regs = list(Registration.objects.onsite().filter(meeting__number=num, checkedin=True)) - - for reg in Registration.objects.remote().filter(meeting__number=num).select_related('person'): - if reg.person.pk in attended and reg.person.pk not in checked_in: - regs.append(reg) + onsite_count = len(regs) + regs += [ + reg + for reg in Registration.objects.remote().filter(meeting__number=num).select_related('person') + if reg.person.pk in attended and reg.person.pk not in checked_in + ] + remote_count = len(regs) - onsite_count registrations = sorted(regs, key=lambda x: (x.last_name, x.first_name)) + + country_codes = [r.country_code for r in registrations if r.country_code] + stats = { + 'total': onsite_count + remote_count, + 'onsite': onsite_count, + 'remote': remote_count, + } + + code_to_name = dict(CountryName.objects.values_list('slug', 'name')) + country_counts = Counter(code_to_name.get(c, c) for c in country_codes).most_common() + + chart_data = { + 'type': [['Onsite', onsite_count], ['Remote', remote_count]], + 'countries': country_counts, + } else: overview_template = "/meeting/proceedings/%s/attendees.html" % meeting.number try: @@ -4832,6 +4853,8 @@ def proceedings_attendees(request, num=None): 'meeting': meeting, 'registrations': registrations, 'template': template, + 'stats': stats, + 'chart_data': chart_data, }) def proceedings_overview(request, num=None): diff --git a/ietf/static/js/attendees-chart.js b/ietf/static/js/attendees-chart.js new file mode 100644 index 0000000000..fed3b1289c --- /dev/null +++ b/ietf/static/js/attendees-chart.js @@ -0,0 +1,58 @@ +(function () { + var raw = document.getElementById('attendees-chart-data'); + if (!raw) return; + var chartData = JSON.parse(raw.textContent); + var chart = null; + var currentBreakdown = 'type'; + + // Override the global transparent background set by highcharts.js so the + // export menu and fullscreen view use the page background color. + var container = document.getElementById('attendees-pie-chart'); + var bodyBg = getComputedStyle(document.body).backgroundColor; + container.style.setProperty('--highcharts-background-color', bodyBg); + + function renderChart(breakdown) { + var seriesData = chartData[breakdown].map(function (item) { + return { name: item[0], y: item[1] }; + }); + if (chart) chart.destroy(); + chart = Highcharts.chart(container, { + chart: { type: 'pie', height: 400 }, + title: { text: null }, + tooltip: { pointFormat: '{point.name}: {point.y} ({point.percentage:.1f}%)' }, + plotOptions: { + pie: { + dataLabels: { + enabled: true, + format: '{point.name}
    {point.y} ({point.percentage:.1f}%)', + }, + showInLegend: false, + } + }, + series: [{ name: 'Attendees', data: seriesData }], + }); + } + + var modal = document.getElementById('attendees-chart-modal'); + + // Render (or re-render) the chart each time the modal becomes fully visible, + // so Highcharts can measure the container dimensions correctly. + modal.addEventListener('shown.bs.modal', function () { + renderChart(currentBreakdown); + }); + + // Release the chart when the modal closes to avoid stale renders. + modal.addEventListener('hidden.bs.modal', function () { + if (chart) { + chart.destroy(); + chart = null; + } + }); + + document.querySelectorAll('[name="attendees-breakdown"]').forEach(function (radio) { + radio.addEventListener('change', function () { + currentBreakdown = this.value; + renderChart(currentBreakdown); + }); + }); +})(); diff --git a/ietf/templates/meeting/proceedings_attendees.html b/ietf/templates/meeting/proceedings_attendees.html index 390ce00cad..0c59d4ab15 100644 --- a/ietf/templates/meeting/proceedings_attendees.html +++ b/ietf/templates/meeting/proceedings_attendees.html @@ -3,6 +3,7 @@ {% load origin markup_tags static %} {% block pagehead %} + {% if chart_data %}{% endif %} {% endblock %} {% block title %}IETF {{ meeting.number }} proceedings{% endblock %} {% block content %} @@ -14,8 +15,52 @@

    Attendee list of IETF {{ meeting.number }} meeting

    - + + {% if chart_data %} +
    +
    +
    Onsite: {{ stats.onsite }}
    +
    Remote: {{ stats.remote }}
    +
    Total: {{ stats.total }}
    +
    + +
    + + + + {{ chart_data|json_script:"attendees-chart-data" }} + {% endif %}{# chart_data #} + {% if template %} + {{template|safe}} {% else %} @@ -44,4 +89,8 @@

    Attendee list of IETF {{ meeting.number }} meeting

    {% endblock %} {% block js %} -{% endblock %} \ No newline at end of file + {% if chart_data %} + + + {% endif %} +{% endblock %} diff --git a/package.json b/package.json index fec29275b4..bb71250c4b 100644 --- a/package.json +++ b/package.json @@ -112,6 +112,7 @@ "ietf/static/images/irtf-logo-white.svg", "ietf/static/images/irtf-logo.svg", "ietf/static/js/add_session_recordings.js", + "ietf/static/js/attendees-chart.js", "ietf/static/js/agenda_filter.js", "ietf/static/js/agenda_materials.js", "ietf/static/js/announcement.js", From 2c29cbaad91a7c076643167e1ffc056975b2c97e Mon Sep 17 00:00:00 2001 From: Tianyi Gao Date: Fri, 20 Mar 2026 11:45:09 +0800 Subject: [PATCH 055/161] feat: add parent section in team about (#9148) (#10551) fix: remove empty for area/parent on all groups --- ietf/group/tests_info.py | 19 +++++++++++++++++++ ietf/templates/group/group_about.html | 11 +++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 34f8500854..3f24e2e3d6 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -543,6 +543,25 @@ def verify_can_edit_group(url, group, username): for username in list(set(interesting_users)-set(can_edit[group.type_id])): verify_cannot_edit_group(url, group, username) + def test_group_about_team_parent(self): + """Team about page should show parent when parent is not an area""" + GroupFactory(type_id='team', parent=GroupFactory(type_id='area', acronym='gen')) + GroupFactory(type_id='team', parent=GroupFactory(type_id='ietf', acronym='iab')) + GroupFactory(type_id='team', parent=None) + + for team in Group.objects.filter(type='team').select_related('parent'): + url = urlreverse('ietf.group.views.group_about', kwargs=dict(acronym=team.acronym)) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + if team.parent and team.parent.type_id != 'area': + self.assertContains(r, 'Parent') + self.assertContains(r, team.parent.acronym) + elif team.parent and team.parent.type_id == 'area': + self.assertContains(r, team.parent.name) + self.assertNotContains(r, '>Parent<') + else: + self.assertNotContains(r, '>Parent<') + def test_group_about_personnel(self): """Correct personnel should appear on the group About page""" group = GroupFactory() diff --git a/ietf/templates/group/group_about.html b/ietf/templates/group/group_about.html index cbc2e11536..6d1843383c 100644 --- a/ietf/templates/group/group_about.html +++ b/ietf/templates/group/group_about.html @@ -51,10 +51,13 @@ {{ group.parent.name }} ({{ group.parent.acronym }}) - {% else %} - + {% elif group.parent and group.type_id == "team" %} + - + {% endif %} @@ -444,4 +447,4 @@

    group_stats("{% url 'ietf.group.views.group_stats_data' %}", ".chart"); }); -{% endblock %} \ No newline at end of file +{% endblock %} From abab6373f5f465bdcc052f45c5def0710f360dc7 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 19 Mar 2026 23:02:40 -0500 Subject: [PATCH 056/161] fix: reduce db churn and log noise for rebuilding references (#10563) * fix: (wip) reduce db churn and log noise for rebuilding references * fix: typo in log message * fix: typo in log message Co-authored-by: Jennifer Richards --------- Co-authored-by: Jennifer Richards --- ietf/doc/utils.py | 78 ++++++++++++++++++++++++++++++-------------- ietf/submit/utils.py | 5 +-- 2 files changed, 54 insertions(+), 29 deletions(-) diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 396b3fcfa4..8cbe5e8f3e 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -4,6 +4,7 @@ import datetime import io +import json import math import os import re @@ -954,58 +955,78 @@ def rebuild_reference_relations(doc, filenames): filenames should be a dict mapping file ext (i.e., type) to the full path of each file. """ if doc.type.slug not in ["draft", "rfc"]: + log.log(f"rebuild_reference_relations called for non draft/rfc doc {doc.name}") return None - - log.log(f"Rebuilding reference relations for {doc.name}") - # try XML first - if "xml" in filenames: - refs = XMLDraft(filenames["xml"]).get_refs() - elif "txt" in filenames: - filename = filenames["txt"] - try: - refs = draft.PlaintextDraft.from_file(filename).get_refs() - except IOError as e: - return {"errors": [f"{e.strerror}: {filename}"]} - else: + + if "xml" not in filenames and "txt" not in filenames: + log.log(f"rebuild_reference_relations error: no file available for {doc.name}") return { "errors": [ "No file available for rebuilding reference relations. Need XML or plaintext." ] } - - doc.relateddocument_set.filter( + else: + try: + # try XML first + if "xml" in filenames: + refs = XMLDraft(filenames["xml"]).get_refs() + elif "txt" in filenames: + filename = filenames["txt"] + refs = draft.PlaintextDraft.from_file(filename).get_refs() + except (IOError, UnicodeDecodeError) as e: + log.log(f"rebuild_reference_relations error: On {doc.name}: {e}") + return {"errors": [f"{e}: {filename}"]} + + before = set(doc.relateddocument_set.filter( relationship__slug__in=["refnorm", "refinfo", "refold", "refunk"] - ).delete() + ).values_list("relationship__slug","target__name")) warnings = [] errors = [] unfound = set() + intended = set() + names = [ref for ref in refs] + names.extend([ref[:-3] for ref in refs if re.match(r"^draft-.*-\d{2}$", ref)]) + queryset = Document.objects.filter(name__in=names) for ref, refType in refs.items(): - refdoc = Document.objects.filter(name=ref) - if not refdoc and re.match(r"^draft-.*-\d{2}$", ref): - refdoc = Document.objects.filter(name=ref[:-3]) + refdoc = queryset.filter(name=ref) + if not refdoc.exists() and re.match(r"^draft-.*-\d{2}$", ref): + refdoc = queryset.filter(name=ref[:-3]) count = refdoc.count() if count == 0: unfound.add("%s" % ref) continue elif count > 1: + log.unreachable("2026-3-16") # This branch is holdover from DocAlias errors.append("Too many Document objects found for %s" % ref) else: # Don't add references to ourself if doc != refdoc[0]: - RelatedDocument.objects.get_or_create( - source=doc, - target=refdoc[0], - relationship=DocRelationshipName.objects.get( - slug="ref%s" % refType - ), - ) + intended.add((f"ref{refType}", refdoc[0].name)) + if unfound: warnings.append( "There were %d references with no matching Document" % len(unfound) ) + if intended != before: + for slug, name in before-intended: + doc.relateddocument_set.filter(target__name=name, relationship_id=slug).delete() + for slug, name in intended-before: + doc.relateddocument_set.create( + target=queryset.get(name=name), + relationship_id=slug + ) + after = set(doc.relateddocument_set.filter( + relationship__slug__in=["refnorm", "refinfo", "refold", "refunk"] + ).values_list("relationship__slug","target__name")) + if after != intended: + errors.append("Attempted changed didn't achieve intended results") + changed_references = True + else: + changed_references = False + ret = {} if errors: ret["errors"] = errors @@ -1014,6 +1035,13 @@ def rebuild_reference_relations(doc, filenames): if unfound: ret["unfound"] = list(unfound) + logmsg = f"rebuild_reference_relations for {doc.name}: " + logmsg += "changed references" if changed_references else "references unchanged" + if ret: + logmsg += f" {json.dumps(ret)}" + + log.log(logmsg) + return ret def set_replaces_for_document(request, doc, new_replaces, by, email_subject, comment=""): diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 9a7c358a6d..7e3106f723 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -395,10 +395,7 @@ def post_submission(request, submission, approved_doc_desc, approved_subm_desc): log.log(f"{submission.name}: updated state and info") - trouble = rebuild_reference_relations(draft, find_submission_filenames(draft)) - if trouble: - log.log('Rebuild_reference_relations trouble: %s'%trouble) - log.log(f"{submission.name}: rebuilt reference relations") + rebuild_reference_relations(draft, find_submission_filenames(draft)) if draft.stream_id == "ietf" and draft.group.type_id == "wg" and draft.rev == "00": # automatically set state "WG Document" From b08945aaf4618613f668bb5c231533f709bea4d4 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 20 Mar 2026 05:17:10 -0300 Subject: [PATCH 057/161] fix: maintain column count in HTML template (#10593) --- ietf/templates/group/group_about.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ietf/templates/group/group_about.html b/ietf/templates/group/group_about.html index 6d1843383c..0a8b9194f2 100644 --- a/ietf/templates/group/group_about.html +++ b/ietf/templates/group/group_about.html @@ -58,6 +58,10 @@ {{ group.parent.name }} ({{ group.parent.acronym }}) + {% else %} +

    + + {% endif %} From d39317b070a7af5db4f48edaf0e7f03fd0a29680 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Mar 2026 12:33:23 -0300 Subject: [PATCH 058/161] feat: update typesense search index on rfc pub/update (#10575) * chore: typesense API config for k8s * feat: DocumentInfo.pub_datetime() helper * chore(deps): install typesense library * feat: searchindex (typesense) util module * feat: sanitize abstract * feat: add (sanitized) content * style: ruff ruff on doc/tasks.py * feat: search index update task * chore: call the update task * refactor: better settings management * ci: update prod settings * chore: typing * test: searchindex tests * test: searchindex task test * style: ruff ruff * chore: drop type hints to fix mypy errors * test: fix tests * test: improve coverage * fix: handle missing content blob correctly --- ietf/api/serializers_rpc.py | 5 +- ietf/api/tests_serializers_rpc.py | 18 +++- ietf/api/tests_views_rpc.py | 44 ++++++--- ietf/api/views_rpc.py | 3 +- ietf/doc/models.py | 17 ++-- ietf/doc/tasks.py | 46 +++++++-- ietf/doc/tests_tasks.py | 64 ++++++++++-- ietf/utils/searchindex.py | 155 ++++++++++++++++++++++++++++++ ietf/utils/tests_searchindex.py | 128 ++++++++++++++++++++++++ k8s/settings_local.py | 20 ++-- requirements.txt | 1 + 11 files changed, 451 insertions(+), 50 deletions(-) create mode 100644 ietf/utils/searchindex.py create mode 100644 ietf/utils/tests_searchindex.py diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index a18dc588c4..701f05eece 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2025, All Rights Reserved +# Copyright The IETF Trust 2025-2026, All Rights Reserved import datetime from pathlib import Path from typing import Literal, Optional @@ -20,6 +20,7 @@ RfcAuthor, ) from ietf.doc.serializers import RfcAuthorSerializer +from ietf.doc.tasks import update_rfc_searchindex_task from ietf.doc.utils import ( default_consensus, prettify_std_name, @@ -682,6 +683,8 @@ def update(self, instance, validated_data): stale_subseries_relations.delete() if len(rfc_events) > 0: rfc.save_with_history(rfc_events) + + update_rfc_searchindex_task.delay(rfc.rfc_number) return rfc diff --git a/ietf/api/tests_serializers_rpc.py b/ietf/api/tests_serializers_rpc.py index 1babb4c30f..ed326be451 100644 --- a/ietf/api/tests_serializers_rpc.py +++ b/ietf/api/tests_serializers_rpc.py @@ -1,4 +1,6 @@ # Copyright The IETF Trust 2026, All Rights Reserved +from unittest import mock + from django.utils import timezone from ietf.utils.test_utils import TestCase @@ -32,7 +34,8 @@ def test_create(self): with self.assertRaises(RuntimeError, msg="serializer does not allow create()"): serializer.save() - def test_update(self): + @mock.patch("ietf.api.serializers_rpc.update_rfc_searchindex_task") + def test_update(self, mock_update_searchindex_task): rfc = WgRfcFactory(pages=10) serializer = EditableRfcSerializer( instance=rfc, @@ -56,6 +59,11 @@ def test_update(self): ) self.assertTrue(serializer.is_valid()) result = serializer.save() + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) result.refresh_from_db() self.assertEqual(result.title, "Yadda yadda yadda") self.assertEqual( @@ -84,7 +92,8 @@ def test_update(self): [Document.objects.get(name="fyi999")], ) - def test_partial_update(self): + @mock.patch("ietf.api.serializers_rpc.update_rfc_searchindex_task") + def test_partial_update(self, mock_update_searchindex_task): # We could test other permutations of fields, but authors is a partial update # we know we are going to use, so verifying that one in particular. rfc = WgRfcFactory(pages=10, abstract="do or do not", title="padawan") @@ -104,6 +113,11 @@ def test_partial_update(self): ) self.assertTrue(serializer.is_valid()) result = serializer.save() + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) result.refresh_from_db() self.assertEqual(rfc.title, "padawan") self.assertEqual( diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 7ab8778d28..a679e74789 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -196,7 +196,8 @@ def test_notify_rfc_published(self, mock_task_delay): self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) - def test_upload_rfc_files(self): + @mock.patch("ietf.api.views_rpc.update_rfc_searchindex_task") + def test_upload_rfc_files(self, mock_update_searchindex_task): def _valid_post_data(): """Generate a valid post data dict @@ -217,14 +218,7 @@ def _valid_post_data(): } url = urlreverse("ietf.api.purple_api.upload_rfc_files") - unused_rfc_number = ( - Document.objects.filter(rfc_number__isnull=False).aggregate( - unused_rfc_number=Max("rfc_number") + 1 - )["unused_rfc_number"] - or 10000 - ) - - rfc = WgRfcFactory(rfc_number=unused_rfc_number) + rfc = WgRfcFactory() assert isinstance(rfc, Document), "WgRfcFactory should generate a Document" with TemporaryDirectory() as rfc_dir: settings.RFC_PATH = rfc_dir # affects overridden settings @@ -236,15 +230,17 @@ def _valid_post_data(): # no api key r = self.client.post(url, _valid_post_data(), format="multipart") self.assertEqual(r.status_code, 403) + self.assertFalse(mock_update_searchindex_task.delay.called) # invalid RFC r = self.client.post( url, - _valid_post_data() | {"rfc": unused_rfc_number + 1}, + _valid_post_data() | {"rfc": rfc.rfc_number + 10}, format="multipart", headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) # empty files r = self.client.post( @@ -263,6 +259,7 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) # bad file type r = self.client.post( @@ -276,9 +273,10 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) # Put a file in the way. Post should fail because replace = False - file_in_the_way = (rfc_path / f"rfc{unused_rfc_number}.txt") + file_in_the_way = (rfc_path / f"{rfc.name}.txt") file_in_the_way.touch() r = self.client.post( url, @@ -287,11 +285,12 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 409) # conflict + self.assertFalse(mock_update_searchindex_task.delay.called) file_in_the_way.unlink() # Put a blob in the way. Post should fail because replace = False blob_in_the_way = Blob.objects.create( - bucket="rfc", name=f"txt/rfc{unused_rfc_number}.txt", content=b"" + bucket="rfc", name=f"txt/{rfc.name}.txt", content=b"" ) r = self.client.post( url, @@ -300,6 +299,7 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 409) # conflict + self.assertFalse(mock_update_searchindex_task.delay.called) blob_in_the_way.delete() # valid post @@ -310,8 +310,13 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 200) + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) for extension in ["xml", "txt", "html", "pdf", "json"]: - filename = f"rfc{unused_rfc_number}.{extension}" + filename = f"{rfc.name}.{extension}" self.assertEqual( (rfc_path / filename) .read_text(), @@ -328,7 +333,7 @@ def _valid_post_data(): f"{extension} blob should contain the expected content", ) # special case for notprepped - notprepped_fn = f"rfc{unused_rfc_number}.notprepped.xml" + notprepped_fn = f"{rfc.name}.notprepped.xml" self.assertEqual( ( rfc_path / "prerelease" / notprepped_fn @@ -347,6 +352,7 @@ def _valid_post_data(): ) # re-post with replace = False should now fail + mock_update_searchindex_task.reset_mock() r = self.client.post( url, _valid_post_data(), @@ -354,7 +360,8 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 409) # conflict - + self.assertFalse(mock_update_searchindex_task.delay.called) + # re-post with replace = True should succeed r = self.client.post( url, @@ -362,7 +369,12 @@ def _valid_post_data(): format="multipart", headers={"X-Api-Key": "valid-token"}, ) - self.assertEqual(r.status_code, 200) # conflict + self.assertEqual(r.status_code, 200) + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) @mock.patch("ietf.api.views_rpc.create_rfc_index_task") diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index c7ae699005..cb6a59a167 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -38,7 +38,7 @@ from ietf.doc.models import Document, DocHistory, RfcAuthor, DocEvent from ietf.doc.serializers import RfcAuthorSerializer from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage -from ietf.doc.tasks import signal_update_rfc_metadata_task +from ietf.doc.tasks import signal_update_rfc_metadata_task, update_rfc_searchindex_task from ietf.person.models import Email, Person from ietf.sync.tasks import create_rfc_index_task @@ -516,6 +516,7 @@ def post(self, request): destination.parent.mkdir() shutil.move(ftm, destination) + update_rfc_searchindex_task.delay(rfc.rfc_number) return Response(NotificationAckSerializer().data) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 7b23a62c45..972f0a34e8 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1285,11 +1285,8 @@ def submission(self): s = s.first() return s - def pub_date(self): - """Get the publication date for this document - - This is the rfc publication date for RFCs, and the new-revision date for other documents. - """ + def pub_datetime(self): + """Get the publication datetime of this document""" if self.type_id == "rfc": # As of Sept 2022, in ietf.sync.rfceditor.update_docs_from_rfc_index() `published_rfc` events are # created with a timestamp whose date *in the PST8PDT timezone* is the official publication date @@ -1297,7 +1294,15 @@ def pub_date(self): event = self.latest_event(type='published_rfc') else: event = self.latest_event(type='new_revision') - return event.time.astimezone(RPC_TZINFO).date() if event else None + return event.time.astimezone(RPC_TZINFO) if event else None + + def pub_date(self): + """Get the publication date for this document + + This is the rfc publication date for RFCs, and the new-revision date for other documents. + """ + pub_datetime = self.pub_datetime() + return None if pub_datetime is None else pub_datetime.date() def is_dochistory(self): return False diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index 90f4c80af5..a38cd5eb5c 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -3,6 +3,7 @@ # Celery task definitions # import datetime + import debug # pyflakes:ignore from celery import shared_task @@ -11,7 +12,7 @@ from django.conf import settings from django.utils import timezone -from ietf.utils import log +from ietf.utils import log, searchindex from ietf.utils.timezone import datetime_today from .expire import ( @@ -77,17 +78,19 @@ def expire_last_calls_task(): try: expire_last_call(doc) except Exception: - log.log(f"ERROR: Failed to expire last call for {doc.file_tag()} (id={doc.pk})") + log.log( + f"ERROR: Failed to expire last call for {doc.file_tag()} (id={doc.pk})" + ) else: log.log(f"Expired last call for {doc.file_tag()} (id={doc.pk})") -@shared_task +@shared_task def generate_idnits2_rfc_status_task(): outpath = Path(settings.DERIVED_DIR) / "idnits2-rfc-status" blob = generate_idnits2_rfc_status() try: - outpath.write_text(blob, encoding="utf8") # TODO-BLOBSTORE + outpath.write_text(blob, encoding="utf8") # TODO-BLOBSTORE except Exception as e: log.log(f"failed to write idnits2-rfc-status: {e}") @@ -97,7 +100,7 @@ def generate_idnits2_rfcs_obsoleted_task(): outpath = Path(settings.DERIVED_DIR) / "idnits2-rfcs-obsoleted" blob = generate_idnits2_rfcs_obsoleted() try: - outpath.write_text(blob, encoding="utf8") # TODO-BLOBSTORE + outpath.write_text(blob, encoding="utf8") # TODO-BLOBSTORE except Exception as e: log.log(f"failed to write idnits2-rfcs-obsoleted: {e}") @@ -105,7 +108,7 @@ def generate_idnits2_rfcs_obsoleted_task(): @shared_task def generate_draft_bibxml_files_task(days=7, process_all=False): """Generate bibxml files for recently updated docs - + If process_all is False (the default), processes only docs with new revisions in the last specified number of days. """ @@ -117,7 +120,9 @@ def generate_draft_bibxml_files_task(days=7, process_all=False): doc__type_id="draft", ).order_by("time") if not process_all: - doc_events = doc_events.filter(time__gte=timezone.now() - datetime.timedelta(days=days)) + doc_events = doc_events.filter( + time__gte=timezone.now() - datetime.timedelta(days=days) + ) for event in doc_events: try: update_or_create_draft_bibxml_file(event.doc, event.rev) @@ -132,6 +137,7 @@ def investigate_fragment_task(name_fragment: str): "results": investigate_fragment(name_fragment), } + @shared_task def rebuild_reference_relations_task(doc_names: list[str]): log.log(f"Task: Rebuilding reference relations for {doc_names}") @@ -157,6 +163,32 @@ def rebuild_reference_relations_task(doc_names: list[str]): def fixup_bofreq_timestamps_task(): # pragma: nocover fixup_bofreq_timestamps() + @shared_task def signal_update_rfc_metadata_task(rfc_number_list=()): signal_update_rfc_metadata(rfc_number_list) + + +@shared_task(bind=True) +def update_rfc_searchindex_task(self, rfc_number: int): + """Update the search index for one RFC""" + if not searchindex.enabled(): + log.log("Search indexing is not enabled, skipping") + return + + rfc = Document.objects.filter(type_id="rfc", rfc_number=rfc_number).first() + if rfc is None: + log.log( + f"ERROR: Document for rfc{rfc_number} not found, not updating search index" + ) + return + try: + searchindex.update_or_create_rfc_entry(rfc) + except Exception as err: + log.log(f"Search index update for {rfc.name} failed ({err})") + if isinstance(err, searchindex.RETRYABLE_ERROR_CLASSES): + searchindex_settings = searchindex.get_settings() + self.retry( + countdown=searchindex_settings["TASK_RETRY_DELAY"], + max_retries=searchindex_settings["TASK_MAX_RETRIES"], + ) diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 29689cd596..728d21f131 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -1,18 +1,20 @@ -# Copyright The IETF Trust 2024, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved -import debug # pyflakes:ignore import datetime from unittest import mock from pathlib import Path +from celery.exceptions import Retry from django.conf import settings +from django.test.utils import override_settings from django.utils import timezone +from typesense import exceptions as typesense_exceptions from ietf.utils.test_utils import TestCase from ietf.utils.timezone import datetime_today -from .factories import DocumentFactory, NewRevisionDocEventFactory +from .factories import DocumentFactory, NewRevisionDocEventFactory, WgRfcFactory from .models import Document, NewRevisionDocEvent from .tasks import ( expire_ids_task, @@ -22,8 +24,10 @@ generate_idnits2_rfc_status_task, investigate_fragment_task, notify_expirations_task, + update_rfc_searchindex_task, ) + class TaskTests(TestCase): @mock.patch("ietf.doc.tasks.in_draft_expire_freeze") @mock.patch("ietf.doc.tasks.get_expired_drafts") @@ -87,7 +91,7 @@ def test_expire_last_calls_task(self, mock_get_expired, mock_expire): self.assertEqual(mock_expire.call_args_list[0], mock.call(docs[0])) self.assertEqual(mock_expire.call_args_list[1], mock.call(docs[1])) self.assertEqual(mock_expire.call_args_list[2], mock.call(docs[2])) - + # Check that it runs even if exceptions occur mock_get_expired.reset_mock() mock_expire.reset_mock() @@ -111,9 +115,40 @@ def test_investigate_fragment_task(self): retval, {"name_fragment": "some fragment", "results": investigation_results} ) + @mock.patch("ietf.doc.tasks.searchindex.update_or_create_rfc_entry") + @mock.patch("ietf.doc.tasks.searchindex.enabled") + def test_update_rfc_searchindex_task( + self, mock_searchindex_enabled, mock_create_entry + ): + mock_searchindex_enabled.return_value = False + + self.assertFalse(Document.objects.filter(rfc_number=5073).exists()) + rfc = WgRfcFactory() + update_rfc_searchindex_task(rfc_number=5073) + self.assertFalse(mock_create_entry.called) + update_rfc_searchindex_task(rfc_number=rfc.rfc_number) + self.assertFalse(mock_create_entry.called) + + mock_searchindex_enabled.return_value = True + update_rfc_searchindex_task(rfc_number=5073) + self.assertFalse(mock_create_entry.called) + update_rfc_searchindex_task(rfc_number=rfc.rfc_number) + self.assertTrue(mock_create_entry.called) + + with override_settings(SEARCHINDEX_CONFIG={"TASK_MAX_RETRIES": 0}): + # Try a non-retryable error (there are others) + mock_create_entry.side_effect = typesense_exceptions.RequestMalformed + update_rfc_searchindex_task(rfc_number=rfc.rfc_number) # no retry + # Now what should be a retryable error + mock_create_entry.side_effect = typesense_exceptions.Timeout + with self.assertRaises(Retry): + update_rfc_searchindex_task(rfc_number=rfc.rfc_number) + class Idnits2SupportTests(TestCase): - settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['DERIVED_DIR'] + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [ + "DERIVED_DIR" + ] @mock.patch("ietf.doc.tasks.generate_idnits2_rfcs_obsoleted") def test_generate_idnits2_rfcs_obsoleted_task(self, mock_generate): @@ -151,7 +186,9 @@ def setUp(self): ) # a couple that should always be ignored NewRevisionDocEventFactory( - time=now - datetime.timedelta(days=6), rev="09", doc__type_id="rfc" # not a draft + time=now - datetime.timedelta(days=6), + rev="09", + doc__type_id="rfc", # not a draft ) NewRevisionDocEventFactory( type="changed_document", # not a "new_revision" type @@ -164,7 +201,9 @@ def setUp(self): @mock.patch("ietf.doc.tasks.ensure_draft_bibxml_path_exists") @mock.patch("ietf.doc.tasks.update_or_create_draft_bibxml_file") - def test_generate_bibxml_files_for_all_drafts_task(self, mock_create, mock_ensure_path): + def test_generate_bibxml_files_for_all_drafts_task( + self, mock_create, mock_ensure_path + ): generate_draft_bibxml_files_task(process_all=True) self.assertTrue(mock_ensure_path.called) self.assertCountEqual( @@ -193,12 +232,15 @@ def test_generate_bibxml_files_for_all_drafts_task(self, mock_create, mock_ensur @mock.patch("ietf.doc.tasks.ensure_draft_bibxml_path_exists") @mock.patch("ietf.doc.tasks.update_or_create_draft_bibxml_file") - def test_generate_bibxml_files_for_recent_drafts_task(self, mock_create, mock_ensure_path): + def test_generate_bibxml_files_for_recent_drafts_task( + self, mock_create, mock_ensure_path + ): # default args - look back 7 days generate_draft_bibxml_files_task() self.assertTrue(mock_ensure_path.called) self.assertCountEqual( - mock_create.call_args_list, [mock.call(self.young_event.doc, self.young_event.rev)] + mock_create.call_args_list, + [mock.call(self.young_event.doc, self.young_event.rev)], ) mock_create.reset_mock() mock_ensure_path.reset_mock() @@ -223,7 +265,9 @@ def test_generate_bibxml_files_for_recent_drafts_task(self, mock_create, mock_en @mock.patch("ietf.doc.tasks.ensure_draft_bibxml_path_exists") @mock.patch("ietf.doc.tasks.update_or_create_draft_bibxml_file") - def test_generate_bibxml_files_for_recent_drafts_task_with_bad_value(self, mock_create, mock_ensure_path): + def test_generate_bibxml_files_for_recent_drafts_task_with_bad_value( + self, mock_create, mock_ensure_path + ): with self.assertRaises(ValueError): generate_draft_bibxml_files_task(days=0) self.assertFalse(mock_create.called) diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py new file mode 100644 index 0000000000..e4427b88b5 --- /dev/null +++ b/ietf/utils/searchindex.py @@ -0,0 +1,155 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +"""Search indexing utilities""" + +import re +from math import floor + +import httpx # just for exceptions +import typesense +import typesense.exceptions +from django.conf import settings + +from ietf.doc.models import Document, StoredObject +from ietf.doc.storage_utils import retrieve_str +from ietf.utils.log import log + +# Error classes that might succeed just by retrying a failed attempt. +# Must be a tuple for use with isinstance() +RETRYABLE_ERROR_CLASSES = ( + httpx.ConnectError, + httpx.ConnectTimeout, + typesense.exceptions.Timeout, + typesense.exceptions.ServerError, + typesense.exceptions.ServiceUnavailable, +) + + +DEFAULT_SETTINGS = { + "TYPESENSE_API_URL": "", + "TYPESENSE_API_KEY": "", + "TYPESENSE_COLLECTION_NAME": "docs", + "TASK_RETRY_DELAY": 10, + "TASK_MAX_RETRIES": 12, +} + + +def get_settings(): + return DEFAULT_SETTINGS | getattr(settings, "SEARCHINDEX_CONFIG", {}) + + +def enabled(): + _settings = get_settings() + return _settings["TYPESENSE_API_URL"] != "" + + +def _sanitize_text(content): + """Sanitize content or abstract text for search""" + # REs (with approximate names) + RE_DOT_OR_BANG_SPACE = r"\. |! " # -> " " (space) + RE_COMMENT_OR_TOC_CRUD = r"<--|-->|--+|\+|\.\.+" # -> "" + RE_BRACKETED_REF = r"\[[a-zA-Z0-9 -]+\]" # -> "" + RE_DOTTED_NUMBERS = r"[0-9]+\.[0-9]+(\.[0-9]+)?" # -> "" + RE_MULTIPLE_WHITESPACE = r"\s+" # -> " " (space) + # Replacement values (for clarity of intent) + SPACE = " " + EMPTY = "" + # Sanitizing begins here, order is significant! + content = re.sub(RE_DOT_OR_BANG_SPACE, SPACE, content.strip()) + content = re.sub(RE_COMMENT_OR_TOC_CRUD, EMPTY, content) + content = re.sub(RE_BRACKETED_REF, EMPTY, content) + content = re.sub(RE_DOTTED_NUMBERS, EMPTY, content) + content = re.sub(RE_MULTIPLE_WHITESPACE, SPACE, content) + return content.strip() + + +def update_or_create_rfc_entry(rfc: Document): + assert rfc.type_id == "rfc" + assert rfc.rfc_number is not None + + keywords: list[str] = rfc.keywords # help type checking + + subseries = rfc.part_of() + if len(subseries) > 1: + log( + f"RFC {rfc.rfc_number} is in multiple subseries. " + f"Indexing as {subseries[0].name}" + ) + subseries = subseries[0] if len(subseries) > 0 else None + obsoleted_by = rfc.relations_that("obs") + updated_by = rfc.relations_that("updates") + + stored_txt = ( + StoredObject.objects.exclude_deleted() + .filter(store="rfc", doc_name=rfc.name, name__startswith="txt/") + .first() + ) + content = "" + if stored_txt is not None: + # Should be available in the blobdb, but be cautious... + try: + content = retrieve_str(kind=stored_txt.store, name=stored_txt.name) + except Exception as err: + log(f"Unable to retrieve {stored_txt} from storage: {err}") + + ts_id = f"doc-{rfc.pk}" + ts_document = { + "rfcNumber": rfc.rfc_number, + "rfc": str(rfc.rfc_number), + "filename": rfc.name, + "title": rfc.title, + "abstract": _sanitize_text(rfc.abstract), + "keywords": keywords, + "type": "rfc", + "state": [state.name for state in rfc.states.all()], + "status": {"slug": rfc.std_level.slug, "name": rfc.std_level.name}, + "date": floor(rfc.time.timestamp()), + "publicationDate": floor(rfc.pub_datetime().timestamp()), + "stream": {"slug": rfc.stream.slug, "name": rfc.stream.name}, + "authors": [ + {"name": rfc_author.titlepage_name, "affiliation": rfc_author.affiliation} + for rfc_author in rfc.rfcauthor_set.all() + ], + "flags": { + "hiddenDefault": False, + "obsoleted": len(obsoleted_by) > 0, + "updated": len(updated_by) > 0, + }, + "obsoletedBy": [str(doc.rfc_number) for doc in obsoleted_by], + "updatedBy": [str(doc.rfc_number) for doc in updated_by], + "ranking": rfc.rfc_number, + } + if subseries is not None: + ts_document["subseries"] = { + "acronym": subseries.type.slug, + "number": int(subseries.name[len(subseries.type.slug) :]), + "total": len(subseries.contains()), + } + if rfc.group is not None: + ts_document["group"] = { + "acronym": rfc.group.acronym, + "name": rfc.group.name, + "full": f"{rfc.group.acronym} - {rfc.group.name}", + } + if ( + rfc.group.parent is not None + and rfc.stream_id not in ["ise", "irtf", "iab"] # exclude editorial? + ): + ts_document["area"] = { + "acronym": rfc.group.parent.acronym, + "name": rfc.group.parent.name, + "full": f"{rfc.group.parent.acronym} - {rfc.group.parent.name}", + } + if rfc.ad is not None: + ts_document["adName"] = rfc.ad.name + if content != "": + ts_document["content"] = _sanitize_text(content) + _settings = get_settings() + client = typesense.Client( + { + "api_key": _settings["TYPESENSE_API_KEY"], + "nodes": [_settings["TYPESENSE_API_URL"]], + } + ) + client.collections[_settings["TYPESENSE_COLLECTION_NAME"]].documents.upsert( + {"id": ts_id} | ts_document + ) diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py new file mode 100644 index 0000000000..8740716c85 --- /dev/null +++ b/ietf/utils/tests_searchindex.py @@ -0,0 +1,128 @@ +# Copyright The IETF Trust 2026, All Rights Reserved +from unittest import mock + +from django.conf import settings +from django.test.utils import override_settings + +from . import searchindex +from .test_utils import TestCase +from ..blobdb.models import Blob +from ..doc.factories import ( + WgDraftFactory, + WgRfcFactory, + PublishedRfcDocEventFactory, + BcpFactory, + StdFactory, +) +from ..doc.models import Document +from ..doc.storage_utils import store_str +from ..person.factories import PersonFactory + + +class SearchindexTests(TestCase): + def test_enabled(self): + with override_settings(): + try: + del settings.SEARCHINDEX_CONFIG + except AttributeError: + pass + self.assertFalse(searchindex.enabled()) + with override_settings( + SEARCHINDEX_CONFIG={"TYPESENSE_API_KEY": "this-is-not-a-key"} + ): + self.assertFalse(searchindex.enabled()) + with override_settings( + SEARCHINDEX_CONFIG={"TYPESENSE_API_URL": "http://example.com"} + ): + self.assertTrue(searchindex.enabled()) + + def test_sanitize_text(self): + dirty_text = """ + + This is text. It + is <---- full of \tprobl.....ems! Fix it. + """ + sanitized = "This is text It is full of problems Fix it." + self.assertEqual(searchindex._sanitize_text(dirty_text), sanitized) + + @override_settings( + SEARCHINDEX_CONFIG={ + "TYPESENSE_API_URL": "http://ts.example.com", + "TYPESENSE_API_KEY": "test-api-key", + "TYPESENSE_COLLECTION_NAME": "frogs", + } + ) + @mock.patch("ietf.utils.searchindex.typesense.Client") + def test_update_or_create_rfc_entry(self, mock_ts_client_constructor): + not_rfc = WgDraftFactory() + assert isinstance(not_rfc, Document) + with self.assertRaises(AssertionError): + searchindex.update_or_create_rfc_entry(not_rfc) + self.assertFalse(mock_ts_client_constructor.called) + + invalid_rfc = WgRfcFactory(name="rfc1000000", rfc_number=None) + assert isinstance(invalid_rfc, Document) + with self.assertRaises(AssertionError): + searchindex.update_or_create_rfc_entry(invalid_rfc) + self.assertFalse(mock_ts_client_constructor.called) + + rfc = PublishedRfcDocEventFactory().doc + assert isinstance(rfc, Document) + searchindex.update_or_create_rfc_entry(rfc) + self.assertTrue(mock_ts_client_constructor.called) + # walk the tree down to the method we expected to be called... + mock_upsert = mock_ts_client_constructor.return_value.collections[ + "frogs" + ].documents.upsert # matches value in override_settings above + self.assertTrue(mock_upsert.called) + upserted_dict = mock_upsert.call_args[0][0] + # Check a few values, not exhaustive + self.assertEqual(upserted_dict["id"], f"doc-{rfc.pk}") + self.assertEqual(upserted_dict["rfcNumber"], rfc.rfc_number) + self.assertEqual( + upserted_dict["abstract"], searchindex._sanitize_text(rfc.abstract) + ) + self.assertNotIn("adName", upserted_dict) + self.assertNotIn("content", upserted_dict) # no blob + self.assertNotIn("subseries", upserted_dict) + + # repeat, this time with contents, an AD, and subseries docs + mock_upsert.reset_mock() + store_str( + kind="rfc", + name=f"txt/{rfc.name}.txt", + content="The contents of this RFC", + doc_name=rfc.name, + doc_rev=rfc.rev, # expected to be None + ) + rfc.ad = PersonFactory(name="Alfred D. Rector") + # Put it in two Subseries docs to be sure this does not break things + # (the typesense schema does not support this for real at the moment) + BcpFactory(contains=[rfc], name="bcp1234") + StdFactory(contains=[rfc], name="std1234") + searchindex.update_or_create_rfc_entry(rfc) + self.assertTrue(mock_upsert.called) + upserted_dict = mock_upsert.call_args[0][0] + # Check a few values, not exhaustive + self.assertEqual( + upserted_dict["content"], + searchindex._sanitize_text("The contents of this RFC"), + ) + self.assertEqual(upserted_dict["adName"], "Alfred D. Rector") + self.assertIn("subseries", upserted_dict) + ss_dict = upserted_dict["subseries"] + # We should get one of the two subseries docs, but neither is more correct + # than the other... + self.assertTrue( + any( + ss_dict == {"acronym": ss_type, "number": 1234, "total": 1} + for ss_type in ["bcp", "std"] + ) + ) + + # Finally, delete the contents blob and make sure things don't blow up + mock_upsert.reset_mock() + Blob.objects.get(bucket="rfc", name=f"txt/{rfc.name}.txt").delete() + searchindex.update_or_create_rfc_entry(rfc) + self.assertTrue(mock_upsert.called) + upserted_dict = mock_upsert.call_args[0][0] + self.assertNotIn("content", upserted_dict) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 56e395c5ac..8c0c66cdf2 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2024, All Rights Reserved +# Copyright The IETF Trust 2007-2026, All Rights Reserved # -*- coding: utf-8 -*- from base64 import b64decode @@ -443,12 +443,8 @@ def _multiline_to_list(s): ), } RFCINDEX_DELETE_THEN_WRITE = False # S3Storage allows file_overwrite by default -RFCINDEX_OUTPUT_PATH = os.environ.get( - "DATATRACKER_RFCINDEX_OUTPUT_PATH", "other/" -) -RFCINDEX_INPUT_PATH = os.environ.get( - "DATATRACKER_RFCINDEX_INPUT_PATH", "" -) +RFCINDEX_OUTPUT_PATH = os.environ.get("DATATRACKER_RFCINDEX_OUTPUT_PATH", "other/") +RFCINDEX_INPUT_PATH = os.environ.get("DATATRACKER_RFCINDEX_INPUT_PATH", "") # Configure the blobdb app for artifact storage _blobdb_replication_enabled = ( @@ -471,3 +467,13 @@ def _multiline_to_list(s): PASSWORD_POLICY_ENFORCE_AT_LOGIN = ( os.environ.get("DATATRACKER_ENFORCE_PW_POLICY", "true").lower() != "false" ) + +# Typesense search indexing +SEARCHINDEX_CONFIG = { + "TYPESENSE_API_URL": os.environ.get("DATATRACKER_TYPESENSE_API_URL", ""), + "TYPESENSE_API_KEY": os.environ.get("DATATRACKER_TYPESENSE_API_KEY", ""), + "TASK_RETRY_DELAY": os.environ.get("DATATRACKER_SEARCHINDEX_TASK_RETRY_DELAY", 10), + "TASK_MAX_RETRIES": os.environ.get( + "DATATRACKER_SEARCHINDEX_TASK_MAX_RETRIES", "12" + ), +} diff --git a/requirements.txt b/requirements.txt index 3d54b104ee..2b8185dab9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -75,6 +75,7 @@ pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache python-mimeparse>=2.0.0 # from TastyPie pytz==2025.2 # Pinned as changes need to be vetted for their effect on Meeting fields types-pytz==2025.2.0.20251108 # match pytz version +typesense>=2.0.0 requests>=2.32.4 types-requests>=2.32.4 requests-mock>=1.12.1 From e6a3b3ebc03ef539454cfa154ad0242b32c6a335 Mon Sep 17 00:00:00 2001 From: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:46:07 +0000 Subject: [PATCH 059/161] ci: update base image target version to 20260323T1533 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index ce1828052e..af43e990e0 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20260304T1633 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260323T1533 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 6be54fb6b0..09f74cce28 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20260304T1633 +20260323T1533 From 33f0dbf9e969a233f46251909515b249330fbb79 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 23 Mar 2026 12:39:15 -0500 Subject: [PATCH 060/161] feat: trigger red recomputation on RFC publication or metadata update (#10567) * feat: trigger red recomputation on RFC publication or metadata update * fix: move red precomputer call out of transaction * chore: remove old comment, simplify request call * fix: isolate delayed task in test * test: give settings_test an InMemoryStorage for r2-rfc * fix: follow obs/updates both ways when notifying red of changes * fix: improve red utils, test red and r2 utils * chore: ruff * chore: remove unused import * test: fix patch paths --------- Co-authored-by: Jennifer Richards --- ietf/api/serializers_rpc.py | 15 +++- ietf/api/tests_serializers_rpc.py | 88 ++++++++++++++++--- ietf/api/tests_views_rpc.py | 24 ++++- ietf/api/views_rpc.py | 12 ++- ietf/doc/tasks.py | 17 ++++ ietf/doc/tests_utils.py | 140 +++++++++++++++++++++++++++++- ietf/doc/utils_r2.py | 17 ++++ ietf/doc/utils_red.py | 31 +++++++ ietf/settings_test.py | 6 +- k8s/settings_local.py | 10 +++ 10 files changed, 341 insertions(+), 19 deletions(-) create mode 100644 ietf/doc/utils_r2.py create mode 100644 ietf/doc/utils_red.py diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 701f05eece..397ca05d9b 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -20,7 +20,7 @@ RfcAuthor, ) from ietf.doc.serializers import RfcAuthorSerializer -from ietf.doc.tasks import update_rfc_searchindex_task +from ietf.doc.tasks import trigger_red_precomputer_task, update_rfc_searchindex_task from ietf.doc.utils import ( default_consensus, prettify_std_name, @@ -683,7 +683,18 @@ def update(self, instance, validated_data): stale_subseries_relations.delete() if len(rfc_events) > 0: rfc.save_with_history(rfc_events) - + # Gather obs and updates in both directions as a title/author change to + # this doc affects the info rendering of all of the other RFCs + needs_updating = sorted( + [ + d.rfc_number + for d in [rfc] + + rfc.related_that_doc(("obs", "updates")) + + rfc.related_that(("obs", "updates")) + ] + ) + trigger_red_precomputer_task.delay(rfc_number_list=needs_updating) + # Update the search index also update_rfc_searchindex_task.delay(rfc.rfc_number) return rfc diff --git a/ietf/api/tests_serializers_rpc.py b/ietf/api/tests_serializers_rpc.py index ed326be451..167ffcd3ee 100644 --- a/ietf/api/tests_serializers_rpc.py +++ b/ietf/api/tests_serializers_rpc.py @@ -1,4 +1,5 @@ # Copyright The IETF Trust 2026, All Rights Reserved + from unittest import mock from django.utils import timezone @@ -35,8 +36,21 @@ def test_create(self): serializer.save() @mock.patch("ietf.api.serializers_rpc.update_rfc_searchindex_task") - def test_update(self, mock_update_searchindex_task): + @mock.patch("ietf.api.serializers_rpc.trigger_red_precomputer_task") + def test_update(self, mock_trigger_red_task, mock_update_searchindex_task): + updates = WgRfcFactory.create_batch(2) + obsoletes = WgRfcFactory.create_batch(2) rfc = WgRfcFactory(pages=10) + updated_by = WgRfcFactory.create_batch(2) + obsoleted_by = WgRfcFactory.create_batch(2) + for d in updates: + rfc.relateddocument_set.create(relationship_id="updates",target=d) + for d in obsoletes: + rfc.relateddocument_set.create(relationship_id="updates",target=d) + for d in updated_by: + d.relateddocument_set.create(relationship_id="updates",target=rfc) + for d in obsoleted_by: + d.relateddocument_set.create(relationship_id="updates",target=rfc) serializer = EditableRfcSerializer( instance=rfc, data={ @@ -59,11 +73,6 @@ def test_update(self, mock_update_searchindex_task): ) self.assertTrue(serializer.is_valid()) result = serializer.save() - self.assertTrue(mock_update_searchindex_task.delay.called) - self.assertEqual( - mock_update_searchindex_task.delay.call_args, - mock.call(rfc.rfc_number), - ) result.refresh_from_db() self.assertEqual(result.title, "Yadda yadda yadda") self.assertEqual( @@ -91,12 +100,42 @@ def test_update(self, mock_update_searchindex_task): result.part_of(), [Document.objects.get(name="fyi999")], ) + # Confirm that red precomputer was triggered correctly + self.assertTrue(mock_trigger_red_task.delay.called) + _, mock_kwargs = mock_trigger_red_task.delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + expected_numbers = sorted( + [ + d.rfc_number + for d in [rfc] + updates + obsoletes + updated_by + obsoleted_by + ] + ) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_numbers) + # Confirm that the search index update task was triggered correctly + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) @mock.patch("ietf.api.serializers_rpc.update_rfc_searchindex_task") - def test_partial_update(self, mock_update_searchindex_task): + @mock.patch("ietf.api.serializers_rpc.trigger_red_precomputer_task") + def test_partial_update(self, mock_trigger_red_task, mock_update_searchindex_task): # We could test other permutations of fields, but authors is a partial update # we know we are going to use, so verifying that one in particular. + updates = WgRfcFactory.create_batch(2) + obsoletes = WgRfcFactory.create_batch(2) rfc = WgRfcFactory(pages=10, abstract="do or do not", title="padawan") + updated_by = WgRfcFactory.create_batch(2) + obsoleted_by = WgRfcFactory.create_batch(2) + for d in updates: + rfc.relateddocument_set.create(relationship_id="updates",target=d) + for d in obsoletes: + rfc.relateddocument_set.create(relationship_id="updates",target=d) + for d in updated_by: + d.relateddocument_set.create(relationship_id="updates",target=rfc) + for d in obsoleted_by: + d.relateddocument_set.create(relationship_id="updates",target=rfc) serializer = EditableRfcSerializer( partial=True, instance=rfc, @@ -113,11 +152,6 @@ def test_partial_update(self, mock_update_searchindex_task): ) self.assertTrue(serializer.is_valid()) result = serializer.save() - self.assertTrue(mock_update_searchindex_task.delay.called) - self.assertEqual( - mock_update_searchindex_task.delay.call_args, - mock.call(rfc.rfc_number), - ) result.refresh_from_db() self.assertEqual(rfc.title, "padawan") self.assertEqual( @@ -140,8 +174,27 @@ def test_partial_update(self, mock_update_searchindex_task): self.assertEqual(result.pages, 10) self.assertEqual(result.std_level_id, "ps") self.assertEqual(result.part_of(), []) + # Confirm that the red precomputer was triggered correctly + self.assertTrue(mock_trigger_red_task.delay.called) + _, mock_kwargs = mock_trigger_red_task.delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + expected_numbers = sorted( + [ + d.rfc_number + for d in [rfc] + updates + obsoletes + updated_by + obsoleted_by + ] + ) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_numbers) + # Confirm that the search index update task was called correctly + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) # Test only a field on the Document itself to be sure that it works + mock_trigger_red_task.delay.reset_mock() + mock_update_searchindex_task.delay.reset_mock() serializer = EditableRfcSerializer( partial=True, instance=rfc, @@ -151,3 +204,14 @@ def test_partial_update(self, mock_update_searchindex_task): result = serializer.save() result.refresh_from_db() self.assertEqual(rfc.title, "jedi master") + # Confirm that the red precomputer was triggered correctly + self.assertTrue(mock_trigger_red_task.delay.called) + _, mock_kwargs = mock_trigger_red_task.delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_numbers) + # Confirm that the search index update task was called correctly + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index a679e74789..6d10bee8e8 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -197,7 +197,8 @@ def test_notify_rfc_published(self, mock_task_delay): @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) @mock.patch("ietf.api.views_rpc.update_rfc_searchindex_task") - def test_upload_rfc_files(self, mock_update_searchindex_task): + @mock.patch("ietf.api.views_rpc.trigger_red_precomputer_task") + def test_upload_rfc_files(self, mock_trigger_red_task, mock_update_searchindex_task): def _valid_post_data(): """Generate a valid post data dict @@ -218,7 +219,14 @@ def _valid_post_data(): } url = urlreverse("ietf.api.purple_api.upload_rfc_files") + updates = RfcFactory.create_batch(2) + obsoletes = RfcFactory.create_batch(2) + rfc = WgRfcFactory() + for r in obsoletes: + rfc.relateddocument_set.create(relationship_id="obs", target=r) + for r in updates: + rfc.relateddocument_set.create(relationship_id="updates", target=r) assert isinstance(rfc, Document), "WgRfcFactory should generate a Document" with TemporaryDirectory() as rfc_dir: settings.RFC_PATH = rfc_dir # affects overridden settings @@ -303,6 +311,7 @@ def _valid_post_data(): blob_in_the_way.delete() # valid post + mock_trigger_red_task.delay.reset_mock() r = self.client.post( url, _valid_post_data(), @@ -310,7 +319,6 @@ def _valid_post_data(): headers={"X-Api-Key": "valid-token"}, ) self.assertEqual(r.status_code, 200) - self.assertTrue(mock_update_searchindex_task.delay.called) self.assertEqual( mock_update_searchindex_task.delay.call_args, mock.call(rfc.rfc_number), @@ -350,6 +358,18 @@ def _valid_post_data(): b"This is .notprepped.xml", ".notprepped.xml blob should contain the expected content", ) + # Confirm that the red precomputer was triggered correctly + self.assertTrue(mock_trigger_red_task.delay.called) + _, mock_kwargs = mock_trigger_red_task.delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + expected_rfc_number_list = [rfc.rfc_number] + expected_rfc_number_list.extend( + [d.rfc_number for d in updates + obsoletes] + ) + expected_rfc_number_list = sorted(set(expected_rfc_number_list)) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) + # Confirm that the search index update task was called correctly + self.assertTrue(mock_update_searchindex_task.delay.called) # re-post with replace = False should now fail mock_update_searchindex_task.reset_mock() diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index cb6a59a167..59eed1e10e 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -38,7 +38,11 @@ from ietf.doc.models import Document, DocHistory, RfcAuthor, DocEvent from ietf.doc.serializers import RfcAuthorSerializer from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage -from ietf.doc.tasks import signal_update_rfc_metadata_task, update_rfc_searchindex_task +from ietf.doc.tasks import ( + signal_update_rfc_metadata_task, + trigger_red_precomputer_task, + update_rfc_searchindex_task, +) from ietf.person.models import Email, Person from ietf.sync.tasks import create_rfc_index_task @@ -516,6 +520,12 @@ def post(self, request): destination.parent.mkdir() shutil.move(ftm, destination) + # Trigger red precomputer + needs_updating = [rfc.rfc_number] + for rel in rfc.relateddocument_set.filter(relationship_id__in=["obs","updates"]): + needs_updating.append(rel.target.rfc_number) + trigger_red_precomputer_task.delay(rfc_number_list=sorted(needs_updating)) + # Trigger search index update update_rfc_searchindex_task.delay(rfc.rfc_number) return Response(NotificationAckSerializer().data) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index a38cd5eb5c..19edb39014 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -7,11 +7,14 @@ import debug # pyflakes:ignore from celery import shared_task +from celery.exceptions import MaxRetriesExceededError from pathlib import Path from django.conf import settings from django.utils import timezone +from ietf.doc.utils_r2 import rfcs_are_in_r2 +from ietf.doc.utils_red import trigger_red_precomputer from ietf.utils import log, searchindex from ietf.utils.timezone import datetime_today @@ -169,6 +172,20 @@ def signal_update_rfc_metadata_task(rfc_number_list=()): signal_update_rfc_metadata(rfc_number_list) +@shared_task(bind=True) +def trigger_red_precomputer_task(self, rfc_number_list=()): + if not rfcs_are_in_r2(rfc_number_list): + log.log(f"Objects are not yet in R2 for RFCs {rfc_number_list}") + try: + countdown = getattr(settings, "RED_PRECOMPUTER_TRIGGER_RETRY_DELAY", 10) + max_retries = getattr(settings, "RED_PRECOMPUTER_TRIGGER_MAX_RETRIES", 12) + self.retry(countdown=countdown, max_retries=max_retries) + except MaxRetriesExceededError: + log.log(f"Gave up waiting for objects in R2 for RFCs {rfc_number_list}") + else: + trigger_red_precomputer(rfc_number_list) + + @shared_task(bind=True) def update_rfc_searchindex_task(self, rfc_number: int): """Update the search index for one RFC""" diff --git a/ietf/doc/tests_utils.py b/ietf/doc/tests_utils.py index a2784bc85e..ba672cd847 100644 --- a/ietf/doc/tests_utils.py +++ b/ietf/doc/tests_utils.py @@ -1,15 +1,23 @@ # Copyright The IETF Trust 2020, All Rights Reserved import datetime +from io import BytesIO + +import mock import debug # pyflakes:ignore +import requests from pathlib import Path from unittest.mock import call, patch from django.conf import settings +from django.core.files.storage import storages from django.db import IntegrityError from django.test.utils import override_settings from django.utils import timezone + +from ietf.doc.utils_r2 import rfcs_are_in_r2 +from ietf.doc.utils_red import trigger_red_precomputer from ietf.group.factories import GroupFactory, RoleFactory from ietf.name.models import DocTagName from ietf.person.factories import PersonFactory @@ -17,11 +25,12 @@ from ietf.utils.test_utils import TestCase, name_of_file_containing, reload_db_objects from ietf.person.models import Person from ietf.doc.factories import DocumentFactory, WgRfcFactory, WgDraftFactory -from ietf.doc.models import State, DocumentActionHolder, DocumentAuthor +from ietf.doc.models import State, DocumentActionHolder, DocumentAuthor, StoredObject from ietf.doc.utils import (update_action_holders, add_state_change_event, update_documentauthors, fuzzy_find_documents, rebuild_reference_relations, build_file_urls, ensure_draft_bibxml_path_exists, update_or_create_draft_bibxml_file, last_ballot_doc_revision) +from ietf.doc.storage_utils import store_str from ietf.utils.draft import Draft, PlaintextDraft from ietf.utils.xmldraft import XMLDraft @@ -559,3 +568,132 @@ def test_last_ballot_doc_revision(self): nobody = PersonFactory() self.assertIsNone(last_ballot_doc_revision(doc, nobody)) self.assertEqual(rev, last_ballot_doc_revision(doc, ad)) + + +class UtilsRedTests(TestCase): + @mock.patch("ietf.doc.utils_red.log") + @mock.patch("ietf.doc.utils_red.requests.post") + def test_trigger_red_precomputer_not_configured(self, mock_post, mock_log): + with override_settings(): + try: + del settings.CUSTOM_SETTING_NAME + except AttributeError: + pass + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + self.assertEqual(mock_log.call_count, 1) + mock_args, _ = mock_log.call_args + self.assertEqual( + mock_args, + ("No URL configured for triggering red precompute multiple, skipping",), + ) + + mock_log.reset_mock() + with override_settings(TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL=None): + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + self.assertFalse(mock_post.called) + self.assertEqual(mock_log.call_count, 1) + mock_args, _ = mock_log.call_args + self.assertEqual( + mock_args, + ("No URL configured for triggering red precompute multiple, skipping",), + ) + + @override_settings( + TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL="urlbits", + ) + @mock.patch("ietf.doc.utils_red.log") + @mock.patch("ietf.doc.utils_red.requests.post", side_effect=requests.Timeout()) + def test_trigger_red_precomputer_swallows_timeout_exception( + self, mock_post, mock_log + ): + exception_raised = False + try: + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + except Exception: + exception_raised = True + self.assertFalse(exception_raised) + self.assertEqual(mock_log.call_count, 2) + # only checking the last log call + mock_args, _ = mock_log.call_args + self.assertEqual(len(mock_args), 1) + self.assertIn("POST request timed out", mock_args[0]) + + @override_settings( + TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL="urlbits", + ) + @mock.patch("ietf.doc.utils_red.requests.post", side_effect=Exception()) + def test_trigger_red_precomputer_does_not_swallow_too_much(self, mock_post): + exception_raised = False + try: + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + except Exception: + exception_raised = True + self.assertTrue(exception_raised) + + @override_settings( + TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL="urlbits", + DEFAULT_REQUESTS_TIMEOUT=314159265, + ) + @mock.patch("ietf.doc.utils_red.log") + @mock.patch("ietf.doc.utils_red.requests.post") + def test_trigger_red_precomputer(self, mock_post, mock_log): + mock_post.return_value = mock.Mock(status_code=200) + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + self.assertTrue(mock_post.called) + _, mock_kwargs = mock_post.call_args + self.assertIn("url", mock_kwargs) + self.assertEqual(mock_kwargs["url"], "urlbits") + self.assertIn("json", mock_kwargs) + self.assertEqual(mock_kwargs["json"], {"rfcs": "1,2,3"}) + self.assertIn("timeout", mock_kwargs) + self.assertEqual(mock_kwargs["timeout"], 314159265) + self.assertEqual(mock_log.call_count, 1) # Not testing the first info log value + mock_log.reset_mock() + mock_post.reset_mock() + mock_post.return_value = mock.Mock( + status_code=500, + ) + trigger_red_precomputer(rfc_number_list=[1, 2, 3]) + self.assertEqual(mock_log.call_count, 2) + mock_args, _ = mock_log.call_args + self.assertEqual(len(mock_args), 1) + expected = f"POST request failed for {settings.TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL} : status_code=500" + self.assertEqual(mock_args[0], expected) + + +class UtilsR2TestCase(TestCase): + def test_rfcs_are_in_r2(self): + rfcs = WgRfcFactory.create_batch(2) + rfc_name_list = [rfc.name for rfc in rfcs] + rfc_number_list = [rfc.rfc_number for rfc in rfcs] + r2_rfc_bucket = storages["r2-rfc"] + # Right now the various doc Factories do not populate any content + self.assertEqual( + StoredObject.objects.filter( + store="rfc", doc_name__in=rfc_name_list + ).count(), + 0, + ) + self.assertTrue(rfcs_are_in_r2(rfc_number_list=rfc_number_list)) + for rfc in rfcs: + store_str( + kind="rfc", + name=f"testartifact/{rfc.name}.testartifact", + content="", + doc_name=rfc.name, + doc_rev=None, + ) + self.assertEqual( + StoredObject.objects.filter( + store="rfc", doc_name__in=rfc_name_list + ).count(), + 2, + ) + self.assertFalse(rfcs_are_in_r2(rfc_number_list=rfc_number_list)) + r2_rfc_bucket.save(f"testartifact/{rfcs[0].name}.testartifact", BytesIO(b"")) + self.assertFalse(rfcs_are_in_r2(rfc_number_list=rfc_number_list)) + r2_rfc_bucket.save(f"testartifact/{rfcs[1].name}.testartifact", BytesIO(b"")) + self.assertTrue(rfcs_are_in_r2(rfc_number_list=rfc_number_list)) + + + diff --git a/ietf/doc/utils_r2.py b/ietf/doc/utils_r2.py new file mode 100644 index 0000000000..53fb978303 --- /dev/null +++ b/ietf/doc/utils_r2.py @@ -0,0 +1,17 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.core.files.storage import storages + +from ietf.doc.models import StoredObject + + +def rfcs_are_in_r2(rfc_number_list=()): + r2_rfc_bucket = storages["r2-rfc"] + for rfc_number in rfc_number_list: + stored_objects = StoredObject.objects.filter( + store="rfc", doc_name=f"rfc{rfc_number}" + ) + for stored_object in stored_objects: + if not r2_rfc_bucket.exists(stored_object.name): + return False + return True diff --git a/ietf/doc/utils_red.py b/ietf/doc/utils_red.py new file mode 100644 index 0000000000..bcda893dca --- /dev/null +++ b/ietf/doc/utils_red.py @@ -0,0 +1,31 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import requests + +from django.conf import settings + +from ietf.utils.log import log + + +def trigger_red_precomputer(rfc_number_list=()): + url = getattr(settings, "TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL", None) + if url is not None: + payload = { + "rfcs": ",".join([str(n) for n in rfc_number_list]), + } + try: + log(f"Triggering red precompute multiple for RFCs {rfc_number_list}") + response = requests.post( + url=url, + json=payload, + timeout=settings.DEFAULT_REQUESTS_TIMEOUT, + ) + except requests.Timeout as e: + log(f"POST request timed out for {url} : {e}") + return + if response.status_code != 200: + log( + f"POST request failed for {url} : status_code={response.status_code}" + ) + else: + log("No URL configured for triggering red precompute multiple, skipping") diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 1f5a7e8ddc..e7ebc13eb2 100755 --- a/ietf/settings_test.py +++ b/ietf/settings_test.py @@ -115,8 +115,12 @@ def tempdir_with_cleanup(**kwargs): except NameError: pass -# Use InMemoryStorage for red bucket storage +# Use InMemoryStorage for red bucket and r2-rfc storages STORAGES["red_bucket"] = { "BACKEND": "django.core.files.storage.InMemoryStorage", "OPTIONS": {"location": "red_bucket"}, } +STORAGES["r2-rfc"] = { + "BACKEND": "django.core.files.storage.InMemoryStorage", + "OPTIONS": {"location": "r2-rfc"}, +} diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 8c0c66cdf2..323b7fd45a 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -80,6 +80,16 @@ def _multiline_to_list(s): else: raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") +_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = os.environ.get("DATATRACKER_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY", None) +if _RED_PRECOMPUTER_TRIGGER_RETRY_DELAY is not None: + RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = _RED_PRECOMPUTER_TRIGGER_RETRY_DELAY +_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES = os.environ.get("DATATRACKER_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES", None) +if _RED_PRECOMPUTER_TRIGGER_MAX_RETRIES is not None: + RED_PRECOMPUTER_TRIGGER_MAX_RETRIES = _RED_PRECOMPUTER_TRIGGER_MAX_RETRIES +_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL = os.environ.get("DATATRACKER_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL", None) +if _TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL is not None: + TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL = _TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL + # Set DEBUG if DATATRACKER_DEBUG env var is the word "true" DEBUG = os.environ.get("DATATRACKER_DEBUG", "false").lower() == "true" From e5b037ba83c2275efcd5a034c4bd1af67932d23f Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 23 Mar 2026 13:19:54 -0500 Subject: [PATCH 061/161] fix: rebuild reference relations once we have rfc contents (#10578) Co-authored-by: Jennifer Richards --- ietf/api/tests_views_rpc.py | 13 ++++++++++++- ietf/api/views_rpc.py | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 6d10bee8e8..0db67e126f 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -196,9 +196,15 @@ def test_notify_rfc_published(self, mock_task_delay): self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + @mock.patch("ietf.api.views_rpc.rebuild_reference_relations_task") @mock.patch("ietf.api.views_rpc.update_rfc_searchindex_task") @mock.patch("ietf.api.views_rpc.trigger_red_precomputer_task") - def test_upload_rfc_files(self, mock_trigger_red_task, mock_update_searchindex_task): + def test_upload_rfc_files( + self, + mock_trigger_red_task, + mock_update_searchindex_task, + mock_rebuild_relations, + ): def _valid_post_data(): """Generate a valid post data dict @@ -370,6 +376,11 @@ def _valid_post_data(): self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) # Confirm that the search index update task was called correctly self.assertTrue(mock_update_searchindex_task.delay.called) + # Confirm reference relations rebuild task was called correctly + self.assertTrue(mock_rebuild_relations.delay.called) + _, mock_kwargs = mock_rebuild_relations.delay.call_args + self.assertIn("doc_names", mock_kwargs) + self.assertEqual(mock_kwargs["doc_names"], [rfc.name]) # re-post with replace = False should now fail mock_update_searchindex_task.reset_mock() diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 59eed1e10e..6c7464e252 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -40,6 +40,7 @@ from ietf.doc.storage_utils import remove_from_storage, store_file, exists_in_storage from ietf.doc.tasks import ( signal_update_rfc_metadata_task, + rebuild_reference_relations_task, trigger_red_precomputer_task, update_rfc_searchindex_task, ) @@ -527,6 +528,9 @@ def post(self, request): trigger_red_precomputer_task.delay(rfc_number_list=sorted(needs_updating)) # Trigger search index update update_rfc_searchindex_task.delay(rfc.rfc_number) + # Trigger reference relation srebuild + rebuild_reference_relations_task.delay(doc_names=[rfc.name]) + return Response(NotificationAckSerializer().data) From 10ebdf9a6433b34d32352b4bb1b4e9b285773de8 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Mar 2026 15:44:22 -0300 Subject: [PATCH 062/161] chore: deduplicate logging and clean up config (#10592) * fix: remove redundant loggers + cleanup * style: ruff ruff (logging config) * chore: alphabetize loggers * refactor: modern suppression of DisallowedHost log * style: minor cleanup / comments * fix: roll back accidental commit * fix: django.request at ERROR level * fix: squelch other SuspiciousOperation mail --- ietf/settings.py | 188 +++++++++++++++++++---------------------------- 1 file changed, 74 insertions(+), 114 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index e0b4f20118..40a4cb5c56 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2025, All Rights Reserved +# Copyright The IETF Trust 2007-2026, All Rights Reserved # -*- coding: utf-8 -*- @@ -13,6 +13,7 @@ import warnings from hashlib import sha384 from typing import Any, Dict, List, Tuple # pyflakes:ignore +from django.http import UnreadablePostError # DeprecationWarnings are suppressed by default, enable them warnings.simplefilter("always", DeprecationWarning) @@ -236,153 +237,112 @@ FILE_UPLOAD_PERMISSIONS = 0o644 -# ------------------------------------------------------------------------ -# Django/Python Logging Framework Modifications -# Filter out "Invalid HTTP_HOST" emails -# Based on http://www.tiwoc.de/blog/2013/03/django-prevent-email-notification-on-suspiciousoperation/ -from django.core.exceptions import SuspiciousOperation -def skip_suspicious_operations(record): - if record.exc_info: - exc_value = record.exc_info[1] - if isinstance(exc_value, SuspiciousOperation): - return False - return True +# +# Logging config +# -# Filter out UreadablePostError: -from django.http import UnreadablePostError +# Callback to filter out UnreadablePostError: def skip_unreadable_post(record): if record.exc_info: - exc_type, exc_value = record.exc_info[:2] # pylint: disable=unused-variable + exc_type, exc_value = record.exc_info[:2] # pylint: disable=unused-variable if isinstance(exc_value, UnreadablePostError): return False return True -# Copied from DEFAULT_LOGGING as of Django 1.10.5 on 22 Feb 2017, and modified -# to incorporate html logging, invalid http_host filtering, and more. -# Changes from the default has comments. - -# The Python logging flow is as follows: -# (see https://docs.python.org/2.7/howto/logging.html#logging-flow) -# -# Init: get a Logger: logger = logging.getLogger(name) -# -# Logging call, e.g. logger.error(level, msg, *args, exc_info=(...), extra={...}) -# --> Logger (discard if level too low for this logger) -# (create log record from level, msg, args, exc_info, extra) -# --> Filters (discard if any filter attach to logger rejects record) -# --> Handlers (discard if level too low for handler) -# --> Filters (discard if any filter attached to handler rejects record) -# --> Formatter (format log record and emit) -# - LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - # - 'loggers': { - 'django': { - 'handlers': ['console', 'mail_admins'], - 'level': 'INFO', - }, - 'django.request': { - 'handlers': ['console'], - 'level': 'ERROR', + "version": 1, + "disable_existing_loggers": False, + "loggers": { + "celery": { + "handlers": ["console"], + "level": "INFO", }, - 'django.server': { - 'handlers': ['django.server'], - 'level': 'INFO', + "datatracker": { + "handlers": ["console"], + "level": "INFO", }, - 'django.security': { - 'handlers': ['console', ], - 'level': 'INFO', + "django": { + "handlers": ["console", "mail_admins"], + "level": "INFO", }, - 'oidc_provider': { - 'handlers': ['console', ], - 'level': 'DEBUG', + "django.request": {"level": "ERROR"}, # only log 5xx, ignore 4xx + "django.security": { + # SuspiciousOperation errors - log to console only + "handlers": ["console"], + "propagate": False, # no further handling please }, - 'datatracker': { - 'handlers': ['console'], - 'level': 'INFO', + "django.server": { + # Only used by Django's runserver development server + "handlers": ["django.server"], + "level": "INFO", }, - 'celery': { - 'handlers': ['console'], - 'level': 'INFO', + "oidc_provider": { + "handlers": ["console"], + "level": "DEBUG", }, }, - # - # No logger filters - # - 'handlers': { - 'console': { - 'level': 'DEBUG', - 'class': 'logging.StreamHandler', - 'formatter': 'plain', + "handlers": { + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "plain", }, - 'debug_console': { - # Active only when DEBUG=True - 'level': 'DEBUG', - 'filters': ['require_debug_true'], - 'class': 'logging.StreamHandler', - 'formatter': 'plain', + "debug_console": { + "level": "DEBUG", + "filters": ["require_debug_true"], + "class": "logging.StreamHandler", + "formatter": "plain", }, - 'django.server': { - 'level': 'INFO', - 'class': 'logging.StreamHandler', - 'formatter': 'django.server', + "django.server": { + "level": "INFO", + "class": "logging.StreamHandler", + "formatter": "django.server", }, - 'mail_admins': { - 'level': 'ERROR', - 'filters': [ - 'require_debug_false', - 'skip_suspicious_operations', # custom - 'skip_unreadable_posts', # custom + "mail_admins": { + "level": "ERROR", + "filters": [ + "require_debug_false", + "skip_unreadable_posts", ], - 'class': 'django.utils.log.AdminEmailHandler', - 'include_html': True, # non-default - } + "class": "django.utils.log.AdminEmailHandler", + "include_html": True, + }, }, - # # All these are used by handlers - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse', - }, - 'require_debug_true': { - '()': 'django.utils.log.RequireDebugTrue', + "filters": { + "require_debug_false": { + "()": "django.utils.log.RequireDebugFalse", }, - # custom filter, function defined above: - 'skip_suspicious_operations': { - '()': 'django.utils.log.CallbackFilter', - 'callback': skip_suspicious_operations, + "require_debug_true": { + "()": "django.utils.log.RequireDebugTrue", }, # custom filter, function defined above: - 'skip_unreadable_posts': { - '()': 'django.utils.log.CallbackFilter', - 'callback': skip_unreadable_post, + "skip_unreadable_posts": { + "()": "django.utils.log.CallbackFilter", + "callback": skip_unreadable_post, }, }, - # And finally the formatters - 'formatters': { - 'django.server': { - '()': 'django.utils.log.ServerFormatter', - 'format': '[%(server_time)s] %(message)s', + "formatters": { + "django.server": { + "()": "django.utils.log.ServerFormatter", + "format": "[%(server_time)s] %(message)s", }, - 'plain': { - 'style': '{', - 'format': '{levelname}: {name}:{lineno}: {message}', + "plain": { + "style": "{", + "format": "{levelname}: {name}:{lineno}: {message}", }, - 'json' : { + "json": { "class": "ietf.utils.jsonlogger.DatatrackerJsonFormatter", "style": "{", - "format": "{asctime}{levelname}{message}{name}{pathname}{lineno}{funcName}{process}", - } + "format": ( + "{asctime}{levelname}{message}{name}{pathname}{lineno}{funcName}" + "{process}{status_code}" + ), + }, }, } -# End logging -# ------------------------------------------------------------------------ - X_FRAME_OPTIONS = 'SAMEORIGIN' CSRF_TRUSTED_ORIGINS = [ From 14dd4cfdacb49552a2fcb9d9525e713f8ebd3c26 Mon Sep 17 00:00:00 2001 From: Tianyi Gao Date: Tue, 24 Mar 2026 02:45:24 +0800 Subject: [PATCH 063/161] feat: show parents on list of teams with grouping (#8635) (#10552) * feat: show parents on list of teams with grouping (#8635) * fix: sort teams by parent type then parent name in active teams list --- ietf/group/views.py | 13 +++++++-- ietf/templates/group/active_teams.html | 38 ++++++++++++++++---------- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ietf/group/views.py b/ietf/group/views.py index efe3eca15d..8561a5059f 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -245,10 +245,19 @@ def active_review_dirs(request): return render(request, 'group/active_review_dirs.html', {'dirs' : dirs }) def active_teams(request): - teams = Group.objects.filter(type="team", state="active").order_by("name") + parent_type_order = {"area": 1, "adm": 3, None: 4} + + def team_sort_key(group): + type_id = group.parent.type_id if group.parent else None + return (parent_type_order.get(type_id, 2), group.parent.name if group.parent else "", group.name) + + teams = sorted( + Group.objects.filter(type="team", state="active").select_related("parent"), + key=team_sort_key, + ) for group in teams: group.chairs = sorted(roles(group, "chair"), key=extract_last_name) - return render(request, 'group/active_teams.html', {'teams' : teams }) + return render(request, 'group/active_teams.html', {'teams': teams}) def active_iab(request): iabgroups = Group.objects.filter(type__in=("program","iabasg","iabworkshop"), state="active").order_by("-type_id","name") diff --git a/ietf/templates/group/active_teams.html b/ietf/templates/group/active_teams.html index 502d971a20..771dfda290 100644 --- a/ietf/templates/group/active_teams.html +++ b/ietf/templates/group/active_teams.html @@ -16,21 +16,29 @@

    Active teams

    - - {% for group in teams %} - - - - - - {% endfor %} - + {% regroup teams by parent as grouped_teams %} + {% for group_entry in grouped_teams %} + + + + + {% for group in group_entry.list %} + + + + + + {% endfor %} + + {% endfor %}
    Parent + {{ group.parent.name }} + ({{ group.parent.acronym }}) +
    Chairs
    - {{ group.acronym }} - {{ group.name }} - {% for chair in group.chairs %} - {% person_link chair.person %}{% if not forloop.last %},{% endif %} - {% endfor %} -
    + {% if group_entry.grouper %}{{ group_entry.grouper.name }}{% else %}Other{% endif %} +
    + {{ group.acronym }} + {{ group.name }} + {% for chair in group.chairs %} + {% person_link chair.person %}{% if not forloop.last %},{% endif %} + {% endfor %} +
    {% endblock %} {% block js %} From 057d52b76666ab6fcfd366700862be10db4844bb Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Mar 2026 15:56:39 -0300 Subject: [PATCH 064/161] ci: update actions to avoid deprecations (#10604) * ci: upload-artifact -> v7 * ci: checkout -> v6 --- .github/workflows/build-base-app.yml | 2 +- .github/workflows/build-devblobstore.yml | 2 +- .github/workflows/build-mq-broker.yml | 2 +- .github/workflows/build.yml | 8 ++++---- .github/workflows/ci-run-tests.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/dev-assets-sync-nightly.yml | 2 +- .github/workflows/tests.yml | 14 +++++++------- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index 4a4394fca0..2b937cbfef 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -18,7 +18,7 @@ jobs: packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: token: ${{ secrets.GH_COMMON_TOKEN }} diff --git a/.github/workflows/build-devblobstore.yml b/.github/workflows/build-devblobstore.yml index f49a11af19..41b2e0d47a 100644 --- a/.github/workflows/build-devblobstore.yml +++ b/.github/workflows/build-devblobstore.yml @@ -20,7 +20,7 @@ jobs: packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 4de861dbcd..76c9b93168 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -24,7 +24,7 @@ jobs: packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up QEMU uses: docker/setup-qemu-action@v3 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d97889fbb8..8872c7f7d3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: base_image_version: ${{ steps.baseimgversion.outputs.base_image_version }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 1 fetch-tags: false @@ -164,7 +164,7 @@ jobs: TARGET_BASE: ${{needs.prepare.outputs.base_image_version}} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 1 fetch-tags: false @@ -341,7 +341,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Upload Build Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: release-${{ env.PKG_VERSION }} path: /home/runner/work/release/release.tar.gz @@ -403,7 +403,7 @@ jobs: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: main diff --git a/.github/workflows/ci-run-tests.yml b/.github/workflows/ci-run-tests.yml index 278bd8af2f..5349f1ac7a 100644 --- a/.github/workflows/ci-run-tests.yml +++ b/.github/workflows/ci-run-tests.yml @@ -23,7 +23,7 @@ jobs: base_image_version: ${{ steps.baseimgversion.outputs.base_image_version }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 1 fetch-tags: false diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 3444c03b5e..4ab32d27a6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -26,7 +26,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 6d0683c471..e255b270ff 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: 'Dependency Review' uses: actions/dependency-review-action@v4 with: diff --git a/.github/workflows/dev-assets-sync-nightly.yml b/.github/workflows/dev-assets-sync-nightly.yml index 4cfbf6365b..926d816b38 100644 --- a/.github/workflows/dev-assets-sync-nightly.yml +++ b/.github/workflows/dev-assets-sync-nightly.yml @@ -29,7 +29,7 @@ jobs: contents: read packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Login to GitHub Container Registry uses: docker/login-action@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 836314bac0..be7b834b7a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: image: ghcr.io/ietf-tools/datatracker-devblobstore:latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Prepare for tests run: | @@ -68,7 +68,7 @@ jobs: coverage xml - name: Upload geckodriver.log - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: ${{ failure() }} with: name: geckodriverlog @@ -87,7 +87,7 @@ jobs: mv latest-coverage.json coverage.json - name: Upload Coverage Results as Build Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: ${{ always() }} with: name: coverage @@ -102,7 +102,7 @@ jobs: project: [chromium, firefox] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: @@ -121,7 +121,7 @@ jobs: npx playwright test --project=${{ matrix.project }} - name: Upload Report - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: ${{ always() }} continue-on-error: true with: @@ -143,7 +143,7 @@ jobs: image: ghcr.io/ietf-tools/datatracker-db:latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Prepare for tests run: | @@ -180,7 +180,7 @@ jobs: npx playwright test --project=${{ matrix.project }} -c playwright-legacy.config.js - name: Upload Report - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: ${{ always() }} continue-on-error: true with: From 02070ee2f4dc6ee599e08a87e92b345198ae40fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:04:08 -0300 Subject: [PATCH 065/161] chore(deps): bump actions/setup-python from 5 to 6 (#9480) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8872c7f7d3..07a304cac2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -175,7 +175,7 @@ jobs: node-version: 18.x - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.x" From 4a6627826993863bcb9cd5ede6b6e6f5b19eb0e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:07:28 -0300 Subject: [PATCH 066/161] chore(deps): bump ncipollo/release-action from 1.18.0 to 1.20.0 (#9478) Bumps [ncipollo/release-action](https://github.com/ncipollo/release-action) from 1.18.0 to 1.20.0. - [Release notes](https://github.com/ncipollo/release-action/releases) - [Commits](https://github.com/ncipollo/release-action/compare/v1.18.0...v1.20.0) --- updated-dependencies: - dependency-name: ncipollo/release-action dependency-version: 1.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 07a304cac2..ed425f9ae5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: echo "IS_RELEASE=true" >> $GITHUB_ENV - name: Create Draft Release - uses: ncipollo/release-action@v1.18.0 + uses: ncipollo/release-action@v1.21.0 if: ${{ github.ref_name == 'release' }} with: prerelease: true @@ -315,7 +315,7 @@ jobs: histCoveragePath: historical-coverage.json - name: Create Release - uses: ncipollo/release-action@v1.18.0 + uses: ncipollo/release-action@v1.21.0 if: ${{ env.SHOULD_DEPLOY == 'true' }} with: allowUpdates: true @@ -328,7 +328,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Update Baseline Coverage - uses: ncipollo/release-action@v1.18.0 + uses: ncipollo/release-action@v1.21.0 if: ${{ github.event.inputs.updateCoverage == 'true' || github.ref_name == 'release' }} with: allowUpdates: true From 753bd507c5d9cfdad4793d0e3feed68726fecf1e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 23 Mar 2026 15:38:15 -0500 Subject: [PATCH 067/161] fix: include editorial docs in sent-to-rpc (#10605) --- ietf/api/views_rpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 6c7464e252..1e96118e58 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -210,19 +210,19 @@ def submitted_to_rpc(self, request): Those queries overreturn - there may be things, particularly not from the IETF stream that are already in the queue. """ ietf_docs = Q(states__type_id="draft-iesg", states__slug__in=["ann"]) - irtf_iab_ise_docs = Q( + irtf_iab_ise_editorial_docs = Q( states__type_id__in=[ "draft-stream-iab", "draft-stream-irtf", "draft-stream-ise", + "draft-stream-editorial", ], states__slug__in=["rfc-edit"], ) - # TODO: Need a way to talk about editorial stream docs docs = ( self.get_queryset() .filter(type_id="draft") - .filter(ietf_docs | irtf_iab_ise_docs) + .filter(ietf_docs | irtf_iab_ise_editorial_docs) ) serializer = self.get_serializer(docs, many=True) return Response(serializer.data) From 4308162174bb565b988c4fca9289c424c736ecba Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Mar 2026 17:38:34 -0300 Subject: [PATCH 068/161] ci: handle rabbitmq version for push trigger (#10606) --- .github/workflows/build-mq-broker.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 76c9b93168..50472122c4 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -39,6 +39,15 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set rabbitmq version + id: rabbitmq-version + run: | + if [[ "${{ inputs.rabbitmq_version }}" == "" ]]; then + echo "RABBITMQ_VERSION=3.13-alpine" >> $GITHUB_OUTPUT + else + echo "RABBITMQ_VERSION=${{ inputs.rabbitmq_version }}" >> $GITHUB_OUTPUT + fi + - name: Docker Build & Push uses: docker/build-push-action@v6 env: @@ -48,7 +57,7 @@ jobs: file: dev/mq/Dockerfile platforms: linux/amd64,linux/arm64 push: true - build-args: RABBITMQ_VERSION=${{ inputs.rabbitmq_version }} + build-args: RABBITMQ_VERSION=${{ steps.rabbitmq-version.outputs.RABBITMQ_VERSION }} tags: | - ghcr.io/ietf-tools/datatracker-mq:${{ inputs.rabbitmq_version }} + ghcr.io/ietf-tools/datatracker-mq:${{ steps.rabbitmq-version.outputs.RABBITMQ_VERSION }} ghcr.io/ietf-tools/datatracker-mq:latest From eb041f7d81c7469f0b4c765150ccfadba5604177 Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Tue, 24 Mar 2026 05:39:01 +0900 Subject: [PATCH 069/161] fix: Rewrite CSS style attributes in SVG (#10584) This makes the dark mode work properly for drafts like https://datatracker.ietf.org/doc/html/draft-hajdusek-qirg-timing-physics-01 which have diagrams that use a mix of ordinary attributes and the style attribute. Using the style attribute makes the rules there invisible to the method we use for the remapping of black and white for dark mode. --- ietf/static/js/document_html.js | 79 +++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/ietf/static/js/document_html.js b/ietf/static/js/document_html.js index 6e8861739a..3e609f3965 100644 --- a/ietf/static/js/document_html.js +++ b/ietf/static/js/document_html.js @@ -117,4 +117,83 @@ document.addEventListener("DOMContentLoaded", function (event) { } }); } + + // Rewrite these CSS properties so that the values are available for restyling. + document.querySelectorAll("svg [style]").forEach(el => { + // Push these CSS properties into their own attributes + const SVG_PRESENTATION_ATTRS = new Set([ + 'alignment-baseline', 'baseline-shift', 'clip', 'clip-path', 'clip-rule', + 'color', 'color-interpolation', 'color-interpolation-filters', + 'color-rendering', 'cursor', 'direction', 'display', 'dominant-baseline', + 'fill', 'fill-opacity', 'fill-rule', 'filter', 'flood-color', + 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', + 'font-stretch', 'font-style', 'font-variant', 'font-weight', + 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', + 'marker-mid', 'marker-start', 'mask', 'opacity', 'overflow', 'paint-order', + 'pointer-events', 'shape-rendering', 'stop-color', 'stop-opacity', + 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', + 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', + 'text-anchor', 'text-decoration', 'text-rendering', 'unicode-bidi', + 'vector-effect', 'visibility', 'word-spacing', 'writing-mode', + ]); + + // Simple CSS splitter: respects quoted strings and parens so semicolons + // inside url(...) or "..." don't get treated as declaration boundaries. + function parseDeclarations(styleText) { + const decls = []; + let buf = ''; + let inStr = false; + let strChar = ''; + let escaped = false; + let depth = 0; + + for (const ch of styleText) { + if (inStr) { + if (escaped) { + escaped = false; + } else if (ch === '\\') { + escaped = true; + } else if (ch === strChar) { + inStr = false; + } + } else if (ch === '"' || ch === "'") { + inStr = true; + strChar = ch; + } else if (ch === '(') { + depth++; + } else if (ch === ')') { + depth--; + } else if (ch === ';' && depth === 0) { + const trimmed = buf.trim(); + if (trimmed) { + decls.push(trimmed); + } + buf = ''; + continue; + } + buf += ch; + } + const trimmed = buf.trim(); + if (trimmed) { + decls.push(trimmed); + } + return decls; + } + + const remainder = []; + for (const decl of parseDeclarations(el.getAttribute('style'))) { + const [prop, val] = decl.split(":", 2).map(v => v.trim()); + if (val && !/!important$/.test(val) && SVG_PRESENTATION_ATTRS.has(prop)) { + el.setAttribute(prop, val); + } else { + remainder.push(decl); + } + } + + if (remainder.length > 0) { + el.setAttribute('style', remainder.join('; ')); + } else { + el.removeAttribute('style'); + } + }); }); From 93e9bd3aad53808e791302c8fd99d74eb0873385 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:44:26 -0300 Subject: [PATCH 070/161] chore(deps): bump github/codeql-action from 3 to 4 (#9956) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v3...v4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4ab32d27a6..bc20779ae6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -29,9 +29,9 @@ jobs: uses: actions/checkout@v6 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 From f9aebd5aa881557d7493db415d04a3d89494d637 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:48:56 -0300 Subject: [PATCH 071/161] chore(deps): bump actions/download-artifact from 4.3.0 to 6.0.0 (#9805) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.3.0 to 6.0.0. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4.3.0...v6.0.0) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed425f9ae5..74791747b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -186,7 +186,7 @@ jobs: - name: Download a Coverage Results if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - uses: actions/download-artifact@v4.3.0 + uses: actions/download-artifact@v6.0.0 with: name: coverage @@ -291,7 +291,7 @@ jobs: - name: Download Coverage Results if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - uses: actions/download-artifact@v4.3.0 + uses: actions/download-artifact@v6.0.0 with: name: coverage From 7d84aacad621b83753d6701afbcc864592d4822f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:50:26 -0300 Subject: [PATCH 072/161] chore(deps): bump the npm group (#10602) Bumps the npm group in /dev/deploy-to-container with 2 updates: [dockerode](https://github.com/apocas/dockerode) and [tar](https://github.com/isaacs/node-tar). Updates `dockerode` from 4.0.9 to 4.0.10 - [Release notes](https://github.com/apocas/dockerode/releases) - [Commits](https://github.com/apocas/dockerode/compare/v4.0.9...v4.0.10) Updates `tar` from 7.5.11 to 7.5.12 - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v7.5.11...v7.5.12) --- updated-dependencies: - dependency-name: dockerode dependency-version: 4.0.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: tar dependency-version: 7.5.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev/deploy-to-container/package-lock.json | 113 ++++++++++------------ dev/deploy-to-container/package.json | 4 +- 2 files changed, 54 insertions(+), 63 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index b62109f0e2..a68f170c4b 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -6,12 +6,12 @@ "": { "name": "deploy-to-container", "dependencies": { - "dockerode": "^4.0.9", + "dockerode": "^4.0.10", "fs-extra": "^11.3.4", "nanoid": "5.1.7", "nanoid-dictionary": "5.0.0", "slugify": "1.6.8", - "tar": "^7.5.11", + "tar": "^7.5.12", "yargs": "^17.7.2" }, "engines": { @@ -160,7 +160,6 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -188,7 +187,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -227,9 +225,9 @@ } }, "node_modules/buildcheck": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", - "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.7.tgz", + "integrity": "sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==", "optional": true, "engines": { "node": ">=10.0.0" @@ -284,10 +282,9 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dependencies": { "ms": "^2.1.3" }, @@ -301,10 +298,9 @@ } }, "node_modules/docker-modem": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", - "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", - "license": "Apache-2.0", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.7.tgz", + "integrity": "sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==", "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", @@ -316,14 +312,14 @@ } }, "node_modules/dockerode": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.9.tgz", - "integrity": "sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.10.tgz", + "integrity": "sha512-8L/P9JynLBiG7/coiA4FlQXegHltRqS0a+KqI44P1zgQh8QLHTg7FKOwhkBgSJwZTeHsq30WRoVFLuwkfK0YFg==", "dependencies": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.11.1", "@grpc/proto-loader": "^0.7.13", - "docker-modem": "^5.0.6", + "docker-modem": "^5.0.7", "protobufjs": "^7.3.2", "tar-fs": "^2.1.4", "uuid": "^10.0.0" @@ -464,14 +460,12 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/nan": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", - "license": "MIT", + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.26.2.tgz", + "integrity": "sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==", "optional": true }, "node_modules/nanoid": { @@ -580,8 +574,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/slugify": { "version": "1.6.8", @@ -594,13 +587,12 @@ "node_modules/split-ca": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", - "license": "ISC" + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==" }, "node_modules/ssh2": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", - "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.17.0.tgz", + "integrity": "sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==", "hasInstallScript": true, "dependencies": { "asn1": "^0.2.6", @@ -611,7 +603,7 @@ }, "optionalDependencies": { "cpu-features": "~0.0.10", - "nan": "^2.20.0" + "nan": "^2.23.0" } }, "node_modules/string_decoder": { @@ -647,9 +639,9 @@ } }, "node_modules/tar": { - "version": "7.5.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", - "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", + "version": "7.5.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.12.tgz", + "integrity": "sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -698,8 +690,7 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "license": "Unlicense" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/undici-types": { "version": "6.20.0", @@ -949,9 +940,9 @@ } }, "buildcheck": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", - "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.7.tgz", + "integrity": "sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==", "optional": true }, "chownr": { @@ -993,17 +984,17 @@ } }, "debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "requires": { "ms": "^2.1.3" } }, "docker-modem": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", - "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.7.tgz", + "integrity": "sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==", "requires": { "debug": "^4.1.1", "readable-stream": "^3.5.0", @@ -1012,14 +1003,14 @@ } }, "dockerode": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.9.tgz", - "integrity": "sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.10.tgz", + "integrity": "sha512-8L/P9JynLBiG7/coiA4FlQXegHltRqS0a+KqI44P1zgQh8QLHTg7FKOwhkBgSJwZTeHsq30WRoVFLuwkfK0YFg==", "requires": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.11.1", "@grpc/proto-loader": "^0.7.13", - "docker-modem": "^5.0.6", + "docker-modem": "^5.0.7", "protobufjs": "^7.3.2", "tar-fs": "^2.1.4", "uuid": "^10.0.0" @@ -1126,9 +1117,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "nan": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.26.2.tgz", + "integrity": "sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==", "optional": true }, "nanoid": { @@ -1213,14 +1204,14 @@ "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==" }, "ssh2": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", - "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.17.0.tgz", + "integrity": "sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==", "requires": { "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2", "cpu-features": "~0.0.10", - "nan": "^2.20.0" + "nan": "^2.23.0" } }, "string_decoder": { @@ -1250,9 +1241,9 @@ } }, "tar": { - "version": "7.5.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", - "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", + "version": "7.5.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.12.tgz", + "integrity": "sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==", "requires": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index 1c95a4540c..aa9e82dbdf 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -2,12 +2,12 @@ "name": "deploy-to-container", "type": "module", "dependencies": { - "dockerode": "^4.0.9", + "dockerode": "^4.0.10", "fs-extra": "^11.3.4", "nanoid": "5.1.7", "nanoid-dictionary": "5.0.0", "slugify": "1.6.8", - "tar": "^7.5.11", + "tar": "^7.5.12", "yargs": "^17.7.2" }, "engines": { From 3d00e594e6a667fe8084bc8548d6993c29d515e6 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Mar 2026 19:50:19 -0300 Subject: [PATCH 073/161] chore(deps): bump more action versions (#10608) --- .github/workflows/build-base-app.yml | 6 +++--- .github/workflows/build-devblobstore.yml | 6 +++--- .github/workflows/build-mq-broker.yml | 6 +++--- .github/workflows/build.yml | 10 +++++----- .github/workflows/dev-assets-sync-nightly.yml | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index 2b937cbfef..1b0855cc47 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -31,17 +31,17 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 env: DOCKER_BUILD_SUMMARY: false with: diff --git a/.github/workflows/build-devblobstore.yml b/.github/workflows/build-devblobstore.yml index 41b2e0d47a..14c4b1a135 100644 --- a/.github/workflows/build-devblobstore.yml +++ b/.github/workflows/build-devblobstore.yml @@ -23,17 +23,17 @@ jobs: - uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 env: DOCKER_BUILD_SUMMARY: false with: diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 50472122c4..ef7ed2f65c 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -30,10 +30,10 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} @@ -49,7 +49,7 @@ jobs: fi - name: Docker Build & Push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 env: DOCKER_BUILD_SUMMARY: false with: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 74791747b6..8ec806b229 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -253,10 +253,10 @@ jobs: EOL - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} @@ -267,7 +267,7 @@ jobs: run: echo "FEATURE_LATEST_TAG=$(echo $GITHUB_REF_NAME | tr / -)" >> $GITHUB_ENV - name: Build Images - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 env: DOCKER_BUILD_SUMMARY: false with: @@ -360,7 +360,7 @@ jobs: steps: - name: Notify on Slack (Success) if: ${{ !contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v2 + uses: slackapi/slack-github-action@v3 with: token: ${{ secrets.SLACK_GH_BOT }} method: chat.postMessage @@ -375,7 +375,7 @@ jobs: value: "Completed" - name: Notify on Slack (Failure) if: ${{ contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v2 + uses: slackapi/slack-github-action@v3 with: token: ${{ secrets.SLACK_GH_BOT }} method: chat.postMessage diff --git a/.github/workflows/dev-assets-sync-nightly.yml b/.github/workflows/dev-assets-sync-nightly.yml index 926d816b38..cd986f06f3 100644 --- a/.github/workflows/dev-assets-sync-nightly.yml +++ b/.github/workflows/dev-assets-sync-nightly.yml @@ -32,14 +32,14 @@ jobs: - uses: actions/checkout@v6 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 env: DOCKER_BUILD_SUMMARY: false with: From e51469a5d437491071610156d56dcb73191ad61c Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Fri, 27 Mar 2026 13:44:35 -0400 Subject: [PATCH 074/161] feat: add email/name for ADs and WG Chairs --- ietf/api/serializers_rpc.py | 28 +++++++++++++++++++++++++++- ietf/group/serializers.py | 6 ++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 397ca05d9b..d888de4586 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -27,7 +27,7 @@ update_action_holders, update_rfcauthors, ) -from ietf.group.models import Group +from ietf.group.models import Group, Role from ietf.group.serializers import AreaSerializer from ietf.name.models import StreamName, StdLevelName from ietf.person.models import Person @@ -97,6 +97,21 @@ class Meta: fields = ["draft_name", "authors"] +class WgChairSerializer(serializers.Serializer): + """Serialize a WG chair's name and email from a Role""" + + name = serializers.SerializerMethodField() + email = serializers.SerializerMethodField() + + @extend_schema_field(serializers.CharField) + def get_name(self, role: Role) -> str: + return role.person.plain_name() + + @extend_schema_field(serializers.EmailField) + def get_email(self, role: Role) -> str: + return role.email.email_address() + + class DocumentAuthorSerializer(serializers.ModelSerializer): """Serializer for a Person in a response""" @@ -126,6 +141,7 @@ class FullDraftSerializer(serializers.ModelSerializer): source="shepherd.person", read_only=True ) consensus = serializers.SerializerMethodField() + wg_chairs = serializers.SerializerMethodField() class Meta: model = Document @@ -145,11 +161,21 @@ class Meta: "consensus", "shepherd", "ad", + "wg_chairs", ] def get_consensus(self, doc: Document) -> Optional[bool]: return default_consensus(doc) + @extend_schema_field(WgChairSerializer(many=True)) + def get_wg_chairs(self, doc: Document): + if doc.group is None: + return [] + chairs = doc.group.role_set.filter(name_id="chair").select_related( + "person", "email" + ) + return WgChairSerializer(chairs, many=True).data + def get_source_format( self, doc: Document ) -> Literal["unknown", "xml-v2", "xml-v3", "txt"]: diff --git a/ietf/group/serializers.py b/ietf/group/serializers.py index db3b37af48..e789ba46bf 100644 --- a/ietf/group/serializers.py +++ b/ietf/group/serializers.py @@ -20,8 +20,14 @@ class AreaDirectorSerializer(serializers.Serializer): Works with Email or Role """ + name = serializers.SerializerMethodField() email = serializers.SerializerMethodField() + @extend_schema_field(serializers.CharField) + def get_name(self, instance: Email | Role): + person = getattr(instance, 'person', None) + return person.plain_name() if person else None + @extend_schema_field(serializers.EmailField) def get_email(self, instance: Email | Role): if isinstance(instance, Role): From b1cc7edc7ff5e80f7eb0072657e88450a4b2c06b Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Fri, 27 Mar 2026 14:32:07 -0400 Subject: [PATCH 075/161] adapt test --- ietf/group/tests_serializers.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ietf/group/tests_serializers.py b/ietf/group/tests_serializers.py index bf29e6c8fd..b584a17ae2 100644 --- a/ietf/group/tests_serializers.py +++ b/ietf/group/tests_serializers.py @@ -31,7 +31,7 @@ def test_serializes_role(self): serialized = AreaDirectorSerializer(role).data self.assertEqual( serialized, - {"email": role.email.email_address()}, + {"email": role.email.email_address(), "name": role.person.plain_name()}, ) def test_serializes_email(self): @@ -40,7 +40,10 @@ def test_serializes_email(self): serialized = AreaDirectorSerializer(email).data self.assertEqual( serialized, - {"email": email.email_address()}, + { + "email": email.email_address(), + "name": email.person.plain_name() if email.person else None, + }, ) @@ -63,7 +66,10 @@ def test_serializes_active_area(self): self.assertEqual(serialized["name"], area.name) self.assertCountEqual( serialized["ads"], - [{"email": ad.email.email_address()} for ad in ad_roles], + [ + {"email": ad.email.email_address(), "name": ad.person.plain_name()} + for ad in ad_roles + ], ) def test_serializes_inactive_area(self): From 5775077317640de8981cf27b0b8c54e42d8ae9a2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 1 Apr 2026 18:53:13 -0300 Subject: [PATCH 076/161] fix: limit access to manual post cancellation (#10638) * fix: drop access_token from URL * test: update test case * test: remove unneeded test There is no longer a dedicated manual post cancel action * chore: update copyrights --- ietf/submit/tests.py | 30 +++++++++++++++----------- ietf/templates/submit/manual_post.html | 16 ++++---------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 400d0d8c7d..ad361d31b2 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2011-2023, All Rights Reserved +# Copyright The IETF Trust 2011-2026, All Rights Reserved # -*- coding: utf-8 -*- @@ -207,20 +207,24 @@ def test_manualpost_view(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn( - urlreverse( - "ietf.submit.views.submission_status", - kwargs=dict(submission_id=submission.pk) - ), - q("#manual.submissions td a").attr("href") - ) - self.assertIn( - submission.name, - q("#manual.submissions td a").text() + # Validate that the basic submission status URL is on the manual post page + # _without_ an access token, even if logged in as various users. + expected_url = urlreverse( + "ietf.submit.views.submission_status", + kwargs=dict(submission_id=submission.pk) ) + selected_elts = q("#manual.submissions td a") + self.assertEqual(expected_url, selected_elts.attr("href")) + self.assertIn(submission.name, selected_elts.text()) + for username in ["plain", "secretary"]: + self.client.login(username=username, password=username + "+password") + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + selected_elts = q("#manual.submissions td a") + self.assertEqual(expected_url, selected_elts.attr("href")) + self.assertIn(submission.name, selected_elts.text()) - def test_manualpost_cancel(self): - pass class SubmitTests(BaseSubmitTestCase): def setUp(self): diff --git a/ietf/templates/submit/manual_post.html b/ietf/templates/submit/manual_post.html index 6e4a2ba42a..0da83e750f 100644 --- a/ietf/templates/submit/manual_post.html +++ b/ietf/templates/submit/manual_post.html @@ -1,5 +1,5 @@ {% extends "submit/submit_base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2026, All Rights Reserved #} {% load origin static %} {% block pagehead %} @@ -27,17 +27,9 @@

    Submissions needing manual posting

    {% for s in manual %} - {% if user.is_authenticated %} - - - {{ s.name }}-{{ s.rev }} - - - {% else %} - - {{ s.name }}-{{ s.rev }} - - {% endif %} + + {{ s.name }}-{{ s.rev }} + {{ s.submission_date }} {% if s.passes_checks %} From 6058769a64778679d4b3b5ca5e6937ed5f2ec6c8 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 2 Apr 2026 15:57:49 -0300 Subject: [PATCH 077/161] ci: optional bucket suffix for storage cfg (#10637) * ci: optional bucket suffix for storage cfg * style: ruff ruff * fix: roll back bizarre editor glitch --- docker/scripts/app-configure-blobstore.py | 10 +++++++--- k8s/settings_local.py | 22 ++++++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/docker/scripts/app-configure-blobstore.py b/docker/scripts/app-configure-blobstore.py index 3140e39306..9ae64e0041 100755 --- a/docker/scripts/app-configure-blobstore.py +++ b/docker/scripts/app-configure-blobstore.py @@ -24,10 +24,13 @@ def init_blobstore(): ), ) for bucketname in ARTIFACT_STORAGE_NAMES: + adjusted_bucket_name = ( + os.environ.get("BLOB_STORE_BUCKET_PREFIX", "") + + bucketname + + os.environ.get("BLOB_STORE_BUCKET_SUFFIX", "") + ).strip() try: - blobstore.create_bucket( - Bucket=f"{os.environ.get('BLOB_STORE_BUCKET_PREFIX', '')}{bucketname}".strip() - ) + blobstore.create_bucket(Bucket=adjusted_bucket_name) except botocore.exceptions.ClientError as err: if err.response["Error"]["Code"] == "BucketAlreadyExists": print(f"Bucket {bucketname} already exists") @@ -36,5 +39,6 @@ def init_blobstore(): else: print(f"Bucket {bucketname} created") + if __name__ == "__main__": sys.exit(init_blobstore()) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 323b7fd45a..b45cbbe260 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -18,7 +18,7 @@ def _multiline_to_list(s): - """Helper to split at newlines and conver to list""" + """Helper to split at newlines and convert to list""" return [item.strip() for item in s.split("\n")] @@ -80,13 +80,19 @@ def _multiline_to_list(s): else: raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") -_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = os.environ.get("DATATRACKER_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY", None) +_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = os.environ.get( + "DATATRACKER_RED_PRECOMPUTER_TRIGGER_RETRY_DELAY", None +) if _RED_PRECOMPUTER_TRIGGER_RETRY_DELAY is not None: - RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = _RED_PRECOMPUTER_TRIGGER_RETRY_DELAY -_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES = os.environ.get("DATATRACKER_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES", None) + RED_PRECOMPUTER_TRIGGER_RETRY_DELAY = _RED_PRECOMPUTER_TRIGGER_RETRY_DELAY +_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES = os.environ.get( + "DATATRACKER_RED_PRECOMPUTER_TRIGGER_MAX_RETRIES", None +) if _RED_PRECOMPUTER_TRIGGER_MAX_RETRIES is not None: RED_PRECOMPUTER_TRIGGER_MAX_RETRIES = _RED_PRECOMPUTER_TRIGGER_MAX_RETRIES -_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL = os.environ.get("DATATRACKER_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL", None) +_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL = os.environ.get( + "DATATRACKER_TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL", None +) if _TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL is not None: TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL = _TRIGGER_RED_PRECOMPUTE_MULTIPLE_URL @@ -387,6 +393,7 @@ def _multiline_to_list(s): "and DATATRACKER_BLOB_STORE_SECRET_KEY must be set" ) _blob_store_bucket_prefix = os.environ.get("DATATRACKER_BLOB_STORE_BUCKET_PREFIX", "") +_blob_store_bucket_suffix = os.environ.get("DATATRACKER_BLOB_STORE_BUCKET_SUFFIX", "") _blob_store_enable_profiling = ( os.environ.get("DATATRACKER_BLOB_STORE_ENABLE_PROFILING", "false").lower() == "true" ) @@ -406,6 +413,9 @@ def _multiline_to_list(s): if storagename in ["staging"]: continue replica_storagename = f"r2-{storagename}" + adjusted_bucket_name = ( + _blob_store_bucket_prefix + storagename + _blob_store_bucket_suffix + ).strip() STORAGES[replica_storagename] = { "BACKEND": "ietf.doc.storage.MetadataS3Storage", "OPTIONS": dict( @@ -422,7 +432,7 @@ def _multiline_to_list(s): retries={"total_max_attempts": _blob_store_max_attempts}, ), verify=False, - bucket_name=f"{_blob_store_bucket_prefix}{storagename}".strip(), + bucket_name=adjusted_bucket_name, ietf_log_blob_timing=_blob_store_enable_profiling, ), } From a46a2efc05b2e7f5d1b50c76d543e1ca16ae8918 Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Tue, 7 Apr 2026 09:25:24 +1200 Subject: [PATCH 078/161] feat: Generate bcp-index.txt (#10631) * feat: Generate bcp-index.txt * fix: Fix issue with author names * feat: Update bcp-index.txt header * refactor: Generalize some functions * fix: Sort RFCs * test: Add tests for bcp-index.txt * fix: Fix range bug * test: Add test for BCP entry * test: Fix test_create_bcp_txt_index --- ietf/sync/rfcindex.py | 98 +++++++++++++++++++++++++++++++ ietf/sync/tests_rfcindex.py | 69 ++++++++++++++++++++-- ietf/templates/sync/bcp-index.txt | 52 ++++++++++++++++ 3 files changed, 215 insertions(+), 4 deletions(-) create mode 100644 ietf/templates/sync/bcp-index.txt diff --git a/ietf/sync/rfcindex.py b/ietf/sync/rfcindex.py index 63c2044931..357cc4069a 100644 --- a/ietf/sync/rfcindex.py +++ b/ietf/sync/rfcindex.py @@ -24,6 +24,8 @@ from ietf.utils.log import log FORMATS_FOR_INDEX = ["txt", "html", "pdf", "xml", "ps"] +SS_TXT_MARGIN = 3 +SS_TXT_CUE_COL_WIDTH = 14 def format_rfc_number(n): @@ -267,6 +269,87 @@ def get_rfc_text_index_entries(): return entries +def subseries_text_line(line, first=False): + """Return subseries text entry line""" + indent = " " * SS_TXT_CUE_COL_WIDTH + if first: + initial_indent = " " * SS_TXT_MARGIN + else: + initial_indent = indent + return fill( + line, + initial_indent=initial_indent, + subsequent_indent=indent, + width=80, + break_on_hyphens=False, + ) + + +def get_bcp_text_index_entries(): + """Returns BCP entries for bcp-index.txt""" + entries = [] + + highest_bcp_number = ( + Document.objects.filter(type_id="bcp") + .annotate( + number=Cast( + Substr("name", 4, None), + output_field=models.IntegerField(), + ) + ) + .order_by("-number") + .first() + .number + ) + + for bcp_number in range(1, highest_bcp_number + 1): + bcp_name = f"BCP{bcp_number}" + bcp = Document.objects.filter(type_id="bcp", name=f"{bcp_name.lower()}").first() + + if bcp: + entry = subseries_text_line( + ( + f"[{bcp_name}]" + f"{' ' * (SS_TXT_CUE_COL_WIDTH - len(bcp_name) - 2 - SS_TXT_MARGIN)}" + f"Best Current Practice {bcp_number}," + ), + first=True, + ) + entry += "\n" + entry += subseries_text_line( + f"<{settings.RFC_EDITOR_INFO_BASE_URL}{bcp_name.lower()}>." + ) + entry += "\n" + entry += subseries_text_line( + "At the time of writing, this BCP comprises the following:" + ) + entry += "\n\n" + rfcs = sorted(bcp.contains(), key=lambda x: x.rfc_number) + for rfc in rfcs: + authors = ", ".join( + author.format_for_titlepage() for author in rfc.rfcauthor_set.all() + ) + entry += subseries_text_line( + ( + f'{authors}, "{rfc.title}", BCP¶{bcp_number}, RFC¶{rfc.rfc_number}, ' + f"DOI¶{rfc.doi}, {rfc.pub_date().strftime('%B %Y')}, " + f"<{settings.RFC_EDITOR_INFO_BASE_URL}rfc{rfc.rfc_number}>." + ) + ).replace("¶", " ") + entry += "\n\n" + else: + entry = subseries_text_line( + ( + f"[{bcp_name}]" + f"{' ' * (SS_TXT_CUE_COL_WIDTH - len(bcp_name) - 2 - SS_TXT_MARGIN)}" + f"Best Current Practice {bcp_number} currently contains no RFCs" + ), + first=True, + ) + entries.append(entry) + return entries + + def add_subseries_xml_index_entries(rfc_index, ss_type, include_all=False): """Add subseries entries for rfc-index.xml""" # subseries docs annotated with numeric number @@ -481,3 +564,18 @@ def create_rfc_xml_index(): pretty_print=4, ) save_to_red_bucket("rfc-index.xml", pretty_index) + + +def create_bcp_txt_index(): + """Create text index of BCPs""" + DATE_FMT = "%m/%d/%Y" + created_on = timezone.now().strftime(DATE_FMT) + log("Creating bcp-index.txt") + index = render_to_string( + "sync/bcp-index.txt", + { + "created_on": created_on, + "bcps": get_bcp_text_index_entries(), + }, + ) + save_to_red_bucket("bcp-index.txt", index) diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py index e682c016f5..cad5b577d4 100644 --- a/ietf/sync/tests_rfcindex.py +++ b/ietf/sync/tests_rfcindex.py @@ -7,16 +7,22 @@ from django.test.utils import override_settings from lxml import etree -from ietf.doc.factories import PublishedRfcDocEventFactory, IndividualRfcFactory +from ietf.doc.factories import ( + BcpFactory, + IndividualRfcFactory, + PublishedRfcDocEventFactory, +) from ietf.name.models import DocTagName from ietf.sync.rfcindex import ( + create_bcp_txt_index, create_rfc_txt_index, create_rfc_xml_index, format_rfc_number, - save_to_red_bucket, - get_unusable_rfc_numbers, get_april1_rfc_numbers, get_publication_std_levels, + get_unusable_rfc_numbers, + save_to_red_bucket, + subseries_text_line, ) from ietf.utils.test_utils import TestCase @@ -69,6 +75,9 @@ def setUp(self): ).doc self.rfc.tags.add(DocTagName.objects.get(slug="errata")) + # Create a BCP with non-April Fools RFC + self.bcp = BcpFactory(contains=[self.rfc], name="bcp11") + # Set up a publication-std-levels.json file to indicate the publication # standard of self.rfc as different from its current value red_bucket.save( @@ -137,7 +146,7 @@ def test_create_rfc_xml_index(self, mock_save): children = list(index) # elements as list # Should be one rfc-not-issued-entry - self.assertEqual(len(children), 3) + self.assertEqual(len(children), 14) self.assertEqual( [ c.find(f"{ns}doc-id").text @@ -184,6 +193,53 @@ def test_create_rfc_xml_index(self, mock_save): [(f"{ns}month", "April"), (f"{ns}year", "2021")], ) + @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") + def test_create_bcp_txt_index(self, mock_save): + create_bcp_txt_index() + self.assertEqual(mock_save.call_count, 1) + self.assertEqual(mock_save.call_args[0][0], "bcp-index.txt") + contents = mock_save.call_args[0][1] + self.assertTrue(isinstance(contents, str)) + # starts from 1 + self.assertIn( + "[BCP1]", + contents, + ) + # fill up to 11 + self.assertIn( + "[BCP10]", + contents, + ) + # but not to 12 + self.assertNotIn( + "[BCP12]", + contents, + ) + # Test empty BCPs + self.assertIn( + "Best Current Practice 9 currently contains no RFCs", + contents, + ) + # No zero prefix! + self.assertNotIn( + "[BCP0001]", + contents, + ) + # Has BCP11 with a RFC + self.assertIn( + "Best Current Practice 11,", + contents, + ) + self.assertIn( + f'"{self.rfc.title}"', + contents, + ) + self.assertIn( + f'BCP 11, RFC {self.rfc.rfc_number},', + contents, + ) + class HelperTests(TestCase): def test_format_rfc_number(self): @@ -234,3 +290,8 @@ def test_get_publication_std_levels_raises(self): with self.assertRaises(json.JSONDecodeError): get_publication_std_levels() red_bucket.delete("publication-std-levels.json") + + def test_subseries_text_line(self): + text = "foobar" + self.assertEqual(subseries_text_line(line=text, first=True), f" {text}") + self.assertEqual(subseries_text_line(line=text), f" {text}") diff --git a/ietf/templates/sync/bcp-index.txt b/ietf/templates/sync/bcp-index.txt new file mode 100644 index 0000000000..dd19920eba --- /dev/null +++ b/ietf/templates/sync/bcp-index.txt @@ -0,0 +1,52 @@ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BCP INDEX + ------------- + +(CREATED ON: {{created_on}}.) + +This file contains citations for all BCPs in numeric order. The BCPs +form a sub-series of the RFC document series, specifically those RFCs +with the status BEST CURRENT PRACTICE. + +BCP citations appear in this format: + + [BCP#] Best Current Practice #, + . + At the time of writing, this BCP comprises the following: + + Author 1, Author 2, "Title of the RFC", BCP #, RFC №, + DOI DOI string, Issue date, + . + +For example: + + [BCP3] Best Current Practice 3, + . + At the time of writing, this BCP comprises the following: + + F. Kastenholz, "Variance for The PPP Compression Control Protocol + and The PPP Encryption Control Protocol", BCP 3, RFC 1915, + DOI 10.17487/RFC1915, February 1996, + . + +Key to fields: + +# is the BCP number. + +№ is the RFC number. + +BCPs and other RFCs may be obtained from https://www.rfc-editor.org. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BCP INDEX + --------- + + + +{% for bcp in bcps %}{{bcp|safe}} + +{% endfor %} From 7c7219f0dcf326f369c7b4bd04337f95f0a7a9f4 Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Wed, 8 Apr 2026 11:16:57 +1200 Subject: [PATCH 079/161] feat: Generate std-index.txt (#10665) * feat: Generate std-index.txt * style: Ruff ruff Good boy! * test: Fix flaky test * test: Add tests for std-index.txt --- ietf/sync/rfcindex.py | 80 +++++++++++++++++++++++++++++++ ietf/sync/tests_rfcindex.py | 64 ++++++++++++++++++++++++- ietf/templates/sync/std-index.txt | 51 ++++++++++++++++++++ 3 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 ietf/templates/sync/std-index.txt diff --git a/ietf/sync/rfcindex.py b/ietf/sync/rfcindex.py index 357cc4069a..6a6a4bfa9f 100644 --- a/ietf/sync/rfcindex.py +++ b/ietf/sync/rfcindex.py @@ -350,6 +350,71 @@ def get_bcp_text_index_entries(): return entries +def get_std_text_index_entries(): + """Returns STD entries for std-index.txt""" + entries = [] + + highest_std_number = ( + Document.objects.filter(type_id="std") + .annotate( + number=Cast( + Substr("name", 4, None), + output_field=models.IntegerField(), + ) + ) + .order_by("-number") + .first() + .number + ) + + for std_number in range(1, highest_std_number + 1): + std_name = f"STD{std_number}" + std = Document.objects.filter(type_id="std", name=f"{std_name.lower()}").first() + + if std and std.contains(): + entry = subseries_text_line( + ( + f"[{std_name}]" + f"{' ' * (SS_TXT_CUE_COL_WIDTH - len(std_name) - 2 - SS_TXT_MARGIN)}" + f"Internet Standard {std_number}," + ), + first=True, + ) + entry += "\n" + entry += subseries_text_line( + f"<{settings.RFC_EDITOR_INFO_BASE_URL}{std_name.lower()}>." + ) + entry += "\n" + entry += subseries_text_line( + "At the time of writing, this STD comprises the following:" + ) + entry += "\n\n" + rfcs = sorted(std.contains(), key=lambda x: x.rfc_number) + for rfc in rfcs: + authors = ", ".join( + author.format_for_titlepage() for author in rfc.rfcauthor_set.all() + ) + entry += subseries_text_line( + ( + f'{authors}, "{rfc.title}", STD¶{std_number}, RFC¶{rfc.rfc_number}, ' + f"DOI¶{rfc.doi}, {rfc.pub_date().strftime('%B %Y')}, " + f"<{settings.RFC_EDITOR_INFO_BASE_URL}rfc{rfc.rfc_number}>." + ) + ).replace("¶", " ") + entry += "\n\n" + else: + entry = subseries_text_line( + ( + f"[{std_name}]" + f"{' ' * (SS_TXT_CUE_COL_WIDTH - len(std_name) - 2 - SS_TXT_MARGIN)}" + f"Internet Standard {std_number} currently contains no RFCs" + ), + first=True, + ) + entries.append(entry) + return entries + + def add_subseries_xml_index_entries(rfc_index, ss_type, include_all=False): """Add subseries entries for rfc-index.xml""" # subseries docs annotated with numeric number @@ -579,3 +644,18 @@ def create_bcp_txt_index(): }, ) save_to_red_bucket("bcp-index.txt", index) + + +def create_std_txt_index(): + """Create text index of STDs""" + DATE_FMT = "%m/%d/%Y" + created_on = timezone.now().strftime(DATE_FMT) + log("Creating std-index.txt") + index = render_to_string( + "sync/std-index.txt", + { + "created_on": created_on, + "stds": get_std_text_index_entries(), + }, + ) + save_to_red_bucket("std-index.txt", index) diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py index cad5b577d4..70bc41b992 100644 --- a/ietf/sync/tests_rfcindex.py +++ b/ietf/sync/tests_rfcindex.py @@ -9,6 +9,7 @@ from ietf.doc.factories import ( BcpFactory, + StdFactory, IndividualRfcFactory, PublishedRfcDocEventFactory, ) @@ -17,6 +18,7 @@ create_bcp_txt_index, create_rfc_txt_index, create_rfc_xml_index, + create_std_txt_index, format_rfc_number, get_april1_rfc_numbers, get_publication_std_levels, @@ -78,6 +80,9 @@ def setUp(self): # Create a BCP with non-April Fools RFC self.bcp = BcpFactory(contains=[self.rfc], name="bcp11") + # Create a STD with non-April Fools RFC + self.std = StdFactory(contains=[self.rfc], name="std11") + # Set up a publication-std-levels.json file to indicate the publication # standard of self.rfc as different from its current value red_bucket.save( @@ -146,7 +151,7 @@ def test_create_rfc_xml_index(self, mock_save): children = list(index) # elements as list # Should be one rfc-not-issued-entry - self.assertEqual(len(children), 14) + self.assertEqual(len(children), 15) self.assertEqual( [ c.find(f"{ns}doc-id").text @@ -236,7 +241,62 @@ def test_create_bcp_txt_index(self, mock_save): contents, ) self.assertIn( - f'BCP 11, RFC {self.rfc.rfc_number},', + "BCP 11,", + contents, + ) + self.assertIn( + f"RFC {self.rfc.rfc_number},", + contents, + ) + + @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") + def test_create_std_txt_index(self, mock_save): + create_std_txt_index() + self.assertEqual(mock_save.call_count, 1) + self.assertEqual(mock_save.call_args[0][0], "std-index.txt") + contents = mock_save.call_args[0][1] + self.assertTrue(isinstance(contents, str)) + # starts from 1 + self.assertIn( + "[STD1]", + contents, + ) + # fill up to 11 + self.assertIn( + "[STD10]", + contents, + ) + # but not to 12 + self.assertNotIn( + "[STD12]", + contents, + ) + # Test empty STDs + self.assertIn( + "Internet Standard 9 currently contains no RFCs", + contents, + ) + # No zero prefix! + self.assertNotIn( + "[STD0001]", + contents, + ) + # Has STD11 with a RFC + self.assertIn( + "Internet Standard 11,", + contents, + ) + self.assertIn( + f'"{self.rfc.title}"', + contents, + ) + self.assertIn( + "STD 11,", + contents, + ) + self.assertIn( + f"RFC {self.rfc.rfc_number},", contents, ) diff --git a/ietf/templates/sync/std-index.txt b/ietf/templates/sync/std-index.txt new file mode 100644 index 0000000000..c075d1d43e --- /dev/null +++ b/ietf/templates/sync/std-index.txt @@ -0,0 +1,51 @@ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + STD INDEX + ------------- + +(CREATED ON: {{created_on}}.) + +This file contains citations for all STDs in numeric order. Each +STD represents a single Internet Standard technical specification, +composed of one or more RFCs with Internet Standard status. + +STD citations appear in this format: + + [STD#] Best Current Practice #, + . + At the time of writing, this STD comprises the following: + + Author 1, Author 2, "Title of the RFC", STD #, RFC №, + DOI DOI string, Issue date, + . + +For example: + + [STD6] Internet Standard 6, + . + At the time of writing, this STD comprises the following: + + J. Postel, "User Datagram Protocol", STD 6, RFC 768, + DOI 10.17487/RFC0768, August 1980, + . + +Key to fields: + +# is the STD number. + +№ is the RFC number. + +STDs and other RFCs may be obtained from https://www.rfc-editor.org. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + STD INDEX + --------- + + + +{% for std in stds %}{{std|safe}} + +{% endfor %} From e72ead86dee707b5cbd9aeea96437dbaee78c88d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:35:06 -0300 Subject: [PATCH 080/161] chore(deps): bump appleboy/ssh-action from 1.2.2 to 1.2.5 (#10623) Bumps [appleboy/ssh-action](https://github.com/appleboy/ssh-action) from 1.2.2 to 1.2.5. - [Release notes](https://github.com/appleboy/ssh-action/releases) - [Commits](https://github.com/appleboy/ssh-action/compare/2ead5e36573f08b82fbfce1504f1a4b05a647c6f...0ff4204d59e8e51228ff73bce53f80d53301dee2) --- updated-dependencies: - dependency-name: appleboy/ssh-action dependency-version: 1.2.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/tests-az.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests-az.yml b/.github/workflows/tests-az.yml index 8553563a19..833ca89bef 100644 --- a/.github/workflows/tests-az.yml +++ b/.github/workflows/tests-az.yml @@ -38,7 +38,7 @@ jobs: ssh-keyscan -t rsa $vminfo >> ~/.ssh/known_hosts - name: Remote SSH into VM - uses: appleboy/ssh-action@2ead5e36573f08b82fbfce1504f1a4b05a647c6f + uses: appleboy/ssh-action@0ff4204d59e8e51228ff73bce53f80d53301dee2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From c7657c3f22f5f7a906fd2cf01aaed7b54feca9e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:37:35 -0300 Subject: [PATCH 081/161] chore(deps): bump stefanzweifel/git-auto-commit-action from 6 to 7 (#10624) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 6 to 7. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v6...v7) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-base-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index 1b0855cc47..5e274838a1 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -60,7 +60,7 @@ jobs: echo "${{ env.IMGVERSION }}" > dev/build/TARGET_BASE - name: Commit CHANGELOG.md - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: branch: ${{ github.ref_name }} commit_message: 'ci: update base image target version to ${{ env.IMGVERSION }}' From f39e916a73eaab6c0172a09e98c28ba628b7bcc4 Mon Sep 17 00:00:00 2001 From: Eric Rescorla Date: Wed, 8 Apr 2026 08:50:19 -0700 Subject: [PATCH 082/161] fix: Rewrite upper right document search box (#10538) * Rewrite upper right document search box. Fixes #10358 This is a fix to the problem where the first item in the dropdown is auto-selected and then when you hit return you go to that rather than searching for what's in the text field. It appears to be challenging to get this behavior with select2, so this is actually a rewrite of the box with explicit behavior. As a side effect, the draft names actually render a bit better. Co-Authored-By: Claude Opus 4.6 * Respond to review comments --------- Co-authored-by: EKR aibot Co-authored-by: Claude Opus 4.6 --- ietf/static/css/ietf.scss | 17 +++++ ietf/static/js/navbar-doc-search.js | 113 ++++++++++++++++++++++++++++ ietf/templates/base.html | 24 +++--- package.json | 1 + 4 files changed, 143 insertions(+), 12 deletions(-) create mode 100644 ietf/static/js/navbar-doc-search.js diff --git a/ietf/static/css/ietf.scss b/ietf/static/css/ietf.scss index df973863d5..6695c57b13 100644 --- a/ietf/static/css/ietf.scss +++ b/ietf/static/css/ietf.scss @@ -1216,3 +1216,20 @@ iframe.status { .overflow-shadows--bottom-only { box-shadow: inset 0px -21px 18px -20px var(--bs-body-color); } + +#navbar-doc-search-wrapper { + position: relative; +} + +#navbar-doc-search-results { + max-height: 400px; + overflow-y: auto; + min-width: auto; + left: 0; + right: 0; + + .dropdown-item { + white-space: normal; + overflow-wrap: break-word; + } +} diff --git a/ietf/static/js/navbar-doc-search.js b/ietf/static/js/navbar-doc-search.js new file mode 100644 index 0000000000..c36c032310 --- /dev/null +++ b/ietf/static/js/navbar-doc-search.js @@ -0,0 +1,113 @@ +$(function () { + var $input = $('#navbar-doc-search'); + var $results = $('#navbar-doc-search-results'); + var ajaxUrl = $input.data('ajax-url'); + var debounceTimer = null; + var highlightedIndex = -1; + var keyboardHighlight = false; + var currentItems = []; + + function showDropdown() { + $results.addClass('show'); + } + + function hideDropdown() { + $results.removeClass('show'); + highlightedIndex = -1; + keyboardHighlight = false; + updateHighlight(); + } + + function updateHighlight() { + $results.find('.dropdown-item').removeClass('active'); + if (highlightedIndex >= 0 && highlightedIndex < currentItems.length) { + $results.find('.dropdown-item').eq(highlightedIndex).addClass('active'); + } + } + + function doSearch(query) { + if (query.length < 2) { + hideDropdown(); + return; + } + $.ajax({ + url: ajaxUrl, + dataType: 'json', + data: { q: query }, + success: function (data) { + currentItems = data; + highlightedIndex = -1; + $results.empty(); + if (data.length === 0) { + $results.append('
  • No results found
  • '); + } else { + data.forEach(function (item) { + var $li = $('
  • '); + var $a = $('' + item.text + ''); + $li.append($a); + $results.append($li); + }); + } + showDropdown(); + } + }); + } + + $input.on('input', function () { + clearTimeout(debounceTimer); + var query = $(this).val().trim(); + debounceTimer = setTimeout(function () { + doSearch(query); + }, 250); + }); + + $input.on('keydown', function (e) { + if (e.key === 'ArrowDown') { + e.preventDefault(); + if (highlightedIndex < currentItems.length - 1) { + highlightedIndex++; + keyboardHighlight = true; + updateHighlight(); + } + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + if (highlightedIndex > 0) { + highlightedIndex--; + keyboardHighlight = true; + updateHighlight(); + } + } else if (e.key === 'Enter') { + e.preventDefault(); + if (keyboardHighlight && highlightedIndex >= 0 && highlightedIndex < currentItems.length) { + window.location.href = currentItems[highlightedIndex].url; + } else { + var query = $(this).val().trim(); + if (query) { + window.location.href = '/doc/search/?name=' + encodeURIComponent(query) + '&rfcs=on&activedrafts=on&olddrafts=on'; + } + } + } else if (e.key === 'Escape') { + hideDropdown(); + $input.blur(); + } + }); + + // Hover highlights (visual only — Enter still submits the text) + $results.on('mouseenter', '.dropdown-item', function () { + highlightedIndex = $results.find('.dropdown-item').index(this); + keyboardHighlight = false; + updateHighlight(); + }); + + $results.on('mouseleave', '.dropdown-item', function () { + highlightedIndex = -1; + updateHighlight(); + }); + + // Click outside closes dropdown + $(document).on('click', function (e) { + if (!$(e.target).closest('#navbar-doc-search-wrapper').length) { + hideDropdown(); + } + }); +}); diff --git a/ietf/templates/base.html b/ietf/templates/base.html index 25ce50c467..b0df04f30a 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -67,13 +67,17 @@ {% endif %} - +
  • to reset panning/zooming. +

    +
    +
    + {% if stats_type == 'total' %} +

    Total Registrations

    + {% else %} +

    Total Registrations by {{ stats_type|title }}

    + {% endif %} +
    + +
    +
    + {% if stats_type != 'total' %} +
    + {% if stats_type == 'total' %} +

    Total In Person Registrations

    + {% else %} +

    In Person Registrations by {{ stats_type|title }}

    + {% endif %} +
    + +
    +
    + {% endif %} +
    +{% endblock %} \ No newline at end of file diff --git a/package.json b/package.json index 57642d7860..6f61aaba29 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,8 @@ "ietf/static/js/manage-community-list.js", "ietf/static/js/manage-review-requests.js", "ietf/static/js/meeting-interim-request.js", + "ietf/static/js/meeting_stats.js", + "ietf/static/js/meeting_timeline.js", "ietf/static/js/moment.js", "ietf/static/js/navbar-doc-search.js", "ietf/static/js/password_strength.js", From 4964901bb5a29d37ab7a8f7ee925eda7cf734b6f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Apr 2026 18:53:12 -0300 Subject: [PATCH 124/161] fix: bind gunicorn on ipv6 interface + config refactor (#10769) * refactor: move gunicorn cfg to python * fix: bind gunicorn on ipv6 interface, too --- dev/build/datatracker-start.sh | 12 +----------- dev/build/gunicorn.conf.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index a676415a26..012a563412 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -45,16 +45,6 @@ cleanup () { trap 'trap "" TERM; cleanup' TERM # start gunicorn in the background so we can trap the TERM signal -gunicorn \ - -c /workspace/gunicorn.conf.py \ - --workers "${DATATRACKER_GUNICORN_WORKERS:-9}" \ - --max-requests "${DATATRACKER_GUNICORN_MAX_REQUESTS:-32768}" \ - --timeout "${DATATRACKER_GUNICORN_TIMEOUT:-180}" \ - --bind :8000 \ - --log-level "${DATATRACKER_GUNICORN_LOG_LEVEL:-info}" \ - --capture-output \ - --access-logfile -\ - ${DATATRACKER_GUNICORN_EXTRA_ARGS} \ - ietf.wsgi:application & +gunicorn -c /workspace/gunicorn.conf.py ${DATATRACKER_GUNICORN_EXTRA_ARGS} ietf.wsgi:application & gunicorn_pid=$! wait "${gunicorn_pid}" diff --git a/dev/build/gunicorn.conf.py b/dev/build/gunicorn.conf.py index 9af4478685..37991a55dc 100644 --- a/dev/build/gunicorn.conf.py +++ b/dev/build/gunicorn.conf.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2024-2025, All Rights Reserved +# Copyright The IETF Trust 2024-2026, All Rights Reserved import os import ietf @@ -12,6 +12,22 @@ from opentelemetry.instrumentation.pymemcache import PymemcacheInstrumentor from opentelemetry.instrumentation.requests import RequestsInstrumentor +# Bind interfaces for both ipv4 and ipv6 +bind = ["127.0.0.1:8000", "[::1]:8000"] + +# Disable control socket +control_socket_disable = True + +# Settings configurable via environment +workers = int(os.environ.get("DATATRACKER_GUNICORN_WORKERS", "9")) +max_requests = int(os.environ.get("DATATRACKER_GUNICORN_MAX_REQUESTS", "32768")) +timeout = int(os.environ.get("DATATRACKER_GUNICORN_TIMEOUT", "180")) +loglevel = os.environ.get("DATATRACKER_GUNICORN_LOG_LEVEL", "info") + +# Logging / stdout capture +capture_output = True +accesslog = "-" + # Configure security scheme headers for forwarded requests. Cloudflare sets X-Forwarded-Proto # for us. Don't trust any of the other similar headers. Only trust the header if it's coming # from localhost, as all legitimate traffic will reach gunicorn via co-located nginx. From e19761d6043f09883c1989b62334fb8837390581 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Apr 2026 21:43:37 -0300 Subject: [PATCH 125/161] fix: bind gunicorn on all interfaces (#10774) * fix: bind gunicorn on all interfaces * fix: something conflicts with ipv6 - loopback only * fix: bind all ipv6 (conflict is in dev only) --- dev/build/gunicorn.conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/gunicorn.conf.py b/dev/build/gunicorn.conf.py index 37991a55dc..18f6d0aad1 100644 --- a/dev/build/gunicorn.conf.py +++ b/dev/build/gunicorn.conf.py @@ -12,8 +12,8 @@ from opentelemetry.instrumentation.pymemcache import PymemcacheInstrumentor from opentelemetry.instrumentation.requests import RequestsInstrumentor -# Bind interfaces for both ipv4 and ipv6 -bind = ["127.0.0.1:8000", "[::1]:8000"] +# Bind all ipv4 and ipv6 interfaces +bind = ["0.0.0.0:8000", "[::]:8000"] # Disable control socket control_socket_disable = True From 7649d1c4b6f5cc669dd70d4512042a867c2081e1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Apr 2026 22:15:11 -0300 Subject: [PATCH 126/161] fix: bind gunicorn to ipv6 loopback only (#10776) Something conflicts with [::]:8000... --- dev/build/gunicorn.conf.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev/build/gunicorn.conf.py b/dev/build/gunicorn.conf.py index 18f6d0aad1..be8808ec48 100644 --- a/dev/build/gunicorn.conf.py +++ b/dev/build/gunicorn.conf.py @@ -12,8 +12,9 @@ from opentelemetry.instrumentation.pymemcache import PymemcacheInstrumentor from opentelemetry.instrumentation.requests import RequestsInstrumentor -# Bind all ipv4 and ipv6 interfaces -bind = ["0.0.0.0:8000", "[::]:8000"] +# Bind all ipv4 interfaces and ipv6 loopback interface. Would prefer to bind all +# ipv6 as well, but something conflicts with [::]:8000. +bind = ["0.0.0.0:8000", "[::1]:8000"] # Disable control socket control_socket_disable = True From d9196b53cfa5d0034ddb9aae7d4e40f91404a3b5 Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Thu, 30 Apr 2026 02:56:00 +1200 Subject: [PATCH 127/161] fix: Disable calt font feature (#10779) --- ietf/static/css/ietf.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ietf/static/css/ietf.scss b/ietf/static/css/ietf.scss index 6695c57b13..b8c701eae1 100644 --- a/ietf/static/css/ietf.scss +++ b/ietf/static/css/ietf.scss @@ -46,6 +46,11 @@ $bootstrap-icons-font-src: url("npm:bootstrap-icons/font/fonts/bootstrap-icons.w url("npm:bootstrap-icons/font/fonts/bootstrap-icons.woff") format("woff"); @import "bootstrap-icons/font/bootstrap-icons"; +// Disable contextual alternates (calt) +body { + font-feature-settings: "calt" off; +} + // Leave room for fixed-top navbar... body.navbar-offset { padding-top: 60px; From 2fba35f76c37f9492b6411c2586c8c75c4aef7ee Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 29 Apr 2026 11:56:31 -0300 Subject: [PATCH 128/161] fix: 2xx == success on red precomputer POST (#10783) --- ietf/doc/utils_red.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/utils_red.py b/ietf/doc/utils_red.py index bcda893dca..5c5879d688 100644 --- a/ietf/doc/utils_red.py +++ b/ietf/doc/utils_red.py @@ -23,7 +23,7 @@ def trigger_red_precomputer(rfc_number_list=()): except requests.Timeout as e: log(f"POST request timed out for {url} : {e}") return - if response.status_code != 200: + if response.status_code // 100 != 2: # 2xx status codes are ok log( f"POST request failed for {url} : status_code={response.status_code}" ) From a7bfb91875332bc88294ca6ab32aeeaf770bd3ad Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 29 Apr 2026 19:59:45 -0300 Subject: [PATCH 129/161] feat: write rfc-index and friends to filesystem (#10784) * feat: write rfc-index and friends to filesystem * style: ruff * fix: create subdir if needed * test: test_save_to_filesystem() * test: check that indexes are written to fs * style: ruff ruff --- ietf/sync/rfcindex.py | 42 +++++++++++++--- ietf/sync/tests_rfcindex.py | 96 +++++++++++++++++++++++++++++-------- 2 files changed, 112 insertions(+), 26 deletions(-) diff --git a/ietf/sync/rfcindex.py b/ietf/sync/rfcindex.py index d1a0ed432f..be55a6866e 100644 --- a/ietf/sync/rfcindex.py +++ b/ietf/sync/rfcindex.py @@ -1,8 +1,9 @@ # Copyright The IETF Trust 2026, All Rights Reserved import datetime import json +import shutil from collections import defaultdict -from collections.abc import Container +from collections.abc import Container, Iterable from dataclasses import dataclass from itertools import chain from operator import attrgetter, itemgetter @@ -60,6 +61,25 @@ def save_to_red_bucket(filename: str, content: str | bytes): log(f"Saved {bucket_path} in red_bucket storage") +def save_to_filesystem( + filename: str, content: str | bytes, subdirs: Iterable[str] = () +): + """Save contents to the RFC_PATH in the filesystem + + Always saves directly to settings.RFC_PATH/filename. Additionally saves a copy + to settings.RFC_PATH/subdir/filename for each entry in subdirs. Uses shutil.copy2 + to create the copies, which will preserve mtime and other metadata between copies. + """ + rfc_path = Path(settings.RFC_PATH) + dest_path = rfc_path / filename + dest_path.write_bytes( + content if isinstance(content, bytes) else content.encode("utf-8") + ) + for subdir in subdirs: + (rfc_path / subdir).mkdir(parents=False, exist_ok=True) + shutil.copy2(dest_path, rfc_path / subdir / filename) + + @dataclass class UnusableRfcNumber: rfc_number: int @@ -660,7 +680,9 @@ def create_rfc_txt_index(): "rfcs": get_rfc_text_index_entries(), }, ) - save_to_red_bucket("rfc-index.txt", index) + filename = "rfc-index.txt" + save_to_red_bucket(filename, index) + save_to_filesystem(filename, index) def create_rfc_xml_index(): @@ -696,7 +718,9 @@ def create_rfc_xml_index(): xml_declaration=True, pretty_print=4, ) - save_to_red_bucket("rfc-index.xml", pretty_index) + filename = "rfc-index.xml" + save_to_red_bucket(filename, pretty_index) + save_to_filesystem(filename, pretty_index) def create_bcp_txt_index(): @@ -711,7 +735,9 @@ def create_bcp_txt_index(): "bcps": get_bcp_text_index_entries(), }, ) - save_to_red_bucket("bcp-index.txt", index) + filename = "bcp-index.txt" + save_to_red_bucket(filename, index) + save_to_filesystem(filename, index, ["bcp"]) def create_std_txt_index(): @@ -726,7 +752,9 @@ def create_std_txt_index(): "stds": get_std_text_index_entries(), }, ) - save_to_red_bucket("std-index.txt", index) + filename = "std-index.txt" + save_to_red_bucket(filename, index) + save_to_filesystem(filename, index, ["std"]) def create_fyi_txt_index(): @@ -741,7 +769,9 @@ def create_fyi_txt_index(): "fyis": get_fyi_text_index_entries(), }, ) - save_to_red_bucket("fyi-index.txt", index) + filename = "fyi-index.txt" + save_to_red_bucket(filename, index) + save_to_filesystem(filename, index, ["fyi"]) ## DirtyBits management for the RFC index diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py index 541ffbb228..74fa9e7616 100644 --- a/ietf/sync/tests_rfcindex.py +++ b/ietf/sync/tests_rfcindex.py @@ -1,7 +1,9 @@ # Copyright The IETF Trust 2026, All Rights Reserved import json +from pathlib import Path from unittest import mock +from django.conf import settings from django.core.files.base import ContentFile from django.core.files.storage import storages from django.test.utils import override_settings @@ -27,6 +29,7 @@ get_unusable_rfc_numbers, save_to_red_bucket, subseries_text_line, + save_to_filesystem, ) from ietf.utils.test_utils import TestCase @@ -107,12 +110,17 @@ def tearDown(self): super().tearDown() @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_filesystem") @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") - def test_create_rfc_txt_index(self, mock_save): + def test_create_rfc_txt_index(self, mock_save_blob, mock_save_file): create_rfc_txt_index() - self.assertEqual(mock_save.call_count, 1) - self.assertEqual(mock_save.call_args[0][0], "rfc-index.txt") - contents = mock_save.call_args[0][1] + self.assertEqual(mock_save_blob.call_count, 1) + self.assertEqual(mock_save_blob.call_args[0][0], "rfc-index.txt") + contents = mock_save_blob.call_args[0][1] + + self.assertEqual(mock_save_file.call_count, 1) + self.assertEqual(mock_save_file.call_args, mock.call("rfc-index.txt", contents)) + self.assertTrue(isinstance(contents, str)) self.assertIn( "123 Not Issued.", @@ -136,12 +144,17 @@ def test_create_rfc_txt_index(self, mock_save): self.assertNotIn("1 April 2021", contents) @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_filesystem") @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") - def test_create_rfc_xml_index(self, mock_save): + def test_create_rfc_xml_index(self, mock_save_blob, mock_save_file): create_rfc_xml_index() - self.assertEqual(mock_save.call_count, 1) - self.assertEqual(mock_save.call_args[0][0], "rfc-index.xml") - contents = mock_save.call_args[0][1] + self.assertEqual(mock_save_blob.call_count, 1) + self.assertEqual(mock_save_blob.call_args[0][0], "rfc-index.xml") + contents = mock_save_blob.call_args[0][1] + + self.assertEqual(mock_save_file.call_count, 1) + self.assertEqual(mock_save_file.call_args, mock.call("rfc-index.xml", contents)) + self.assertTrue(isinstance(contents, bytes)) ns = "{https://www.rfc-editor.org/rfc-index}" # NOT an f-string index = etree.fromstring(contents) @@ -204,12 +217,20 @@ def test_create_rfc_xml_index(self, mock_save): ) @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_filesystem") @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") - def test_create_bcp_txt_index(self, mock_save): + def test_create_bcp_txt_index(self, mock_save_blob, mock_save_file): create_bcp_txt_index() - self.assertEqual(mock_save.call_count, 1) - self.assertEqual(mock_save.call_args[0][0], "bcp-index.txt") - contents = mock_save.call_args[0][1] + self.assertEqual(mock_save_blob.call_count, 1) + self.assertEqual(mock_save_blob.call_args[0][0], "bcp-index.txt") + contents = mock_save_blob.call_args[0][1] + + self.assertEqual(mock_save_file.call_count, 1) + self.assertEqual( + mock_save_file.call_args, + mock.call("bcp-index.txt", contents, ["bcp"]), + ) + self.assertTrue(isinstance(contents, str)) # starts from 1 self.assertIn( @@ -255,12 +276,20 @@ def test_create_bcp_txt_index(self, mock_save): ) @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_filesystem") @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") - def test_create_std_txt_index(self, mock_save): + def test_create_std_txt_index(self, mock_save_blob, mock_save_file): create_std_txt_index() - self.assertEqual(mock_save.call_count, 1) - self.assertEqual(mock_save.call_args[0][0], "std-index.txt") - contents = mock_save.call_args[0][1] + self.assertEqual(mock_save_blob.call_count, 1) + self.assertEqual(mock_save_blob.call_args[0][0], "std-index.txt") + contents = mock_save_blob.call_args[0][1] + + self.assertEqual(mock_save_file.call_count, 1) + self.assertEqual( + mock_save_file.call_args, + mock.call("std-index.txt", contents, ["std"]), + ) + self.assertTrue(isinstance(contents, str)) # starts from 1 self.assertIn( @@ -306,12 +335,20 @@ def test_create_std_txt_index(self, mock_save): ) @override_settings(RFCINDEX_INPUT_PATH="input/") + @mock.patch("ietf.sync.rfcindex.save_to_filesystem") @mock.patch("ietf.sync.rfcindex.save_to_red_bucket") - def test_create_fyi_txt_index(self, mock_save): + def test_create_fyi_txt_index(self, mock_save_blob, mock_save_file): create_fyi_txt_index() - self.assertEqual(mock_save.call_count, 1) - self.assertEqual(mock_save.call_args[0][0], "fyi-index.txt") - contents = mock_save.call_args[0][1] + self.assertEqual(mock_save_blob.call_count, 1) + self.assertEqual(mock_save_blob.call_args[0][0], "fyi-index.txt") + contents = mock_save_blob.call_args[0][1] + + self.assertEqual(mock_save_file.call_count, 1) + self.assertEqual( + mock_save_file.call_args, + mock.call("fyi-index.txt", contents, ["fyi"]), + ) + self.assertTrue(isinstance(contents, str)) # starts from 1 self.assertIn( @@ -377,6 +414,25 @@ def test_save_to_red_bucket(self): self.assertEqual(f.read().decode("utf-8"), "new contents \U0001fae0") red_bucket.delete("test") # clean up like a good child + def test_save_to_filesystem(self): + rfc_path = Path(settings.RFC_PATH) + self.assertFalse((rfc_path / "test").exists()) + save_to_filesystem("test", "contents \U0001f600") + self.assertEqual((rfc_path / "test").read_text("utf-8"), "contents \U0001f600") + self.assertFalse((rfc_path / "subdir" / "test").exists()) + + self.assertFalse((rfc_path / "test2").exists()) + self.assertFalse((rfc_path / "subdir" / "test2").exists()) + save_to_filesystem("test", "contents \U0001f600".encode("utf-8"), ["subdir"]) + self.assertEqual((rfc_path / "test").read_text("utf-8"), "contents \U0001f600") + self.assertEqual( + (rfc_path / "subdir" / "test").read_text("utf-8"), "contents \U0001f600" + ) + self.assertEqual( + (rfc_path / "test").stat().st_mtime, + (rfc_path / "subdir" / "test").stat().st_mtime, + ) + def test_get_unusable_rfc_numbers_raises(self): """get_unusable_rfc_numbers should bail on errors""" with self.assertRaises(FileNotFoundError): From dd6334ae586ac634ff3aab7f598316f86ef0e846 Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Thu, 30 Apr 2026 14:53:21 +1200 Subject: [PATCH 130/161] feat: Check if any files exists before publishing RFC (#10782) * style: Ruff ruff Good boy! * feat: Check if any files exists before publishing RFC * refactor: Drop temporary dir creation * refactor: Use helper mixins * test: Add test for blobs * chore: Improve comment --- ietf/api/tests_views_rpc.py | 369 ++++++++++++++++++++---------------- ietf/api/views_rpc.py | 96 ++++++---- 2 files changed, 269 insertions(+), 196 deletions(-) diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 180221cffc..c836cdc2c0 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -2,7 +2,6 @@ import datetime from io import StringIO from pathlib import Path -from tempfile import TemporaryDirectory from django.conf import settings from django.core.files.base import ContentFile @@ -13,8 +12,14 @@ import mock from django.utils import timezone +from ietf.api.views_rpc import DestinationHelperMixin from ietf.blobdb.models import Blob -from ietf.doc.factories import IndividualDraftFactory, RfcFactory, WgDraftFactory, WgRfcFactory +from ietf.doc.factories import ( + IndividualDraftFactory, + RfcFactory, + WgDraftFactory, + WgRfcFactory, +) from ietf.doc.models import RelatedDocument, Document from ietf.group.factories import RoleFactory, GroupFactory from ietf.person.factories import PersonFactory @@ -135,6 +140,27 @@ def test_notify_rfc_published(self, mock_task_delay): r = self.client.post(url, data=post_data, format="json") self.assertEqual(r.status_code, 403) + # Put a file in the way. Post should fail because files exists + rfc_path = Path(settings.RFC_PATH) + (rfc_path / "prerelease").mkdir() + file_in_the_way = rfc_path / f"rfc{unused_rfc_number}.txt" + file_in_the_way.touch() + r = self.client.post( + url, data=post_data, format="json", headers={"X-Api-Key": "valid-token"} + ) + self.assertEqual(r.status_code, 409) # conflict + file_in_the_way.unlink() + + # Put a blob in the way. Post should fail because replace = False + blob_in_the_way = Blob.objects.create( + bucket="rfc", name=f"txt/rfc{unused_rfc_number}.txt", content=b"" + ) + r = self.client.post( + url, data=post_data, format="json", headers={"X-Api-Key": "valid-token"} + ) + self.assertEqual(r.status_code, 409) # conflict + blob_in_the_way.delete() + r = self.client.post( url, data=post_data, format="json", headers={"X-Api-Key": "valid-token"} ) @@ -193,9 +219,7 @@ def test_notify_rfc_published(self, mock_task_delay): mock_args, mock_kwargs = mock_task_delay.call_args self.assertIn("rfc_number_list", mock_kwargs) expected_rfc_number_list = [rfc.rfc_number] - expected_rfc_number_list.extend( - [d.rfc_number for d in updates + obsoletes] - ) + expected_rfc_number_list.extend([d.rfc_number for d in updates + obsoletes]) expected_rfc_number_list = sorted(set(expected_rfc_number_list)) self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) @@ -238,178 +262,173 @@ def _valid_post_data(): for r in updates: rfc.relateddocument_set.create(relationship_id="updates", target=r) assert isinstance(rfc, Document), "WgRfcFactory should generate a Document" - with TemporaryDirectory() as rfc_dir: - settings.RFC_PATH = rfc_dir # affects overridden settings - rfc_path = Path(rfc_dir) - (rfc_path / "prerelease").mkdir() - content = StringIO("XML content\n") - content.name = "myrfc.xml" + rfc_path = Path(settings.RFC_PATH) + (rfc_path / "prerelease").mkdir() + content = StringIO("XML content\n") + content.name = "myrfc.xml" - # no api key - r = self.client.post(url, _valid_post_data(), format="multipart") - self.assertEqual(r.status_code, 403) - self.assertFalse(mock_update_searchindex_task.delay.called) + # no api key + r = self.client.post(url, _valid_post_data(), format="multipart") + self.assertEqual(r.status_code, 403) + self.assertFalse(mock_update_searchindex_task.delay.called) - # invalid RFC - r = self.client.post( - url, - _valid_post_data() | {"rfc": rfc.rfc_number + 10}, - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 400) - self.assertFalse(mock_update_searchindex_task.delay.called) + # invalid RFC + r = self.client.post( + url, + _valid_post_data() | {"rfc": rfc.rfc_number + 10}, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) - # empty files - r = self.client.post( - url, - _valid_post_data() | { - "contents": [ - ContentFile(b"", "myfile.xml"), - ContentFile(b"", "myfile.txt"), - ContentFile(b"", "myfile.html"), - ContentFile(b"", "myfile.pdf"), - ContentFile(b"", "myfile.json"), - ContentFile(b"", "myfile.notprepped.xml"), - ] - }, - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 400) - self.assertFalse(mock_update_searchindex_task.delay.called) + # empty files + r = self.client.post( + url, + _valid_post_data() + | { + "contents": [ + ContentFile(b"", "myfile.xml"), + ContentFile(b"", "myfile.txt"), + ContentFile(b"", "myfile.html"), + ContentFile(b"", "myfile.pdf"), + ContentFile(b"", "myfile.json"), + ContentFile(b"", "myfile.notprepped.xml"), + ] + }, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) - # bad file type - r = self.client.post( - url, - _valid_post_data() | { - "contents": [ - ContentFile(b"Some content", "myfile.jpg"), - ] - }, - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 400) - self.assertFalse(mock_update_searchindex_task.delay.called) + # bad file type + r = self.client.post( + url, + _valid_post_data() + | { + "contents": [ + ContentFile(b"Some content", "myfile.jpg"), + ] + }, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(mock_update_searchindex_task.delay.called) - # Put a file in the way. Post should fail because replace = False - file_in_the_way = (rfc_path / f"{rfc.name}.txt") - file_in_the_way.touch() - r = self.client.post( - url, - _valid_post_data(), - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 409) # conflict - self.assertFalse(mock_update_searchindex_task.delay.called) - file_in_the_way.unlink() - - # Put a blob in the way. Post should fail because replace = False - blob_in_the_way = Blob.objects.create( - bucket="rfc", name=f"txt/{rfc.name}.txt", content=b"" - ) - r = self.client.post( - url, - _valid_post_data(), - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 409) # conflict - self.assertFalse(mock_update_searchindex_task.delay.called) - blob_in_the_way.delete() + # Put a file in the way. Post should fail because replace = False + file_in_the_way = rfc_path / f"{rfc.name}.txt" + file_in_the_way.touch() + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + self.assertFalse(mock_update_searchindex_task.delay.called) + file_in_the_way.unlink() - # valid post - mock_trigger_red_task.delay.reset_mock() - r = self.client.post( - url, - _valid_post_data(), - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 200) - self.assertEqual( - mock_update_searchindex_task.delay.call_args, - mock.call(rfc.rfc_number), - ) - for extension in ["xml", "txt", "html", "pdf", "json"]: - filename = f"{rfc.name}.{extension}" - self.assertEqual( - (rfc_path / filename) - .read_text(), - f"This is .{extension}", - f"{extension} file should contain the expected content", - ) - self.assertEqual( - bytes( - Blob.objects.get( - bucket="rfc", name=f"{extension}/{filename}" - ).content - ), - f"This is .{extension}".encode("utf-8"), - f"{extension} blob should contain the expected content", - ) - # special case for notprepped - notprepped_fn = f"{rfc.name}.notprepped.xml" + # Put a blob in the way. Post should fail because replace = False + blob_in_the_way = Blob.objects.create( + bucket="rfc", name=f"txt/{rfc.name}.txt", content=b"" + ) + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + self.assertFalse(mock_update_searchindex_task.delay.called) + blob_in_the_way.delete() + + # valid post + mock_trigger_red_task.delay.reset_mock() + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) + for extension in ["xml", "txt", "html", "pdf", "json"]: + filename = f"{rfc.name}.{extension}" self.assertEqual( - ( - rfc_path / "prerelease" / notprepped_fn - ).read_text(), - "This is .notprepped.xml", - ".notprepped.xml file should contain the expected content", + (rfc_path / filename).read_text(), + f"This is .{extension}", + f"{extension} file should contain the expected content", ) self.assertEqual( bytes( Blob.objects.get( - bucket="rfc", name=f"notprepped/{notprepped_fn}" + bucket="rfc", name=f"{extension}/{filename}" ).content ), - b"This is .notprepped.xml", - ".notprepped.xml blob should contain the expected content", - ) - # Confirm that the red precomputer was triggered correctly - self.assertTrue(mock_trigger_red_task.delay.called) - _, mock_kwargs = mock_trigger_red_task.delay.call_args - self.assertIn("rfc_number_list", mock_kwargs) - expected_rfc_number_list = [rfc.rfc_number] - expected_rfc_number_list.extend( - [d.rfc_number for d in updates + obsoletes] + f"This is .{extension}".encode("utf-8"), + f"{extension} blob should contain the expected content", ) - expected_rfc_number_list = sorted(set(expected_rfc_number_list)) - self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) - # Confirm that the search index update task was called correctly - self.assertTrue(mock_update_searchindex_task.delay.called) - # Confirm reference relations rebuild task was called correctly - self.assertTrue(mock_rebuild_relations.delay.called) - _, mock_kwargs = mock_rebuild_relations.delay.call_args - self.assertIn("doc_names", mock_kwargs) - self.assertEqual(mock_kwargs["doc_names"], [rfc.name]) + # special case for notprepped + notprepped_fn = f"{rfc.name}.notprepped.xml" + self.assertEqual( + (rfc_path / "prerelease" / notprepped_fn).read_text(), + "This is .notprepped.xml", + ".notprepped.xml file should contain the expected content", + ) + self.assertEqual( + bytes( + Blob.objects.get( + bucket="rfc", name=f"notprepped/{notprepped_fn}" + ).content + ), + b"This is .notprepped.xml", + ".notprepped.xml blob should contain the expected content", + ) + # Confirm that the red precomputer was triggered correctly + self.assertTrue(mock_trigger_red_task.delay.called) + _, mock_kwargs = mock_trigger_red_task.delay.call_args + self.assertIn("rfc_number_list", mock_kwargs) + expected_rfc_number_list = [rfc.rfc_number] + expected_rfc_number_list.extend([d.rfc_number for d in updates + obsoletes]) + expected_rfc_number_list = sorted(set(expected_rfc_number_list)) + self.assertEqual(mock_kwargs["rfc_number_list"], expected_rfc_number_list) + # Confirm that the search index update task was called correctly + self.assertTrue(mock_update_searchindex_task.delay.called) + # Confirm reference relations rebuild task was called correctly + self.assertTrue(mock_rebuild_relations.delay.called) + _, mock_kwargs = mock_rebuild_relations.delay.call_args + self.assertIn("doc_names", mock_kwargs) + self.assertEqual(mock_kwargs["doc_names"], [rfc.name]) - # re-post with replace = False should now fail - mock_update_searchindex_task.reset_mock() - r = self.client.post( - url, - _valid_post_data(), - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 409) # conflict - self.assertFalse(mock_update_searchindex_task.delay.called) + # re-post with replace = False should now fail + mock_update_searchindex_task.reset_mock() + r = self.client.post( + url, + _valid_post_data(), + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 409) # conflict + self.assertFalse(mock_update_searchindex_task.delay.called) - # re-post with replace = True should succeed - r = self.client.post( - url, - _valid_post_data() | {"replace": True}, - format="multipart", - headers={"X-Api-Key": "valid-token"}, - ) - self.assertEqual(r.status_code, 200) - self.assertTrue(mock_update_searchindex_task.delay.called) - self.assertEqual( - mock_update_searchindex_task.delay.call_args, - mock.call(rfc.rfc_number), - ) + # re-post with replace = True should succeed + r = self.client.post( + url, + _valid_post_data() | {"replace": True}, + format="multipart", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + self.assertTrue(mock_update_searchindex_task.delay.called) + self.assertEqual( + mock_update_searchindex_task.delay.call_args, + mock.call(rfc.rfc_number), + ) @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) def test_refresh_rfc_index(self): @@ -430,3 +449,31 @@ def test_refresh_rfc_index(self): response = self.client.post(url, headers={"X-Api-Key": "valid-token"}) self.assertEqual(response.status_code, 202) self.assertTrue(rfcindex_is_dirty()) + + def test_destination_helper_mixin_fs_destination(self): + file_list = [f"rfc31337.{ext}" for ext in ["txt", "xml", "pdf", "html"]] + for filename in file_list: + self.assertEqual( + DestinationHelperMixin().fs_destination(filename), + Path(f"{settings.RFC_PATH}") / filename, + ) + # noteprepped xml + filename = "rfc31337.notprepped.xml" + self.assertEqual( + DestinationHelperMixin().fs_destination(filename), + Path(f"{settings.RFC_PATH}/prerelease") / filename, + ) + + def test_destination_helper_mixin_blob_destination(self): + file_list = {ext: f"rfc31337.{ext}" for ext in ["txt", "xml", "pdf", "html"]} + for file_type, filename in file_list.items(): + self.assertEqual( + DestinationHelperMixin().blob_destination(filename), + f"{file_type}/{filename}", + ) + # noteprepped xml + filename = "rfc31337.notprepped.xml" + self.assertEqual( + DestinationHelperMixin().blob_destination(filename), + f"notprepped/{filename}", + ) diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 6bc45fe3da..e9c17b8a12 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -368,7 +368,38 @@ def get_queryset(self): ) -class RfcPubNotificationView(APIView): +class DestinationHelperMixin: + def fs_destination(self, filename: str | Path) -> Path: + """Destination for an uploaded RFC file in the filesystem + + Strips any path components in filename and returns an absolute Path. + """ + rfc_path = Path(settings.RFC_PATH) + filename = Path(filename) # could potentially have directory components + extension = "".join(filename.suffixes) + if extension == ".notprepped.xml": + return rfc_path / "prerelease" / filename.name + return rfc_path / filename.name + + def blob_destination(self, filename: str | Path) -> str: + """Destination name for an uploaded RFC file in the blob store + + Strips any path components in filename and returns an absolute Path. + """ + filename = Path(filename) # could potentially have directory components + extension = "".join(filename.suffixes) + if extension == ".notprepped.xml": + file_type = "notprepped" + elif extension[0] == ".": + file_type = extension[1:] + else: + raise serializers.ValidationError( + f"Extension does not begin with '.'!? ({filename})", + ) + return f"{file_type}/{filename.name}" + + +class RfcPubNotificationView(DestinationHelperMixin, APIView): api_key_endpoint = "ietf.api.views_rpc" @extend_schema( @@ -380,6 +411,30 @@ class RfcPubNotificationView(APIView): def post(self, request): serializer = RfcPubSerializer(data=request.data) serializer.is_valid(raise_exception=True) + # Check blobstore & filesystem for conflicts + rfc_number = serializer.validated_data["rfc_number"] + dest_stem = f"rfc{rfc_number}" + blob_kind = "rfc" + possible_rfc_files = [ + self.fs_destination(dest_stem + ext) + for ext in RfcFileSerializer.allowed_extensions + ] + possible_rfc_blobs = [ + self.blob_destination(dest_stem + ext) + for ext in RfcFileSerializer.allowed_extensions + ] + for possible_existing_file in possible_rfc_files: + if possible_existing_file.exists(): + raise Conflict( + "File(s) already exist for this RFC", + code="files-exist", + ) + for possible_existing_blob in possible_rfc_blobs: + if exists_in_storage(kind=blob_kind, name=possible_existing_blob): + raise Conflict( + "Blob(s) already exist for this RFC", + code="blobs-exist", + ) # Create RFC try: rfc = serializer.save() @@ -404,39 +459,10 @@ def post(self, request): return Response(NotificationAckSerializer().data) -class RfcPubFilesView(APIView): +class RfcPubFilesView(DestinationHelperMixin, APIView): api_key_endpoint = "ietf.api.views_rpc" parser_classes = [parsers.MultiPartParser] - def _fs_destination(self, filename: str | Path) -> Path: - """Destination for an uploaded RFC file in the filesystem - - Strips any path components in filename and returns an absolute Path. - """ - rfc_path = Path(settings.RFC_PATH) - filename = Path(filename) # could potentially have directory components - extension = "".join(filename.suffixes) - if extension == ".notprepped.xml": - return rfc_path / "prerelease" / filename.name - return rfc_path / filename.name - - def _blob_destination(self, filename: str | Path) -> str: - """Destination name for an uploaded RFC file in the blob store - - Strips any path components in filename and returns an absolute Path. - """ - filename = Path(filename) # could potentially have directory components - extension = "".join(filename.suffixes) - if extension == ".notprepped.xml": - file_type = "notprepped" - elif extension[0] == ".": - file_type = extension[1:] - else: - raise serializers.ValidationError( - f"Extension does not begin with '.'!? ({filename})", - ) - return f"{file_type}/{filename.name}" - @extend_schema( operation_id="upload_rfc_files", summary="Upload files for a published RFC", @@ -459,11 +485,11 @@ def post(self, request): # List of files that might exist for an RFC possible_rfc_files = [ - self._fs_destination(dest_stem + ext) + self.fs_destination(dest_stem + ext) for ext in serializer.allowed_extensions ] possible_rfc_blobs = [ - self._blob_destination(dest_stem + ext) + self.blob_destination(dest_stem + ext) for ext in serializer.allowed_extensions ] if not replace: @@ -508,13 +534,13 @@ def post(self, request): with ftm.open("rb") as f: store_file( kind=blob_kind, - name=self._blob_destination(ftm), + name=self.blob_destination(ftm), file=f, doc_name=rfc.name, doc_rev=rfc.rev, # expect blank, but match whatever it is mtime=mtime, ) - destination = self._fs_destination(ftm) + destination = self.fs_destination(ftm) if ( settings.SERVER_MODE != "production" and not destination.parent.exists() From 7f25c287d83545a9123117e112baf4b585d7c59c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 Apr 2026 13:15:47 -0300 Subject: [PATCH 131/161] chore: add DATATRACKER_BROKER_URL config option (#10785) --- k8s/settings_local.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 251f11234f..19d0a1c2f5 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -155,14 +155,18 @@ def _multiline_to_list(s): EMAIL_HOST = os.environ.get("DATATRACKER_EMAIL_HOST", "localhost") EMAIL_PORT = int(os.environ.get("DATATRACKER_EMAIL_PORT", "2025")) +_broker_url = os.environ.get("DATATRACKER_BROKER_URL", None) _celery_password = os.environ.get("CELERY_PASSWORD", None) -if _celery_password is None: - raise RuntimeError("CELERY_PASSWORD must be set") -CELERY_BROKER_URL = "amqp://datatracker:{password}@{host}/{queue}".format( - host=os.environ.get("RABBITMQ_HOSTNAME", "dt-rabbitmq"), - password=_celery_password, - queue=os.environ.get("RABBITMQ_QUEUE", "dt"), -) +if _broker_url is not None: + CELERY_BROKER_URL = _broker_url +elif _celery_password is not None: + CELERY_BROKER_URL = "amqp://datatracker:{password}@{host}/{queue}".format( + host=os.environ.get("RABBITMQ_HOSTNAME", "dt-rabbitmq"), + password=_celery_password, + queue=os.environ.get("RABBITMQ_QUEUE", "dt"), + ) +else: + raise RuntimeError("DATATRACKER_BROKER_URL or CELERY_PASSWORD must be set") # mailarchive API key _mailing_list_archive_api_key = os.environ.get( From 56009e7dda34e92acdda1b2b3301cefe8b203df2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 Apr 2026 14:34:50 -0300 Subject: [PATCH 132/161] ci: increase staging/prod deploy timeouts --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 49a0e5b53b..ff84408187 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -466,7 +466,7 @@ jobs: token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}" }' wait-for-completion: true - wait-for-completion-timeout: 10m + wait-for-completion-timeout: 30m wait-for-completion-interval: 30s display-workflow-run-url: false @@ -493,6 +493,6 @@ jobs: token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}" }' wait-for-completion: true - wait-for-completion-timeout: 10m + wait-for-completion-timeout: 30m wait-for-completion-interval: 30s display-workflow-run-url: false From 65cd4ab1ef9ab9316270561f53ed66c47231d7f9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 Apr 2026 18:17:28 -0300 Subject: [PATCH 133/161] fix: pkgs via npm, not CDN; alt-drag for zoom (#10795) --- .pnp.cjs | 102 ++++++++++++++++++++ ietf/static/js/meeting_stats.js | 5 +- ietf/static/js/meeting_timeline.js | 10 +- ietf/templates/stats/meeting_stats.html | 3 - ietf/templates/stats/meetings_timeline.html | 4 - package.json | 4 + yarn.lock | 63 ++++++++++++ 7 files changed, 181 insertions(+), 10 deletions(-) diff --git a/.pnp.cjs b/.pnp.cjs index 5fcce34d2f..6c76263c7e 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -42,6 +42,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ + ["@kurkle/color", "npm:0.3.1"],\ ["@parcel/optimizer-data-url", "npm:2.12.0"],\ ["@parcel/transformer-inline-string", "npm:2.12.0"],\ ["@parcel/transformer-sass", "npm:2.12.0"],\ @@ -56,6 +57,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["browserlist", "npm:1.0.1"],\ ["c8", "npm:9.1.0"],\ ["caniuse-lite", "npm:1.0.30001603"],\ + ["chart.js", "npm:4.5.1"],\ + ["chartjs-plugin-autocolors", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:0.3.1"],\ + ["chartjs-plugin-zoom", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.2.0"],\ ["d3", "npm:7.9.0"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ @@ -883,6 +887,22 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@kurkle/color", [\ + ["npm:0.3.1", {\ + "packageLocation": "./.yarn/cache/@kurkle-color-npm-0.3.1-174f3d038c-e6be5c081b.zip/node_modules/@kurkle/color/",\ + "packageDependencies": [\ + ["@kurkle/color", "npm:0.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.3.4", {\ + "packageLocation": "./.yarn/cache/@kurkle-color-npm-0.3.4-fbd637031f-b95c6abe02.zip/node_modules/@kurkle/color/",\ + "packageDependencies": [\ + ["@kurkle/color", "npm:0.3.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@lezer/common", [\ ["npm:0.15.12", {\ "packageLocation": "./.yarn/cache/@lezer-common-npm-0.15.12-62017272b0-dae6581618.zip/node_modules/@lezer/common/",\ @@ -2616,6 +2636,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@types/hammerjs", [\ + ["npm:2.0.46", {\ + "packageLocation": "./.yarn/cache/@types-hammerjs-npm-2.0.46-de99d4d9d1-caba6ec788.zip/node_modules/@types/hammerjs/",\ + "packageDependencies": [\ + ["@types/hammerjs", "npm:2.0.46"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/istanbul-lib-coverage", [\ ["npm:2.0.4", {\ "packageLocation": "./.yarn/cache/@types-istanbul-lib-coverage-npm-2.0.4-734954bb56-a25d7589ee.zip/node_modules/@types/istanbul-lib-coverage/",\ @@ -3545,6 +3574,66 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["chart.js", [\ + ["npm:4.5.1", {\ + "packageLocation": "./.yarn/cache/chart.js-npm-4.5.1-97698d58cc-34b35b3736.zip/node_modules/chart.js/",\ + "packageDependencies": [\ + ["chart.js", "npm:4.5.1"],\ + ["@kurkle/color", "npm:0.3.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chartjs-plugin-autocolors", [\ + ["npm:0.3.1", {\ + "packageLocation": "./.yarn/cache/chartjs-plugin-autocolors-npm-0.3.1-7e93d38139-de4f87b5bb.zip/node_modules/chartjs-plugin-autocolors/",\ + "packageDependencies": [\ + ["chartjs-plugin-autocolors", "npm:0.3.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:0.3.1", {\ + "packageLocation": "./.yarn/__virtual__/chartjs-plugin-autocolors-virtual-6e228c1a1e/0/cache/chartjs-plugin-autocolors-npm-0.3.1-7e93d38139-de4f87b5bb.zip/node_modules/chartjs-plugin-autocolors/",\ + "packageDependencies": [\ + ["chartjs-plugin-autocolors", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:0.3.1"],\ + ["@kurkle/color", "npm:0.3.1"],\ + ["@types/chart.js", null],\ + ["@types/kurkle__color", null],\ + ["chart.js", "npm:4.5.1"]\ + ],\ + "packagePeers": [\ + "@kurkle/color",\ + "@types/chart.js",\ + "@types/kurkle__color",\ + "chart.js"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chartjs-plugin-zoom", [\ + ["npm:2.2.0", {\ + "packageLocation": "./.yarn/cache/chartjs-plugin-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip/node_modules/chartjs-plugin-zoom/",\ + "packageDependencies": [\ + ["chartjs-plugin-zoom", "npm:2.2.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.2.0", {\ + "packageLocation": "./.yarn/__virtual__/chartjs-plugin-zoom-virtual-45332d2c47/0/cache/chartjs-plugin-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip/node_modules/chartjs-plugin-zoom/",\ + "packageDependencies": [\ + ["chartjs-plugin-zoom", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.2.0"],\ + ["@types/chart.js", null],\ + ["@types/hammerjs", "npm:2.0.46"],\ + ["chart.js", "npm:4.5.1"],\ + ["hammerjs", "npm:2.0.8"]\ + ],\ + "packagePeers": [\ + "@types/chart.js",\ + "chart.js"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["chokidar", [\ ["npm:3.5.3", {\ "packageLocation": "./.yarn/cache/chokidar-npm-3.5.3-c5f9b0a56a-b49fcde401.zip/node_modules/chokidar/",\ @@ -5709,6 +5798,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["hammerjs", [\ + ["npm:2.0.8", {\ + "packageLocation": "./.yarn/cache/hammerjs-npm-2.0.8-f656ba2573-b092da7d15.zip/node_modules/hammerjs/",\ + "packageDependencies": [\ + ["hammerjs", "npm:2.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["has", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip/node_modules/has/",\ @@ -8326,6 +8424,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.11"],\ + ["@kurkle/color", "npm:0.3.1"],\ ["@parcel/optimizer-data-url", "npm:2.12.0"],\ ["@parcel/transformer-inline-string", "npm:2.12.0"],\ ["@parcel/transformer-sass", "npm:2.12.0"],\ @@ -8340,6 +8439,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["browserlist", "npm:1.0.1"],\ ["c8", "npm:9.1.0"],\ ["caniuse-lite", "npm:1.0.30001603"],\ + ["chart.js", "npm:4.5.1"],\ + ["chartjs-plugin-autocolors", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:0.3.1"],\ + ["chartjs-plugin-zoom", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.2.0"],\ ["d3", "npm:7.9.0"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ diff --git a/ietf/static/js/meeting_stats.js b/ietf/static/js/meeting_stats.js index 70b18a0f03..cf43d08eb8 100644 --- a/ietf/static/js/meeting_stats.js +++ b/ietf/static/js/meeting_stats.js @@ -1,7 +1,8 @@ // Copyright The IETF Trust 2026, All Rights Reserved +import Chart from 'chart.js/auto' +import autocolors from 'chartjs-plugin-autocolors' + document.addEventListener('DOMContentLoaded', () => { - // Need to use autocolors plug-in else all slices are gray... - const autocolors = window['chartjs-plugin-autocolors'] Chart.register(autocolors) // ── Safely parse JSON data injected from Django view ── const totalChartData = JSON.parse(document.getElementById('total-chart-data').textContent) diff --git a/ietf/static/js/meeting_timeline.js b/ietf/static/js/meeting_timeline.js index 161cead0ec..713fb3ae70 100644 --- a/ietf/static/js/meeting_timeline.js +++ b/ietf/static/js/meeting_timeline.js @@ -1,5 +1,10 @@ // Copyright The IETF Trust 2026, All Rights Reserved +import Chart from 'chart.js/auto' +import zoomPlugin from 'chartjs-plugin-zoom' + document.addEventListener('DOMContentLoaded', () => { + Chart.register(zoomPlugin) // enable the zoom plugin + // ── Safely parse JSON data injected from Django view ── const totalChartData = JSON.parse(document.getElementById('total-chart-data').textContent) const inPersonChartData = JSON.parse(document.getElementById('in-person-chart-data').textContent) @@ -50,7 +55,10 @@ document.addEventListener('DOMContentLoaded', () => { zoom: { wheel: { enabled: true }, // scroll to zoom pinch: { enabled: true }, // pinch on mobile - drag: { enabled: true }, // drag to select range + drag: { // drag to select range + enabled: true, + modifierKey: 'alt' + }, mode: 'xy', // zoom X-axis and Y-axis }, pan: { diff --git a/ietf/templates/stats/meeting_stats.html b/ietf/templates/stats/meeting_stats.html index b32f5a4046..fc41949a2e 100644 --- a/ietf/templates/stats/meeting_stats.html +++ b/ietf/templates/stats/meeting_stats.html @@ -3,9 +3,6 @@ {% origin %} {% load ietf_filters static django_bootstrap5 %} {% block js %} - - - {{ total_chart_data|json_script:"total-chart-data" }} {{ in_person_chart_data|json_script:"in-person-chart-data" }} diff --git a/ietf/templates/stats/meetings_timeline.html b/ietf/templates/stats/meetings_timeline.html index 65fb4e09c0..40f46880cc 100644 --- a/ietf/templates/stats/meetings_timeline.html +++ b/ietf/templates/stats/meetings_timeline.html @@ -3,10 +3,6 @@ {% origin %} {% load ietf_filters static django_bootstrap5 %} {% block js %} - - - - {{ total_chart_data|json_script:"total-chart-data" }} {{ in_person_chart_data|json_script:"in-person-chart-data" }} {{ stats_type|json_script:"stats-type-data" }} diff --git a/package.json b/package.json index 6f61aaba29..29ead19d23 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,16 @@ "@fullcalendar/luxon3": "6.1.11", "@fullcalendar/timegrid": "6.1.11", "@fullcalendar/vue3": "6.1.11", + "@kurkle/color": "0.3.1", "@popperjs/core": "2.11.8", "@twuni/emojify": "1.0.2", "bootstrap": "5.3.3", "bootstrap-icons": "1.11.3", "browser-fs-access": "0.35.0", "caniuse-lite": "1.0.30001603", + "chart.js": "^4.5.1", + "chartjs-plugin-autocolors": "0.3.1", + "chartjs-plugin-zoom": "2.2.0", "d3": "7.9.0", "file-saver": "2.0.5", "highcharts": "11.4.0", diff --git a/yarn.lock b/yarn.lock index 54768ac391..47d675d6b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -532,6 +532,20 @@ __metadata: languageName: node linkType: hard +"@kurkle/color@npm:0.3.1": + version: 0.3.1 + resolution: "@kurkle/color@npm:0.3.1" + checksum: e6be5c081bf5acfd4a1803dcd5a0733caf450e73148d5f02dc536b1ff0c60c959c23472a26c9c3c6c78ada04fb6a53c9202db9b2de8ea56f6eeec381f9cc3a1a + languageName: node + linkType: hard + +"@kurkle/color@npm:^0.3.0": + version: 0.3.4 + resolution: "@kurkle/color@npm:0.3.4" + checksum: b95c6abe0241ba1745b3c84de3b464296b95ce577110b54f46e6c6dcc9a0966491533df43812bd6c66f92cf818e385d1390b280cd5851d4afb52fc37f8a6c0b9 + languageName: node + linkType: hard + "@lezer/common@npm:^0.15.0, @lezer/common@npm:^0.15.7": version: 0.15.12 resolution: "@lezer/common@npm:0.15.12" @@ -1944,6 +1958,13 @@ __metadata: languageName: node linkType: hard +"@types/hammerjs@npm:^2.0.45": + version: 2.0.46 + resolution: "@types/hammerjs@npm:2.0.46" + checksum: caba6ec788d19905c71092670b58514b3d1f5eee5382bf9205e8df688d51e7857b7994e2dd7aed57fac8977bdf0e456d67fbaf23440a4385b8ce25fe2af1ec39 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -2728,6 +2749,37 @@ browserlist@latest: languageName: node linkType: hard +"chart.js@npm:^4.5.1": + version: 4.5.1 + resolution: "chart.js@npm:4.5.1" + dependencies: + "@kurkle/color": ^0.3.0 + checksum: 34b35b373642994b2adac197e91363625930530e29fc1baa6dbb411b5e1295f9f6572922003a0224a21a3019aec916567c1ed00c33b1373081f189fc188e5a7b + languageName: node + linkType: hard + +"chartjs-plugin-autocolors@npm:0.3.1": + version: 0.3.1 + resolution: "chartjs-plugin-autocolors@npm:0.3.1" + peerDependencies: + "@kurkle/color": ^0.3.1 + chart.js: ">=2" + checksum: de4f87b5bb3e042aa1d3de3886425bbd2340a55ca455b645569d0def602079833182ef214e205ff4466fb5ab1e708761cf37eb51ab3cd622284242c05ed94128 + languageName: node + linkType: hard + +"chartjs-plugin-zoom@npm:2.2.0": + version: 2.2.0 + resolution: "chartjs-plugin-zoom@npm:2.2.0" + dependencies: + "@types/hammerjs": ^2.0.45 + hammerjs: ^2.0.8 + peerDependencies: + chart.js: ">=3.2.0" + checksum: a540e3834082eeb4dedb5ec6ca381f94d7e101075c19a7b65f2a4cd2d12685b3a416e718c9cf7145799802874fb397f69b71a955dfc56b035946cde4d1eb6c8e + languageName: node + linkType: hard + "chokidar@npm:>=3.0.0 <4.0.0": version: 3.5.3 resolution: "chokidar@npm:3.5.3" @@ -4616,6 +4668,13 @@ browserlist@latest: languageName: node linkType: hard +"hammerjs@npm:^2.0.8": + version: 2.0.8 + resolution: "hammerjs@npm:2.0.8" + checksum: b092da7d1565a165d7edb53ef0ce212837a8b11f897aa3cf81a7818b66686b0ab3f4747fbce8fc8a41d1376594639ce3a054b0fd4889ca8b5b136a29ca500e27 + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -7030,6 +7089,7 @@ browserlist@latest: "@fullcalendar/luxon3": 6.1.11 "@fullcalendar/timegrid": 6.1.11 "@fullcalendar/vue3": 6.1.11 + "@kurkle/color": 0.3.1 "@parcel/optimizer-data-url": 2.12.0 "@parcel/transformer-inline-string": 2.12.0 "@parcel/transformer-sass": 2.12.0 @@ -7044,6 +7104,9 @@ browserlist@latest: browserlist: latest c8: 9.1.0 caniuse-lite: 1.0.30001603 + chart.js: ^4.5.1 + chartjs-plugin-autocolors: 0.3.1 + chartjs-plugin-zoom: 2.2.0 d3: 7.9.0 eslint: 8.57.0 eslint-config-standard: 17.1.0 From 7e9883d82b7f4d68b6e84bb1ff18e05bdc46b921 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 1 May 2026 17:30:14 -0300 Subject: [PATCH 134/161] fix: ipv4-only for internal traffic (#10800) Listening on ipv6 interfaces may have contributed to increased CPU usage during heavy traffic. This switches back to ipv4 only and configures nginx to use 127.0.0.1 instead of localhost for proxying. Does not affect external access, this is purely internal to the k8s cluster. --- dev/build/gunicorn.conf.py | 5 ++--- docker/configs/nginx-proxy.conf | 6 +++++- k8s/nginx-datatracker.conf | 6 +++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/dev/build/gunicorn.conf.py b/dev/build/gunicorn.conf.py index be8808ec48..5c6587aa43 100644 --- a/dev/build/gunicorn.conf.py +++ b/dev/build/gunicorn.conf.py @@ -12,9 +12,8 @@ from opentelemetry.instrumentation.pymemcache import PymemcacheInstrumentor from opentelemetry.instrumentation.requests import RequestsInstrumentor -# Bind all ipv4 interfaces and ipv6 loopback interface. Would prefer to bind all -# ipv6 as well, but something conflicts with [::]:8000. -bind = ["0.0.0.0:8000", "[::1]:8000"] +# Bind all ipv4 interfaces (nginx uses loopback, but k8s health checks don't) +bind = ["0.0.0.0:8001"] # Disable control socket control_socket_disable = True diff --git a/docker/configs/nginx-proxy.conf b/docker/configs/nginx-proxy.conf index 5a9ae31ad0..e1f739970b 100644 --- a/docker/configs/nginx-proxy.conf +++ b/docker/configs/nginx-proxy.conf @@ -1,3 +1,7 @@ +upstream datatracker_backend { + server 127.0.0.1:8001; +} + server { listen 8000 default_server; listen [::]:8000 default_server; @@ -24,7 +28,7 @@ server { location / { error_page 502 /502.html; - proxy_pass http://localhost:8001/; + proxy_pass http://datatracker_backend/; proxy_set_header Host localhost:8000; } diff --git a/k8s/nginx-datatracker.conf b/k8s/nginx-datatracker.conf index 882d7563c2..a7d5936a19 100644 --- a/k8s/nginx-datatracker.conf +++ b/k8s/nginx-datatracker.conf @@ -1,3 +1,7 @@ +upstream datatracker_backend { + server 127.0.0.1:8000; +} + server { listen 8080 default_server; server_name _; @@ -22,7 +26,7 @@ server { proxy_set_header X-Request-Start "t=$${keepempty}msec"; proxy_set_header X-Forwarded-For $${keepempty}proxy_add_x_forwarded_for; proxy_hide_header X-Datatracker-Is-Authenticated; # hide this from the outside world - proxy_pass http://localhost:8000; + proxy_pass http://datatracker_backend; # Set timeouts longer than Cloudflare proxy limits proxy_connect_timeout 60; # nginx default (Cf = 15) proxy_read_timeout 120; # nginx default = 60 (Cf = 100) From bffc011cec82403c7dfe8bcd2f00634a6c9c518d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 1 May 2026 17:38:45 -0300 Subject: [PATCH 135/161] chore: fix + parameterize gunicorn bind port (#10801) --- dev/build/gunicorn.conf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/build/gunicorn.conf.py b/dev/build/gunicorn.conf.py index 5c6587aa43..03e81eac5e 100644 --- a/dev/build/gunicorn.conf.py +++ b/dev/build/gunicorn.conf.py @@ -13,7 +13,8 @@ from opentelemetry.instrumentation.requests import RequestsInstrumentor # Bind all ipv4 interfaces (nginx uses loopback, but k8s health checks don't) -bind = ["0.0.0.0:8001"] +_BIND_PORT = os.environ.get("DATATRACKER_GUNICORN_BIND_PORT", "8000") +bind = [f"0.0.0.0:{_BIND_PORT}"] # Disable control socket control_socket_disable = True From a99db9b4e6672ca3ac976c9266e697d834a4922e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 1 May 2026 22:33:18 -0300 Subject: [PATCH 136/161] fix: adjust nginx proxy config for auth (#10808) --- k8s/nginx-auth.conf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/k8s/nginx-auth.conf b/k8s/nginx-auth.conf index 95aa838064..1dc2f4fae0 100644 --- a/k8s/nginx-auth.conf +++ b/k8s/nginx-auth.conf @@ -1,3 +1,7 @@ +upstream datatracker_backend { + server 127.0.0.1:8000; +} + server { listen 8080 default_server; server_name _; @@ -33,7 +37,7 @@ server { proxy_set_header X-Request-Start "t=$${keepempty}msec"; proxy_set_header X-Forwarded-For $${keepempty}proxy_add_x_forwarded_for; proxy_hide_header X-Datatracker-Is-Authenticated; # hide this from the outside world - proxy_pass http://localhost:8000; + proxy_pass http://datatracker_backend; # Set timeouts longer than Cloudflare proxy limits proxy_connect_timeout 60; # nginx default (Cf = 15) proxy_read_timeout 120; # nginx default = 60 (Cf = 100) From 473bbb20ac95cdbd4b643928cde974ff4b30428d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 6 May 2026 18:35:22 -0300 Subject: [PATCH 137/161] feat: configure typesense presets (#10826) * feat: upsert search presets for red * fix: syntax + payload format * test: update tests --- ietf/doc/tasks.py | 6 +++++- ietf/doc/tests_tasks.py | 14 ++++++++++-- ietf/utils/searchindex.py | 38 +++++++++++++++++++++++++++++++-- ietf/utils/tests_searchindex.py | 32 +++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 5 deletions(-) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index 273242e35f..37c235b911 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -212,10 +212,14 @@ def update_rfc_searchindex_task(self, rfc_number: int): @shared_task -def rebuild_searchindex_task(*, batchsize=40, drop_collection=False): +def rebuild_searchindex_task( + *, batchsize=40, drop_collection=False, upsert_presets=True +): if drop_collection: searchindex.delete_collection() searchindex.create_collection() + if upsert_presets: + searchindex.upsert_presets() # ok if they already exist searchindex.update_or_create_rfc_entries( Document.objects.filter(type_id="rfc").order_by("-rfc_number"), batchsize=batchsize, diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 2e2d65463f..48db95d047 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -146,13 +146,17 @@ def test_update_rfc_searchindex_task( update_rfc_searchindex_task(rfc_number=rfc.rfc_number) @mock.patch("ietf.doc.tasks.searchindex.update_or_create_rfc_entries") + @mock.patch("ietf.doc.tasks.searchindex.upsert_presets") @mock.patch("ietf.doc.tasks.searchindex.create_collection") @mock.patch("ietf.doc.tasks.searchindex.delete_collection") - def test_rebuild_searchindex_task(self, mock_delete, mock_create, mock_update): + def test_rebuild_searchindex_task( + self, mock_delete, mock_create, mock_presets, mock_update + ): rfcs = WgRfcFactory.create_batch(10) rebuild_searchindex_task() self.assertFalse(mock_delete.called) self.assertFalse(mock_create.called) + self.assertTrue(mock_presets.called) self.assertTrue(mock_update.called) self.assertQuerysetEqual( mock_update.call_args.args[0], @@ -162,10 +166,12 @@ def test_rebuild_searchindex_task(self, mock_delete, mock_create, mock_update): mock_delete.reset_mock() mock_create.reset_mock() + mock_presets.reset_mock() mock_update.reset_mock() rebuild_searchindex_task(drop_collection=True) self.assertTrue(mock_delete.called) self.assertTrue(mock_create.called) + self.assertTrue(mock_presets.called) self.assertTrue(mock_update.called) self.assertQuerysetEqual( mock_update.call_args.args[0], @@ -175,10 +181,14 @@ def test_rebuild_searchindex_task(self, mock_delete, mock_create, mock_update): mock_delete.reset_mock() mock_create.reset_mock() + mock_presets.reset_mock() mock_update.reset_mock() - rebuild_searchindex_task(drop_collection=True, batchsize=3) + rebuild_searchindex_task( + drop_collection=True, batchsize=3, upsert_presets=False + ) self.assertTrue(mock_delete.called) self.assertTrue(mock_create.called) + self.assertFalse(mock_presets.called) self.assertTrue(mock_update.called) self.assertQuerysetEqual( mock_update.call_args.args[0], diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py index 87951abb60..ffc139676e 100644 --- a/ietf/utils/searchindex.py +++ b/ietf/utils/searchindex.py @@ -5,8 +5,10 @@ from itertools import batched from math import floor from typing import Iterable +from urllib.parse import urljoin import httpx # just for exceptions +import requests import typesense import typesense.exceptions from django.conf import settings @@ -26,7 +28,6 @@ typesense.exceptions.ServiceUnavailable, ) - DEFAULT_SETTINGS = { "TYPESENSE_API_URL": "", "TYPESENSE_API_KEY": "", @@ -144,7 +145,7 @@ def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: if subseries is not None: ts_document["subseries"] = { "acronym": subseries.type.slug, - "number": int(subseries.name[len(subseries.type.slug) :]), + "number": int(subseries.name[len(subseries.type.slug):]), "total": len(subseries.contains()), } if rfc.group is not None: @@ -354,6 +355,21 @@ def update_or_create_rfc_entries( ], } +SEARCH_PRESETS = { + "red": { + "collection": "docs", + "infix": "off,always,off,off,off,off,off,off", + "query_by": "rfc,filename,title,abstract,keywords,authors,group,area", + "query_by_weights": "127,50,50,20,20,5,2,1" + }, + "red-content": { + "collection": "docs", + "infix": "off,always,off,off", + "query_by": "rfc,filename,authors,content", + "query_by_weights": "127,50,5,1" + }, +} + def create_collection(): collection_name = get_collection_name() @@ -370,3 +386,21 @@ def delete_collection(): client.collections[collection_name].delete() except typesense.exceptions.ObjectNotFound: pass + + +def upsert_presets(): + # typesense-python does not support presets, so use requests + _settings = get_settings() + api_base = _settings["TYPESENSE_API_URL"] + api_key = _settings["TYPESENSE_API_KEY"] + for preset_name, payload in SEARCH_PRESETS.items(): + log(f"Upserting '{preset_name}' preset") + response = requests.put( + urljoin(api_base, f"/presets/{preset_name}"), + json={"value": payload}, + headers={ + "X-TYPESENSE-API-KEY": api_key, + }, + timeout=3, + ) + response.raise_for_status() diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py index e9fbf52020..ffca5c18be 100644 --- a/ietf/utils/tests_searchindex.py +++ b/ietf/utils/tests_searchindex.py @@ -1,6 +1,7 @@ # Copyright The IETF Trust 2026, All Rights Reserved from unittest import mock +import requests.exceptions import typesense.exceptions from django.conf import settings from django.test.utils import override_settings @@ -211,3 +212,34 @@ def test_delete_collection(self, mock_ts_client_constructor): mock_collections["frogs"].side_effect = typesense.exceptions.ObjectNotFound searchindex.delete_collection() # should ignore the exception + + @override_settings( + SEARCHINDEX_CONFIG={ + "TYPESENSE_API_URL": "http://ts.example.com", + "TYPESENSE_API_KEY": "test-api-key", + "TYPESENSE_COLLECTION_NAME": "frogs", + } + ) + def test_upsert_presets(self): + self.requests_mock.put( + "http://ts.example.com/presets/red", text="ok", status_code=201 + ) + self.requests_mock.put( + "http://ts.example.com/presets/red-content", text="ok", status_code=202 + ) + searchindex.upsert_presets() + + self.requests_mock.put( + "http://ts.example.com/presets/red", text="not ok", status_code=400 + ) + with self.assertRaises(requests.exceptions.HTTPError): + searchindex.upsert_presets() + + self.requests_mock.put( + "http://ts.example.com/presets/red", text="ok", status_code=200 + ) + self.requests_mock.put( + "http://ts.example.com/presets/red-content", text="not ok", status_code=400 + ) + with self.assertRaises(requests.exceptions.HTTPError): + searchindex.upsert_presets() From ba4ffdf6c282cbedf2bb15e622b4b88618c2d6be Mon Sep 17 00:00:00 2001 From: NGPixel Date: Fri, 8 May 2026 04:44:15 -0400 Subject: [PATCH 138/161] chore: add k8s resources requests to all pods --- .vscode/settings.json | 5 ++++- k8s/auth.yaml | 16 +++++++++++++--- k8s/beat.yaml | 4 ++++ k8s/celery.yaml | 8 ++++++++ k8s/datatracker.yaml | 16 +++++++++++++--- k8s/memcached.yaml | 8 ++++++++ k8s/rabbitmq.yaml | 4 ++++ k8s/replicator.yaml | 4 ++++ 8 files changed, 58 insertions(+), 7 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b323cd02f7..ad6b0adc84 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -57,5 +57,8 @@ "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": false, "python.linting.enabled": true, - "python.terminal.shellIntegration.enabled": false + "python.terminal.shellIntegration.enabled": false, + "vs-kubernetes": { + "disable-linters": ["resource-limits"] + } } diff --git a/k8s/auth.yaml b/k8s/auth.yaml index 2bdb064447..992c90557a 100644 --- a/k8s/auth.yaml +++ b/k8s/auth.yaml @@ -9,7 +9,7 @@ spec: matchLabels: app: auth strategy: - type: Recreate + type: DEPLOY_STRATEGY template: metadata: labels: @@ -61,6 +61,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 1000 runAsGroup: 1000 + resources: + requests: + cpu: 250m + memory: 4Gi # ----------------------------------------------------- # Nginx Container # ----------------------------------------------------- @@ -86,6 +90,10 @@ spec: - name: dt-cfg mountPath: /etc/nginx/conf.d/default.conf subPath: nginx-auth.conf + resources: + requests: + cpu: 10m + memory: 10Mi # ----------------------------------------------------- # ScoutAPM Container # ----------------------------------------------------- @@ -111,6 +119,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 65534 # "nobody" user by default runAsGroup: 65534 # "nogroup" group by default + resources: + requests: + cpu: 10m + memory: 50Mi volumes: # To be overriden with the actual shared volume - name: dt-vol @@ -129,8 +141,6 @@ spec: - name: nginx-tmp emptyDir: sizeLimit: "500Mi" - dnsPolicy: ClusterFirst - restartPolicy: Always terminationGracePeriodSeconds: 60 --- apiVersion: v1 diff --git a/k8s/beat.yaml b/k8s/beat.yaml index b4291c7e31..cc171fb7d1 100644 --- a/k8s/beat.yaml +++ b/k8s/beat.yaml @@ -48,6 +48,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 1000 runAsGroup: 1000 + resources: + requests: + cpu: 100m + memory: 250Mi volumes: # To be overridden with the actual shared volume - name: dt-vol diff --git a/k8s/celery.yaml b/k8s/celery.yaml index 2f4c0fd439..f6cea2acc7 100644 --- a/k8s/celery.yaml +++ b/k8s/celery.yaml @@ -52,6 +52,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 1000 runAsGroup: 1000 + resources: + requests: + cpu: 100m + memory: 1Gi # ----------------------------------------------------- # ScoutAPM Container # ----------------------------------------------------- @@ -77,6 +81,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 65534 # "nobody" user by default runAsGroup: 65534 # "nogroup" group by default + resources: + requests: + cpu: 10m + memory: 50Mi volumes: # To be overridden with the actual shared volume - name: dt-vol diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 50a2c69687..ff89fb3722 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -9,7 +9,7 @@ spec: matchLabels: app: datatracker strategy: - type: Recreate + type: DEPLOY_STRATEGY template: metadata: labels: @@ -61,6 +61,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 1000 runAsGroup: 1000 + resources: + requests: + cpu: 250m + memory: 4Gi # ----------------------------------------------------- # Nginx Container # ----------------------------------------------------- @@ -87,6 +91,10 @@ spec: # Replaces the original default.conf mountPath: /etc/nginx/conf.d/default.conf subPath: nginx-datatracker.conf + resources: + requests: + cpu: 10m + memory: 10Mi # ----------------------------------------------------- # ScoutAPM Container # ----------------------------------------------------- @@ -112,6 +120,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 65534 # "nobody" user by default runAsGroup: 65534 # "nogroup" group by default + resources: + requests: + cpu: 10m + memory: 50Mi initContainers: - name: migration image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" @@ -160,8 +172,6 @@ spec: - name: nginx-tmp emptyDir: sizeLimit: "500Mi" - dnsPolicy: ClusterFirst - restartPolicy: Always terminationGracePeriodSeconds: 60 --- apiVersion: v1 diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index 5a4c9f0aed..68b732d745 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -36,6 +36,10 @@ spec: # memcached image sets up uid/gid 11211 runAsUser: 11211 runAsGroup: 11211 + resources: + requests: + cpu: 100m + memory: 100Mi # ----------------------------------------------------- # Memcached Exporter for Prometheus # ----------------------------------------------------- @@ -54,6 +58,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 65534 # nobody runAsGroup: 65534 # nobody + resources: + requests: + cpu: 10m + memory: 20Mi dnsPolicy: ClusterFirst restartPolicy: Always terminationGracePeriodSeconds: 30 diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml index 346b54c93e..e69aa7a1aa 100644 --- a/k8s/rabbitmq.yaml +++ b/k8s/rabbitmq.yaml @@ -62,6 +62,10 @@ spec: # rabbitmq image sets up uid/gid 100/101 runAsUser: 100 runAsGroup: 101 + resources: + requests: + cpu: 100m + memory: 150Mi initContainers: # ----------------------------------------------------- # Init RabbitMQ data diff --git a/k8s/replicator.yaml b/k8s/replicator.yaml index a28d9e8a16..0b06fe4fdc 100644 --- a/k8s/replicator.yaml +++ b/k8s/replicator.yaml @@ -52,6 +52,10 @@ spec: readOnlyRootFilesystem: true runAsUser: 1000 runAsGroup: 1000 + resources: + requests: + cpu: 100m + memory: 500Mi volumes: # To be overridden with the actual shared volume - name: dt-vol From 5e751a66a1d3ce9ea8809358a68f6239cf247e1a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 May 2026 00:56:15 -0300 Subject: [PATCH 139/161] 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 d888de4586..401cb43a32 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) ) From 2d084d18843b689ac6860d464b1be8eb07b86b5e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 May 2026 13:29:04 -0300 Subject: [PATCH 140/161] fix: backport CVE-2026-35192 fix from Django 5.2 (#10850) CVE-2026-35192: Session fixation via public cached pages and SESSION_SAVE_EVERY_REQUEST Patch from https://github.com/django/django/commit/47cf968c125e3fab317e10fe150ec479e745f995 Verified that Django's new tests pass after patching 4.2.30. --- ietf/settings.py | 5 +++- ...-delete-settings-and-CVE-2026-35192.patch} | 27 ++++++++++++++++--- requirements.txt | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) rename patch/{django-cookie-delete-with-all-settings.patch => django-cookie-delete-settings-and-CVE-2026-35192.patch} (68%) diff --git a/ietf/settings.py b/ietf/settings.py index 50e069ff1a..8a4587e50a 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1261,7 +1261,10 @@ def skip_unreadable_post(record): 'patch/change-oidc-provider-field-sizes-228.patch', 'patch/fix-oidc-access-token-post.patch', 'patch/fix-jwkest-jwt-logging.patch', - 'patch/django-cookie-delete-with-all-settings.patch', + # Patch includes old cookie-delete-with-all-settings and a backport of the fix + # to CVE-2026-35192 from Django 5.2. The patches conflict, so cannot be applied + # separately. + 'patch/django-cookie-delete-settings-and-CVE-2026-35192.patch', 'patch/tastypie-django22-fielderror-response.patch', ] if DEBUG: diff --git a/patch/django-cookie-delete-with-all-settings.patch b/patch/django-cookie-delete-settings-and-CVE-2026-35192.patch similarity index 68% rename from patch/django-cookie-delete-with-all-settings.patch rename to patch/django-cookie-delete-settings-and-CVE-2026-35192.patch index 4ceaf8fceb..3f625c33bb 100644 --- a/patch/django-cookie-delete-with-all-settings.patch +++ b/patch/django-cookie-delete-settings-and-CVE-2026-35192.patch @@ -44,9 +44,9 @@ expires="Thu, 01 Jan 1970 00:00:00 GMT", samesite=samesite, ) ---- django/contrib/sessions/middleware.py.orig 2020-08-13 12:12:12.401898114 +0200 -+++ django/contrib/sessions/middleware.py 2020-08-13 12:14:52.690520659 +0200 -@@ -38,6 +38,8 @@ +--- django/contrib/sessions/middleware.py.old 2026-05-12 15:18:07.673997003 +0000 ++++ django/contrib/sessions/middleware.py 2026-05-12 15:18:15.770997007 +0000 +@@ -38,12 +38,15 @@ settings.SESSION_COOKIE_NAME, path=settings.SESSION_COOKIE_PATH, domain=settings.SESSION_COOKIE_DOMAIN, @@ -54,4 +54,23 @@ + httponly=settings.SESSION_COOKIE_HTTPONLY or None, samesite=settings.SESSION_COOKIE_SAMESITE, ) - patch_vary_headers(response, ("Cookie",)) +- patch_vary_headers(response, ("Cookie",)) ++ need_vary_cookie = True + else: +- if accessed: +- patch_vary_headers(response, ("Cookie",)) ++ # If the session was accessed, it must be varied on, regardless of ++ # whether it was modified or will be saved. ++ need_vary_cookie = accessed + if (modified or settings.SESSION_SAVE_EVERY_REQUEST) and not empty: + if request.session.get_expire_at_browser_close(): + max_age = None +@@ -74,4 +77,8 @@ + httponly=settings.SESSION_COOKIE_HTTPONLY or None, + samesite=settings.SESSION_COOKIE_SAMESITE, + ) ++ # With a session cookie set, it must be varied on. ++ need_vary_cookie = True ++ if need_vary_cookie: ++ patch_vary_headers(response, ("Cookie",)) + return response diff --git a/requirements.txt b/requirements.txt index ca9a6740e1..214dfe296f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ botocore>=1.39.15 celery>=5.5.3 coverage>=7.9.2 defusedxml>=0.7.1 # for TastyPie when using xml; not a declared dependency -Django>4.2,<5 +Django>=4.2.30,<5 django-admin-rangefilter>=0.13.3 django-analytical>=3.2.0 django-bootstrap5>=25.1 From 4ea222d433ec131036f80896e0a36c15dfd6ab18 Mon Sep 17 00:00:00 2001 From: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> Date: Tue, 12 May 2026 16:42:17 +0000 Subject: [PATCH 141/161] ci: update base image target version to 20260512T1629 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index e57fecd5f2..55a308d7ce 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20260410T1557 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260512T1629 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index f430037c09..71a59ed266 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20260410T1557 +20260512T1629 From 9f6fa7d4f6f11043934d6825f2f840d008bb472b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 May 2026 16:52:00 -0300 Subject: [PATCH 142/161] fix: allow empty keyword list for Document (#10848) * fix: allow empty keyword list for Document * chore: migration --- ...istory_keywords_alter_document_keywords.py | 33 +++++++++++++++++++ ietf/doc/models.py | 1 + 2 files changed, 34 insertions(+) create mode 100644 ietf/doc/migrations/0034_alter_dochistory_keywords_alter_document_keywords.py diff --git a/ietf/doc/migrations/0034_alter_dochistory_keywords_alter_document_keywords.py b/ietf/doc/migrations/0034_alter_dochistory_keywords_alter_document_keywords.py new file mode 100644 index 0000000000..2b89b67e88 --- /dev/null +++ b/ietf/doc/migrations/0034_alter_dochistory_keywords_alter_document_keywords.py @@ -0,0 +1,33 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations, models +import ietf.doc.models + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0033_dochistory_keywords_document_keywords"), + ] + + operations = [ + migrations.AlterField( + model_name="dochistory", + name="keywords", + field=models.JSONField( + blank=True, + default=list, + max_length=1000, + validators=[ietf.doc.models.validate_doc_keywords], + ), + ), + migrations.AlterField( + model_name="document", + name="keywords", + field=models.JSONField( + blank=True, + default=list, + max_length=1000, + validators=[ietf.doc.models.validate_doc_keywords], + ), + ), + ] diff --git a/ietf/doc/models.py b/ietf/doc/models.py index cc79b73831..0af8507f85 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -157,6 +157,7 @@ class DocumentInfo(models.Model): default=list, max_length=1000, validators=[validate_doc_keywords], + blank=True, ) @property From 2e59ee218e641b089ad8103e654386d705f840af Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Wed, 13 May 2026 10:28:26 -0400 Subject: [PATCH 143/161] feat: add updates and obsoletes for RFCs (#10851) * feat: add updates and obsoletes for RFCs * add validator existing RFC; add test --- ietf/api/serializers_rpc.py | 52 +++++++++++++++++++++++++++++++ ietf/api/tests_serializers_rpc.py | 24 ++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/ietf/api/serializers_rpc.py b/ietf/api/serializers_rpc.py index 401cb43a32..0e45ee3b39 100644 --- a/ietf/api/serializers_rpc.py +++ b/ietf/api/serializers_rpc.py @@ -571,6 +571,18 @@ class EditableRfcSerializer(serializers.ModelSerializer): child=SubseriesNameField(required=False), write_only=True, ) + updates = serializers.ListField( + child=serializers.IntegerField(), + required=False, + write_only=True, + help_text="List of RFC numbers this document updates." + ) + obsoletes = serializers.ListField( + child=serializers.IntegerField(), + required=False, + write_only=True, + help_text="List of RFC numbers this document obsoletes." + ) class Meta: model = Document @@ -584,8 +596,28 @@ class Meta: "std_level", "subseries", "keywords", + "updates", + "obsoletes", ] + def _validate_rfc_number_list(self, field_name, rfc_numbers): + """Raise ValidationError if any RFC numbers in the list don't exist.""" + unknown = [ + n for n in rfc_numbers + if not Document.objects.filter(rfc_number=n, type_id="rfc").exists() + ] + if unknown: + raise serializers.ValidationError( + {field_name: [f"Unknown RFC number: {n}" for n in unknown]} + ) + return rfc_numbers + + def validate_updates(self, value): + return self._validate_rfc_number_list("updates", value) + + def validate_obsoletes(self, value): + return self._validate_rfc_number_list("obsoletes", value) + def create(self, validated_data): raise RuntimeError("Cannot create with this serializer") @@ -602,6 +634,8 @@ def update(self, instance, validated_data): published = validated_data.pop("published", omitted) subseries = validated_data.pop("subseries", omitted) authors_data = validated_data.pop("rfcauthor_set", omitted) + updates = validated_data.pop("updates", omitted) + obsoletes = validated_data.pop("obsoletes", omitted) # Transaction to clean up if something fails with transaction.atomic(): @@ -673,6 +707,24 @@ def update(self, instance, validated_data): ) ) ) + if updates is not omitted: + RelatedDocument.objects.filter( + source=rfc, relationship_id="updates" + ).exclude(target__rfc_number__in=updates).delete() + for rfc_num in updates: + target = Document.objects.get(rfc_number=rfc_num, type_id="rfc") + RelatedDocument.objects.get_or_create( + source=rfc, relationship_id="updates", target=target + ) + if obsoletes is not omitted: + RelatedDocument.objects.filter( + source=rfc, relationship_id="obs" + ).exclude(target__rfc_number__in=obsoletes).delete() + for rfc_num in obsoletes: + target = Document.objects.get(rfc_number=rfc_num, type_id="rfc") + RelatedDocument.objects.get_or_create( + source=rfc, relationship_id="obs", target=target + ) # update subseries relations if subseries is not omitted: diff --git a/ietf/api/tests_serializers_rpc.py b/ietf/api/tests_serializers_rpc.py index 167ffcd3ee..5151f337d5 100644 --- a/ietf/api/tests_serializers_rpc.py +++ b/ietf/api/tests_serializers_rpc.py @@ -215,3 +215,27 @@ def test_partial_update(self, mock_trigger_red_task, mock_update_searchindex_tas mock_update_searchindex_task.delay.call_args, mock.call(rfc.rfc_number), ) + + def test_unknown_rfc_number_rejected(self): + """Unknown RFC numbers in updates/obsoletes should cause validation failure.""" + from django.db.models import Max + + rfc = WgRfcFactory() + unknown_rfc_number = ( + Document.objects.filter(rfc_number__isnull=False).aggregate( + m=Max("rfc_number") + 1 + )["m"] + or 10000 + ) + + for field in ("updates", "obsoletes"): + serializer = EditableRfcSerializer( + partial=True, + instance=rfc, + data={field: [unknown_rfc_number]}, + ) + self.assertFalse( + serializer.is_valid(), + msg=f"{field} with unknown RFC number should be invalid", + ) + self.assertIn(field, serializer.errors) From 6e664eaa6f0f121821f3a9e508a98d82c65c9662 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Wed, 13 May 2026 18:05:10 -0400 Subject: [PATCH 144/161] ci: Update workflow dispatch action to ietf-tools version --- .github/workflows/build.yml | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff84408187..a89bac46e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -418,17 +418,14 @@ jobs: echo "DEPLOY_NAMESPACE=$(node cli.js --branch ${{ github.ref_name }})" >> "$GITHUB_ENV" - name: Deploy to dev - uses: the-actions-org/workflow-dispatch@v4 + uses: ietf-tools/workflow-dispatch-action@v1 with: workflow: deploy-dev.yml repo: ietf-tools/infra-k8s ref: main token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}", "namespace":"${{ env.DEPLOY_NAMESPACE }}", "disableDailyDbRefresh":${{ inputs.devNoDbRefresh }} }' - wait-for-completion: true - wait-for-completion-timeout: 60m - wait-for-completion-interval: 30s - display-workflow-run-url: false + waitForCompletionTimeout: 60m # ----------------------------------------------------------------- # STAGING @@ -445,30 +442,24 @@ jobs: steps: - name: Refresh Staging DB - uses: the-actions-org/workflow-dispatch@v4 + uses: ietf-tools/workflow-dispatch-action@v1 with: workflow: deploy-db.yml repo: ietf-tools/infra-k8s ref: main token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "manifest":"postgres", "forceRecreate":true, "restoreToLastFullSnapshot":true, "waitClusterReady":true }' - wait-for-completion: true - wait-for-completion-timeout: 120m - wait-for-completion-interval: 20s - display-workflow-run-url: false + waitForCompletionTimeout: 120m - name: Deploy to staging - uses: the-actions-org/workflow-dispatch@v4 + uses: ietf-tools/workflow-dispatch-action@v1 with: workflow: deploy.yml repo: ietf-tools/infra-k8s ref: main token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}" }' - wait-for-completion: true - wait-for-completion-timeout: 30m - wait-for-completion-interval: 30s - display-workflow-run-url: false + waitForCompletionTimeout: 30m # ----------------------------------------------------------------- # PROD @@ -485,14 +476,11 @@ jobs: steps: - name: Deploy to production - uses: the-actions-org/workflow-dispatch@v4 + uses: ietf-tools/workflow-dispatch-action@v1 with: workflow: deploy.yml repo: ietf-tools/infra-k8s ref: main token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}", "remoteRef":"${{ github.sha }}" }' - wait-for-completion: true - wait-for-completion-timeout: 30m - wait-for-completion-interval: 30s - display-workflow-run-url: false + waitForCompletionTimeout: 30m From 94955d438f7b87607b0b9c292c28c21574b4e661 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 14 May 2026 12:44:26 -0500 Subject: [PATCH 145/161] feat: show rfc titlepage names (#10863) * feat: use titlepage_name for person_links when it exists * test: test using titlepage_name when present, and test html rendering --- ietf/person/templatetags/person_filters.py | 2 + ietf/person/templatetags/tests.py | 65 +++++++++++++++++++++- ietf/templates/doc/document_info.html | 2 +- ietf/templates/person/person_link.html | 2 +- 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/ietf/person/templatetags/person_filters.py b/ietf/person/templatetags/person_filters.py index 017b29c63a..a7a6e8193a 100644 --- a/ietf/person/templatetags/person_filters.py +++ b/ietf/person/templatetags/person_filters.py @@ -50,6 +50,7 @@ def person_link(person, **kwargs): title = kwargs.get("title", "") cls = kwargs.get("class", "") with_email = kwargs.get("with_email", True) + titlepage_name = kwargs.get("titlepage_name", None) if person is not None: plain_name = person.plain_name() name = ( @@ -61,6 +62,7 @@ def person_link(person, **kwargs): return { "name": name, "plain_name": plain_name, + "titlepage_name": titlepage_name, "email": email, "title": title, "class": cls, diff --git a/ietf/person/templatetags/tests.py b/ietf/person/templatetags/tests.py index 327cfad6ce..7c35fd6b69 100644 --- a/ietf/person/templatetags/tests.py +++ b/ietf/person/templatetags/tests.py @@ -1,4 +1,6 @@ # Copyright The IETF Trust 2022, All Rights Reserved +from django.template.loader import render_to_string + from ietf.person.factories import PersonFactory from ietf.utils.test_utils import TestCase @@ -8,7 +10,6 @@ class PersonLinkTests(TestCase): # Tests of the person_link template tag. These assume it is implemented as an # inclusion tag. - # TODO test that the template actually renders the data in the dict def test_person_link(self): person = PersonFactory() self.assertEqual( @@ -16,6 +17,7 @@ def test_person_link(self): { 'name': person.name, 'plain_name': person.plain_name(), + 'titlepage_name': None, 'email': person.email_address(), 'title': '', 'class': '', @@ -27,6 +29,7 @@ def test_person_link(self): { 'name': person.name, 'plain_name': person.plain_name(), + 'titlepage_name': None, 'email': person.email_address(), 'title': '', 'class': '', @@ -38,6 +41,7 @@ def test_person_link(self): { 'name': person.name, 'plain_name': person.plain_name(), + 'titlepage_name': None, 'email': person.email_address(), 'title': 'Random Title', 'class': '', @@ -50,12 +54,71 @@ def test_person_link(self): { 'name': person.name, 'plain_name': person.plain_name(), + 'titlepage_name': None, 'email': person.email_address(), 'title': '', 'class': 'some-class', 'with_email': True, } ) + self.assertEqual( + person_link(person, titlepage_name='G. Surname'), + { + 'name': person.name, + 'plain_name': person.plain_name(), + 'titlepage_name': 'G. Surname', + 'email': person.email_address(), + 'title': '', + 'class': '', + 'with_email': True, + } + ) + + def test_person_link_renders(self): + """Verifies person/person_link.html renders context dict values correctly.""" + person = PersonFactory() + name = person.name + email = person.email_address() + base_context = { + 'name': name, + 'plain_name': person.plain_name(), + 'titlepage_name': None, + 'email': email, + 'title': '', + 'class': '', + 'with_email': True, + } + + # Default: name is used as link text with default title attribute + html = render_to_string('person/person_link.html', base_context) + self.assertIn(f'>{name}', html) + self.assertIn(f'Datatracker profile of {name}', html) + self.assertIn('bi-envelope', html) + + # titlepage_name overrides name as link text + html = render_to_string('person/person_link.html', {**base_context, 'titlepage_name': 'G. Surname'}) + self.assertIn('>G. Surname', html) + self.assertNotIn(f'>{name}', html) + + # with_email=False suppresses the envelope link + html = render_to_string('person/person_link.html', {**base_context, 'with_email': False}) + self.assertNotIn('bi-envelope', html) + + # Custom title appears in the anchor title attribute + html = render_to_string('person/person_link.html', {**base_context, 'title': 'Special Title'}) + self.assertIn('title="Special Title"', html) + + # Empty context (None person) renders (None) + self.assertInHTML( + '(None)', + render_to_string('person/person_link.html', {}), + ) + + # System email renders (System) + self.assertInHTML( + '(System)', + render_to_string('person/person_link.html', {'email': 'system@datatracker.ietf.org', 'name': ''}), + ) def test_invalid_person(self): """Generates correct context dict when input is invalid/missing""" diff --git a/ietf/templates/doc/document_info.html b/ietf/templates/doc/document_info.html index d6d8d43071..1666c42ae5 100644 --- a/ietf/templates/doc/document_info.html +++ b/ietf/templates/doc/document_info.html @@ -97,7 +97,7 @@ {# Implementation that uses the current primary email for each author #} {% if doc.pk %}{% for author in doc.author_persons_or_names %} - {% if author.person %}{% person_link author.person %}{% else %}{{ author.titlepage_name }}{% endif %}{% if not forloop.last %},{% endif %} + {% if author.person %}{% person_link author.person titlepage_name=author.titlepage_name %}{% else %}{{ author.titlepage_name }}{% endif %}{% if not forloop.last %},{% endif %} {% endfor %}{% endif %} {% if document_html and not snapshot or document_html and doc.rev == latest_rev%}
    diff --git a/ietf/templates/person/person_link.html b/ietf/templates/person/person_link.html index f3f7e1a5b7..b77fe8d6df 100644 --- a/ietf/templates/person/person_link.html +++ b/ietf/templates/person/person_link.html @@ -1,7 +1,7 @@ {% if email and email == "system@datatracker.ietf.org" or name and name == "(System)" %}(System){% else %}{% if email or name %}{{ name }}{% if email and with_email %} {% if titlepage_name %}{{ titlepage_name }}{% else %}{{ name }}{% endif %}{% if email and with_email %} From 31dcaeb490f916a5d31ea3299957a3269b0b4727 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 14 May 2026 13:33:46 -0500 Subject: [PATCH 146/161] feat: disable editing DocumentAuthors when RfcAuthors exist (#10864) * fix: disable editing DocumentAuthors when RfcAuthors exist * test: test disabling edit when rfcauthors exist * chore: consistent use of RFC Editor --- ietf/doc/tests.py | 28 ++++++++++++++++++++++++++++ ietf/doc/views_doc.py | 9 ++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index f92c9648e6..b001e01e80 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -1023,6 +1023,34 @@ def test_edit_authors_permissions(self): draft = Document.objects.get(pk=draft.pk) self.assertEqual(draft.author_persons(), orig_authors + [new_auth_person]) + def test_edit_authors_blocked_when_rfcauthors_exist(self): + """edit_authors returns 403 for all users when RfcAuthors exist""" + rfc = WgRfcFactory() + RfcAuthorFactory(document=rfc) + url = urlreverse('ietf.doc.views_doc.edit_authors', kwargs=dict(name=rfc.name)) + + self.client.login(username='secretary', password='secretary+password') + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + r = self.client.post(url, {}) + self.assertEqual(r.status_code, 403) + + def test_document_main_hides_edit_authors_when_rfcauthors_exist(self): + """document_main does not offer edit link for authors when RfcAuthors exist""" + rfc = WgRfcFactory() + edit_authors_url = urlreverse('ietf.doc.views_doc.edit_authors', kwargs=dict(name=rfc.name)) + + self.client.login(username='secretary', password='secretary+password') + + r = self.client.get(urlreverse('ietf.doc.views_doc.document_main', kwargs=dict(name=rfc.name))) + self.assertEqual(r.status_code, 200) + self.assertContains(r, edit_authors_url) + + RfcAuthorFactory(document=rfc) + r = self.client.get(urlreverse('ietf.doc.views_doc.document_main', kwargs=dict(name=rfc.name))) + self.assertEqual(r.status_code, 200) + self.assertNotContains(r, edit_authors_url) + def make_edit_authors_post_data(self, basis, authors): """Helper to generate edit_authors POST data for a set of authors""" def _add_prefix(s): diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 5b57a62074..af056f6a96 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -46,7 +46,7 @@ from django.core.files.base import ContentFile from django.core.exceptions import PermissionDenied from django.db.models import Max -from django.http import FileResponse, HttpResponse, Http404, HttpResponseBadRequest, JsonResponse +from django.http import FileResponse, HttpResponse, Http404, HttpResponseBadRequest, HttpResponseForbidden, JsonResponse from django.shortcuts import render, get_object_or_404, redirect from django.template.loader import render_to_string from django.urls import reverse as urlreverse @@ -258,7 +258,7 @@ def document_main(request, name, rev=None, document_html=False): interesting_relations_that, interesting_relations_that_doc = interesting_doc_relations(doc) can_edit = has_role(request.user, ("Area Director", "Secretariat")) - can_edit_authors = has_role(request.user, ("Secretariat")) + can_edit_authors = has_role(request.user, ("Secretariat")) and not doc.rfcauthor_set.exists() stream_slugs = StreamName.objects.values_list("slug", flat=True) # For some reason, AnonymousUser has __iter__, but is not iterable, @@ -1842,12 +1842,15 @@ def add_fields(self, form, index): if fh in form.fields: form.fields[fh].widget = forms.HiddenInput() + doc = get_object_or_404(Document, name=name) + if doc.rfcauthor_set.exists(): + return HttpResponseForbidden("Contact the RFC Editor to change RFC Author information") + AuthorFormSet = forms.formset_factory(DocAuthorForm, formset=_AuthorsBaseFormSet, can_delete=True, can_order=True, extra=0) - doc = get_object_or_404(Document, name=name) if request.method == 'POST': change_basis_form = DocAuthorChangeBasisForm(request.POST) From 1e5f5db9c24db321097dc70849783eff2c3f8057 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Thu, 14 May 2026 12:52:05 -0700 Subject: [PATCH 147/161] fix: avoid PosixPath.endswith() in run_yang_model_checks_task (#10819) Fixes #10818 Signed-off-by: SAY-5 Co-authored-by: SAY-5 --- ietf/submit/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 7e3106f723..457462e4f2 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -1612,6 +1612,4 @@ def active(dirent): log.log(f"Error processing {item.name}: {e}") ftp_moddir = Path(settings.FTP_DIR) / "yang" / "draftmod/" - if not moddir.endswith("/"): - moddir += "/" - subprocess.call(("/usr/bin/rsync", "-aq", "--delete", moddir, ftp_moddir)) + subprocess.call(("/usr/bin/rsync", "-aq", "--delete", f"{moddir}/", str(ftp_moddir))) From d51c909214ed08034d92280bbb4cb94dfa751e58 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 14 May 2026 18:49:30 -0500 Subject: [PATCH 148/161] feat: process rfc-editor queue notifications from purple (#10857) * feat: api endpoint for receiving rpc queue updates * feat: process new queue * test: processing queue * chore: ruff * fix: admin and resources for RpcAssignmentDocEvent * fix: express Awaiting Editor Assignment * chore: ruff * chore: renumber migrations * fix: migration boilerplate * fix: space after colon * test: use more realistic assignment states for blocked roles * fix: update auth48 urls on each parse of the queue --- ietf/api/tests_views_rpc.py | 88 ++++ ietf/api/urls_rpc.py | 5 + ietf/api/views_rpc.py | 22 + ietf/doc/admin.py | 6 +- ...35_add_rpc_queue_draft_rfceditor_states.py | 31 ++ .../migrations/0036_alter_docevent_type.py | 92 ++++ .../migrations/0037_rpcassignmentdocevent.py | 31 ++ ietf/doc/models.py | 4 + ietf/doc/resources.py | 27 +- ietf/name/fixtures/names.json | 80 ++- ietf/settings.py | 1 + ietf/sync/tasks.py | 129 ++++- ietf/sync/tests_tasks.py | 476 ++++++++++++++++++ 13 files changed, 985 insertions(+), 7 deletions(-) create mode 100644 ietf/doc/migrations/0035_add_rpc_queue_draft_rfceditor_states.py create mode 100644 ietf/doc/migrations/0036_alter_docevent_type.py create mode 100644 ietf/doc/migrations/0037_rpcassignmentdocevent.py create mode 100644 ietf/sync/tests_tasks.py diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index c836cdc2c0..6d147c00b0 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -477,3 +477,91 @@ def test_destination_helper_mixin_blob_destination(self): DestinationHelperMixin().blob_destination(filename), f"notprepped/{filename}", ) + + @override_settings(APP_API_TOKENS={"ietf.api.views_rpc": ["valid-token"]}) + @mock.patch("ietf.api.views_rpc.process_rpc_queue_task.delay") + def test_process_rpc_queue(self, mock_task_delay): + url = urlreverse("ietf.api.purple_api.process_rpc_queue") + queue_entries = [ + { + "id": 9850, + "name": "draft-ietf-netmod-system-config", + "title": "System-defined Configuration", + "draft_url": "http://localhost:8000/doc/draft-ietf-netmod-system-config-20", + "disposition": "in_progress", + "external_deadline": None, + "labels": [], + "cluster": None, + "assignment_set": [ + { + "id": 434, + "rfc_to_be": 9850, + "role": "first_editor", + "state": "in_progress", + } + ], + "actionholder_set": [], + "pending_activities": [], + "rfc_number": None, + "pages": 33, + "enqueued_at": "2026-01-26T12:00:00Z", + "final_approval": [], + "iana_status": { + "slug": "completed", + "name": "completed", + "desc": "IANA has completed actions in draft", + }, + "blocking_reasons": [], + "authors": [{"titlepage_name": "Q. Ma", "is_editor": True}], + "approval_log_message": [], + "stream": "ietf", + "group": "netmod", + "group_name": "Network Modeling", + "std_level": "ps", + "references": [], + "rev": "20", + } + ] + queue_data = {"data": queue_entries} + + # no credentials + response = self.client.post( + url, data=queue_data, content_type="application/json" + ) + self.assertEqual(response.status_code, 403) + mock_task_delay.assert_not_called() + + # invalid token + response = self.client.post( + url, + data=queue_data, + content_type="application/json", + headers={"X-Api-Key": "invalid-token"}, + ) + self.assertEqual(response.status_code, 403) + mock_task_delay.assert_not_called() + + # valid token, wrong method + response = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(response.status_code, 405) + mock_task_delay.assert_not_called() + + # valid token, missing "data" field + response = self.client.post( + url, + data={}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(response.status_code, 400) + mock_task_delay.assert_not_called() + + # valid token, POST with data + response = self.client.post( + url, + data=queue_data, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(response.status_code, 202) + mock_task_delay.assert_called_once_with(queue_entries) diff --git a/ietf/api/urls_rpc.py b/ietf/api/urls_rpc.py index 8555610dc3..07f2cf8751 100644 --- a/ietf/api/urls_rpc.py +++ b/ietf/api/urls_rpc.py @@ -36,6 +36,11 @@ name="ietf.api.purple_api.refresh_rfc_index", ), path(r"subject//person/", views_rpc.SubjectPersonView.as_view()), + path( + r"queue/process/", + views_rpc.ProcessRpcQueueView.as_view(), + name="ietf.api.purple_api.process_rpc_queue", + ), ] # add routers at the end so individual routes can steal parts of their address diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index e9c17b8a12..83d0abefb1 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -48,6 +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 class Conflict(APIException): @@ -576,3 +577,24 @@ class RfcIndexView(APIView): def post(self, request): mark_rfcindex_as_dirty() return Response(status=202) + + +class RpcQueueDataSerializer(serializers.Serializer): + data = serializers.JSONField() + + +class ProcessRpcQueueView(APIView): + api_key_endpoint = "ietf.api.views_rpc" + + @extend_schema( + operation_id="process_rpc_queue", + summary="Process the provided RPC queue", + description="Schedules parsing the provided queue to update documents with change dqueue data", + responses={202: None}, + request=RpcQueueDataSerializer, + ) + def post(self, request): + serializer = RpcQueueDataSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + process_rpc_queue_task.delay(serializer.validated_data["data"]) + return Response(status=202) diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index 757d3da9f9..86f5ac5fda 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -15,7 +15,7 @@ AddedMessageEvent, SubmissionDocEvent, DeletedEvent, EditedAuthorsDocEvent, DocumentURL, ReviewAssignmentDocEvent, IanaExpertDocEvent, IRSGBallotDocEvent, DocExtResource, DocumentActionHolder, BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject, RfcAuthor, - EditedRfcAuthorsDocEvent) + EditedRfcAuthorsDocEvent, RpcAssignmentDocEvent) from ietf.utils.admin import SaferTabularInline from ietf.utils.validators import validate_external_resource_value @@ -229,6 +229,10 @@ class SubmissionDocEventAdmin(DocEventAdmin): raw_id_fields = DocEventAdmin.raw_id_fields + ["submission"] admin.site.register(SubmissionDocEvent, SubmissionDocEventAdmin) +class RpcAssignmentDocEventAdmin(DocEventAdmin): + search_fields = DocEventAdmin.search_fields + ["assignments"] +admin.site.register(RpcAssignmentDocEvent, RpcAssignmentDocEventAdmin) + class DocumentUrlAdmin(admin.ModelAdmin): list_display = ['id', 'doc', 'tag', 'url', 'desc', ] search_fields = ['doc__name', 'url', ] diff --git a/ietf/doc/migrations/0035_add_rpc_queue_draft_rfceditor_states.py b/ietf/doc/migrations/0035_add_rpc_queue_draft_rfceditor_states.py new file mode 100644 index 0000000000..9805970ef0 --- /dev/null +++ b/ietf/doc/migrations/0035_add_rpc_queue_draft_rfceditor_states.py @@ -0,0 +1,31 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations + + +def forward(apps, schema_editor): + State = apps.get_model("doc", "State") + for slug, name in [("in_progress", "In Progress"), ("blocked", "Blocked")]: + State.objects.get_or_create( + type_id="draft-rfceditor", + slug=slug, + defaults={"name": name, "used": True, "desc": "", "order": 0}, + ) + + +def reverse(apps, schema_editor): + State = apps.get_model("doc", "State") + Document = apps.get_model("doc", "Document") + for slug in ("in_progress", "blocked"): + assert not Document.objects.filter( + states__type="draft-rfceditor", states__slug=slug + ).exists() + State.objects.filter(type_id="draft-rfceditor", slug=slug).delete() + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0034_alter_dochistory_keywords_alter_document_keywords"), + ] + + operations = [migrations.RunPython(forward, reverse)] diff --git a/ietf/doc/migrations/0036_alter_docevent_type.py b/ietf/doc/migrations/0036_alter_docevent_type.py new file mode 100644 index 0000000000..1cc11d4ee9 --- /dev/null +++ b/ietf/doc/migrations/0036_alter_docevent_type.py @@ -0,0 +1,92 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0035_add_rpc_queue_draft_rfceditor_states"), + ] + + operations = [ + migrations.AlterField( + model_name="docevent", + name="type", + field=models.CharField( + choices=[ + ("new_revision", "Added new revision"), + ("new_submission", "Uploaded new revision"), + ("changed_document", "Changed document metadata"), + ("added_comment", "Added comment"), + ("added_message", "Added message"), + ("edited_authors", "Edited the documents author list"), + ("deleted", "Deleted document"), + ("changed_state", "Changed state"), + ("changed_stream", "Changed document stream"), + ("expired_document", "Expired document"), + ("extended_expiry", "Extended expiry of document"), + ("requested_resurrect", "Requested resurrect"), + ("completed_resurrect", "Completed resurrect"), + ("changed_consensus", "Changed consensus"), + ("published_rfc", "Published RFC"), + ( + "added_suggested_replaces", + "Added suggested replacement relationships", + ), + ( + "reviewed_suggested_replaces", + "Reviewed suggested replacement relationships", + ), + ("changed_action_holders", "Changed action holders for document"), + ("changed_group", "Changed group"), + ("changed_protocol_writeup", "Changed protocol writeup"), + ("changed_charter_milestone", "Changed charter milestone"), + ("initial_review", "Set initial review time"), + ("changed_review_announcement", "Changed WG Review text"), + ("changed_action_announcement", "Changed WG Action text"), + ("started_iesg_process", "Started IESG process on document"), + ("created_ballot", "Created ballot"), + ("closed_ballot", "Closed ballot"), + ("sent_ballot_announcement", "Sent ballot announcement"), + ("changed_ballot_position", "Changed ballot position"), + ("changed_ballot_approval_text", "Changed ballot approval text"), + ("changed_ballot_writeup_text", "Changed ballot writeup text"), + ("changed_rfc_editor_note_text", "Changed RFC Editor Note text"), + ("changed_last_call_text", "Changed last call text"), + ("requested_last_call", "Requested last call"), + ("sent_last_call", "Sent last call"), + ("scheduled_for_telechat", "Scheduled for telechat"), + ("iesg_approved", "IESG approved document (no problem)"), + ("iesg_disapproved", "IESG disapproved document (do not publish)"), + ("approved_in_minute", "Approved in minute"), + ("iana_review", "IANA review comment"), + ("rfc_in_iana_registry", "RFC is in IANA registry"), + ( + "rfc_editor_received_announcement", + "Announcement was received by RFC Editor", + ), + ("requested_publication", "Publication at RFC Editor requested"), + ( + "sync_from_rfc_editor", + "Received updated information from RFC Editor", + ), + ("changed_rpc_assignments", "Changed RPC queue assignments"), + ("requested_review", "Requested review"), + ("assigned_review_request", "Assigned review request"), + ("closed_review_request", "Closed review request"), + ("closed_review_assignment", "Closed review assignment"), + ("downref_approved", "Downref approved"), + ("posted_related_ipr", "Posted related IPR"), + ("removed_related_ipr", "Removed related IPR"), + ( + "removed_objfalse_related_ipr", + "Removed Objectively False related IPR", + ), + ("changed_editors", "Changed BOF Request editors"), + ("published_statement", "Published statement"), + ("approved_slides", "Slides approved"), + ], + max_length=50, + ), + ), + ] diff --git a/ietf/doc/migrations/0037_rpcassignmentdocevent.py b/ietf/doc/migrations/0037_rpcassignmentdocevent.py new file mode 100644 index 0000000000..648376e118 --- /dev/null +++ b/ietf/doc/migrations/0037_rpcassignmentdocevent.py @@ -0,0 +1,31 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("doc", "0036_alter_docevent_type"), + ] + + operations = [ + migrations.CreateModel( + name="RpcAssignmentDocEvent", + fields=[ + ( + "docevent_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="doc.docevent", + ), + ), + ("assignments", models.TextField(blank=True)), + ], + bases=("doc.docevent",), + ), + ] diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 0af8507f85..156bac4e77 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1546,6 +1546,7 @@ class DocReminder(models.Model): ("rfc_editor_received_announcement", "Announcement was received by RFC Editor"), ("requested_publication", "Publication at RFC Editor requested"), ("sync_from_rfc_editor", "Received updated information from RFC Editor"), + ("changed_rpc_assignments", "Changed RPC queue assignments"), # review ("requested_review", "Requested review"), @@ -1611,6 +1612,9 @@ class StateDocEvent(DocEvent): class ConsensusDocEvent(DocEvent): consensus = models.BooleanField(null=True, default=None) +class RpcAssignmentDocEvent(DocEvent): + assignments = models.TextField(blank=True) + # IESG events class BallotType(models.Model): doc_type = ForeignKey(DocTypeName, blank=True, null=True) diff --git a/ietf/doc/resources.py b/ietf/doc/resources.py index 1d86df78d0..9da7cb57d8 100644 --- a/ietf/doc/resources.py +++ b/ietf/doc/resources.py @@ -19,7 +19,7 @@ ReviewRequestDocEvent, ReviewAssignmentDocEvent, EditedAuthorsDocEvent, DocumentURL, IanaExpertDocEvent, IRSGBallotDocEvent, DocExtResource, DocumentActionHolder, BofreqEditorDocEvent, BofreqResponsibleDocEvent, StoredObject, RfcAuthor, - EditedRfcAuthorsDocEvent) + EditedRfcAuthorsDocEvent, RpcAssignmentDocEvent) from ietf.name.resources import BallotPositionNameResource, DocTypeNameResource class BallotTypeResource(ModelResource): @@ -916,3 +916,28 @@ class Meta: "email": ALL_WITH_RELATIONS, } api.doc.register(RfcAuthorResource()) + + +from ietf.person.resources import PersonResource +class RpcAssignmentDocEventResource(ModelResource): + by = ToOneField(PersonResource, 'by') + doc = ToOneField(DocumentResource, 'doc') + docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr') + class Meta: + queryset = RpcAssignmentDocEvent.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'rpcassignmentdocevent' + ordering = ['docevent_ptr', ] + filtering = { + "id": ALL, + "time": ALL, + "type": ALL, + "rev": ALL, + "desc": ALL, + "assignments": ALL, + "by": ALL_WITH_RELATIONS, + "doc": ALL_WITH_RELATIONS, + "docevent_ptr": ALL_WITH_RELATIONS, + } +api.doc.register(RpcAssignmentDocEventResource()) diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 64e26e503a..798fa9178e 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -666,7 +666,7 @@ }, { "fields": { - "desc": "The individual submission document has been adopted by the Working Group (WG), but a WG document replacing this document with the typical naming convention of 'draft- ietf-wgname-topic-nn' has not yet been submitted.", + "desc": "The individual submission document has been adopted by the Working Group (WG), but some administrative matter still needs to be completed (e.g., a WG document replacing this document with the typical naming convention of 'draft-ietf-wgname-topic-nn' has not yet been submitted).", "name": "Adopted by a WG", "next_states": [ 38 @@ -694,7 +694,7 @@ }, { "fields": { - "desc": "The document has been adopted by the Working Group (WG) and is under development. A document can only be adopted by one WG at a time. However, a document may be transferred between WGs.", + "desc": "The document has been identified as a Working Group (WG) document and is under development per Section 7.2 of RFC2418.", "name": "WG Document", "next_states": [ 39, @@ -759,7 +759,7 @@ }, { "fields": { - "desc": "The Working Group (WG) document has completed Working Group Last Call (WGLC), but the WG chair(s) are not yet ready to call consensus on the document. The reasons for this may include comments from the WGLC need to be responded to, or a revision to the document is needed", + "desc": "The Working Group (WG) document has completed Working Group Last Call (WGLC), but the WG chairs are not yet ready to call consensus on the document. The reasons for this may include comments from the WGLC need to be responded to, or a revision to the document is needed.", "name": "Waiting for WG Chair Go-Ahead", "next_states": [ 41, @@ -790,7 +790,7 @@ }, { "fields": { - "desc": "The Working Group (WG) document has left the WG and been submitted to the Internet Engineering Steering Group (IESG) for evaluation and publication. See the “IESG State” or “RFC Editor State” for further details on the state of the document.", + "desc": "The Working Group (WG) document has been submitted to the Internet Engineering Steering Group (IESG) for evaluation and publication per Section 7.4 of RFC2418. See the “IESG State” or “RFC Editor State” for further details on the state of the document.", "name": "Submitted to IESG for Publication", "next_states": [ 38 @@ -2656,6 +2656,32 @@ "model": "doc.state", "pk": 183 }, + { + "fields": { + "desc": "", + "name": "In Progress", + "next_states": [], + "order": 0, + "slug": "in_progress", + "type": "draft-rfceditor", + "used": true + }, + "model": "doc.state", + "pk": 216 + }, + { + "fields": { + "desc": "", + "name": "Blocked", + "next_states": [], + "order": 0, + "slug": "blocked", + "type": "draft-rfceditor", + "used": true + }, + "model": "doc.state", + "pk": 217 + }, { "fields": { "label": "State" @@ -5816,6 +5842,20 @@ "model": "mailtrigger.mailtrigger", "pk": "review_completed_artart_telechat" }, + { + "fields": { + "cc": [ + "review_doc_all_parties", + "review_doc_group_mail_list" + ], + "desc": "Recipients when a bgpdir Early review is completed", + "to": [ + "review_team_mail_list" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "review_completed_bgpdir_early" + }, { "fields": { "cc": [ @@ -6124,6 +6164,20 @@ "model": "mailtrigger.mailtrigger", "pk": "review_completed_opsdir_telechat" }, + { + "fields": { + "cc": [ + "review_doc_all_parties", + "review_doc_group_mail_list" + ], + "desc": "Recipients when a perfmetrdir Early review is completed", + "to": [ + "review_team_mail_list" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "review_completed_perfmetrdir_early" + }, { "fields": { "cc": [ @@ -14038,6 +14092,16 @@ "model": "name.reviewresultname", "pk": "almost-ready" }, + { + "fields": { + "desc": "", + "name": "Clarification Needed", + "order": 10, + "used": true + }, + "model": "name.reviewresultname", + "pk": "clarification-needed" + }, { "fields": { "desc": "", @@ -17757,5 +17821,13 @@ }, "model": "stats.countryalias", "pk": 303 + }, + { + "fields": { + "alias": "czechia", + "country": "CZ" + }, + "model": "stats.countryalias", + "pk": 304 } ] diff --git a/ietf/settings.py b/ietf/settings.py index 8a4587e50a..aac0eabc90 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -903,6 +903,7 @@ def skip_unreadable_post(record): RFC_EDITOR_INLINE_ERRATA_URL = "https://www.rfc-editor.org/rfc/inline-errata/rfc{rfc_number}.html" RFC_EDITOR_ERRATA_BASE_URL = "https://www.rfc-editor.org/errata/" RFC_EDITOR_INFO_BASE_URL = "https://www.rfc-editor.org/info/" +RFC_EDITOR_QUEUE_SITE_BASE_URL = "https://queue.rfc-editor.org" # NomCom Tool settings diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index 34b2efeb5c..3808fb1db5 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -13,8 +13,11 @@ from django.conf import settings from django.utils import timezone -from ietf.doc.models import DocEvent, RelatedDocument +from ietf.doc.models import DocEvent, DocTagName, Document, RelatedDocument, RpcAssignmentDocEvent, State from ietf.doc.tasks import rebuild_reference_relations_task +from ietf.doc.utils import add_state_change_event, new_state_change_event, update_action_holders +from ietf.person.models import Person +from ietf.utils.mail import send_mail_text from ietf.sync import iana from ietf.sync import rfceditor from ietf.sync.errata import ( @@ -342,3 +345,127 @@ def refresh_rfc_index_task(): pass mark_rfcindex_as_processed(new_processed_time) + + +@shared_task +def process_rpc_queue_task(data: list): + in_progress_state = State.objects.get( + used=True, type="draft-rfceditor", slug="in_progress" + ) + blocked_state = State.objects.get(used=True, type="draft-rfceditor", slug="blocked") + system = Person.objects.get(name="(System)") + iana_ref_tags = list(DocTagName.objects.filter(slug__in=["iana", "ref"])) + + names = [obj["name"] for obj in data] + docs_in_db = { + d.name: d for d in Document.objects.filter(type="draft", name__in=names) + } + + for obj in data: + name = obj["name"] + if name not in docs_in_db: + log.log(f"process_rpc_queue_task: unknown document {name}") + continue + + d = docs_in_db[name] + events = [] + prev_state = d.get_state("draft-rfceditor") + + # Same check as ietf.sync.rfceditor.update_drafts_from_queue: + # if this document just arrived at the RFC Editor for the first time, record it. + if ( + d.get_state_slug("draft-iesg") == "ann" + and not prev_state + and not d.latest_event(DocEvent, type="rfc_editor_received_announcement") + ): + e = DocEvent( + doc=d, rev=d.rev, by=system, type="rfc_editor_received_announcement" + ) + e.desc = "Announcement was received by RFC Editor" + e.save() + send_mail_text( + None, + "iesg-secretary@ietf.org", + None, + "%s in RFC Editor queue" % d.name, + "The announcement for %s has been received by the RFC Editor." % d.name, + ) + prev_iesg_state = State.objects.get( + used=True, type="draft-iesg", slug="ann" + ) + next_iesg_state = State.objects.get( + used=True, type="draft-iesg", slug="rfcqueue" + ) + d.set_state(next_iesg_state) + e = add_state_change_event(d, system, prev_iesg_state, next_iesg_state) + if e: + events.append(e) + e = update_action_holders(d, prev_iesg_state, next_iesg_state) + if e: + events.append(e) + + is_blocked = any(a["role"] == "blocked" for a in obj.get("assignment_set", [])) + next_state = blocked_state if is_blocked else in_progress_state + + if prev_state != next_state: + d.set_state(next_state) + e = new_state_change_event(d, system, prev_state, next_state) + if e: + e.save() + events.append(e) + + roles = sorted(a["role"] for a in obj.get("assignment_set", [])) + next_assignments = ", ".join(roles) + blocking_names = sorted( + br["reason"]["name"] for br in obj.get("blocking_reasons", []) + ) + if blocking_names: + next_assignments += ": " + ", ".join(blocking_names) + + if next_assignments == "": + next_assignments = "Awaiting Editor Assignment" + + prev_assignments_event = d.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + prev_assignments = ( + prev_assignments_event.assignments if prev_assignments_event else None + ) + + if next_assignments != prev_assignments: + e = RpcAssignmentDocEvent( + doc=d, + rev=d.rev, + by=system, + type="changed_rpc_assignments", + assignments=next_assignments, + ) + e.desc = f"RPC status changed to {next_assignments}" + if prev_assignments is not None and prev_assignments != "": + e.desc += f" from {prev_assignments}" + e.save() + events.append(e) + + rfc_number = obj.get("rfc_number") + if obj.get("final_approval") and rfc_number: + d.documenturl_set.update_or_create( + tag_id="auth48", + defaults=dict( + url=f"{settings.RFC_EDITOR_QUEUE_SITE_BASE_URL}/final-review/rfc{rfc_number}/" + ), + ) + else: + d.documenturl_set.filter(tag_id="auth48").delete() + + d.tags.remove(*iana_ref_tags) + + if events: + d.save_with_history(events) + + for d in ( + Document.objects.exclude(name__in=names) + .filter(states__type="draft-rfceditor") + .distinct() + ): + d.tags.remove(*iana_ref_tags) + d.unset_state("draft-rfceditor") diff --git a/ietf/sync/tests_tasks.py b/ietf/sync/tests_tasks.py new file mode 100644 index 0000000000..6657dd617a --- /dev/null +++ b/ietf/sync/tests_tasks.py @@ -0,0 +1,476 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +from django.test.utils import override_settings + +from ietf.doc.factories import WgDraftFactory +from ietf.doc.models import ( + DocEvent, + DocTagName, + Document, + DocumentURL, + RpcAssignmentDocEvent, + State, +) +from ietf.person.models import Person +from ietf.sync import tasks +from ietf.utils.mail import outbox +from ietf.utils.test_utils import TestCase + + +def _make_entry( + doc_name, roles=None, blocking_reasons=None, rfc_number=None, final_approval=None +): + return { + "name": doc_name, + "assignment_set": [{"role": r, "state": "in_progress"} for r in (roles or [])], + "blocking_reasons": blocking_reasons or [], + "rfc_number": rfc_number, + "final_approval": final_approval or [], + } + + +class ProcessRpcQueueTaskTests(TestCase): + def setUp(self): + super().setUp() + self.system = Person.objects.get(name="(System)") + + # --- Unknown document -------------------------------------------------------- + + def test_unknown_document_is_skipped(self): + """Entries with unknown doc names are logged and skipped without raising.""" + tasks.process_rpc_queue_task([_make_entry("draft-does-not-exist")]) + self.assertFalse(Document.objects.filter(name="draft-does-not-exist").exists()) + + # --- First-arrival announcement ---------------------------------------------- + + def test_first_arrival_fires_announcement(self): + """Fires rfc_editor_received_announcement and email on first arrival.""" + draft = WgDraftFactory(states=[("draft-iesg", "ann")]) + mailbox_before = len(outbox) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + draft = Document.objects.get(pk=draft.pk) + self.assertEqual(draft.get_state_slug("draft-iesg"), "rfcqueue") + self.assertTrue( + draft.docevent_set.filter(type="rfc_editor_received_announcement").exists() + ) + self.assertEqual(len(outbox), mailbox_before + 1) + self.assertIn("RFC Editor queue", outbox[-1]["Subject"]) + self.assertIn("iesg-secretary@ietf.org", outbox[-1]["To"]) + + def test_first_arrival_skipped_if_rfceditor_state_exists(self): + """No announcement when doc already has a draft-rfceditor state.""" + draft = WgDraftFactory(states=[("draft-iesg", "ann")]) + draft.set_state( + State.objects.get(used=True, type="draft-rfceditor", slug="in_progress") + ) + mailbox_before = len(outbox) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertFalse( + draft.docevent_set.filter(type="rfc_editor_received_announcement").exists() + ) + self.assertEqual(len(outbox), mailbox_before) + + def test_first_arrival_skipped_if_announcement_event_exists(self): + """No duplicate announcement when rfc_editor_received_announcement already exists.""" + draft = WgDraftFactory(states=[("draft-iesg", "ann")]) + DocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="rfc_editor_received_announcement", + desc="Announcement was received by RFC Editor", + ) + mailbox_before = len(outbox) + + tasks.process_rpc_queue_task([_make_entry(draft.name)]) + + self.assertEqual( + draft.docevent_set.filter(type="rfc_editor_received_announcement").count(), + 1, + ) + self.assertEqual(len(outbox), mailbox_before) + + def test_first_arrival_skipped_if_not_ann_iesg_state(self): + """No announcement when IESG state is not 'ann'.""" + draft = WgDraftFactory(states=[("draft-iesg", "rfcqueue")]) + mailbox_before = len(outbox) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertFalse( + draft.docevent_set.filter(type="rfc_editor_received_announcement").exists() + ) + self.assertEqual(len(outbox), mailbox_before) + + # --- draft-rfceditor state transitions --------------------------------------- + + def test_sets_in_progress_state(self): + """Non-blocked assignment results in in_progress draft-rfceditor state.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + draft = Document.objects.get(pk=draft.pk) + self.assertEqual(draft.get_state_slug("draft-rfceditor"), "in_progress") + + def test_sets_blocked_state(self): + """Assignment with role='blocked' results in blocked draft-rfceditor state.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [{"role": "blocked", "state": "in_progress"}], + "blocking_reasons": [], + "rfc_number": None, + "final_approval": [], + } + ] + ) + + draft = Document.objects.get(pk=draft.pk) + self.assertEqual(draft.get_state_slug("draft-rfceditor"), "blocked") + + def test_no_state_change_event_when_state_unchanged(self): + """No state-change DocEvent created when draft-rfceditor state is already correct.""" + draft = WgDraftFactory(states=[("draft-rfceditor", "in_progress")]) + events_before = draft.docevent_set.filter(type="changed_state").count() + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertEqual( + draft.docevent_set.filter(type="changed_state").count(), events_before + ) + + def test_state_change_event_created_on_transition(self): + """State-change DocEvent is created when draft-rfceditor state changes.""" + draft = WgDraftFactory(states=[("draft-rfceditor", "in_progress")]) + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [{"role": "blocked", "state": "in_progress"}], + "blocking_reasons": [], + "rfc_number": None, + "final_approval": [], + } + ] + ) + + self.assertTrue(draft.docevent_set.filter(type="changed_state").exists()) + draft = Document.objects.get(pk=draft.pk) + self.assertEqual(draft.get_state_slug("draft-rfceditor"), "blocked") + + # --- RpcAssignmentDocEvent --------------------------------------------------- + + def test_creates_assignment_event_on_first_update(self): + """Creates RpcAssignmentDocEvent when no prior event exists.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [_make_entry(draft.name, roles=["first_editor", "second_editor"])] + ) + + event = draft.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + self.assertIsNotNone(event) + self.assertEqual(event.assignments, "first_editor, second_editor") + + def test_no_assignment_event_when_unchanged(self): + """No new RpcAssignmentDocEvent when assignments match the last recorded ones.""" + draft = WgDraftFactory() + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="first_editor", + desc="RPC status changed to first_editor", + ) + events_before = RpcAssignmentDocEvent.objects.filter(doc=draft).count() + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertEqual( + RpcAssignmentDocEvent.objects.filter(doc=draft).count(), events_before + ) + + def test_assignment_desc_includes_previous_assignments(self): + """Assignment event desc includes previous assignments when they exist.""" + draft = WgDraftFactory() + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="first_editor", + desc="RPC status changed to first_editor", + ) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["second_editor"])]) + + event = draft.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + self.assertIn("from first_editor", event.desc) + + def test_blocking_reasons_appended_to_assignments(self): + """Blocking reason names are appended after ':' in the assignment string, sorted.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [{"role": "blocked", "state": "in_progress"}], + "blocking_reasons": [ + {"reason": {"name": "missing reference"}}, + ], + "rfc_number": None, + "final_approval": [], + } + ] + ) + + event = draft.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + self.assertIsNotNone(event) + self.assertEqual(event.assignments, "blocked: missing reference") + + def test_roles_sorted_in_assignment_string(self): + """Roles are sorted alphabetically in the assignment string.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [_make_entry(draft.name, roles=["second_editor", "first_editor"])] + ) + + event = draft.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + self.assertEqual(event.assignments, "first_editor, second_editor") + + def test_empty_roles_uses_awaiting_editor_assignment(self): + """Empty assignment_set records 'Awaiting Editor Assignment' rather than an empty string.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task([_make_entry(draft.name)]) + + event = draft.latest_event( + RpcAssignmentDocEvent, type="changed_rpc_assignments" + ) + self.assertIsNotNone(event) + self.assertEqual(event.assignments, "Awaiting Editor Assignment") + + # --- DocumentURL (auth48) handling ------------------------------------------- + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_created_on_final_approval(self): + """auth48 DocumentURL is created when final_approval is truthy and rfc_number is set.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [ + {"role": "first_editor", "state": "in_progress"} + ], + "blocking_reasons": [], + "rfc_number": 9999, + "final_approval": [{"approved": True}], + } + ] + ) + + url_obj = draft.documenturl_set.filter(tag_id="auth48").first() + self.assertIsNotNone(url_obj) + self.assertEqual(url_obj.url, "https://queue.example.com/final-review/rfc9999/") + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_not_created_without_rfc_number(self): + """No auth48 URL created when rfc_number is None even if final_approval is set.""" + draft = WgDraftFactory() + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [ + {"role": "first_editor", "state": "in_progress"} + ], + "blocking_reasons": [], + "rfc_number": None, + "final_approval": [{"approved": True}], + } + ] + ) + + self.assertFalse(draft.documenturl_set.filter(tag_id="auth48").exists()) + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_deleted_when_final_approval_cleared(self): + """Existing auth48 URL is deleted whenever final_approval is empty, regardless of whether assignments changed.""" + draft = WgDraftFactory() + DocumentURL.objects.create( + doc=draft, + tag_id="auth48", + url="https://queue.example.com/final-review/rfc9999/", + ) + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="old_editor", + desc="RPC status changed to old_editor", + ) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertFalse(draft.documenturl_set.filter(tag_id="auth48").exists()) + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_updated_when_rfc_number_changes(self): + """auth48 URL is updated whenever final_approval and rfc_number are set, regardless of whether assignments changed.""" + draft = WgDraftFactory() + DocumentURL.objects.create( + doc=draft, + tag_id="auth48", + url="https://queue.example.com/final-review/rfc8888/", + ) + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="old_editor", + desc="RPC status changed to old_editor", + ) + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [ + {"role": "first_editor", "state": "in_progress"} + ], + "blocking_reasons": [], + "rfc_number": 9999, + "final_approval": [{"approved": True}], + } + ] + ) + + url_obj = draft.documenturl_set.filter(tag_id="auth48").first() + self.assertIsNotNone(url_obj) + self.assertEqual(url_obj.url, "https://queue.example.com/final-review/rfc9999/") + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_created_when_assignments_unchanged(self): + """auth48 URL is created even when assignments have not changed.""" + draft = WgDraftFactory() + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="first_editor", + desc="RPC status changed to first_editor", + ) + + tasks.process_rpc_queue_task( + [ + { + "name": draft.name, + "assignment_set": [ + {"role": "first_editor", "state": "in_progress"} + ], + "blocking_reasons": [], + "rfc_number": 9999, + "final_approval": [{"approved": True}], + } + ] + ) + + url_obj = draft.documenturl_set.filter(tag_id="auth48").first() + self.assertIsNotNone(url_obj) + self.assertEqual(url_obj.url, "https://queue.example.com/final-review/rfc9999/") + + @override_settings(RFC_EDITOR_QUEUE_SITE_BASE_URL="https://queue.example.com") + def test_auth48_url_deleted_when_assignments_unchanged(self): + """Existing auth48 URL is deleted even when assignments have not changed.""" + draft = WgDraftFactory() + DocumentURL.objects.create( + doc=draft, + tag_id="auth48", + url="https://queue.example.com/final-review/rfc9999/", + ) + RpcAssignmentDocEvent.objects.create( + doc=draft, + rev=draft.rev, + by=self.system, + type="changed_rpc_assignments", + assignments="first_editor", + desc="RPC status changed to first_editor", + ) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + self.assertFalse(draft.documenturl_set.filter(tag_id="auth48").exists()) + + # --- Tag handling ------------------------------------------------------------ + + def test_removes_iana_and_ref_tags_from_queued_docs(self): + """iana and ref tags are removed from documents in the queue.""" + iana_tag = DocTagName.objects.get(slug="iana") + ref_tag = DocTagName.objects.get(slug="ref") + draft = WgDraftFactory() + draft.tags.add(iana_tag, ref_tag) + + tasks.process_rpc_queue_task([_make_entry(draft.name)]) + + draft = Document.objects.get(pk=draft.pk) + self.assertNotIn(iana_tag, draft.tags.all()) + self.assertNotIn(ref_tag, draft.tags.all()) + + # --- Cleanup of docs no longer in queue -------------------------------------- + + def test_unsets_rfceditor_state_for_docs_not_in_queue(self): + """Documents with draft-rfceditor state but absent from the queue have that state cleared.""" + draft = WgDraftFactory(states=[("draft-rfceditor", "in_progress")]) + + tasks.process_rpc_queue_task([]) + + draft = Document.objects.get(pk=draft.pk) + self.assertIsNone(draft.get_state("draft-rfceditor")) + + def test_removes_tags_from_docs_not_in_queue(self): + """iana and ref tags are removed from docs with rfceditor state not in the queue.""" + iana_tag = DocTagName.objects.get(slug="iana") + ref_tag = DocTagName.objects.get(slug="ref") + draft = WgDraftFactory(states=[("draft-rfceditor", "in_progress")]) + draft.tags.add(iana_tag, ref_tag) + + tasks.process_rpc_queue_task([]) + + draft = Document.objects.get(pk=draft.pk) + self.assertNotIn(iana_tag, draft.tags.all()) + self.assertNotIn(ref_tag, draft.tags.all()) + + def test_docs_in_queue_retain_rfceditor_state(self): + """Documents present in the queue keep their draft-rfceditor state.""" + draft = WgDraftFactory(states=[("draft-rfceditor", "in_progress")]) + + tasks.process_rpc_queue_task([_make_entry(draft.name, roles=["first_editor"])]) + + draft = Document.objects.get(pk=draft.pk) + self.assertIsNotNone(draft.get_state("draft-rfceditor")) From 4165235a1609eb58fcdc7a20a1d710bad098ef0a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 15 May 2026 13:21:54 -0300 Subject: [PATCH 149/161] chore: strip whitespace in test (#10874) --- ietf/sync/tests_rfcindex.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ietf/sync/tests_rfcindex.py b/ietf/sync/tests_rfcindex.py index 74fa9e7616..2b70924db3 100644 --- a/ietf/sync/tests_rfcindex.py +++ b/ietf/sync/tests_rfcindex.py @@ -1,5 +1,6 @@ # Copyright The IETF Trust 2026, All Rights Reserved import json +import re from pathlib import Path from unittest import mock @@ -131,17 +132,20 @@ def test_create_rfc_txt_index(self, mock_save_blob, mock_save_file): "0123 Not Issued.", contents, ) + + # strip whitespace so line breaks don't interfere with the next few tests + stripped_contents = re.sub(r"\s+", " ", mock_save_blob.call_args[0][1]) self.assertIn( f"{self.april_fools_rfc.rfc_number} {self.april_fools_rfc.title}", - contents, + stripped_contents, ) self.assertIn("1 April 2020", contents) # from the April 1 RFC self.assertIn( f"{self.rfc.rfc_number} {self.rfc.title}", - contents, + stripped_contents, ) - self.assertIn("April 2021", contents) # from the non-April 1 RFC - self.assertNotIn("1 April 2021", contents) + self.assertIn("April 2021", stripped_contents) # from the non-April 1 RFC + self.assertNotIn("1 April 2021", stripped_contents) @override_settings(RFCINDEX_INPUT_PATH="input/") @mock.patch("ietf.sync.rfcindex.save_to_filesystem") From e37a2c97c22636c0d69330c49693bb1071b7b922 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 15 May 2026 11:22:28 -0500 Subject: [PATCH 150/161] fix: stop linking to pdfized txt at the rfc editor site (#10873) * fix: stop linking to pdfized txt at the rfc editor site * test: adjust tests to match --- ietf/doc/feeds.py | 8 -------- ietf/doc/tests.py | 4 ++-- ietf/doc/utils.py | 3 --- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/ietf/doc/feeds.py b/ietf/doc/feeds.py index 0269906fcf..7472b14c18 100644 --- a/ietf/doc/feeds.py +++ b/ietf/doc/feeds.py @@ -234,14 +234,6 @@ def item_extra_kwargs(self, item): "is_format_of": self.item_link(item), } ) - if item.rfc_number not in [571, 587]: - media_contents.append( - { - "url": f"https://www.rfc-editor.org/rfc/pdfrfc/{item.name}.txt.pdf", - "media_type": "application/pdf", - "is_format_of": self.item_link(item), - } - ) else: media_contents.append( { diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index b001e01e80..ff4461d466 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -2093,9 +2093,9 @@ def test_rfc_feed(self): self.assertEqual(len(q("item")), 3) item = q("item")[0] media_content = item.findall("{http://search.yahoo.com/mrss/}content") - self.assertEqual(len(media_content), 3) + self.assertEqual(len(media_content), 2) types = set([m.attrib["type"] for m in media_content]) - self.assertEqual(types, set(["text/plain", "text/html", "application/pdf"])) + self.assertEqual(types, set(["text/plain", "text/html"])) def test_state_help(self): url = urlreverse('ietf.doc.views_help.state_help', kwargs=dict(type="draft-iesg")) diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 6f32ed454f..5f8f587c59 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -1274,9 +1274,6 @@ def build_file_urls(doc: Union[Document, DocHistory]): label = "plain text" if t == "txt" else t file_urls.append((label, base + doc.name + "." + t)) - if "pdf" not in found_types and "txt" in found_types: - file_urls.append(("pdf", base + "pdfrfc/" + doc.name + ".txt.pdf")) - if "txt" in found_types: file_urls.append(("htmlized", urlreverse('ietf.doc.views_doc.document_html', kwargs=dict(name=doc.name)))) if doc.tags.filter(slug="verified-errata").exists(): From c5ce32847add41737ca3920f3ae6323f7a8af6d3 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 20 May 2026 12:35:49 -0300 Subject: [PATCH 151/161] ci: numeric settings -> int for searchindex cfg (#10904) --- k8s/settings_local.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 19d0a1c2f5..41d6d99745 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -496,9 +496,11 @@ def _multiline_to_list(s): SEARCHINDEX_CONFIG = { "TYPESENSE_API_URL": os.environ.get("DATATRACKER_TYPESENSE_API_URL", ""), "TYPESENSE_API_KEY": os.environ.get("DATATRACKER_TYPESENSE_API_KEY", ""), - "TASK_RETRY_DELAY": os.environ.get("DATATRACKER_SEARCHINDEX_TASK_RETRY_DELAY", 10), - "TASK_MAX_RETRIES": os.environ.get( - "DATATRACKER_SEARCHINDEX_TASK_MAX_RETRIES", "12" + "TASK_RETRY_DELAY": int( + os.environ.get("DATATRACKER_SEARCHINDEX_TASK_RETRY_DELAY", "10") + ), + "TASK_MAX_RETRIES": int( + os.environ.get("DATATRACKER_SEARCHINDEX_TASK_MAX_RETRIES", "12") ), } From c6b49e78401dd6605a575a197d28ebb71c76b2e4 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 21 May 2026 11:15:08 -0500 Subject: [PATCH 152/161] fix: remove no longer needed notification to the rfc-editor (#10911) --- ietf/doc/tests_ballot.py | 8 +-- ietf/doc/tests_draft.py | 8 +-- ietf/doc/views_ballot.py | 10 ---- ietf/doc/views_draft.py | 9 ---- ietf/settings.py | 3 -- ietf/sync/rfceditor.py | 51 ------------------- ietf/sync/tests.py | 24 --------- .../rfceditor_post_approved_draft_failed.html | 26 ---------- k8s/secrets.yaml | 3 +- k8s/settings_local.py | 6 --- 10 files changed, 5 insertions(+), 143 deletions(-) delete mode 100644 ietf/templates/doc/draft/rfceditor_post_approved_draft_failed.html diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index 8420e411e2..517a2ce056 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -3,7 +3,6 @@ import datetime -from unittest import mock from pyquery import PyQuery @@ -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 diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index 21a873c5c0..db9dbc2baf 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -6,7 +6,6 @@ import os import datetime import io -from unittest import mock from collections import Counter from pathlib import Path @@ -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)) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 03cf01a4a1..29aadfdb9b 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -939,16 +939,6 @@ def approve_ballot(request, name): if ballot_writeup_event.pk == None: ballot_writeup_event.save() - if new_state.slug == "ann" and new_state.slug != prev_state.slug: - # start by notifying the RFC Editor - import ietf.sync.rfceditor - response, error = ietf.sync.rfceditor.post_approved_draft(settings.RFC_EDITOR_SYNC_NOTIFICATION_URL, doc.name) - if error: - return render(request, 'doc/draft/rfceditor_post_approved_draft_failed.html', - dict(name=doc.name, - response=response, - error=error)) - doc.set_state(new_state) doc.tags.remove(*prev_tags) diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index c5faf1140b..0f5ea49f5d 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -1276,15 +1276,6 @@ class PublicationForm(forms.Form): if form.is_valid(): events = [] - # start by notifying the RFC Editor - import ietf.sync.rfceditor - response, error = ietf.sync.rfceditor.post_approved_draft(settings.RFC_EDITOR_SYNC_NOTIFICATION_URL, doc.name) - if error: - return render(request, 'doc/draft/rfceditor_post_approved_draft_failed.html', - dict(name=doc.name, - response=response, - error=error)) - m.subject = form.cleaned_data["subject"] m.body = form.cleaned_data["body"] m.save() diff --git a/ietf/settings.py b/ietf/settings.py index aac0eabc90..95f2ffefd7 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -893,10 +893,7 @@ def skip_unreadable_post(record): IANA_SYNC_CHANGES_URL = "https://datatracker.iana.org:4443/data-tracker/changes" IANA_SYNC_PROTOCOLS_URL = "https://www.iana.org/protocols/" -RFC_EDITOR_SYNC_PASSWORD="secret" -RFC_EDITOR_SYNC_NOTIFICATION_URL = "https://www.rfc-editor.org/parser/parser.php" RFC_EDITOR_GROUP_NOTIFICATION_EMAIL = "webmaster@rfc-editor.org" -#RFC_EDITOR_GROUP_NOTIFICATION_URL = "https://www.rfc-editor.org/notification/group.php" RFC_EDITOR_QUEUE_URL = "https://www.rfc-editor.org/queue2.xml" RFC_EDITOR_INDEX_URL = "https://www.rfc-editor.org/rfc/rfc-index.xml" RFC_EDITOR_ERRATA_JSON_URL = "https://www.rfc-editor.org/errata.json" diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py index aa0e643b20..347b58efbb 100644 --- a/ietf/sync/rfceditor.py +++ b/ietf/sync/rfceditor.py @@ -2,20 +2,15 @@ # -*- coding: utf-8 -*- -import base64 import datetime import re -import requests from typing import Iterator, Optional, Union -from urllib.parse import urlencode from xml.dom import pulldom, Node -from django.conf import settings from django.db import transaction from django.db.models import Subquery, OuterRef, F, Q from django.utils import timezone -from django.utils.encoding import smart_bytes, force_str import debug # pyflakes:ignore @@ -847,50 +842,4 @@ def parse_relation_list(rel_list: list[str]) -> list[Document]: ).update(document=F("subseries_target")) -def post_approved_draft(url, name): - """Post an approved draft to the RFC Editor so they can retrieve - the data from the Datatracker and start processing it. Returns - response and error (empty string if no error).""" - - if settings.SERVER_MODE != "production": - log(f"In production, would have posted RFC-Editor notification of approved I-D '{name}' to '{url}'") - return "", "" - - # HTTP basic auth - username = "dtracksync" - password = settings.RFC_EDITOR_SYNC_PASSWORD - headers = { - "Content-type": "application/x-www-form-urlencoded", - "Accept": "text/plain", - "Authorization": "Basic %s" % force_str(base64.encodebytes(smart_bytes("%s:%s" % (username, password)))).replace("\n", ""), - } - - log("Posting RFC-Editor notification of approved Internet-Draft '%s' to '%s'" % (name, url)) - text = error = "" - - try: - r = requests.post( - url, - headers=headers, - data=smart_bytes(urlencode({ 'draft': name })), - timeout=settings.DEFAULT_REQUESTS_TIMEOUT, - ) - - log("RFC-Editor notification result for Internet-Draft '%s': %s:'%s'" % (name, r.status_code, r.text)) - - if r.status_code != 200: - raise RuntimeError("Status code is not 200 OK (it's %s)." % r.status_code) - - if force_str(r.text) != "OK": - raise RuntimeError('Response is not "OK" (it\'s "%s").' % r.text) - - except Exception as e: - # catch everything so we don't leak exceptions, convert them - # into string instead - msg = "Exception on RFC-Editor notification for Internet-Draft '%s': %s: %s" % (name, type(e), str(e)) - log(msg) - if settings.SERVER_MODE == 'test': - debug.say(msg) - error = str(e) - return text, error diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index e83b6a5e0a..207c78cf6a 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -795,30 +795,6 @@ def test_update_draft_auth48_url(self): auth48_docurl = draft.documenturl_set.filter(tag_id='auth48').first() self.assertIsNone(auth48_docurl) - def test_post_approved_draft_in_production_only(self): - self.requests_mock.post("https://rfceditor.example.com/", status_code=200, text="OK") - - # be careful playing with SERVER_MODE! - with override_settings(SERVER_MODE="test"): - self.assertEqual( - rfceditor.post_approved_draft("https://rfceditor.example.com/", "some-draft"), - ("", "") - ) - self.assertFalse(self.requests_mock.called) - with override_settings(SERVER_MODE="development"): - self.assertEqual( - rfceditor.post_approved_draft("https://rfceditor.example.com/", "some-draft"), - ("", "") - ) - self.assertFalse(self.requests_mock.called) - with override_settings(SERVER_MODE="production"): - self.assertEqual( - rfceditor.post_approved_draft("https://rfceditor.example.com/", "some-draft"), - ("", "") - ) - self.assertTrue(self.requests_mock.called) - - class DiscrepanciesTests(TestCase): def test_discrepancies(self): diff --git a/ietf/templates/doc/draft/rfceditor_post_approved_draft_failed.html b/ietf/templates/doc/draft/rfceditor_post_approved_draft_failed.html deleted file mode 100644 index f976ead926..0000000000 --- a/ietf/templates/doc/draft/rfceditor_post_approved_draft_failed.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} -{% load origin %} -{% block title %}Posting approved I-D to RFC Editor failed{% endblock %} -{% block content %} - {% origin %} -

    Posting approved I-D to RFC Editor failed

    -

    - Sorry, when trying to notify the RFC Editor through HTTP, we hit an - error. -

    -

    - We have not changed the Internet-Draft state or sent the announcement - yet so if this is an intermittent error, you can go back and try - again. -

    -

    - The error was: {{ error }} -

    - {% if response %} -

    - The response from the RFC Editor was: - {{ response|linebreaksbr }} -

    - {% endif %} -{% endblock %} \ No newline at end of file diff --git a/k8s/secrets.yaml b/k8s/secrets.yaml index ba90af9c2a..4d32652146 100644 --- a/k8s/secrets.yaml +++ b/k8s/secrets.yaml @@ -39,7 +39,6 @@ stringData: DATATRACKER_NOMCOM_APP_SECRET_B64: "m9pzMezVoFNJfsvU9XSZxGnXnwup6P5ZgCQeEnROOoQ=" # secret DATATRACKER_IANA_SYNC_PASSWORD: "this-is-the-iana-sync-password" # secret - DATATRACKER_RFC_EDITOR_SYNC_PASSWORD: "this-is-the-rfc-editor-sync-password" # secret DATATRACKER_YOUTUBE_API_KEY: "this-is-the-youtube-api-key" # secret DATATRACKER_GITHUB_BACKUP_API_KEY: "this-is-the-github-backup-api-key" # secret @@ -80,4 +79,4 @@ stringData: # Scout configuration DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" - DATATRACKER_SCOUT_NAME: "StagingDatatracker" \ No newline at end of file + DATATRACKER_SCOUT_NAME: "StagingDatatracker" diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 41d6d99745..402f89787b 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -44,12 +44,6 @@ def _multiline_to_list(s): else: raise RuntimeError("DATATRACKER_IANA_SYNC_PASSWORD must be set") -_RFC_EDITOR_SYNC_PASSWORD = os.environ.get("DATATRACKER_RFC_EDITOR_SYNC_PASSWORD", None) -if _RFC_EDITOR_SYNC_PASSWORD is not None: - RFC_EDITOR_SYNC_PASSWORD = os.environ.get("DATATRACKER_RFC_EDITOR_SYNC_PASSWORD") -else: - raise RuntimeError("DATATRACKER_RFC_EDITOR_SYNC_PASSWORD must be set") - _YOUTUBE_API_KEY = os.environ.get("DATATRACKER_YOUTUBE_API_KEY", None) if _YOUTUBE_API_KEY is not None: YOUTUBE_API_KEY = _YOUTUBE_API_KEY From 35b4048097ff21ecac84656e1adf382100bf56df Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 21 May 2026 13:17:21 -0300 Subject: [PATCH 153/161] fix: meeting_stats -> 404 for nonexistent meeting (#10896) * fix: meeting_stats->404 for nonexistent number * test: add test case * chore: fix lint * test: fix new test --- ietf/stats/tests.py | 31 +++++++++++++++++++++++++++---- ietf/stats/views.py | 18 +++++++++--------- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/ietf/stats/tests.py b/ietf/stats/tests.py index 373f06e343..dc5b5d6ae8 100644 --- a/ietf/stats/tests.py +++ b/ietf/stats/tests.py @@ -1,18 +1,19 @@ -# Copyright The IETF Trust 2016-2020, All Rights Reserved -# -*- coding: utf-8 -*- - +# Copyright The IETF Trust 2016-2026, All Rights Reserved import calendar import json import datetime +from django.http import Http404 from pyquery import PyQuery import debug # pyflakes:ignore +from django.test import RequestFactory from django.urls import reverse as urlreverse from django.utils import timezone +from ietf.meeting.models import Meeting from ietf.utils.test_utils import login_testing_unauthorized, TestCase import ietf.stats.views @@ -87,7 +88,29 @@ def test_meeting_stats(self): self.assertContains(r, "/stats/meeting/124/country") self.assertContains(r, "/stats/meeting/125/country") self.assertContains(r, "This page provides a timeline of meeting registrations.") - + + def test_meeting_stats_for_bad_meeting(self): + self.assertFalse(Meeting.objects.filter(number=676767).exists()) + for stats_type in ["affiliation", "country"]: + r = self.client.get( + urlreverse( + "ietf.stats.views.meeting_stats", + kwargs={"meeting_number": 676767, "stats_type": stats_type}, + ) + ) + self.assertEqual(r.status_code, 404) + + # We don't have a URL for an interim, but make sure the view will 404 if + # somehow a non-interim gets selected... + interim_num = MeetingFactory(type_id="interim").number + request_factory = RequestFactory() + with self.assertRaises(Http404): + ietf.stats.views.meeting_stats( + request_factory.get(f"/stats/meeting/{interim_num}/{stats_type}"), + meeting_number=interim_num, + stats_type=stats_type, + ) + def test_known_country_list(self): # check redirect url = urlreverse(ietf.stats.views.known_countries_list) diff --git a/ietf/stats/views.py b/ietf/stats/views.py index d61b673075..d61c9cab64 100644 --- a/ietf/stats/views.py +++ b/ietf/stats/views.py @@ -13,7 +13,7 @@ from django.contrib.auth.decorators import login_required from django.core.cache import cache from django.http import HttpResponseRedirect -from django.shortcuts import render +from django.shortcuts import render, get_object_or_404 from django.urls import reverse as urlreverse from django.db.models import Count @@ -27,11 +27,11 @@ from ietf.group.models import Role, Group from ietf.person.models import Person from ietf.name.models import ReviewResultName, CountryName, ReviewAssignmentStateName -from ietf.meeting.models import Registration +from ietf.meeting.models import Registration, Meeting from ietf.ietfauth.utils import has_role from ietf.utils.response import permission_denied from ietf.utils.timezone import date_today, DEADLINE_TZINFO -from ietf.meeting.helpers import get_current_ietf_meeting_num, get_ietf_meeting +from ietf.meeting.helpers import get_current_ietf_meeting_num # Color palette for lines colors = [ @@ -568,12 +568,12 @@ def meeting_stats(request, meeting_number=None, stats_type='country'): Returns: Rendered response for the meeting stats template. """ - - current_meeting = get_current_ietf_meeting_num() + current_meeting_number = get_current_ietf_meeting_num() if meeting_number is None: - meeting_number = current_meeting - - this_meeting = get_ietf_meeting(meeting_number) + meeting_number = current_meeting_number + this_meeting = get_object_or_404( + Meeting.objects.filter(type_id="ietf"), number=meeting_number + ) if stats_type == 'affiliation': minimum_required = 4 @@ -616,7 +616,7 @@ def meeting_stats(request, meeting_number=None, stats_type='country'): if int(meeting_number) > 72: # No registration data before IETF-72 possible_meeting_numbers.append((int(meeting_number)-1, urlreverse(meeting_stats, kwargs={'meeting_number': int(meeting_number)-1, 'stats_type': stats_type}))) possible_meeting_numbers.append((meeting_number, urlreverse(meeting_stats, kwargs={'meeting_number': meeting_number, 'stats_type': stats_type}))) - if int(meeting_number) <= int(current_meeting): # Allow current meeting +1 + if int(meeting_number) <= int(current_meeting_number): # Allow current meeting +1 possible_meeting_numbers.append((int(meeting_number)+1, urlreverse(meeting_stats, kwargs={'meeting_number': int(meeting_number)+1, 'stats_type': stats_type}))) return render(request, "stats/meeting_stats.html", { From d7ce42fd71b3ea946313cfd42fcc6b1faae52e16 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 21 May 2026 14:34:31 -0300 Subject: [PATCH 154/161] fix: set searchindex hiddenDefault flag (#10916) * fix: set searchindex hiddenDefault flag * chore: adjust docstring comments --- ietf/utils/searchindex.py | 9 +++-- ietf/utils/tests_searchindex.py | 63 ++++++++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py index ffc139676e..a9e02ca740 100644 --- a/ietf/utils/searchindex.py +++ b/ietf/utils/searchindex.py @@ -99,7 +99,10 @@ def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: ) subseries = subseries[0] if len(subseries) > 0 else None obsoleted_by = rfc.related_that("obs") + is_obsoleted = len(obsoleted_by) > 0 updated_by = rfc.related_that("updates") + is_updated = len(updated_by) > 0 + is_historic = rfc.std_level.slug == "hist" stored_txt = ( StoredObject.objects.exclude_deleted() @@ -134,9 +137,9 @@ def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: for rfc_author in rfc.rfcauthor_set.all() ], "flags": { - "hiddenDefault": False, - "obsoleted": len(obsoleted_by) > 0, - "updated": len(updated_by) > 0, + "hiddenDefault": is_obsoleted or is_historic, + "obsoleted": is_obsoleted, + "updated": is_updated, }, "obsoletedBy": [str(doc.rfc_number) for doc in obsoleted_by], "updatedBy": [str(doc.rfc_number) for doc in updated_by], diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py index ffca5c18be..7eb4e8acea 100644 --- a/ietf/utils/tests_searchindex.py +++ b/ietf/utils/tests_searchindex.py @@ -16,7 +16,7 @@ BcpFactory, StdFactory, ) -from ..doc.models import Document +from ..doc.models import Document, RelatedDocument from ..doc.storage_utils import store_str from ..person.factories import PersonFactory @@ -46,13 +46,6 @@ def test_sanitize_text(self): sanitized = "This is text It is full of problems Fix it." self.assertEqual(searchindex._sanitize_text(dirty_text), sanitized) - @override_settings( - SEARCHINDEX_CONFIG={ - "TYPESENSE_API_URL": "http://ts.example.com", - "TYPESENSE_API_KEY": "test-api-key", - "TYPESENSE_COLLECTION_NAME": "frogs", - } - ) def test_typesense_doc_from_rfc(self): not_rfc = WgDraftFactory() assert isinstance(not_rfc, Document) @@ -112,6 +105,60 @@ def test_typesense_doc_from_rfc(self): result = searchindex.typesense_doc_from_rfc(rfc) self.assertNotIn("content", result) + def test_typesense_doc_from_rfc_flags_obsoleted(self): + """typesense docs should set correct flags for obsoleted RFC""" + rfc = PublishedRfcDocEventFactory().doc + assert isinstance(rfc, Document) + self.assertEqual(len(rfc.related_that("obs")), 0) + self.assertEqual(len(rfc.related_that("updates")), 0) + self.assertNotEqual(rfc.std_level.slug, "hist") + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertFalse(result["flags"]["hiddenDefault"]) + self.assertFalse(result["flags"]["obsoleted"]) + self.assertFalse(result["flags"]["updated"]) + + RelatedDocument.objects.create( + source=(PublishedRfcDocEventFactory().doc), + target=rfc, + relationship_id="obs", + ) + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertTrue(result["flags"]["hiddenDefault"]) + self.assertTrue(result["flags"]["obsoleted"]) + self.assertFalse(result["flags"]["updated"]) + + def test_typesense_doc_from_rfc_flags_updated(self): + """typesense docs should set flags correctly for updated RFC""" + rfc = PublishedRfcDocEventFactory().doc + assert isinstance(rfc, Document) + self.assertEqual(len(rfc.related_that("obs")), 0) + self.assertEqual(len(rfc.related_that("updates")), 0) + self.assertNotEqual(rfc.std_level.slug, "hist") + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertFalse(result["flags"]["hiddenDefault"]) + self.assertFalse(result["flags"]["obsoleted"]) + self.assertFalse(result["flags"]["updated"]) + + RelatedDocument.objects.create( + source=(PublishedRfcDocEventFactory().doc), + target=rfc, + relationship_id="updates", + ) + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertFalse(result["flags"]["hiddenDefault"]) + self.assertFalse(result["flags"]["obsoleted"]) + self.assertTrue(result["flags"]["updated"]) + + def test_typesense_doc_from_rfc_flags_historic(self): + """typesense docs should set flags correctly for historic RFC""" + rfc = PublishedRfcDocEventFactory(doc__std_level_id="hist").doc + assert isinstance(rfc, Document) + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertTrue(result["flags"]["hiddenDefault"]) + self.assertFalse(result["flags"]["obsoleted"]) + self.assertFalse(result["flags"]["updated"]) + + @override_settings( SEARCHINDEX_CONFIG={ "TYPESENSE_API_URL": "http://ts.example.com", From 2cc68c6eeea2fe03db8b160ee44a3251e1fb331f Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 27 May 2026 10:29:19 -0500 Subject: [PATCH 155/161] ci: pin xym until we can adapt to new required arguments (#10939) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 214dfe296f..31e8ea69d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -90,6 +90,6 @@ unidecode>=1.4.0 urllib3>=2.5.0 weasyprint>=66.0 xml2rfc>=3.30.0 -xym>=0.6,<1.0 +xym>=0.6,<0.10.0 zxcvbn>=4.5.0 types-zxcvbn~=4.5.0.20250223 # match zxcvbn version From ff318025b61885ce00ab9daa38fdc78f6935895e Mon Sep 17 00:00:00 2001 From: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> Date: Wed, 27 May 2026 15:44:21 +0000 Subject: [PATCH 156/161] ci: update base image target version to 20260527T1529 --- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 55a308d7ce..1e44f47761 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20260512T1629 +FROM ghcr.io/ietf-tools/datatracker-app-base:20260527T1529 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 71a59ed266..0284151019 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20260512T1629 +20260527T1529 From e7c939a43c34d6df0973d2e6ace9d41d82cb6b46 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 29 May 2026 16:56:12 -0300 Subject: [PATCH 157/161] fix: adjust searchindex abstract sanitiziation (#10950) * fix: adjust searchindex abstract sanitiziation * test: leading/trailing whitespace to be stripped * fix: strip each line of the abstract --- ietf/utils/searchindex.py | 21 +++++++++++++++++--- ietf/utils/tests_searchindex.py | 35 ++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py index a9e02ca740..6a8f4529a8 100644 --- a/ietf/utils/searchindex.py +++ b/ietf/utils/searchindex.py @@ -64,8 +64,11 @@ def get_collection_name() -> str: return collection_name -def _sanitize_text(content): - """Sanitize content or abstract text for search""" +def _sanitize_text(content: str): + """Sanitize content text for search + + Aggressively simplifies whitespace, removes most punctuation + """ # REs (with approximate names) RE_DOT_OR_BANG_SPACE = r"\. |! " # -> " " (space) RE_COMMENT_OR_TOC_CRUD = r"<--|-->|--+|\+|\.\.+" # -> "" @@ -84,6 +87,18 @@ def _sanitize_text(content): return content.strip() +def _sanitize_abstract(abstract: str): + """Sanitize abstract text for search + + Simplifies whitespace but mostly leaves text intact. Abstract text will be + displayed in search results, so a light touch is needed. + """ + abstract = abstract.strip() + abstract = re.sub("\r\n|\n\r|\r", "\n", abstract) # normalize on \n + abstract = "\n".join(line.strip() for line in abstract.split("\n")) # strip by line + return abstract + + def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: assert rfc.type_id == "rfc" assert rfc.rfc_number is not None @@ -123,7 +138,7 @@ def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: "rfc": str(rfc.rfc_number), "filename": rfc.name, "title": rfc.title, - "abstract": _sanitize_text(rfc.abstract), + "abstract": _sanitize_abstract(rfc.abstract), "pages": rfc.pages, "keywords": keywords, "type": "rfc", diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py index 7eb4e8acea..b97bc2e266 100644 --- a/ietf/utils/tests_searchindex.py +++ b/ietf/utils/tests_searchindex.py @@ -46,6 +46,39 @@ def test_sanitize_text(self): sanitized = "This is text It is full of problems Fix it." self.assertEqual(searchindex._sanitize_text(dirty_text), sanitized) + def test_sanitize_abstract(self): + dirty_abstract = ( + "Mixed\n" + "Newlines\r" + "And\r\n" + "Things\n\r" + " Sometimes\n" + "\n" + "With\r\n" + "\r\n" + "Double \n\r" + "\n\r" + " Newlines\r" + "\r" + "Whee!" + ) + sanitized = ( + "Mixed\n" + "Newlines\n" + "And\n" + "Things\n" + "Sometimes\n" + "\n" + "With\n" + "\n" + "Double\n" + "\n" + "Newlines\n" + "\n" + "Whee!" + ) + self.assertEqual(searchindex._sanitize_abstract(dirty_abstract), sanitized) + def test_typesense_doc_from_rfc(self): not_rfc = WgDraftFactory() assert isinstance(not_rfc, Document) @@ -63,7 +96,7 @@ def test_typesense_doc_from_rfc(self): # Check a few values, not exhaustive self.assertEqual(result["id"], f"doc-{rfc.pk}") self.assertEqual(result["rfcNumber"], rfc.rfc_number) - self.assertEqual(result["abstract"], searchindex._sanitize_text(rfc.abstract)) + self.assertEqual(result["abstract"], searchindex._sanitize_abstract(rfc.abstract)) self.assertEqual(result["pages"], rfc.pages) self.assertNotIn("adName", result) self.assertNotIn("content", result) # no blob From 2ffbfcd08be29774ee9f496d39603e60a93074b3 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 1 Jun 2026 16:00:01 -0500 Subject: [PATCH 158/161] chore: add items to tracked yarn cache (#10964) --- ...-color-npm-0.3.1-174f3d038c-e6be5c081b.zip | Bin 0 -> 29022 bytes ...-color-npm-0.3.4-fbd637031f-b95c6abe02.zip | Bin 0 -> 29456 bytes ...merjs-npm-2.0.46-de99d4d9d1-caba6ec788.zip | Bin 0 -> 4582 bytes ...art.js-npm-4.5.1-97698d58cc-34b35b3736.zip | Bin 0 -> 1614023 bytes ...colors-npm-0.3.1-7e93d38139-de4f87b5bb.zip | Bin 0 -> 25077 bytes ...n-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip | Bin 0 -> 27387 bytes ...mmerjs-npm-2.0.8-f656ba2573-b092da7d15.zip | Bin 0 -> 243546 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .yarn/cache/@kurkle-color-npm-0.3.1-174f3d038c-e6be5c081b.zip create mode 100644 .yarn/cache/@kurkle-color-npm-0.3.4-fbd637031f-b95c6abe02.zip create mode 100644 .yarn/cache/@types-hammerjs-npm-2.0.46-de99d4d9d1-caba6ec788.zip create mode 100644 .yarn/cache/chart.js-npm-4.5.1-97698d58cc-34b35b3736.zip create mode 100644 .yarn/cache/chartjs-plugin-autocolors-npm-0.3.1-7e93d38139-de4f87b5bb.zip create mode 100644 .yarn/cache/chartjs-plugin-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip create mode 100644 .yarn/cache/hammerjs-npm-2.0.8-f656ba2573-b092da7d15.zip diff --git a/.yarn/cache/@kurkle-color-npm-0.3.1-174f3d038c-e6be5c081b.zip b/.yarn/cache/@kurkle-color-npm-0.3.1-174f3d038c-e6be5c081b.zip new file mode 100644 index 0000000000000000000000000000000000000000..65b1d3941c4d5458ebc4b928b8893192661e750a GIT binary patch literal 29022 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 NGoYWoirv4y{XcY~reOd8 literal 0 HcmV?d00001 diff --git a/.yarn/cache/@types-hammerjs-npm-2.0.46-de99d4d9d1-caba6ec788.zip b/.yarn/cache/@types-hammerjs-npm-2.0.46-de99d4d9d1-caba6ec788.zip new file mode 100644 index 0000000000000000000000000000000000000000..1babeca0a9777203a28e0510e180160aac081aad GIT binary patch literal 4582 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êU8Y$m%8(F$mBK|7Oxu+ z^zih{lM**p#t?~ zg|ZUKGF4-oBYV9OU6dIMr-97DJnNO`g#*FXpz z3#uJ5Nrbmof5VkE;6tjUc_C_nBO8l)ntSM-)oz8_=6G@MjXQm>$MgDpA&AW6%$->?t9Doz%erpy;2V>vBH2fIz!LrkOegmGUSbDr2xCn+1jyBi z!)P2Ag1O2>SkpF`g5ARvQ~}gz-Gd#)%tJ*PXr0_uxCc~DNsac_csi@gGDCB^Se`&4 zDWu>Hu2GwJpp)}uBggz@Ag$D$9DPz_c6-XUP(5|eidQd*)%dmwk+-+HPuJaLujb9= z)sqDqq4>H5z3$=l6yUDubAY zC3v(6xSkO<;VJvPDTgk~NCN?U0@*)m%7bH%uW*=(D;Gk(CkbyBOqfVB5 z1Uy`_R1nMB8ce8Oqk*q`i;~I{6bQt3zOSltNfLTItuB#sgmXkJmAfH#!hlP6{~aIK z;~EjAnN28$i?s;^b!u?sc*fT-eDzv|;vN0@Zg`u${``-B{KIY9{oDP$2e)hY`v;0} zD%_zzhjN2>@uPhbylBcvuuuzr6Bx;S-g?g%xW3R12rb^;!`cT`9*1;c#36$mGUz^< zmyV0$c-W44vW`6=oR4G>T&u8;lbrGtV_!fn)%IF>;q(yOOSR3wXhk-QYQf_)6S}Cv0JXAsX-JO&3Ph)cx>F5CJ9U85cv9#)8{eDiJ zMG}BuLV!K4i6|@TO>K4nZ3Z-^b&*o65eE;Q6r~thT4G1DkKOy~s_kKEKP-s*7_Em= zw;s6CL(xU!kNsS@7UhAZ&3De&^5sKCwj2_Iy+;q*CA(fMzz30{WCMFz&L`ERA7X`E zAnYBC)mpR;n4_3vD1F;;p*WT|R{QjN;vrAxhy`{RV;ekb# z%8nsgcynb4inU7)l#CZv7q5T%Z6h&P?l|plHt7cXu*Td)M(PV%78^ti5X z+_7~5u{y4*n;_LTu1V3&^>G^}uTV2*n^%G!R@=o^Tets_1R&Y^u5#J+sQjiIZgu?o zI`}}ewf-fULk6#m)&yl6AFOrCnbjwI>nF3TmmFZ#Zz;aV?`4*on!EyI_@w$t1saTb zzR45ucS)LgPneAF1|9rPw~aG!FpM_X3c>i4eeuSf6+h8I@lyYMB$6=TUhAz+`TI1u~%t7Gi-ZAtv1xpeL za|utwAu_t$C0R@dS!&TE4ITOH_lMSx66!(F3{~Gkg`*t@Tgp;@@yZKjd%Vm2gTqJowsrgeYCs?#n|-Xu@4s-!@aljN>+sQj2S{T70^wG~-#SDb;rQ`GQOYhKc4R)q?NcC1sauWF~$yx-?A*@@u-|#tyaYw zces+EL_U8CSZ9H}10pHZ5MWNSNi++NB0~-u6h`*^9AqCjfYv%PMKi?!Qjvo;elv|= zXa|QY>X}M}2y>C-0I5HOOdT=9Q!W?H>-Y6}4?7qTG;7)GzPvogi;o5-qFAh|6pY^6 z3sUmFsVU%||0v(6BkfUya9%)6WgoAgp7o?#2qN$%)Nm(1?Prkr);CG9-7Y_$P3ke; z&2oH@AB+h3sA!kDHx?b3CC?Mu~Cprd1-~Xm)+w2 zq0N>oOMGw`Y%|Dghl3(JZh&0Q5pY0JF;Z|f&mfwXw|S4ce5AI<6Iw7Sz*@XK13#33 znZO`fr+XTlrAh)KO+gJ_O`Ni}oQ{`{W367(r=IPN2V=YFo>?$yP`Oj1!09L0=CvO| z3gy1UvzRxI?d$b$BX?=X``|y4*~NaJP0IJff~HH!^BxpdgdPnFu7f@BbwCu`jmJFT zk!VX>oAxy`KArNlzI#{Qup35d(6>H}KR`6s!^nDe14LNPEmi;l@VRq~ftzqQUW*MF zw_z;C@K&|8mK$BfPLtEdz4od_LQLs%L=|7ql%(!k`1U%OrTWmXnA#^)mlr7%y$C9di>KK#l!1rX?JFpVagZn#MJ6Ha^V(0gNQ zq4x+Z2%@v^t_Bd0=Ah}74CKlnr6zqbu{P8h$Tsvoy&`|kNl~7oq%edbbqg)k8BW`f zjs~+bZp>M#oyWyFNK>Q@?8wsMglgPD+GM-t^qd>E^YMmvnm$#BM$; z?3kmO@A;*kk$FvyIm4ac;~EY&qQpJ92kM=0qnVRB0XuE*IPlNVFHm|P| z%eukey}KXkr$eU+ekS8R%(;Yp(w#KhluGAuaIe8v^l(juuV$0O+%|9GHV`oX?O;T4 z8t6u|FWH`Mx2H*WHJj-7N3PjdkT*|nY(M(B-;HNfV*p2cMwTdBp%oxYG`)gh$=16P z$b#hOC48j^?Jps9XZvraH>T-~SdwcPK9Qkk4@KDa>_^wWZ zvEs@?TLSC|+W@a!zFYCqxO=xY>k9R1)TF^5`0gbCCWxIWw;f0{dHb`5BG6j|6Js#;mxp%)7j!j0iYio#rdZ~&_(Fi(f~J)AHKU`zT0 z3OY=b?cPP4BHO)=R3U$REY-MhUwWWd)z@xBUqL!u*9S||AiM5>i?K&cw~H_#RVcc| z`!6yCYBS7u(2u-YxuFkw)Oi${Q_0BeM5`?;9gN!*S^6nw6}XhU!OuiwJ0> zw)5KF{*Ydj|DDoVa3Lz;w2Dd_u0z)+WT0fbVy4obeml5|cqiP7G){OGv<(N+Iq-GX zGWlYmIi|p!hVHvdSzzpMb31s?U8eVnw%3sU!S|xBi@^Q^l~;U0-9PN_-|QiPPyU>Q zT2>8_!j$+}tc1#cn%9#T^{mRho{;>1-OQzq952p-8UcteR4qO+9C@gPX~v&(3RizN z7<_n*npgh92utuMjx%8=xrY0Zl%Kct6azipuXg`^AKvls2iVk|mGhH&rh+1)56pPH zJVS}bgz~@*J!k1A{%1DDrT)~i!4c_&DFzPJ6A|wKm0d~CZ=A4im`+aXWm%qa3uD9J@o}q1f7ujHg+`gzgxq)b~kQ%8YI8T6NhPPpbPW5+We#%AXQjE1u| z?+plAM?`_HrS`cq62b`R`fWL9(QMCVF&6JgNwqdFSzYwF(CWJvA~WCnm~kv5YnKdS z;KMp=%c&^uTl{$0%SaU)yc&s%?D;&*$Wrg;tW%)z{Qz_hoB)WY_f^SV zL#-6}XL$9(ee3eqBPgHYV2AL7XXA57h?}gb@Ikp+ITZNEU!T$e$B)J}Az8AYta- z`#u>Dv5?}91J6HfxneUKIOlVu^yy26S${87=`nCHwD4KH?*xvY?E3EHYN>aDG1kL~ zZ{fY+dRXLmsYS;c%uiZjZs^|7OTiBp#ob&(-YiVCB{`ZnYZH60u7n-X;kH!bDJ*MO zV#nb;el@2Q=2d^1nYS*xq%XGxhF5E-6(mo)vRWIt?RN><3-Pb^DFa zCD#j!OP#{Lnis2J3@yT3+|HGZh~MHpSxD`D#599To?O=L^JgKUAv*r}W+A3P?EEBE z4lJNhofb+qqmAon4utIE$c4#~51*e~DF+SXWHE9~fsl33Bz3ibx9<=3xepahpvT!?%6r`p25-h2yp8R_qS+z$TL?qHGa&H4JdWLq)ayLm%AZZ~f>=iBh6?c|!gX*+-Y#tpIbEy)zxG)L!NoO^T6=IPu^ z@@?)}PpC};Q{?`pb2^hm$hTYT9!7nX?&{iRXmLA~(0(7tc^2Ew>h7ZQvJ*#9-m!jAqL8)(K^sCw4e0%Pa7ckg zY`eE7EbJnI@I!5tw=D=O~|S zN*Du?bhIISjJN>#oTh=R(FDXtV|PC_eR6|r(N^sqocIre(|o1KyhmYs4Q{D?d$%F0^iD4xN8+IPoPIdbB-b0e&sGH7Epc++TXf z&Cl{u+~gP!6lz8`1HAy5eATLojvu@P>K`e%8XPkfC8~- z0G3(@`Tke=@C|3xqHNU=zAYDHh~f2T3jO*m6!(n#LTWgSFfzulR%s)=CDsO$SmjO@ z77@lV@SA2cbleHkHp(Dkc7ss`%ouyq7m`v55v<&zA?j&uDsCLZ3fGlR@8R#;Z+&zY z7|$0E5flbt!>}&!(Jdc*#Q2T0dq-E4hed+s0;9q@$d-)A%Z1iL(p1CParwH+4qt@sBh6l*LQ!9;P3q?AlG{GfJ>ZwWF+rzpb}Uw3lWxh{qg=2`}K;RiJVD& zxJ$Nxh)z1bqUEI1n_GU#i&}p33tT7x0-aS58WKXIaj$_suwS1h2BP(fm21(XKY677 z@=N^gj~~&d1`jlSt(sagz08vu>aAUBohlmF6;({^&D+L{>>VC8rF<~_gIyeQ$%&UH zJRvvmE8^(9vQS^3LuW5e8wE${p^|{1o_Ig)Sr|m}3#DKZC>k`H5O-Lh{qT}{bEgJ> zUeQm~RpEyKg&)I-&%B>bY`aBPTQB52Oa7xpG*5i#23fS7q5mAMMa|FSpams||p(SNY3Vmo#Q3zjP zyPkbC-RhAShV|yOf_D)H7A1Edd`}WFp4P|J_-Z_@hQ$wydRkMc0hq|KyQ!KB$-(wy zc2y{+Gor2N_F03ckNd0Uv`yu7D#u4sgeCwuMHdOiLx!% zoovLTpR#z->Ovi)tDw-!oW`#?^Px{Knu0@Zj(pVu!cp)ow99Saw%%zaA2_<7x2Meo zh1VpyKu%&fgjU9&Z!H4swru5(~ zA&1S)_|?2Qa}l|cU$e$j@QRe&3frD-a1O8%PCy5_K2&wQ<(N}L4cUS8K-1sAQm*o*nS zCjdXY_}D8_5Vy?Su{P~lvh80k>*<8~zC40bWmU~HPvPLg-OIUa$E5i15kD|}F=q1QZand{)g}_d>YfK>~zpEIn|x zRE&h=s25~@o}EnjKEQ{IY$$X}SH7fIHMG?gf5mY!9%^d)g<4H*TkW}}X6E`O*85Gv zymAcju^7+?SOe8bUyi~;0(k=!Gb> z-(X7I3d5qpvSK7&FlgFXi$>jC|_oYyc#$_7%;)Oex3dOv!9 z^%q*fhAC)*vK+4W<~^qkXdL5M&&mZSbH}Jh)IWs)8PLmL4e_j8xV_eB>W5vg6}BoIDNK8V7X;$`93*+dz??1H1!qnfvoSmk>eMe( zIDcyf8qW4|(d>paDdIJa?1RKf`Q7i-NAW@ue;HylkUt}n7O1e(kLjwA8y|0nXr4uD zP3yYuNjJ>bU2^teN40oWoI)C<7Y~bUKY3G5)$< zSS&fl4;hpo@?=OOeImTL5f(_Ve#@VK`|9QQZ=QVjW>jDW;^xjFULB@Y0;*R}@Vh%_ z@50>PQ4*f-zWVc5-*aH@J60zK;1uhZeezhb?madql4Gc)x3S99JhQk^32K7^7o9G| z;Y1;J%AV-xE?WQVEnhs=DFtt^Z|N{EOF@Y#XbzI+U_5djU3t?jz%_U2PW=mN&Xk<( zc_7p{*ul1qILlC0ELVk|P9sgf2f5qTDH_?m zY4S*63N->6%q`M1hCD*(7O% zr5fAfJv!yU_3SMZ8JtiTAdD7hWU6HzZI(>4@z|dIDz;$(N|&9cvFx(1KYz48W(s6W z7Y)yw%Bk-6QZ^xto)BeosQe8kFQ=$mnWF?+0_~pS&ND6Kn|e6VaExh_Zvwh!&%essaPHbK8^@rJ5;ycq$!7-ErPgn1Kxi5_Ko=3FXV$o(4&qXOKi06ZHVcb+W zqD;U?Gxne(F+qw*P}dz|Zku35Jxo;EXtqfN@LG{opspFwMA+mx5tHsQ0v*VuGbK~}W@NKR}`nzv_ldD6^E%U82# zt!~+Dfn-Q`l6R#0sAu!&p&38qGnaM!;$d;0V60_bvKG1NwAQE4Fb_?Z!m_pxzxMj^ zl4F@js6%t$WZY9dlT}sPc(Ju=bm~4qt5eI=xO?!cb^#HfNs8suN?<^55EB=WC}0BF z$KrHC1JMCNhK7)~2#E;65rYRSdLRQkM@HIc@G@5waiyo2feY4InWY&32{fFcfBFiB zsWawdGg<|}y?_#_ZWXN2t2exBhql}c6&Mx0SWqWz0v>fhVvgZV|oAN zA-WI^G()GIi_OT)u@~c<_V4pWv`U{9@v22w|5@}Q^b((7ANwan)(j>>_^E8&H;s+G z&JzXO*XIC~jF`LkA)H~blj#B)w&7l~5*~_Myt|Rp=`|XYBANm3(c!d8&1#e_h%Z4<3dCJ|SZdp@LUy^xMoVl~( zAOwN`@zg@Nn?OF)(AQB7a$5~u$L4~t)*FNeq28$(iy?%vaNsMf#=RzQVgfW0DPY27 zka2<_7%oVv*gg7N49bWto}t?6h^z@5p8E8FtX(^nJolj90BZ&**SfH7v3{?{SVm(Oc7KiVI3Dq7Fq+e&1F3NQ&1h*>k+gK19f>Ty zm_4|bpfA*R6@m|}wfCx9q>N+&k}`A<$Hhtt=)U-}a<3y1UD&8E7?V-1403LR&zCzl zP@(CFkSzZ8nY46}vAw=5uTin-=HKgWo9kVQfhBibh*l>ujl4wOlxe}cx}U$Ag%rTe zQb(yTrx)c_E4kmp6MRUPw{zN_foegs!2J%IIY?HFiPg`l63xBYM3E}X?Fl{$NEa7@ zlwxow%b(EcWy~;F7sgMEP{33uqD3NFh?pE5D^*t(jc6p`dwM6OH%8nQwWh8zS6b8; z4GjB=$F+(WKaA!ZBAKE>amUO$f}Mey2UX1`SwK9a+_EKr@YL0_nGJZd29yfuws!2M zo@FRYk9{)5y)0^_krYN#8`O z%3^IVw?yD%YHPaN%OP2+=2SoYmSlI=1Gc~8Mysq{$v4Q*cza)93qA1!sb)Dgj^e5F zP|OmUJQA7{h*=`b=qTij&&wcFKel?(97qSKH(>6O)b0W_kB>}po(8!VUEsWGJPYqj ziF}l4)6Z;Quus|`OUlW0SX=zsF>>xw{FXdQIy9%^k81J>8~-B9oB{u{krQL!HlUM) zwzgks39ukyt-7_n*)e~;oK7hNQqGIZi(|Ofdasj=nlyVb@)mD~gHT3p9g0P3eB7yt zjjb?S5PB@9VBc1VQ674A`hfLwc9a7XL2y!7QWSdkV4OmBRLVl`dTrWj*p=|?)>>O) zxO93hpK=Ddt-hhL1e4>T)&tF@76^WKSAS5yvX8iRdfZK+2k5RC`Rt%T@xw2A0*BxH z`ZX06r|$K_xd7;@aK9ruql!wX?wqnCN6xk8prTGd45<|m_&hZonpe3ZS3K- z%2yeadXw)iiJAZrbMC~FyYtGl_O6+g(C&b=b~=ZbS2t%SoYgt6B9CLU&};lrucIXI z#67LVG1dD5uM;ZbkQpwU-(H~i9_z?z$mN5E-2kbajZZ3+cnMSC9wC;cmYuy;&4VI4m_RJ6VO<76et~*G*h61@8=TZSj&d|uyvdST1`J; z#UMf{uWeVcqlQ1Z|3h;cL4BErZS2EM?KJk5yXS_itG z%@4r(H)W4Q

  • 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±H_W17Ieg}!nwTo5AmiFb8!>sf@ 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/chartjs-plugin-autocolors-npm-0.3.1-7e93d38139-de4f87b5bb.zip b/.yarn/cache/chartjs-plugin-autocolors-npm-0.3.1-7e93d38139-de4f87b5bb.zip new file mode 100644 index 0000000000000000000000000000000000000000..16cdf8839941d1f76a22c32a53035ce8e109d460 GIT binary patch literal 25077 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/chartjs-plugin-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip b/.yarn/cache/chartjs-plugin-zoom-npm-2.2.0-85aea0b81e-a540e38340.zip new file mode 100644 index 0000000000000000000000000000000000000000..edf50232bc1494d1009f77df85a139460646d609 GIT binary patch literal 27387 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Êg;Qb8e4g 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

    5Scu;tEUkr1H$jVPBguYN^fQP~0R- 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 MjfLkPDA|<%15$2ylmGw# literal 0 HcmV?d00001 From 5b5f3a1b5bf1d7f2f337a967fa90ca2873007b95 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 2 Jun 2026 12:12:32 -0300 Subject: [PATCH 159/161] chore: configurable I-D submit timeout for k8s (#10971) --- k8s/settings_local.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 402f89787b..20c5252ff0 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -248,8 +248,19 @@ def _multiline_to_list(s): EMAIL_COPY_TO = "" -# Until we teach the datatracker to look beyond cloudflare for this check -IDSUBMIT_MAX_DAILY_SAME_SUBMITTER = 5000 +# I-D Submission settings + +# Until we teach the datatracker to look beyond cloudflare for this check, it needs +# to be very large. 5000 has been working without complaint. +IDSUBMIT_MAX_DAILY_SAME_SUBMITTER = int( + os.environ.get("DATATRACKER_IDSUBMIT_MAX_DAILY_SAME_SUBMITTER", "5000") +) + +# Default is 20 minutes. Allow override via environment. +if "DATATRACKER_IDSUBMIT_MAX_VALIDATION_TIME" in os.environ: + IDSUBMIT_MAX_VALIDATION_TIME = datetime.timedelta( + minutes=int(os.environ.get("DATATRACKER_IDSUBMIT_MAX_VALIDATION_TIME")) + ) # Leave DATATRACKER_MATOMO_SITE_ID unset to disable Matomo reporting if "DATATRACKER_MATOMO_SITE_ID" in os.environ: From ce4345f32ac9f31db4d61034529f69c2bba61282 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 2 Jun 2026 12:18:25 -0500 Subject: [PATCH 160/161] feat: update rfc json (#10951) * feat: update rfc json * fix: resilience around fetch of publication status * fix: guards against malformed RFC document objects * chore: fix log msg typos * test: mock more async calls --- ietf/api/tests_views_rpc.py | 74 ++++++ ietf/api/views_rpc.py | 11 +- ietf/doc/tests_utils_rfc_json.py | 432 +++++++++++++++++++++++++++++++ ietf/doc/utils_rfc_json.py | 233 +++++++++++++++++ ietf/sync/errata.py | 7 +- ietf/sync/tasks.py | 21 +- ietf/sync/tests.py | 18 +- ietf/sync/tests_tasks.py | 62 +++++ 8 files changed, 850 insertions(+), 8 deletions(-) create mode 100644 ietf/doc/tests_utils_rfc_json.py create mode 100644 ietf/doc/utils_rfc_json.py diff --git a/ietf/api/tests_views_rpc.py b/ietf/api/tests_views_rpc.py index 6d147c00b0..72e0d19785 100644 --- a/ietf/api/tests_views_rpc.py +++ b/ietf/api/tests_views_rpc.py @@ -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]) diff --git a/ietf/api/views_rpc.py b/ietf/api/views_rpc.py index 83d0abefb1..0c9e98e2dc 100644 --- a/ietf/api/views_rpc.py +++ b/ietf/api/views_rpc.py @@ -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 @@ -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): @@ -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): @@ -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) diff --git a/ietf/doc/tests_utils_rfc_json.py b/ietf/doc/tests_utils_rfc_json.py new file mode 100644 index 0000000000..b94fc2cbea --- /dev/null +++ b/ietf/doc/tests_utils_rfc_json.py @@ -0,0 +1,432 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import datetime +import json +from unittest import mock + +from django.core.files.base import ContentFile +from django.core.files.storage import storages +from django.test.utils import override_settings +from django.utils import timezone + +from ietf.doc.factories import ( + PublishedRfcDocEventFactory, + RfcAuthorFactory, + RfcFactory, + WgRfcFactory, +) +from ietf.doc.models import RelatedDocument +from ietf.doc.utils_rfc_json import generate_rfc_json +from ietf.group.factories import GroupFactory +from ietf.name.models import StdLevelName +from ietf.utils.test_utils import TestCase + + +def _put_pub_levels(rfc_number, slug, path="input/"): + """Write a minimal publication-std-levels.json to the red bucket.""" + red_bucket = storages["red_bucket"] + red_bucket.save( + f"{path}publication-std-levels.json", + ContentFile( + json.dumps([{"number": rfc_number, "publication_std_level": slug}]) + ), + ) + + +def _put_errata(rfc_number, path="other/errata.json"): + """Write an errata.json with one entry for the given RFC.""" + red_bucket = storages["red_bucket"] + red_bucket.save( + path, + ContentFile( + json.dumps( + [{"doc-id": f"RFC{rfc_number}", "errata_status_code": "Reported"}] + ) + ), + ) + + +def _put_empty_errata(path="other/errata.json"): + red_bucket = storages["red_bucket"] + red_bucket.save(path, ContentFile(json.dumps([]))) + + +def _put_april_first(rfc_number, path="input/"): + red_bucket = storages["red_bucket"] + red_bucket.save( + f"{path}april-first-rfc-numbers.json", + ContentFile(json.dumps([rfc_number])), + ) + + +def _read_json(rfc_number): + from ietf.blobdb.models import Blob + + blob = Blob.objects.get(bucket="rfc", name=f"json/rfc{rfc_number}.json") + return json.loads(bytes(blob.content)) + + +@override_settings( + RFCINDEX_INPUT_PATH="input/", + ERRATA_JSON_BLOB_NAME="other/errata.json", + RFC_EDITOR_ERRATA_BASE_URL="https://www.rfc-editor.org/errata/", +) +class GenerateRfcJsonTests(TestCase): + def setUp(self): + super().setUp() + # Minimal red_bucket blobs required by all tests + red_bucket = storages["red_bucket"] + red_bucket.save( + "input/april-first-rfc-numbers.json", ContentFile(json.dumps([])) + ) + + def tearDown(self): + red_bucket = storages["red_bucket"] + for name in [ + "input/publication-std-levels.json", + "input/april-first-rfc-numbers.json", + "other/errata.json", + ]: + try: + red_bucket.delete(name) + except Exception: + pass + super().tearDown() + + def test_missing_rfc_logs_and_returns(self): + """Calling for a nonexistent RFC number logs and returns without raising.""" + # Should not raise; no blob should be written + generate_rfc_json(999999, pub_levels={}) + from ietf.blobdb.models import Blob + + self.assertFalse( + Blob.objects.filter(bucket="rfc", name="json/rfc999999.json").exists() + ) + + def test_all_fields(self): + """All 17 JSON fields are populated correctly from a fully-populated RFC.""" + area = GroupFactory(type_id="area") + wg = GroupFactory(type_id="wg", parent=area) + rfc = PublishedRfcDocEventFactory( + time="2021-05-01T00:00:00Z", + doc=WgRfcFactory( + group=wg, + stream_id="ietf", + std_level_id="ps", + pages=42, + abstract="Test abstract.", + keywords=["foo", "bar"], + ), + ).doc + author = RfcAuthorFactory(document=rfc, is_editor=False) + editor = RfcAuthorFactory(document=rfc, is_editor=True) + + obsoletes_rfc = RfcFactory() + updated_rfc = RfcFactory() + RelatedDocument.objects.create( + source=rfc, target=obsoletes_rfc, relationship_id="obs" + ) + RelatedDocument.objects.create( + source=rfc, target=updated_rfc, relationship_id="updates" + ) + obsoleted_by_rfc = RfcFactory() + updated_by_rfc = RfcFactory() + RelatedDocument.objects.create( + source=obsoleted_by_rfc, target=rfc, relationship_id="obs" + ) + RelatedDocument.objects.create( + source=updated_by_rfc, target=rfc, relationship_id="updates" + ) + + _put_pub_levels(rfc.rfc_number, "ps") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["doc_id"], f"RFC{rfc.rfc_number}") + self.assertEqual(data["title"], rfc.title) + self.assertEqual(data["abstract"], "Test abstract.") + self.assertEqual(data["page_count"], "42") + self.assertEqual(data["pub_status"], "PROPOSED STANDARD") + self.assertEqual(data["status"], "PROPOSED STANDARD") + self.assertEqual(data["pub_date"], "May 2021") + self.assertEqual(data["keywords"], ["foo", "bar"]) + self.assertEqual(data["see_also"], []) + self.assertEqual(data["doi"], f"10.17487/RFC{rfc.rfc_number}") + self.assertIsNone(data["errata_url"]) + self.assertIsNone(data["draft"]) + + # authors — non-editor first (lower order), then editor + self.assertEqual( + data["authors"], + [author.titlepage_name, f"{editor.titlepage_name}, Ed."], + ) + + # relationships + self.assertIn(f"RFC{obsoletes_rfc.rfc_number}", data["obsoletes"]) + self.assertIn(f"RFC{updated_rfc.rfc_number}", data["updates"]) + self.assertIn(f"RFC{obsoleted_by_rfc.rfc_number}", data["obsoleted_by"]) + self.assertIn(f"RFC{updated_by_rfc.rfc_number}", data["updated_by"]) + + def test_pub_status_differs_from_status(self): + """pub_status reflects publication-std-levels.json; status reflects current std_level.""" + rfc = PublishedRfcDocEventFactory( + doc=WgRfcFactory(std_level_id="hist"), + ).doc + # Record was published as "ps" but is now "hist" + _put_pub_levels(rfc.rfc_number, "ps") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["pub_status"], "PROPOSED STANDARD") + self.assertEqual(data["status"], "HISTORIC") + + def test_errata_url_set_when_errata_exist(self): + """errata_url is populated when errata.json has any entry for the RFC.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_pub_levels(rfc.rfc_number, "ps") + _put_errata(rfc.rfc_number) + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual( + data["errata_url"], + f"https://www.rfc-editor.org/errata/rfc{rfc.rfc_number}", + ) + + def test_errata_url_none_when_no_errata(self): + """errata_url is None when errata.json has no entries for the RFC.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_pub_levels(rfc.rfc_number, "ps") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertIsNone(data["errata_url"]) + + def test_errata_failure_yields_null_url(self): + """If reading errata.json fails, errata_url is null and no exception is raised.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_pub_levels(rfc.rfc_number, "ps") + # Deliberately do not put errata blob — FileNotFoundError expected + + generate_rfc_json(rfc.rfc_number) # must not raise + data = _read_json(rfc.rfc_number) + self.assertIsNone(data["errata_url"]) + + def test_second_call_overwrites(self): + """Calling generate_rfc_json twice does not raise AlreadyExistsError.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_pub_levels(rfc.rfc_number, "ps") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + generate_rfc_json(rfc.rfc_number) # must not raise + + def test_april_first_date_format(self): + """April Fools RFCs get '1 April YYYY' date format.""" + rfc = PublishedRfcDocEventFactory( + time="2020-04-01T12:00:00Z", + doc=WgRfcFactory(), + ).doc + red_bucket = storages["red_bucket"] + red_bucket.delete("input/april-first-rfc-numbers.json") + _put_april_first(rfc.rfc_number) + _put_pub_levels(rfc.rfc_number, "inf") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["pub_date"], "1 April 2020") + + def test_non_april_first_april_date(self): + """An April publication that is NOT in the April Fools list gets 'April YYYY'.""" + rfc = PublishedRfcDocEventFactory( + time="2020-04-15T12:00:00Z", + doc=WgRfcFactory(), + ).doc + _put_pub_levels(rfc.rfc_number, "inf") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["pub_date"], "April 2020") + + def test_source_ietf_wg(self): + """IETF-stream WG RFC: source is 'acronym (area)'.""" + area = GroupFactory(type_id="area") + wg = GroupFactory(type_id="wg", parent=area) + rfc = PublishedRfcDocEventFactory( + doc=WgRfcFactory(group=wg, stream_id="ietf"), + ).doc + _put_pub_levels(rfc.rfc_number, "ps") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["source"], f"{wg.acronym} ({area.acronym})") + + def test_source_ietf_no_wg(self): + """IETF-stream individual RFC (group acronym 'none'): source is 'IETF - NON WORKING GROUP'.""" + area = GroupFactory(type_id="area") + rfc = PublishedRfcDocEventFactory( + doc=RfcFactory( + group=GroupFactory(acronym="none"), + stream_id="ietf", + ), + ).doc + rfc.group.parent = area + rfc.group.save() + _put_pub_levels(rfc.rfc_number, "inf") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["source"], "IETF - NON WORKING GROUP") + + def test_source_iab(self): + """IAB-stream RFC: source is 'IAB'.""" + rfc = PublishedRfcDocEventFactory( + doc=RfcFactory(stream_id="iab", group=GroupFactory(acronym="iab")), + ).doc + _put_pub_levels(rfc.rfc_number, "inf") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["source"], "IAB") + + def test_source_ise(self): + """ISE-stream RFC: source is 'INDEPENDENT'.""" + rfc = PublishedRfcDocEventFactory( + doc=RfcFactory(stream_id="ise", group=GroupFactory(acronym="none")), + ).doc + _put_pub_levels(rfc.rfc_number, "inf") + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number) + data = _read_json(rfc.rfc_number) + + self.assertEqual(data["source"], "INDEPENDENT") + + def test_pub_levels_passed_in(self): + """When pub_levels is passed in, get_publication_std_levels() is not called.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_empty_errata() + + ps_level = StdLevelName.objects.get(slug="ps") + pub_levels = {rfc.rfc_number: ps_level} + + with mock.patch( + "ietf.doc.utils_rfc_json.get_publication_std_levels" + ) as mock_get: + generate_rfc_json(rfc.rfc_number, pub_levels=pub_levels) + mock_get.assert_not_called() + + data = _read_json(rfc.rfc_number) + self.assertEqual(data["pub_status"], "PROPOSED STANDARD") + + def test_pub_levels_fetch_failure_returns_without_writing(self): + """If get_publication_std_levels() raises, function logs and returns without writing a blob.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + _put_empty_errata() + + with mock.patch( + "ietf.doc.utils_rfc_json.get_publication_std_levels", + side_effect=FileNotFoundError("not found"), + ): + generate_rfc_json(rfc.rfc_number) # must not raise + + from ietf.blobdb.models import Blob + + self.assertFalse( + Blob.objects.filter( + bucket="rfc", name=f"json/rfc{rfc.rfc_number}.json" + ).exists() + ) + + def test_pub_status_fallback_to_status_for_recent_rfc(self): + """RFC missing from pub_levels but published within 2 days: pub_status falls back to current std_level.""" + now = timezone.now() + rfc = PublishedRfcDocEventFactory( + time=now - datetime.timedelta(hours=1), + doc=WgRfcFactory(std_level_id="ps"), + ).doc + _put_empty_errata() + + with mock.patch("ietf.doc.utils_rfc_json.timezone") as mock_tz: + mock_tz.now.return_value = now + generate_rfc_json(rfc.rfc_number, pub_levels={}) + + data = _read_json(rfc.rfc_number) + self.assertEqual(data["pub_status"], "PROPOSED STANDARD") + + def test_pub_status_unknown_for_old_rfc_missing_from_levels(self): + """RFC missing from pub_levels and published more than 2 days ago: pub_status is UNKNOWN.""" + rfc = PublishedRfcDocEventFactory( + time="2020-01-01T00:00:00Z", + doc=WgRfcFactory(std_level_id="ps"), + ).doc + _put_empty_errata() + + generate_rfc_json(rfc.rfc_number, pub_levels={}) + + data = _read_json(rfc.rfc_number) + self.assertEqual(data["pub_status"], "UNKNOWN") + + def _assert_no_blob_written(self, rfc): + from ietf.blobdb.models import Blob + + self.assertFalse( + Blob.objects.filter( + bucket="rfc", name=f"json/rfc{rfc.rfc_number}.json" + ).exists() + ) + + def test_source_malformed_no_stream(self): + """RFC with stream=None triggers assertion (logged to admins in production) and no blob is written.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + rfc.stream = None + rfc.save() + ps_level = StdLevelName.objects.get(slug="ps") + + with self.assertRaises(AssertionError): + generate_rfc_json(rfc.rfc_number, pub_levels={rfc.rfc_number: ps_level}) + + self._assert_no_blob_written(rfc) + + def test_source_malformed_no_group(self): + """RFC with group=None triggers assertion (logged to admins in production) and no blob is written.""" + rfc = PublishedRfcDocEventFactory(doc=WgRfcFactory()).doc + rfc.group = None + rfc.save() + ps_level = StdLevelName.objects.get(slug="ps") + + with self.assertRaises(AssertionError): + generate_rfc_json(rfc.rfc_number, pub_levels={rfc.rfc_number: ps_level}) + + self._assert_no_blob_written(rfc) + + def test_source_ietf_malformed_no_area(self): + """IETF-stream RFC whose group has no parent triggers assertion (logged to admins in production) and no blob is written.""" + rfc = PublishedRfcDocEventFactory( + doc=RfcFactory(stream_id="ietf", group=GroupFactory()), + ).doc + rfc.group.parent = None + rfc.group.save() + ps_level = StdLevelName.objects.get(slug="ps") + + with self.assertRaises(AssertionError): + generate_rfc_json(rfc.rfc_number, pub_levels={rfc.rfc_number: ps_level}) + + self._assert_no_blob_written(rfc) diff --git a/ietf/doc/utils_rfc_json.py b/ietf/doc/utils_rfc_json.py new file mode 100644 index 0000000000..6030a7064c --- /dev/null +++ b/ietf/doc/utils_rfc_json.py @@ -0,0 +1,233 @@ +# Copyright The IETF Trust 2026, All Rights Reserved + +import datetime +import json +from pathlib import Path + +from django.conf import settings +from django.utils import timezone + +from ietf.doc.models import Document, RelatedDocument +from ietf.name.models import StdLevelName +from ietf.doc.storage_utils import exists_in_storage, store_bytes +from ietf.sync.errata import errata_map_from_json, get_errata_data +from ietf.sync.rfcindex import get_april1_rfc_numbers, get_publication_std_levels +from ietf.utils.log import assertion, log + + +_FORMAT_CHECKS = [ + ("xml", "XML"), + ("txt", "TEXT"), + ("html", "HTML"), + ("pdf", "PDF"), +] + + +def generate_rfc_json(rfc_number: int, *, pub_levels=None) -> None: + """Generate and store the JSON metadata file for a published RFC. + + Reads RFC metadata from the DB and errata data from the red bucket, combines + them, and writes json/rfc{N}.json to the "rfc" blob bucket (overwriting any + existing file). + + pub_levels, if provided, should be the defaultdict returned by + get_publication_std_levels(). Pass it when generating JSON for multiple RFCs + to avoid a redundant blob read per call. + """ + try: + rfc = ( + Document.objects.select_related("std_level", "stream", "group__parent") + .prefetch_related("rfcauthor_set") + .get(type_id="rfc", rfc_number=rfc_number) + ) + except Document.DoesNotExist: + log(f"generate_rfc_json: no RFC found for rfc_number={rfc_number}") + return + + if pub_levels is None: + try: + pub_levels = get_publication_std_levels() + except Exception as e: + log(f"generate_rfc_json: failed to get publication std levels: {e}") + return + + doc_id = f"RFC{rfc_number}" + + # draft name + draft_doc = rfc.came_from_draft() + draft = draft_doc.name if draft_doc else None + + # authors: ordered list of display strings + authors = [] + for author in rfc.rfcauthor_set.order_by("order"): + name = author.titlepage_name + if author.is_editor: + name = f"{name}, Ed." + authors.append(name) + + # format: check which file blobs are present + formats = [ + label + for ext, label in _FORMAT_CHECKS + if exists_in_storage(kind="rfc", name=f"{ext}/rfc{rfc_number}.{ext}") + ] + + # page_count + page_count = str(rfc.pages) if rfc.pages is not None else "" + + # status: current std_level + status = rfc.std_level.name.upper() if rfc.std_level else "" + + # pub_status from publication-std-levels.json in the red bucket + # but guard against recent publication not having updated the bucket yet + pub_event = rfc.latest_event(type="published_rfc") + if rfc_number in pub_levels: + pub_status = pub_levels[rfc_number].name.upper() + else: + if ( + pub_event is not None + and timezone.now() - pub_event.time < datetime.timedelta(days=2) + ): + pub_status = status + else: + log(f"Assuming an unknown publication status for rfc{rfc_number}") + pub_status = StdLevelName.objects.get(slug="unkn").name.upper() + + # source: adapted from errata system's display_source() logic + if rfc.stream is None or rfc.group is None: + # Basic expectations (should be constraints) on RFC Document objects + # have been violated. + assertion("rfc.stream is not None and rfc.group is not None") + log( + f"Malformed document object encountered for rfc{rfc_number}. Aborting update of rfc{rfc_number}.json" + ) + return + stream_slug = rfc.stream.slug + group_acronym = rfc.group.acronym + + area_acronym = None + if stream_slug == "ietf": + if rfc.group.parent is None: + assertion("rfc.group.parent is not None") + log( + f"Malformed document object encountered for rfc{rfc_number}. Aborting update of rfc{rfc_number}.json" + ) + return + else: + area_acronym = rfc.group.parent.acronym + + if stream_slug == "ise": + source = "INDEPENDENT" + elif stream_slug == "iab": + source = "IAB" + elif stream_slug == "ietf" and ( + group_acronym in ("none", "gen") or not area_acronym + ): + source = "IETF - NON WORKING GROUP" + elif group_acronym not in ("none", ""): + source = group_acronym + if stream_slug == "ietf" and area_acronym: + source += f" ({area_acronym})" + elif stream_slug: + source += f" ({stream_slug})" + elif stream_slug: + source = "Legacy" if stream_slug == "legacy" else stream_slug.upper() + else: + source = "" + + # pub_date: month/year of publication, with April 1st special-casing + pub_date = None + if pub_event: + dt = pub_event.time + try: + april_first_numbers = get_april1_rfc_numbers() + except Exception: + april_first_numbers = [] + if dt.month == 4 and rfc_number in april_first_numbers: + pub_date = dt.strftime("1 %B %Y") + else: + pub_date = dt.strftime("%B %Y") + + # relationship lists — sorted by RFC number + def _rfc_list(qs, attr): + numbers = [ + getattr(rd, attr).rfc_number + for rd in qs + if getattr(rd, attr).rfc_number is not None + ] + return [f"RFC{n}" for n in sorted(numbers)] + + obsoletes = _rfc_list( + RelatedDocument.objects.filter( + source=rfc, relationship_id="obs" + ).select_related("target"), + "target", + ) + obsoleted_by = _rfc_list( + RelatedDocument.objects.filter( + target=rfc, relationship_id="obs" + ).select_related("source"), + "source", + ) + updates = _rfc_list( + RelatedDocument.objects.filter( + source=rfc, relationship_id="updates" + ).select_related("target"), + "target", + ) + updated_by = _rfc_list( + RelatedDocument.objects.filter( + target=rfc, relationship_id="updates" + ).select_related("source"), + "source", + ) + + # errata_url: non-None if any errata entry exists for this RFC (any status) + try: + errata_data = get_errata_data() + errata_map = errata_map_from_json(errata_data) + errata_url = ( + settings.RFC_EDITOR_ERRATA_BASE_URL + f"rfc{rfc_number}" + if rfc_number in errata_map + else None + ) + except Exception: + log(f"generate_rfc_json: could not load errata data for RFC {rfc_number}") + errata_url = None + + data = { + "draft": draft, + "doc_id": doc_id, + "title": rfc.title, + "authors": authors, + "format": formats, + "page_count": page_count, + "pub_status": pub_status, + "status": status, + "source": source, + "abstract": rfc.abstract, + "pub_date": pub_date, + "keywords": rfc.keywords, + "obsoletes": obsoletes, + "obsoleted_by": obsoleted_by, + "updates": updates, + "updated_by": updated_by, + "see_also": [], + "doi": f"10.17487/{doc_id}", + "errata_url": errata_url, + } + + content = json.dumps(data, indent=2).encode("utf-8") + store_bytes( + kind="rfc", + name=f"json/rfc{rfc_number}.json", + content=content, + allow_overwrite=True, + doc_name=f"rfc{rfc_number}", + doc_rev=None, + mtime=timezone.now(), + ) + fs_path = Path(settings.RFC_PATH) / f"rfc{rfc_number}.json" + if settings.SERVER_MODE != "production" and not fs_path.parent.exists(): + fs_path.parent.mkdir() + fs_path.write_bytes(content) diff --git a/ietf/sync/errata.py b/ietf/sync/errata.py index 113d987291..bc1a1cbd28 100644 --- a/ietf/sync/errata.py +++ b/ietf/sync/errata.py @@ -20,6 +20,7 @@ type ErrataJsonEntry = dict[str, str] + def get_errata_last_updated() -> datetime.datetime: """Get timestamp of the last errata.json update @@ -123,10 +124,12 @@ def update_errata_tags(errata_data: list[ErrataJsonEntry]): desc=summary, ) + return {rfc.rfc_number for rfc in changes} + -def update_errata_from_rfceditor(): +def update_errata_from_rfceditor() -> set[int]: errata_data = get_errata_data() - update_errata_tags(errata_data) + return update_errata_tags(errata_data) ## DirtyBits management for the errata tags diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index 3808fb1db5..4ccd5db4bb 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -302,9 +302,28 @@ def update_errata_from_rfceditor_task(): # new_processed_time is the *start* of processing so that any changes after # this point will trigger another refresh new_processed_time = timezone.now() - update_errata_from_rfceditor() + changed_numbers = update_errata_from_rfceditor() mark_errata_as_processed(new_processed_time) mark_rfcindex_as_dirty() # ensure any changes are reflected in the indexes + if changed_numbers: + update_rfc_json_task.delay(list(changed_numbers)) + + +@shared_task +def update_rfc_json_task(rfc_numbers: list[int]) -> None: + from ietf.doc.utils_rfc_json import generate_rfc_json + from ietf.sync.rfcindex import get_publication_std_levels + + try: + pub_levels = get_publication_std_levels() + except Exception as e: + log.log(f"update_rfc_json_task: failed to get publication std levels: {e}") + return + for rfc_number in rfc_numbers: + try: + generate_rfc_json(rfc_number, pub_levels=pub_levels) + except Exception as e: + log.log(f"update_rfc_json_task: failed for RFC {rfc_number}: {e}") @shared_task diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index 207c78cf6a..99ca7b0008 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -922,11 +922,14 @@ def test_errata_map_from_json(self): @mock.patch("ietf.sync.errata.get_errata_data") def test_update_errata_from_rfceditor(self, mock_get_data, mock_update): fake_data = object() + fake_changed = {1234, 5678} mock_get_data.return_value = fake_data - update_errata_from_rfceditor() + mock_update.return_value = fake_changed + result = update_errata_from_rfceditor() self.assertTrue(mock_get_data.called) self.assertTrue(mock_update.called) self.assertEqual(mock_update.call_args, mock.call(fake_data)) + self.assertEqual(result, fake_changed) def test_update_errata_tags(self): tag_has_errata = DocTagName.objects.get(slug="errata") @@ -964,7 +967,7 @@ def test_update_errata_tags(self): {"doc-id": rfcs[8].name, "errata_status_code": "Rejected"}, # rfcs[9] had none and it should stay that way (no entry at all) ] - update_errata_tags(errata_data) + changed = update_errata_tags(errata_data) self.assertCountEqual(rfcs[0].tags.all(), [tag_has_errata]) self.assertIsNone(rfcs[0].docevent_set.first()) # no change @@ -1018,6 +1021,14 @@ def test_update_errata_tags(self): self.assertCountEqual(rfcs[9].tags.all(), []) self.assertIsNone(rfcs[9].docevent_set.first()) # no change + # return value: only RFCs whose tags actually changed + # rfcs[0], rfcs[1], rfcs[8], rfcs[9] had no tag changes + for unchanged_rfc in (rfcs[0], rfcs[1], rfcs[8], rfcs[9]): + self.assertNotIn(unchanged_rfc.rfc_number, changed) + # rfcs[2..7] had tag changes + for changed_rfc in rfcs[2:8]: + self.assertIn(changed_rfc.rfc_number, changed) + @override_settings(ERRATA_JSON_BLOB_NAME="myblob.json") @mock.patch("ietf.sync.errata.get_errata_last_updated") def test_update_errata_dirty_time(self, mock_last_updated): @@ -1395,7 +1406,7 @@ def test_load_rfcs_into_blobdb_task( self.assertEqual(mock_args, ([3261, 3262, 3263],)) self.assertEqual(mock_kwargs, {}) - + @mock.patch("ietf.sync.tasks.update_rfc_json_task.delay") @mock.patch("ietf.sync.tasks.update_errata_from_rfceditor") @mock.patch("ietf.sync.tasks.mark_rfcindex_as_dirty") @mock.patch("ietf.sync.tasks.mark_errata_as_processed") @@ -1406,6 +1417,7 @@ def test_update_errata_from_rfceditor_task( mock_mark_errata_processed, mock_mark_rfcindex_dirty, mock_update, + mock_rfc_json_delay, ): mock_errata_are_dirty.return_value = False update_errata_from_rfceditor_task() diff --git a/ietf/sync/tests_tasks.py b/ietf/sync/tests_tasks.py index 6657dd617a..edfd080079 100644 --- a/ietf/sync/tests_tasks.py +++ b/ietf/sync/tests_tasks.py @@ -1,5 +1,6 @@ # Copyright The IETF Trust 2026, All Rights Reserved +import mock from django.test.utils import override_settings from ietf.doc.factories import WgDraftFactory @@ -474,3 +475,64 @@ def test_docs_in_queue_retain_rfceditor_state(self): draft = Document.objects.get(pk=draft.pk) self.assertIsNotNone(draft.get_state("draft-rfceditor")) + + +class UpdateErrataFromRfcEditorTaskTests(TestCase): + @mock.patch("ietf.sync.tasks.update_rfc_json_task.delay") + @mock.patch("ietf.sync.tasks.update_errata_from_rfceditor") + @mock.patch("ietf.sync.tasks.mark_rfcindex_as_dirty") + @mock.patch("ietf.sync.tasks.mark_errata_as_processed") + @mock.patch("ietf.sync.tasks.errata_are_dirty") + def test_no_update_when_not_dirty( + self, + mock_dirty, + mock_mark_processed, + mock_mark_index, + mock_update, + mock_json_delay, + ): + """When errata are not dirty nothing runs.""" + mock_dirty.return_value = False + tasks.update_errata_from_rfceditor_task() + mock_update.assert_not_called() + mock_json_delay.assert_not_called() + + @mock.patch("ietf.sync.tasks.update_rfc_json_task.delay") + @mock.patch("ietf.sync.tasks.update_errata_from_rfceditor") + @mock.patch("ietf.sync.tasks.mark_rfcindex_as_dirty") + @mock.patch("ietf.sync.tasks.mark_errata_as_processed") + @mock.patch("ietf.sync.tasks.errata_are_dirty") + def test_json_task_called_for_changed_rfcs( + self, + mock_dirty, + mock_mark_processed, + mock_mark_index, + mock_update, + mock_json_delay, + ): + """update_rfc_json_task is dispatched with the changed RFC numbers.""" + mock_dirty.return_value = True + mock_update.return_value = {3261, 9000} + tasks.update_errata_from_rfceditor_task() + mock_json_delay.assert_called_once() + called_numbers = mock_json_delay.call_args[0][0] + self.assertCountEqual(called_numbers, [3261, 9000]) + + @mock.patch("ietf.sync.tasks.update_rfc_json_task.delay") + @mock.patch("ietf.sync.tasks.update_errata_from_rfceditor") + @mock.patch("ietf.sync.tasks.mark_rfcindex_as_dirty") + @mock.patch("ietf.sync.tasks.mark_errata_as_processed") + @mock.patch("ietf.sync.tasks.errata_are_dirty") + def test_json_task_not_called_when_no_changes( + self, + mock_dirty, + mock_mark_processed, + mock_mark_index, + mock_update, + mock_json_delay, + ): + """update_rfc_json_task is not dispatched when no errata tags changed.""" + mock_dirty.return_value = True + mock_update.return_value = set() + tasks.update_errata_from_rfceditor_task() + mock_json_delay.assert_not_called() From cb482f03296b6ec3bd91f0d9ec0354a9eae5033e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 3 Jun 2026 13:37:42 -0300 Subject: [PATCH 161/161] chore: nginx -> 1.30 (#10978) --- docker/configs/nginx-proxy.conf | 1 + k8s/datatracker.yaml | 2 +- k8s/nginx-auth.conf | 1 + k8s/nginx-datatracker.conf | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/configs/nginx-proxy.conf b/docker/configs/nginx-proxy.conf index e1f739970b..a02ab2ff06 100644 --- a/docker/configs/nginx-proxy.conf +++ b/docker/configs/nginx-proxy.conf @@ -1,5 +1,6 @@ upstream datatracker_backend { server 127.0.0.1:8001; + keepalive 0; # default = 32 since nginx 1.29.7 } server { diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index ff89fb3722..98a782f95c 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -69,7 +69,7 @@ spec: # Nginx Container # ----------------------------------------------------- - name: nginx - image: "ghcr.io/nginxinc/nginx-unprivileged:1.27" + image: "ghcr.io/nginxinc/nginx-unprivileged:1.30" imagePullPolicy: IfNotPresent ports: - containerPort: 8080 diff --git a/k8s/nginx-auth.conf b/k8s/nginx-auth.conf index 1dc2f4fae0..cdb5c665e2 100644 --- a/k8s/nginx-auth.conf +++ b/k8s/nginx-auth.conf @@ -1,5 +1,6 @@ upstream datatracker_backend { server 127.0.0.1:8000; + keepalive 0; # default = 32 since nginx 1.29.7 } server { diff --git a/k8s/nginx-datatracker.conf b/k8s/nginx-datatracker.conf index a7d5936a19..77ce902b17 100644 --- a/k8s/nginx-datatracker.conf +++ b/k8s/nginx-datatracker.conf @@ -1,5 +1,6 @@ upstream datatracker_backend { server 127.0.0.1:8000; + keepalive 0; # default = 32 since nginx 1.29.7 } server {

    Et8&rxf%weJaI0fye`nKOn9 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ⅅ=E{JBn7Iw|qK}ma3R}d|sJ*Bx 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ÞKq{r;VBc8{&E%minQf6SU1fQ%QWZ@f{QKaDer z%3@ke$M_~#j+usb_(-3p&vT|70jRJYHA@Orgs?x@2Qz$u<7EVQ_XZHhzqu`IVj1CyS+g%r0|eS2E2cmh_j+ zPHeVk6*+yuk}ZO&5Xsgm|6KqvkSjqC!tt^#rQ^Q_WFfUeNz!Z+39BtR|D-Qu_&`MD zjumDjzzBNaINbz&?1$2}JJwg#g$L}Lp-#v^hD@2%La5ZecX69iBJ-lJr^0oo@bS{; zXIt1v1@g{mL7Da0B);JoNLJ_(Kf%bHLJsT#SW%Z^DyJR(x3aPVB%5jUx8<;;p?2xC z1#f@oMfmZ|TsB@ZmyLhMTsG#+<@u@n2#ovG$qr}2*bme&$3|^}8l>Q8un1h2(*=5- z30l=|r#T#&T1={Pn!gEA-~9mAc}dxklx)#;VrZ&f4b2&ZrGb4o*`a@|@*;)QD}W!EA$U%s6A@!3+uh6IckvQ5nU?yE`&Ga&wh(O?*l z#xt+LlC*uw`j|!GlM&HKfsTMQ2a~%v@56&(LUUg8mHdfEwVcj>`P>?c;8(JTvXGu7 zXBh#oUumWFd~!=Lgrz*yECXqQ)Gr3C>Q~~G%*;m8AUS0BsvEc2Z&%3iBuH?|uOf-1 zhwowX_-r&{NA3so^&eeH?g~$1ML54GK@DopNl`<<=&O3apPWFofoqs0fu!-~w2Mgi zODp6{wzjNi?~+yga6M)dvDl!4KiOk*y0p^iLhK@>i|?6C*1QNNr0QCFW9&Fp;o!jk zp?S9-&nn&8j`f?XcyrPkPS)6eV-H8fH2^N z0oDmEF!Tnv^LhbM0PBzn27-Th9RE2iN+;iP#?Ruj`hZVMtvWLPqLaOM}lw-xMqKrkScQw(cg z8yZ16Nqqn5k=1D|oZZXr7!&kvbT8>zBp5VOw;Ak>k^IU7;xE-w=#s-PSJ<8sX_DA+ zgM+cAKe1=++<`Yop?^5DEk84SHfITTl!6u*zAfD)bn(IVB>*Mfxc0zoAsKfw>m_Zx zWB{B+EkK^o>HgH+O5;d_xzobwn1=41f%~`fUt1a_N89WP)cY#>EuZnTi>iCeme_gZ7f3y>_NSX-QTlY)G-8 z^O!D3;aP#fx27Zs$(NGQ!Of02F(5$>3HHP}Dn@%OlA7fenM1t#l*1=dyp=z1DxoIL z{&AnfUM(dxr{g~(n4jCDkaVi6bX4%)Px}5URJg=z>R$cpADN~6@#^>79nA831O=%r zvOJX|I}>wX&I11FISMStYK9}4G~#QbI+quMM?*6B@HGXpOHn2>bFF5Ca`wqC6KQRc zuD#`jv4r}ts3_p8Y*~UNQ+mZde@?Mpt^l6Y=dt^ajvvMX5bw-w5%!n zEt!307Ld`9cYd>nlf|i=s8@1AB0@j_o9>t2ZT;UD78AD5DU4c6s->b&PwDb{lDZe& z|IUrmf^%=(QH#82%qyq#TQd4-Gp}c?s#1k#LFE%fJ^o<`SqWko%oL z`uET;omy)6QxP7}MSGYeiEOBomL{$tjSE^@N^>vC0-Dlka?*?vrA*Gsp*^ddS!OG0%PYQ~yB za&dYdgs8My%WU_dWTNUZpof2?Wo6umpRJRe`Rq`^N87%mYnhW}8_HK%fme8$0W+s^ zGNp=8Dy7fqrTN3pSzQNn*9u@w(Ky|)wdi)4FR|bT{Db7v6oh)2wbk^CZW@Q64f`WG zXKbFTzVKFauS9nviU~k)vwBH~zT32b~0Tl3}(6TMV`|>|p4rNH%B^!CmKni<2ytElaHB7a@;_atfu-5zb2aa>PAwDP~ zE0*wmK5imKJ(O=D!S345aS{Hbn-s{r`FRrGu?|_p<|?n!?Mjk7AyCtS8Liv6o(KCu z{juQO+dk7dvOj>7 zU!1>_g=$$**O)&aS+22Ig@0sUMcnuV|@QG3ET)dZbNEcq9MDyDQh87cv(x<(yBy6X_8ThqA z(8kzXxtu8`x0^tGwCr-lFQ-z^HwWGG_>DJh>-=E;66&Y0y~aox@F;eYO$uxtQ#7;_}`Q25(-QQyEGJBnO)O2$I1d{~m|$ zP(Y!mp!;sp6-&rewXu!)Xb`)>I60(za3LpC`K=kNeR?xKOPmD5-zrMIfqpK+7k!fa(*`F4raon0&x5Y(wl`>w-A4Ex1;8v!81U3# z?&U3~xeTGko5Yyq!bxSlBzN)a+HXEhm53p-o=rB;+bj4oyi%;N@T&COy5%38<}iNs zTk6dG^%s~p$@D|gGH+;xI*&SYhUQ65DF=q}4ZG(CuU>op(JeAJNs(TBgyJ85oo%sS zY(Wa2g?ImMrr@9Ed5rn987|&9h)J71DGCAqXBGkf;B^Zsh`~wX@1c>z*!shHl{4Ep z@Ayz4Ep8kEcBq48G^YtA`X&tQXTRulMre5f1m3<|O5?`79E`_R2>h7 z>3VZcTpqy{G?huFq>g2}4_BkuOyYwemQkirS7b5E&2Zs=;!dZqB=5pkF{sW31fPuW zS!nQ!v}~if`t}uM@CqvYG#4l&DVJ*Hg&^T7@{(IEj06%l7!~g+h~FpsTSE2yDX_8K zdHBd7)Wb0e7+}e=U|<`0`PHc7x946#nvU`b4w@9rN(YNZl5t9pX5 z@w8&Guz$6b2LTS++;U4le{m*Gsn7{&B8!pxTA+Rqm9b*48OxRU~EC z_!Ji~P{=H1DFP zc081&H}iQo4PZ1hWKYJ!L0@}_1}A0>zRc>B+x@!9>=)Z({-Vlye_%mxfr^la`Ge`E zKE^NHcrfl)(^o0W2Ba?0#StmfoLVeo^(@ z5t0Q=6?Bb$ev#TV4>M-e7{`T^ml)uY%SXLb|3sNt7Ay(AQW&-5F z4uIqhGBk>}tzk>mDfq&~#e(6tGy8U?-;SE??j*6F@T3pIusQBnTcFl>y6lpy1>IWf z2#$$>Mp6kroEe?`AWI3c+F4tMRSm761*`FNr8#OX>IQAsE39Uh-=cZ<@tobJ{e>rl zVgV1S5JiXxo}WaR3K_f@KYh;67;GqOl1Qdf8B^h&4i3srj|98qynj`?ojwj?$w{s2>$P7_UFs}av521 zTZ1$(!^dV+6S>L|;Zce+NcL5eOLIjwqD@FQHHY_pq8Zjjq?>X2`rrva>UCM>0{X=S8R^=}KBWlNbCsJO1V8xv@kITMdlALG%Q+qtNJPBlP>n%s^TdPPu}T8 ziiOlI*Kv8Xov0v8rk&2Mq3<+R`EN2T5h1AyEht1EDTgESPh_&!TQSTNurY6!@&t5q zm(YvW1LcFJ({02)2TC@JvG*W%ASsrsb5$74saIi0A|g3hLMuP7p3%qAX*z$^#ruD8(vnq5?RG0Bq9@Ru3aD)E@Zf{Pjw(D2GsZ@j#lxpyF9KKaf|T_9I7 zhl;p#DnCj(Ou;2_^`mF!s$wYrMHYW2E91kW@8>VA7n8p*q# zAizRn(q(18z3lySo-y9b5@quUskxp&?NRfAih|5fBsXl+hn!16VV1`DoFy@otlR;1 zQ{1mJ$CFCchvS#3zHITdEs?WTbu^_)qLxkv18(HhGtG==isG!$mnu|cl>O8yg5z6A2hR1uF?;kSr ztwpOhNMg0oPfpKmM`m_9BA2S*EJ@7-4WS&?%IhBQy2Cj~V%}M%Z)gAKQ2ft46udd} z+WOyrC}ev6Y|NfH6jC8|HfDe7P+Yx~zEZbPa69D_S4wa7Y#e~BH~t^a-+RA3*2jd2b0Nr6{3Qi8V*B}IB0=;0bV(OIWzzkF1 zscP|_1%&w(T=pFs$~@Q2*3Vp}Y{_Dkv|`@DImrDCl#g1z7Nf6$SkeN(?XYy(tbDki z2l-jp4>Tq1JppQsj)8Xq^=fVqCzOBoC^O`wjxlBWV4(_vz$oHSe6-x+nGNy%q%`&E zC3tRPHk@7F)WWPexoc@5ZPD^76diQXZWFiisz2yI#-qWj5IRCK_eb8PI2R@*x`4(C z%u`BWc*sB`!IFKiS>RlM=}=MkW3Dszlx_3pvJMQZhBq*4%bQ7bIE`2=$X~>3QT-sN z2}^l+_uYJ)WjV{6I3w~e3qEt~f^->FQFiQE=$B4?X?l_BJsgqk)mPy+*%A0*{df*R zaJ($D$=TI#af-3JR4B!S+3~oT$g=ocG{q2MKCVsPD=rr>vTg>hNxYG=DaJAc@78!R z4F?Nv1T>`GHw&t_;4;iP5zigr;S+Wvx~`?L1Sw^d!+G{2nfm@-^Vff-5K%kXm$Ptw z$~aj9!?}D>?QYVVBnguPHU-JmfHK#T`x9%8R&FR$NivC(PtY7Cah#Vdib3=yS+$i` zQE7E!^TXQz#lKA{Ld(JVZVyF-EO;@FEpr zG?iEs5mgs+Vr3F~{`I#&dl8x&D??@AYlQymI-#vr3un_l<)njHcv>{7?r@kSY7LU88;Yi<=#1^2&eJBZ^VD$7rEm7GgKAQ&-5?*=bvKR@NUFj^P4 zpfvVYzac^9r-gLH%}h|xF!l{>pT7Odg%ab^jH>7z*b7a*5fY7WJz( zUIZ3d58*I;=U=3N0a@)j?i@x!IyST-4dxTnp6|`<&eMu_DGr#rAoy>|Ad?pzN5VQv zEl7`)P9CIcI$Wuqr zO@|7tXfzjEt}f7< z#^&-N2Xs(|Nb?mei58Uaaa!Ws4&+mc&T6*XN5px??IXiA5JR-g6Jxxv7hki~VPyV| zN5}DWoRcTk1qNyM@0;o7X&JoPF)y6CGJ7NqqR@!+8!xSHpB~J?I~w;2?dH%BX#B>8 z@1-G>y2RfY7+Hn^0kiVi597i1K%yd!2M0|~p2$zikboXTuTAsnnN+xrKyCKA*L{xf z3^RhU8NwO;9qbuC>xg(RSX(@?W~Rz0vu5ML@lkOv8jSj;$P<;*Wbf0am)V#l1pMWD zf-bSRyPQRkB-JMK`#f>omhBbTZDMdsSP@B zU;f|_cG8>@c(`{flLVISEJAe0U3Z{3V|l5@%3hIm_&#r8P2=@|2z>pEEH)ms8-lmY zlM>qY$F?z^susq9a|0HNCP-~KPxYYspf|beH#jZpoFYVx^68md!Wh|ZZhRu&SxA7;trU+z$$HVV}*uWMn z+7;!TGZv}Jz(T(lwf6SsyuEY3=S)|Ag+NTClp(J;tePjdv3F#_ZcRmlNp{DJ0lH2# zq8SLT5SrmCqB7X7V7{M&A_6GEj8fuj4Ku#kIim0oh{BZ&n*?l!9c#gS2<58X98GGl zpeavQdu!T8EZxB$5@o1o6%ZOX5QV4ibn_`588Aav%L~7HbVU)9&BGEzXaU3E>l=FB zP*j0{UiYS+r0C)zU88()rd#1J%L-wxAm2n@L@-~M5-Gl@e=4}>ukEk}3IF+`zJo;< z1zr9K?AOIiJ2_ZeJq3opbb?ZvW9fXE?s(;+<*qc!s)Xh^l@i5Gzl=$QJ~T{+#5Hdk zN_*6e$1_q{*`sX5F2{;#iskH04iMfPOWp=ynyx7vd(8P9e&;*y_Z3&|loAV$ z{V=*n(_o*1gd(B?K_4`<=TBwdruk;{PHo6!{Rnq!KY7pC{TY<7DKhOZ)S zCT@;Q$tGv$W{JT{PFgA%(vz6R9sjk@FOgj66B-`Q&zWMx6j3+K9qEHL@GjS4I3r}L zC7h|kN@8Aw*@C;{Uc3{as|)cVIQE}X60|=&jqNF9$(SSDMlP!nDCHl}fJ13Y8;m)s zQL|6==ggs+i~RHPK0yTwIVsFNfeaV3bwZqdVb0Of;2~L53$&cW5$P3JqV#TSbMA$C zS3+h`D407F8dNmsr3U5J=_R8I5Q=Tw@lFpx786e)P`o$2luNl3lWV3UBU9}Nh^dBT zbV2@e#gg232;4y;#zbJqTVD)HfcO5{45a%w?8?6rF>9 zoHmbfG&s8^rE zj}$9RR9UYO`r%c87e?$-@Mb;enJA?Gm*I})YN=l*VtBpanEQp* zg$+76Yz1g;y9s1es$rhYQY!tPO=U~GIfqH~tN*M2spQMQnLhkjUN3AI;FqOG#&euE zEhN_a@cNg9%&J&5))U=IvfaO#|2{3OFZ~u=RWNXv*Rt83*RS(b6!vWV+NI|HpsiJ@j{sWk@3n?E2q)UPoUL{=W)wUi2VK;$i+GC zC=NY`X-}2MV((GfQq9tlB}vX%b|>DRk}N`ytS@HiY?-y(uREF?3N4+|bq2kl*xzx$ z|4?8S5-EnIA+Nu2OtqO-@%yVbo%d6Bqxb%Ekg=?K#h7_a(r`oO5_TphK2Xlq|S zB!y5Ga-eDsB;_aUMj)eDPLt42O>^T4nL>Bz%EETH-|Q_ofefcOH!KfiC~Xq%{Z3kx z-=9EkjM=j5!?wgfkLx4>6FI>KRB3iKoE$o{Wv(-2NuGhTC$D*hGM|Jkhgbfo(3Hj9 zzH{03X8UH6j4h4~%OMJ^j9k<=MUpJ&&q2n?f9gbnL{u^WA)cIw?{xr9c^FVC z%1GUQ^Na1lXm8A0EiYliy0mO-J*2ZgTHLF@=XCpHo+Yooh5b8_;7_dL6H{FdM44|g zq{^@6_iw^R{#hWA+0xJnR?Od}bOP0$2NLrT0Lg#-?B+oZiFSr_VB_^Kc>w$80ZA2q z0-gk(<#T5q82`u$r9-5X4nL!jv)7DpvgyI_m6H_Y7r|=3(pLf9*EtG;`S@R`XjYS1 zjalF%>%GNUu&r)u$#Ba(s@Hk`-{F!xE#U~K5DITUaR{+xedjJK4k<0$RSl%>94DCj zAz{pd(ju+3o<+{8rR72aJby1CHrlh7)1Q)Rx*IcPe(jI)|r;R47&Yi+n_?r1mgy6xtol7bP|(XUsL1IN$Suxv`wk zy0az;$!ZBiba>(5hnE|p*ETqpR7dHoJnmcqWxrccRA>( z%%;l|qgcv>@ALmDkG@=oZn&*Y2inps?Oi7EGj9Xryx};T7A~!-i zft*=;S{ZWfHXe6IWFQz|Mg;oTIpQq|`6-vKOpSzJE@kq;|Il=t=hgIzXdce;Ntw`x ze_C<|TFy%gEMIMr|!$RifHc=~o%rFnzd zEojl5on>CaIR|Aqye|Kyp!1X3e?g#Tlqo$j`O>lQq1hUf+X$as9fpt5NI1JE#{c9g zazJ5D!CW1Ihdgp&aMnu>$-ub}Ql?jFXI7EL?dhw)i>7idg z94upi;}%#)weY?nfycv3)yif-H3}8XU93t3n`GdvwRwqXCI~64X2*t)F4Te_hZ85P ztgNK8vi?e#Ergoaxx4f^6(J~fbusu^#fgVKdwr+vVAD9pPQN{P=)Z8I*r(JchiEqgZNS1x|pRfkcgPHLD)c0ec3jQy?C$-W$eNP%1(XX8% z=wF9-h-lqEiBZOj7KnoTIYOy0W;s?6X|BsU{~{fbUWnUOqOocA0vz=TYETM-O0C&4Q)nr#)HmEUeW`xm4HsN*Fj*N zkiiU>0EJ}{)B|1Ycmh?TImOJvNJ(BA|JyeqSUJV95?x@|r`fkT&;nJ8GN@3Z6df)o zl!yjsHB2Uw16w=IKBZ@D^36m&2Y%x|@PN4k4MHbZGA>72sSa0FK#3Pzd@+78xyvMG zH`(hZ*`Tz03%u$n!?_O)m1s6C1ef6={rX8w)F{!%qhm~S$^~$IXP#r|QZtM1C9sJ0TM*0shHxJ@5D$kXmZ3xtK6Z1OK zsWy~wHr1Zos%jkJ0P}eHAgk3J6a3FluFy}+!iO#K#YKCQl2f=~l&OLg1~)C(IG!ul zc%m12;puM|>ccv#{B_~d{`}iQ)7;~i*&I6B3n?^Qdfpf5I1nd4vAWOgX@L0iPPn9`qERm0bR5kPeJ=+Q!=5G32X$AH&fwu?ZRzwbo}qAyD;I2# z-%~DG_s*gLaRKwI!@089bAX6Pj_J-YXXRE%QsU#wPsJ$m?V5WjVkg@2<-oNNVS5sb zA!x$P?Rt!>ihnhL*S4YDyD=~~U)7&fDW-lt;g2aGV66&x5h7B6k!%N66LDMHSDT_r zD)~tso+vH5@d;N(*O@nVf%vb?NuUumZ9#gks#{BGb6cB#Ijssyj_7@=7#aHJyb=@X zPpMCA^PGMOqTam?BPgX1pt8$trlQ#fVahXRkKV^TusdE>7OKk&N{KD`ZcO2#HvJ0> z0offfz-IaFhtax4(3e_(x=5>UJ|*$#X(#8 zoNZCr4F@t>?rBAR4NW|=DSW-b-6yv#zw$U4WBdlKM#{3%!TzTO=`c*7lP+$JjXo{3 zay|o&KP~(PVatIRQ)L9IU4J}5^CD||z2M+DEX-Ez`2_*++2Y~=kgY^VAuLXB=8Z)V z*`nGNXN{uYb)4z&+f*wl1fo_TXF0X0x-#LWKVJBe>4PfSHWfyrCTVzFJZ4dry)@)?Re@n0{7PI>u1B<$*wfmNT5$@WfuIqoZD*b`e=BHHcx~G*?K*ASBn)M4KLwG7YtXu9>*=K#{olRTXq#HXETIfwU?D!|7^CTwY;$&6=Qs(27r^H`2;^kPDnI`>bcpl4| zg+QT0I@-Q|%nuFmtj*|CnEWXO{gkCEp&e_Bl*UH$BQn}rS!-z-sdd#>wN@84GC0jI zq&>{fFQBtKNaKaM#$5w%*R{s~Z->8}q4WpNm~1%>0PaPGxl(LZjy;?=NL&hPSaY~f z&Kk~t9yR+(PdK_?!!`MBS($<7sr5&3Q_Rn-B-vSa1=>TH5<*pk;y(SM))$Ge(9)Hz zG5Np+c_elN<|-1nsvgc~T|CqyaUrn>;Gyt~VsFs8wRU~aD(1M<->H}5mH8R9Tz2^b zy~z_gF|{prp6RK7enxxdOXlj%QVoSUnSMfzWI^Yd;mreplp=}WKBGsvwO_z2SN{itw@;TjcIP<}X*B&&7XpFrdSM%Yo)CQj)^(n z{)~p5TD!KbE$KdhE9ApJ21A6M{qMpLeG1Lr`#B8prx3*YyFY^p0ru=?tob6L zo2CD0D5GF7LK7R9gA1DO>))59E+^~U&nA|mnCQz3eNI~6P4>-Z*GDHLe^GKqOC7+T zl|CT$##4RKnA7RlU@;g-E&oi0HrrsB-fm8AyIh~aC%PJqd#P^B8RE>mVnL2XpJq{d z6bAS!MIU*hxjSQ~KBpgV^2VXbs(---%0CuTZ&JDUEOH`s^e<_la>0O2^EyWE zFtc{87^X_&!GJOVEQrHcQ;InWg7`<+qXA96BB`YUha5@SweTwuv}M@Vz_Q_oj?+!K ztz#{-nKqc`qzm2rQU*A1{0{?qL-@CrlM$PnwI=J%PlMeyOm``V4XkL~v*jt#s;og^ zKN52uy|}m1X(oI~7MF6g>yV(CQnK0yvbsSK8JZ@M3*>3F5*UWC=PHw&o0Ed08%vO-P$mSgEmidxdkx~|f(_g$A1+eq4U z6dpx2GL?DQJ~WLoZ*#|{5|6`k;tobXZW7LQUVwB$?Yr>+hvq&EROk+kl*6G}MmY-; z|By38vZkO_7cj$~n(*sP%R;;TlH3KR-2UY5G9IlQ)Em{~>euo`b$`3MUp+qmoIbG2 zc2;F~O#TO*K#5kzhtOQ8kl{$^yNq=U83X2Chl|0g+4yPMm|bl%CAEwx7priA+kq`f zxQ0C5mv~iCr(xC1N{+#S=`v5CBNkQ;RhX3-Ud%q{`*Zo@<_}qLvTUwWiu?o@d~--B zi2H&84>Q7+xq#>KnFi@e8NjO@j2zq9J1oH((B=xJsSO4)J{Z~s1e_eR9o^}_Y zVi+h2Wn2eL0lN!+9}XaBT&FW3vFHGepXgZ~hak3UfTjbUT( zVi`8D%YmuP57n{0vAC{5!g@oQn9>E(J0S8-lptEu^738px+b!HHzqw88Q~AX-pT>Y z8{0Waqd~~Zes58?v!smkR3orITm}&SfZc&I;bSwGLcfjsz!}n>HcMr7MD~pv62Ej z1huQ`m2%_#k;WnwiAKx>n@}?X8fmC7V-S#F$3iKU78V5xFBDmEQa8PcmxK0UY41sTf(l|WJPR-8eb`Zq8`$pn!> zPHensM7CmUaCb>&E=3wS%r0cemab<)e3{=>ZTeO46tCUO6$mS>;fDIa9p}7f-wS!~ zVvpnu=Cub?^ilN7$w6K4jhicGR+=e`V3*yc(s4O(Qeg0JxltI1L7@M8oo z0cGT*4YE{Z>h1Uh0XzoH`x}J zq>1?(mfKFSX;feKEZmUP(a(XN5XE3?j|W5FeHwfGo5EE2<4xB{4HlnM!?liIERS|s zqa14R0ZP^sx-$E^r$Vc{Ft;=+H`Rx9%q2+-n(;uUO3qSS_bQZ{#eV4s`cKD>S>TkJ z_BvY;b%h@JlE-;`Lfq_C!wx{^wX2YeV<%FmW$Ec|pFEgYmNv+FgdU=#8sf^5+M;=9 zaZ$O2lU;|0-l<(_=V;86!yUdDpl;b!_g$gy?EJDNd6q9J$jg>j@P}HsqnP8mu=Cjf zL1=TpRSIu2+~;nuI#KgB*itfiTbK?9EgcrxZF}Fkk+HN-?qD4V&62J`CgW^)gEn!? zcc%Yy#BvhC9Ra#D;XZS1nCU4Q8X=|G!oOPt#L)mkHi?yASZN>IVrDohbY`s+-{>YX zZKP}h{Rh$QWhXX>ll{SXyE`URcua0;9gG5-jJ(-SB}tx|tRq#MqgY>1{48O}f_Dch z)+0@MDlxR2m0dbSEL#4nFbEGpZq*zQ^}Kf3I8GXVBMrZihIQ7FoaW}h#aRFs!ICX6 z%n-8orAy~B@KIwzqVsRcO7zKQF623Q|1L*TPF?0+zvm7D)f&iGH&<70O6ge^#fov{ z;`|##Cj0TpE?^p3x#ok*%#dkWc?tLoO zdED|e)ABUi@=HKpSY|v09J5;oUc9qKRGaD(Lr|T6Uh>bi-`j;Z0*@J(d+H!it;L5h z!H7nt)BLfYFX|~T+v}##Z#Vq@nd>P|%w;@&W2gkO1$fgpl*St??7NCbZ+MH{yz?%U z>|v(6!%bkOE<5QxbFZkna%ZUOX8!3MaXIbi;*081%BP`LkY=+w-%m2|v?DBMVqz zjuky}XQ?V0u)Jfc`kmP#&zy!AUP`$Hfzl{U=Yaa$!=Azra@zA-cmijH}CXu+mIba@42} zMw^e=%>m;X#_cmN-4t(wJR#=`1#D`L%?tox{C{(Drm2!SIn0hipLBJszlDvb>c4U9 z#K;S2s5M>177-VdIY^Krp@`iea21DoxpdrV9?Ig<1%V zDNT^8wDft7eLN;4R!57&<|u|OmTcwND>Ra@=fGUaRs6#yr$+tYi5s!6X2Y0m0{P1; z$AgArw5D5;Ov6uz6K(e4rKZ5kRuBb;gpiY;R@IR6$|`oB__X4>)kZfbJSxvYqPB$y=8ICV$RN4 zt*-yz~VkBG%lvXQBt%DDFrL7EJs{T!Wgi+bF!2(ARp-6z* zvo`g-!e&~0%w^wR<)oLyDDB2_zeMf6dX<+^fy;84xh?V6yt-_8rJ&l^D{wWWg;-qWkeIg#!mtkA)lAk%~WNDqJl}DkFJqP1pN2yuuDSkI*{#s zz3|H58IR#5b&ysia%8-@U-PVm&~$J%=0KI7V;YiVc)#%Y@{-)cUf`GKhbG~7m5na4 zV=m?Ob|20u4RQ*81VDR(QSQEpv^pL)Q)A3kQRl2wRfltOj(uX=J~zxvx}l(zv~7)w zF!D)BX0u^OQo&zT;W<%Zf~1#W%b}B;55gpl#UV{D<6hvSblb`7!Ii?OTIUi?|a45_<9 zuUF|8+=VXY%*lj8t@iIJhL?*o$CgI}Hs4=(=$d=j(oamYj;<$c%?u-_>Xol&?VWyi z!5Mz%IFo$@t-B;%o_cCKR}NcsC9vN)iVb7h{`cE>Miv#YSW44I%M05=8UFQ$r>BBu zo~-|4fkL&UZM$0IY5J9!Z_1jh*`NJLQ|g$QZJlJ3+wxnJsnn%Jk2cK))aocsXhDAQ zbNQ7@|Hh=|qN}3y=9rkRNSC2o_gCrjou2-@#?xFST2FbEN;noFlXC*HI5S`~0JCz` zS2Aq2Vz>vaNX->xbC05{;;lCBwo(T9>PZ`E{6v_R0qJAMvvg38izXY3k;U|H!TZ2k zbzVS{izF`^iT&7WwmNZJx%td1s1JB%B>&ocwt;`O2XxN&e?*8HLOU?zog0Wo{M+(F z(Ksq{ez2PP-yD{l8yN<=$2nh}>_7MG?8&dwxz+w$1e_;>=dgh1?8&d^IbX@JpkAtf zTKM{w6sWf`A}xv!H+d`25hM}B?-zWL^JSM9>`WM4%rAiIe@|WX$?rZAsVVz=NJk{U z2L_u-w}0IuyVy~eMBX}{jw2xFf={~RC(HQ}%!>siVq-G3OS@yHU_J-fUwm}up1c>O zeKFW|(7TU)H<`c}JPe?Ihz+wk$mVy#L_EO>6IO{74&`1bF6-0yW{6u^zxFIH|y)< zwXFmOY=@+7dHW)e--;biD8f}M;ttx&YmfhAJwLIfrL?CQmqMt1X)8HQ3ZU&^BGQSFYSafphAZ2#YN|=}&llx@a zO{EA=Qtx=v=v_K-xC`Rj8Vvbrd68h4&lYjdOwLEM0OZpWC=bAHExK9Mn6))!9G=xFuV?r*s%WUKI}nj{9U z4dqM@^#&s>Ao{YihUdum3te^`zZSF?-XgEZi)jx+_8sNR zJ8U+;pongNVx|;bnk*##zNyk{3iSWN$x^2(T0puL{_@0BO4eLZ($g?3sm!21Nd`SZ zrsP~i8FEFPD8S>3X$7wI1i_F#jz8JFulZab{y_g^7p~&m9)6@`q#^!MPtV9{(yyKt z*QDOe6*6idNu}mZe+lD1BZCx2=?J2J{)2=XPoa9kr9KzSGsst`G1BODDGW>-h_C;W z3JS8IQ@{KY#!8SnpWwKWW&?iYyVZx`a6-}hujv@MqCo(3VGhfA@^clnH-&j1ddaz7 zKc~`?S|;Ca&T+=FB@-kqPxNf7Kg*=1+DO%YX+15tww0eF)x#DX)o80fN&2c)6Z{DU zMWC%ndm{7hWqJ<*!5gKDP^_6GWDWkukL3lQQr()H>lVDR{4aSn@F|fU>~T}QrklJB z?RYVzxyHSz#sWKE-+Kn&oYKG*Uvd5cs@N=BY-Wo&=5o#vbq91^aqiPk>G`cp)#q9E z^GtmfmlAK|slIh2ww^NOT-KR-N%!!{EmzPhR1fOoEG<_EgVbLA-NSYT^L5y`Md^9!99j{_mzI1YBX%mv%ljhOHqyoi$SX^)Ai-BpOx9Vy9Vc0 z+Q?Mec)rqRrqX6wI`{IKrFj3W;e96RePG!Cgem_&#o}HM)ts*J*)kpQ;rLv|a^QJ} zWkWAU?Jyz+{ATxPGiYsR=J(9}o^1vP>nUq|gJm}8<{zI^g5%KTLsKSCS?n7`w$5#w z=`d~7ta<+?FlG1O4gWxk$VVe_vE~1YVD+rioUKzVqk#>SKm`hs2y&yq-UcBl!9AG$=oTnS+b_-ziIfuL%szmP7O&;MB z*$$rBx(zq^=iD6@-9VP|tY4q>$p|{K=JwCILA-GLHk_=5@3p*DdeXVd?S(l7dIPB4 z*^>}_Z1x*F&%Tvr>m~OF@BCEnJQYZR+;ra7V^8O7eP;f4=%#o_hkDR+cmjSA{6eN7 zDJK3Zc{sAu2s|VFJYGLJk2m=stl@k;KchrGcFSau0EaNNH|oHZHj@d>f@V?O$ zJ!Vx1{ctp&U@m5#`R*4#DF1db+ms^7rM}JGKrXhDyg`%HFOC-EO3PX*`vLtrH3Of& zG*#Rivbv&kV_DczUi|4Koh%V&;%?PA*mVHLZk?mFYS3^3|m=LW)|6ffznt5*wq&4lE* z?e@YQ7bc3Af~)&sJQ08Kh0=E>lxZ6|VmqB>I@DdY&~tNpI}w&W;!3Dx_Ub7Cdr(6O zx6;-A2qNzw0LW9S;g>|%^6}oxK+kedH*W0=-|i4gWUFduM0;V`S^eq?L4w^x49Mq1 z>_LQ+?CUqaA_53}awe8)7Uz5)@hOlV0}N@`AxIsYL6`&ybtk{mt}@^Qf0~1cH$`r$WJ-yEymNua}tjRE(7aX6+MSuF^pzw(j&{d zDIe?^<0Tghd~s>v(v*QlfbxY7DR8+zai$Gh56;yR#&vMDfD8i$Czv&jn{5tUXNVSp zsHIc_aIO=A5f$4WjP}N(MF(dd^p`k_n8d*`3;sE;!E-h>WvFr(H5-{j}!~+#@sX$uf7)x_Icz@}~!#M|?8* zNTbo?=&3kXHaEaxX8Zy{Dy-Sc%8Cda*;^@@SBKmx=X@gvto5bO)=GAH;r^|?q^?AB z@^>w95|8&J^>TIu^p*zj>u({&l*&$?(~aXP-jHa9g%2@FC90;gICO>=7QzyII z??2suy@d{XlSDVTzT_J8V5y z5?F4*jmXQZ^&s<<*_IVhLI>9CJtK4A*uD9(Xcg!ZaXf`@4?+#9*`+o?!f5>c><7s< zGBHT!2M}eMGnLH-2K)!gI>e05YzlQ%zdDBEC_gM_iaV!oS3hxzaKo z*YfA^d%g@OB{<2(>Xf+O^8`_IW}PFABGM7zQG%c-PvE}LSJ|2ug=+uh6wLVkQZO3^ z^!$JRpSk<>m%JDXJr~SL&wOw;;u=1Tq@gXt{jX1~QVLxFCWV#C3q%oN}jXVx=s+ z3>^`g2H`1Rdy$QYkITfz<^3O}vB0phDvNwkbtv%(%gw*qp~N9DztioBz6ZfL>KCnR;g)Gcq+JGD9D?yl|`28h3V?d`?xQR&5cVL z9v>*ekBy_^a-B9g#wC|Eq?lQ+CltJ}+H{7T$K3E7N2_N-7EqVYu>4=22q8d{Y7{mg zz&~8VK40iOTWF>L3hn&of1>QtKf;J!`xHE5O3#i1!*u3LZzz+ss`>9Q3HROnq+$3^ z+Jq1PPD}708@t+GGG%6de+W}-x811^vn>1gyao9SY{-LxHh7FT?@pI+!Dp0_ce;#= zGBZpkIL(Hd8K$$G{*3)KEzHvA=j=W>NR)RQ>jqiW5IT%7Fmb1*T~ToBfLxcRXxub( z-tlOXUw;($tv*sv&I5~*>1`(J#$W!TJ#NwhUJ?WR<2;Ip3G^L$t2ZPrfn+3k-&qUQ)yT?0tIh6CZ0QxW8K{JlVu839$^4~T2xAUgYx?NYPo$K zbKVk4SGvHWo%?uXSmry*n1&VUvfuAuA?Y`VE=A3PT2hw0G%tzbmKFT>h4uK&=EC0= z))qc3q!;_ABU8iTb2J%uW~-c0cqYL*i64vahU1ya2k1KJG!q@Hr9TcV5N-HdibWbq zGBaOt-lbEmxesX}K$cQa@p&>MOp^^ZLzI7Y-5XpsdxhSx(`3#fTv;!x^XNH4Wxbf; zQ_Wh(P-19HUDBA5EOY z-l$B~c|svoS#(){W+~D+mgWPwJ%4nuRQ-yg{MOV&oN9?Kb-R78V$ z?bs+uL0Z=&KUk6_L)qdY-@m`{;^9jW$R-Bg47&Gok+yUQ(^Yo+Hc-_aQJBo2HN@5Y z5#|tIXw3R%02KEy%zI7_-)$P6eIZ#3ZLGx1s)VDQmmb|3JSI~8skjBs-8F1_<*qqg zT>K+1Z*86*w~Y!L#H5;=xHe_I@fWI{qOV4S2af(#9*qX0#aB_YPq)NXmx6}a&7edg z*b0jJoEKy^kV~gy#pY&%RT*JFAtr4$JuM=r=sG{N$92HWunXER3xBz=z*sgsVQC_@3``P zEFRyZNvcgtPnr);Bc+{YzuhB_6TPMm9mgHzZp^`x?A~fQ~nAMzTdc3 zH{nd`;?-x?42>*u#9WMZX>LQ^eq@t-{T7UYTJ0y4IlyKA%3x5}%s7X}l^s-w0dwLR zFUHmjkGmJh8*J^z-EN=NDlrh3MzF=VvbtvmW|% z<*ZFW+?{rih=?vJ^B)`A49RMkU0ajR;K6XYmy>a@BMyI?z3sz}bxeBH!@WL4> zNmD6Sx_32B-&-b~Pj8V>R2Yp~GW)a$&q# zO4o@qq!IHm{}7Z~C5da32~Se|{`%VweXidu9E{@o?qHIb?M)5he>iT=nb;dS57{YX zrJsKaL%l=-5!~|e3Iz;@l>5%Cay*#iWzBHNG;o#wOJ3LFt~*B9B8kkO3qz)>a0yoy z%GWEV9swOpH&!&`G#Mj`G372679mHvoQz4dW4P_EukG?z*wwQUnYxB1P0P4^h8m&s zl3%+)DuUn4RhU~TMZ1QzmQq;?4w@rF#G67)5-zdK&;>iN&F2|BY!fjna8%akQP5m6 z|JrlIwDk%&tJ{N7&0Ir^o|WcYDoV`i(Mwi7U=C<(=As}#;?~HA#kqlTJ-L{{MH$Io zdaqy0QAC_-=pKOGh<~(LCVlfh#l$^vJoAxT8HkM_aXji?UmIeeEe;xj=k1L%k8IPT zNmr?3uH`K4_Qds@iEK!MTnV3W?lv)3;r;hS^odj1G+bK*%1qJ`&A2FXWyr*>WSMSF zktPQpW=lb)T}drq6GQMkyKR*gjPJ|~$9WyAtYT_Dl0SoGVAX!tX%Q|Ap^y_HQUSM? zZ}H)=0EHma(%<4Ap;{sp*h9JpsdeI_Q9Uz)puc(JSjh=!p4az?tfc;{JLUB*v2)Q%&cm~Q$VgwyZK3lA~zI+GsJRn6XnI2U%u;|Q(>E&Bwm$x66W zhCJA&0*WT40j{8@&)Ge)Yo?i4uEB#`&NPS#uV@-&DdkUr|^Ku~U8jvq*5W3@x zst7k6HSIZ>Kt%B)XEy|cC7}C6zw#2{ zAImee!+JLjE*A{i!(OfWBg|_)( z&Mt{t=U^bZ@cd?eJOPy#)_qv2ya4c2l~=C7tDI{D_U>d~LEeshFPNG$xs|(K;_$m; z{>j(h-adQ<`-<@4Zcunw24YqJ)o(}#_bI_H|Cf#jmhTM;tzI_!Z^p?R!k&UPZNhW!>+!E3{v&#N&Q&FLd~s*}{fc%5p~P#fVbLzQ`M+lB4BxqF^?xX09X>Fy&N{FFE5f z_t=;csQOy=P2Rwy3e)DQ0zc=KAH~<*WIUSX49R{9D>MwYigQXQ^gd@S{N4`*k9i|G z?ouA|n7=DGYDn>z(E9#IKeY9Xz;M0{G?x9~mfScZvFDA%l-Gc+Pj2~O zKzi_ii$9ax5+5@S-&{TE7xYVN&Bw{8B#KRR`?d1hNKe$VzE z=9m3TBQ$@o9Oeh5_8Q2`@u0!(Ip!ykA?A;{FK&Mc=0q^l1Xp(22E5csZy43qTcD5 z7+@;Yp*5f>HHX6F}a+TYxK68(iM_4>U&7G41+p=}oIS?2cKo zN9~V!CgzkB01zibGuo)hdnv~bfGNKAR3}z@X#TsTcW92VCuUAPb(6?I|1HaL2yD!M z2UYVAnP!?l$AuGqgTK}N?dpE@_?%wV8`b0L*YbsWcT^}{9F&hPO67`q+9~X9UvOK8 zCxxS9^PV4$PXI|kw!iBa$2--dQUlMu!S(tYkM5cQx_387#yoTyUp!2@J)TkXlAbAK zjya07fF$&xzY=RiKT1LSZa8?L^J2~dE##G;Zkqj7lTy@TU64(eM)I9^kWy`M<)Oj{ z)Ux@nF}u4Q^l+d@-McPH;!$eQPrYdFyIGxf20b-o2B&yj>ypWPtvM~u03c04VnYv= zcildpq$zhv0*EG`gLZs9iW%Y!nsC2I?)ybMZkhYFchGC%U|8(sWZIPDySF@)UP*m(pSVr>Yd&qL2Gq}DJbsAd zK9Ww*V8`qHFBQMw`lap_AL%}aWHB3AkXG?o8sI~Oa~U&qkl6*7teQj9>qQ)Dj^5jG z9h*x6738sudi3&mU^_95`G<=h?Yl+&hGiYEzqb%*j+r0Ig#pCd36LUCbBi&@9ba-C z#?Av@&VmK0O{orjzZiwzF2JPwJ`hXE0uwBJs0|_(`-Pl$f_LaDzR_E{h98BZ<+wYIRG^!cRU{XVfc zECHIM)5!l49nHO%BFUJj&h3%eX7dWPNcfE@Qd@uw7RTcrA4$4Vj|V3_Vj{#rDYWBD zb7%paaSt?xxt0x~$5&q5938vIgz{h5hl}xm9L3m`&x3vs$nJuFFr)##F31A-jBn&C zs?8pZ^mp8oi-HRmNY*^*kLy=oyGi#_jwUX?ag&jjJbO;H1gSyWe&q&uFY)(+@EtA^ zrbP*e?2ikkNcaE@oBc|2nE3mjI+^m88YES6w~@hB{=tmfEa<36crU^8L3bMWwg)47 zUhI)S9!Ryl0Vu4tB`}65^y5nI@QGl;md{%vs#&_a?F?paDykeI^Z3F2o&w8Gfo5lT zn&GMCngnf4w5D(_I1e`6IUi1dnLAJk-={f>9`8&_L}e7Mh7%RliV(dBswWy98sH{q_;7; zzU=eQd-wC<(*ESlxW2@{8>TpYp2YUF5DfHvJNSry*`S4{L_?d#H1Z+enj5|c->v!e z&HP8y8=;+3^WRtV9}#=UgjtEIBMOcvK4Ped6C!9f|LvLocFliG>k)Bi{`>MT!ocxr z)(!4H!+wkjaX*x?JBGNEKX=X15x;tz&=4-;E?<|I-2{04vIkzr{O#|??fTt-(Ihu| z7Th{|Mm?{_z;iI@Xqj9 zy<6r`3?zfwnl%|CaDl0Px<0P;4;Z_g@0DpAM$K&AGeeJ!)R z>YiVYaA>c3jk@f})!^Jvrv)0o)nqs6(x9)KN6BS_knnZK(5_PQ`k3*#T>*525u1Pa z9{4Z4>liL@R(s%IV~p{Ls8XJ;`E^Y#ckdg_bIFSJn)lnak^6DRn5x%&=%a&uvqY`( z)fF$)H=fQn?BqAunr|2w591rg_6>EvVN~BRl5cjozuD#fW>@cWGR!Kq!UA`)7|bj z`LA%*c8jstvd^;33GP3&0dC*N3|ixu0Bu}O#{0}|(fvY*k?ABkjbC=?Us-ngliUq% z={G~p-UAwjfD3;uvYzyZ2GQ~TKNgt`2?++YaQ$1p zuOTjGi6vc`JQ)nlDFo9VU!#E@b;YDdyE(cAYuFqUaRCZKJ#c7nyv22X&>WL`vp%X2 zTZ_duRL%}LIokCQ<+Yt%f*JH8!x9O1WFW`O68KE?1~Tdvl>$firBUC9?8mGa=t0y4 z2Vnr9=cJO``~ibWy}1g1j4?Fk*Saks;4D$WY6m6-$ClJG6qR7L=`n5%7x%m*pL&C9 z`_nXAg1iCTK=*D!JQ#yese9c8hhn&ey!WP^=BPXF-0`?Th>BRKd(}0>9ulP(UFDX&cIkZ(ATc{#(op zw>6%+kHN@08i-l=S^!t4G<(1wv3;3XWWjqfrj3Kesl&86w*!jlF&H6PF6z>5H4c{ACSArjR>xvMbZ{T z@U)Ll3?U93s)9~3|iI?ajmr{|5azrbxFXb;%$Ap{@;j(^T% zyV<$I_**<0a7p3vTfHtz7e~0bu19<&xByqOfpu>fC~xe^CVaGKH52q;t6cz!=~Z|P z`2;f6*mm*RS^m?OHpV<*IfMp79eGq|@REM&lINv^vPB341LDuaWqJhf{23{w5d3q+x7_SEhIj2lKFxliMEL$uCDQ4E1-S^(~cAYfc-2V;I-iivkstJdmZ0)jne|!MvobG^ed? z8xVv>VDr$AM7ex6J zbKxiMESCj!VI37}xR4t_ z6_=M5&Mz4?;!tRZSam>*6g(ugY zgl^G28mhG0Z(5n3xoJrmgwgYZ?R=;=5I44K7LT@166z9_Ew^@pI2R~(IUEp^-eyAW zV|kJ&7Cf%K*bBk=DA^rh^YV=(i^y#AP+ z`g3w>h0YdQM*e;n*=pv8Wx#|*p`NODQ1H75jf~FBeaO61bJT*O9Kqt4tfKgGOztwa z86V<|g1NR{L_BHt`1sR&HeZWH>wjaA9_6IE>qS zw#T7(d$O3QE6OP=fWNqm9}O8JLGgH&;d5)a&g|WA1Ao?Mcw$*pY}VZ@l)zRGlpL8o z3vAxTq>Y(ecSJ5ek|KAp`PdTrX433goM;g49+V}S_eU0er9Tvs7Ve(Rmr`s$%}N-l zl{vc*p0W-0ciR=yRE@g92R%o9+Y|{5xHLDl3W@6_+*e!If*8i*LgdPC8v_@Z3Vu0t zEb65n3R;v-ZJb$Pq*Tfd(0#J7K47DJuuE$rb23%NmL1BBfvM;O;AHM$=%&pr+pzBy zMN2X6tceJFtQ_frHk_F<-#Knx!&1T^BTFGCzI;$yH*Tnj>C7n$6cIDT8eNF|1ueJn zVLEfO5WEa7ok9a7jmf2&G*%&eXNON@{efQ#GazMrQgR$9Np0e*p1b}Jto0Jx!@yc3 zAzgaGfT5kFA**&Vazd~`KNsq!VgAj8JmyR$mwqX1&zd8))4uR*>xHUh+Q!Z$AwF)! z-Fq>VYG}sB4BHZLWudKa28@;L>IB8RNmcPa<_ZGDj)V2I=3aVz{a6fe*%b*|);yIj z;~`9bZF}G}=fkZth~LzsF01y$)uYV<#F!PVC}@v2~1JW z4n;OsK4?_;SbW6fF|c+52E}fJaQCEO@5hX~d4WfXtAJ42&H{w|*z7}J2#hth16!w? zDdFD<|GuI-RKw~-u|#fgq>mPXDDW+ zb~T1$uTU-GDpUm$p=g8W$z``yb%ITU(rdz#nR}Npy0`ZmqDfb`YcF^FI6w_N>@&U};@x|0t#Piv}(}DXgBjZ17y34hO!ddg7wNGZ_V`>G>zjPCu8iwyNRa z1=>!%DmqCHRZve{I(RNx(-T`*Kcl#Pb1?(~C=xPD*afiWNx1au7Hf)ItSa8C?w2oi z%GJsaDT24_`^OiJIRzLO?mEyK2^1AyW zA=qJAr$kWO12I(c_0@Mbr*D;#|`L-@}q1vSn}te6aR~Z znnkh9G_BD1VnYgb!iRp;NYBo0?np-PJGvp0bPQKVFaEnC_8ZX; zPNoGopb~5R577j!(zY7ZKz@r%-;Ikc_&q?W;hlNaID7lT{;6j&iSl3g@_ zV8C8(rj`=uUUlQ1Y_)aDP<*F|h}+&a&6krhED#V0$ko6z%x z)k?8UNKE%ss2cfPwaOLSWZI=3%E*Az@AmD`NQr@%W|7&2IO#Us(5&TLjag|le1<>g zmi#)iKSZ2Z3hK}vdt*Ouu-mehjU=4m-WBu#OYwAY3v{yB^SYJdBz{`)vQZhWNCxG3}(wSP*sYi-T#+ zOJO^BbXPOFV@-a~9ipb#DR#*6odl<>o4RjyIhclR%Do8XtQ6&ksOTwVzW$B|{ae$o zyyLn1F3WK3{Ow_b=`KJ@Vrd`Dd)GIAa8Inz@dyrbegB+5DL0_FfL6xsMb`Ao!1007 zB3v2lIG74*6gfq#Uh;#R1GbffMVJh4jV(&yw*1u04=4mKC~ODQHIGi*i!azB0apYiG|=?9^QBqF6irt3p=*=jml;{sjIqUpQ$H5lmj zf-%^y_Sr*|TT15L_ACgB!ttxGXHAf;HR;tTju}L;&QQ((i3V^*!mb0aL2tIcPYfBO zg%CZWjQxvlQef!^LkAjy;eFEgSnSuU0egha5%h${?+_NUq{idk%$wX_PAFQ{QSzWcurNNy7 zUkI2r@;2K#>Rv*Mfv-+t4V`}K(bXk;a;JX5ChE45uxXMT0v!I;|Ah3BX$$$$O(Luf ztllZoWoxX)Pqe35k+|=A_Lg7+(V=qqHd?tgz6IEWIW)v_cKX8LUR`?~u5;C4Ps$5t zQ*mJr_Jwm=ys*MyaWc7Jn>l)W*G+hWaj!Xq6z-wf6_-={?EpV{@s#ghTMy2PT$LGz z{p1feUd3%iCn*8)z8Dt5O%gs(T;4Zeu2lcQ$b8r+ekRnA}jh2}A>klP62bzP;6}{lU0lLC0xH957{k@3D%IeF+Oj zWkfx7?FjJ;anQaH#r4I&$-epRsQF;If64s{@&PftB#Md|1x~Tm(8D58PQ<@zUB;~6 zk~>FOaIqpg#xUq*_{PWEgW&YGVU5x*JPeU`-y824K8@|#%6-e=V#_V0dTxZT!NDNG zrcBvZif!z>(utx1uAM%@0Wq3!Cp2pzIIofZ3u zb?agqX|{4^w-M#4r3gcFK|fu}9irAd_{>K)nQhI-|&n^U=DHJILd!?2b-egVgna>l-K&cE`K zJc12osKeBf1!-*(i?Yz3O~Vq4LF6}Zm)(P@U)Y)d>EhOU2r4`KDgYRZ1K6QA&4?iy$?=yVMY*Y}!DDYIX$6w(ghT(8DTJ^bW`FTCo>+ztnR7>P4L z3U38o3qu0gvGO{pPs(j@Jdo?fM%KcUTw$f)Tx$Z^ea?JqD?u9k-h>V%$amPozYEl# zRuP$LH4YF-;;>YRc{FrNOLVC#8B{i}mo*Kr;t6Td6-YsRBPG-l>s|jME%my{bs@dT zX^ORng4KsETzI;aTzR=~JrI*)ycabR#mTnAP8up!_fCk4GO{1xr^KPy;Ju-4*70Wp z)S?v!P44WCV|XHi!4yJ~ZqyrL;3iqz#jK9KXFTe(#Qw#gPu(0KOoSQ5#C0NHaFOGo zA$PQWv~JOcp0l^0d^+jd``j<4gzP-flF7tTM50U}Yg*Ynm+z0{Jk}cbf(kfGG)IeE zxY!})WhAoh3-jAq?z+}gW9(|MN2t;}7pUhOb4xj5Fzzeaa4q~s+ZMiIAjHbp&LoRB zOG3ImQH66gYhKR}4OgsOzGmx2d(pXPd=Gc< z0$LQuc3L}1#tgjaNo1*MA~kt=f(BFl-FcmXh4rbUBW8PP>cUM|bYa0u9TnR_o3#n% zZw*ogNF*YOy%0RJg-E&(s+QaYH9iR5B1pA8hIJC37)DK9dr{D0P4Lo>a`$DKt zE^$0?OM`;yhj(YN*Qr=YTxo-Fm|pJ*`HV$%jrzsZuPlLiEKPb64OUw`*!EOel94V& zpjBNI-Vw0vezB_?KZJEyo*zECKnF}`AG4>AC9)ykvWq$zjMb7=Qiy)+&7}n#C|HTp zahcyc%Fvt-Q!&8OA`_58`|um7OkAwALowVk$`-p=DVhUE*}NZAY`GqIM(Hr&nk`` zF^26U33ds5V2CXdJ0+n3u#Nc{8l%EyHiGrZ-Eh#yW{`Q2vg!?jOk0=8L>d1a*r0YC zOV7GP@`LS$>!>#Ec+{&&Uky@CONFAe0zW%z2)!>PZlQsYC@5=Q_j+-r%1RREn6$8;42Opo2g*B@o?Z9j)W$VO@N&79q1aD;J1-ENeC-xc z7RYa1%PfA+nKxhrjd*k~5wV0sbm4+J0}dB(Vbx~ZpSi7V%ZGL;h*XHY<+4wx!2~EX z3ZPCd$cMpFtLU&n_nc>E*~PWm21U~Is|6Wb;(C>byfIplLHITqFa)A@N|sSoZptF| zP%zkS*WfT^OSmldVyQt}7+Ckv2V%>-M3y5(@?Lv=F`Y2g4fMwj9{95!SYm4vVJC*~ zY_3)UG!f+A$EmK>QLS1bA08pMFR`(>otOWhP?gj!rKT3NB8-NX26e4C^ERH@Ehmo% z$C*HY?=}G>BhF;?YFkjYTdfPHUS}nud(EO*2U0c|rhOp}U+Tf{u$-d&@abN|;GW4B z-C-`0D63hK_}^_>svUN9(5@OvEZk}8SexVo5_qHqbJ^XmpY8`XMV1PvhE^P6XSuOw zz=1h%q8)l0tj6}@zR1VZ8uWt)SLVRS*$N(iP8f69f+EQwT(^&C5whjo zzQi%LMLeeP$DVlPNbh{N*>ioz1{TLwdC%BI2^#}X(+g!c$MMpv;`>5}C%o_h1NQW5 z2=8mE2_IwN0#a=+H)?tVk&E`g84SRMz9b?4E&>hEWw+mU0Shls68;J$37F;_@cZ#Y z!~OEs396fZTkIyt4-?pAr+IJAsHIu`Ar15;4)IuY=B267bHaj-Z6Cb+uPv%Jt|TYQ z0QHHhC+-Y-@k9$08qbMD^u*lvS7htb3K!hR2n+@tUb!s9)GsW3)=i`{&qn%!k%0%h z@Ua%sa=1J#s-A=kb-@`Bc;kxQzIDx(QadTIxCpGUq>wXdl4pgqkzjPk8GhPko#a^` z00%r~1>EmRKY**2ml#tN#eSE}BT9iN*<}U*$xX=_8=_C7BKX}OSesjLZ{g5kVJ7E> zs9ZfI^&DW1RN6ve2?MKEJ0>rK=kFZBoCVX@*C-pj7L``;PR1L)lSqJGKRF%{^Z5R) z^}ihtSSEh7C&!hdP`ah17e@|t_>+t`du^q!l%J>^bJ(A zvBcNlkSzK}=O*NU>fhZUga$+4wsVzJdAe+*#`H)e2DFUH7IpN}o_g85G)vuNgC+_b zDSiw^gqlLe;lxE7a@M}gwipzLc-}UdfFOui?moj*)XY__1&{xF$v6LfXfy#mBA;ic zMkJFSZ-mMbl|{+QYENgiL8Gw`vDYwOHl3i}{FGR%tw~~q&Nd!IA1Hq=!NY1 z7dVBYaWRYS_O+)z+XA~M0}W%x_-WxkQ8B3z>mqD|fRj0Dc};XNaIF{Zw2R)-oZ65U zbl{wEHn(dKx_iM6;b->8x!tET`{NwocZNUbB67BRc=OA~`#!^;a|k-m@aNn*Bbc@e zbgKODj#OL%^TX>NGN>72Jr>hjC*8C!!YO%qP#Oqa#q?Th^EGdneCB?givmN~4FHH0 z6R7}I&a|Dep$lM=9ooU5*JKZr6mXjx#_GO!@V%xp$MyPvZeNiKZV>_cLCS`y3*tQU zq0hy(L_0P(_EesQAG41fby+q9`;0DL>7@XdrJJcEoSBTfZD<`b6nu?_3>{GfP zql=D~jGe_FOILOpZ{cgx&si(C?ZK!Tgfz3pbbR4nxsoiG4f=8pR(1+zxsE&Lvh0JW zO7ws(mEhVOQ!{;c{v^-@?#U~T6De6 ze9>6_yR1>2t{eM~@1DY_6+Bzgfgj2esIc$f^8?T_Pw8GrZGF|{13Uk zq^ktI*SeYaLx+KfZ*BFwVjqIJodr+lYIbMp_qjMtAvJ^>w_WF27*eOj$EZ0J@c0TW4W}^+S9r3-AA6%Z_gFlN!O3JS?zGgD z_qe4loP1e4#l618eYv6|8C0ahdnSkV9JViK_EI~uN7P~sVjo#gGMe;TXBN4lE!W2c zp^!F6BAac z;(xi7ph?^FNWW8bYM`IPaiW++ez0bA@Kxm>=REu~>+)(SV*8V+M9*fJo4#%a?Ns3G zj^x=CXDi3TYo|8vS!;gqt2t(;BZ&~GHRoiA;B3G4IIIQ}6>{lc1ia^kVm?8Oxfw9O zP8wQ%qYN|IR#$$&{)bE-uKSiTx$b*gptNnB9B>zqk8d_zPNo(>(i%|8i9#2RkThc0$zk&g&1 zA=_cYfvMnvR=8r#ovylL4i6RZB^N`bqL+dUEso|5`56CXtsR`2#BmUl zi-Q!gMd#Cu$NJ{?#Oj1&qIQ+j@R%4j^sqPBb_n%D*cU=v23RwQP%b=n>{ZX>!B9QHQ%Joaoq*ZmZR;kk z?0j5U4P+}eE6l2|KdQy^Hu>i%*0=xbrG!RNZy z>n3q)AfX`dB%^?RV~!@g89RdsSo|3Ws*i6G6pA;EB1(xY04mCp{pxYUx{ZwB3}fTG z_@8{6L%%UNH7%lT3HOzjC2<$U=t+-2A=aAwT$Kh1&>=Irm-L$J6`4vkqF-ASM>AsxJx*s^J z%H7y8i-I-z^gb@$#LZst4{nn?&BX7xs5!z3z*OJG?B1tW?k(R@znK z)pk#6xwYA)-FRmuDMp`;D;Xq8nwkW$vaP+Lv=dKRXn%}x%9BL^9M8t)0;Rxl?tw!S zSr1$K;vOi=m}p`YxyDa$%N4g!QqBz$_sV74yG8~!tSX`Ert&n~j4u-&i>fSJDp@`>ZNv1rMGKz$-Miji!>=6%49a+*g{$y1;cfy$y>KR zKo{OS$A{SGl`~{12hy`)5Ai4-4Xu(PBgtw+EMhDG82(JR+`EA5Cz6e~;#VWBW znOjH;=z;~b2JKiXQ5@U4b$N%XPQPL4Zq$)Ty=`gRt{0gV^5ED|+nG9AVBo;K_S0~X zjER?M3uo!#Khj_CPG!3Dj*I?xLeLw7w-pIXapv~c_X<0G?+d9%aN&dh*Z_Ynw5?MK zfVYc8)lu|&;>%iNYioVWbfhXN?{!_GrX>1w&(m1V%fY=3i0o2~^twY8Y=#~KJE!(Q zHjciWOM5nWS`TuIv6InA?hOw%<79l!C zC>-WaI2NWp-NF>$%rllCSRE(%vX&-;{+@(D>Ly~=*R}#a2bmPF`1Ycx%Gn#f6u}tEb z6$8!e515D8*s$(x6WQ|kuRWpk+jr3(#3bU{hA_~Hmz?Rkaa!7jWtrLduDBbANV;v)6RdK}6@@=&RK3-QfHiv!m< z4&Ya0Ut%xBTt7MIy4+9gS@1Eq4Y?EBtaxNv*oHf%ed_k_Dc^#Op4MN5bw73oWZ*;y z7wIE>kyr;lHW&hW5S*ak%>FnJrkrG_m1LG7Q4ZL8-{hvy_#;) z@!I5Q>#SiMJC7^7^%4`vJm5}YF7^!fXJmgUCe@d$B}C`c$w`EpxXe`g|J6@54gjkjvae z+>EJJ=H6=+9v0h%Scc!mz+(+e#TJHgfV}4T+*d(Z+f6H4%GvY}Rt6Nd+@A1E7 z{lC= z+O2P588?dD%ojfUIG4aSy9C40{?4Bp3D?-g(v;=58Nn)n{vkGpi^SaAq{!%LSmG_& z=PjuV+G5m1f66`nY=&Cp!(Fi(U)kp4$sJdAXw)7-RgSringzF8-M}BoU<9A;Lfdk)G<(O24DB3~oZiI6e@yVqF!duXoVp(RgIyLH| zodXP~00zLxl?Mj7dt$qoVB4H$L0-Z~SkafT2^IV*TIp&NSZP={@7Lts-#4 zwqJ%CZC$xnJaUZ|>ioM#S4w$Gm~5@6!GhQAbQ@=a$82r`H@cJil82PS32#e-mxl?1 zal~6t9{{sWX%)*O-kjZgoZUN~^*0A&Rb1~)LVx?bVkeB7PwDiRcNw<#dB*{ZOcL<< z+~w!3Vj6q+Q)bX<#ORt(>w7MUb8@)Jx6GxWu5JlqYS^9FEargh2463aMc?Q3J50;@#Xtlos zCGFC6d|%qjf!~V2Z?nMTJG69488ktaL6on#@^K_+)4m}TV7BCIS>2;}Pi1O*{y?1c zc-yBya(4jiK7ek3m!KHNT-?$i3?CD@s~M>>)PT_5l^eleF}_ag3?DlTLqv))kz-Kj z)qr2s0M{RJ4tZ|4_;(BC$KnLwGz0m``}h^)lIgMnWPTr6K{XEA zYuw@~qt@mnH46gN{H_!_#W4?XRxHR&sY(wAW}uf0#B+VdM{Uo~e-p&Se%D#!Hc_0)>Z7m zV?97u#n7(&N-$DN|3acgpMN1X`l64MLKs*q%~0Jw&E&rzEJ`?2hKFw;4QuYYBjJ^K>EC{hZU@jnONz2k!}wIq4uV$7M^+LGgo3-i_vpUk>aPl z9l1jpneO230V#-;pJId$_%qy5*px4Dx%xBA3xKZ%;Oi7Y6&${2#8Sh%WE+<{z;F|E zNceJEw$-Xaz3frTyNuV(mjh&J&C^D#|7}+P{xNy4yYm87U0hzYr1)j9V^}?5G1yl}Uq%jLOdc}lE z&&H7cRKCz;_XZ>dB`K1b?+LY1Zu`Bgsxg3Q>EQlZ4~9GqP(R2}fyC-}{24)Dz{~zN zulNwFnx-ZDCg_wkOg zT@`1bA8l}j<^jHa#C-Q5y9VsVM{Z{HZ6+0Y51YrqH|7!UfwuSgWXwQ5KwwZ~s=szy zhP)DYO1}*59FvO~fkK!SGu~vGc0=*@=RKZ5d|UPFG%i^NL17@C%WjCrfLj5jPKWZK#*pC#G~jQiLyTzci`u_F?f|Os5w!c1!L;#qTMy`=DC7`9 zN1xBpX;@HZGf5Ssr7=(#ZSFY$tT?1HW{R;e*=6KX@BqjRMxn8~!-x0-AMe^nerimC zTdBKp^?_R0E<|3AR~xgkfMC>s)LPXNrWGbU>m?zM%Yp!}wuO`^3$@HNyS!$uHrluH zPJ~Kk@m@FHv(Th2Psy&W#e^(ftqo>1nX4-B(wA3D z50Enk>&<->>Nm7DjdAezbXbV20Ta5;dKs*j3R zn85g*rEOdVBIbI@E#z)?80H?o{sICU?BeYgcPI=@e&@y8hv2Cu;u%rQFg^xc9TE`J zwPdKn>td%QsHH+H(*pr~CmKE+;@W`9L`OsQL^VjF=U_RaZ__;s^3mS+J!<%rM@^h*wZmeq!ucV0JFS9W1iubyn<|`d zfnQ>+j6vROqP)PESLw)<`^Bv&XMC$Thtzu~N~-flNWD+E^#h!nUD;l$+{1R-U+ROO*Y*Yd6iOAL@yzwd&Usz9Ao{^Hdn zj5PCEV3hv&tavYS<8ZRk5!y=qpb+w16%m zAvYZTSd)9M%Blgg=@4KE4fB!NgvNVpNuQN-ZNB^}+c(gl4{9QUV?1wenBHDp_;J(K zDJzc8Sj)kjU8BEeMXaF6Bcch)yLWrSy%{32e(cUz)E-*>qGNaN_8>kYjsy~U(2FeH zAqX5%7X}9nP!KH~d?#sKv{SG(qOVlUFnS%#pj+deqPyc=vFb~W_c97mjG#cnsW7`A zZEHz~sd^XPbD0mt2cGY0+0hfx7eCS|eXQRw;8!PHa=T1iYm>q85;E&D^QD{IVD$k~ z;d`1*xf7Mt;Ph!Ke>Kes8^NQi)kUCP0WD47P@=;Hx#%Ewry<&ivblE3{?Kz%==6SF14s-ul@?>fG44Sd#q~tZ#B0AV*lB0YR-Ilz@xzI%8 zO)$@gERn2X=naq_}W9noc;Dp=;Me~R4 za^ZE25N5=SaIytS$$Q8>7=_pAhB4@WlTU9$W+${Xw>n`t(3nqqsRMNr%UsW)X5>P5 zV2^lTnH|9zp4c@sc#j%>dmuD zI>wR)?GSEadZD_OUf~n0@L90JcVC=#=iBx6%NBJV`kvM7qOMi!wPBWu6?}*9AR#+& z^u4*8xqhopd{Oyhq)wmVn^-W%NVr_`i~yNx6zZnrA>X?0(ue+WP-Nu`8S~UYGiHxz zY>(-6k(IcHMgsG7j`PiYVhy)8OGKi}Tb3ruqQA>|_Yv;~c(-rs?vhCwQ5PRr22JEe zsQ}IKuA!is!skYp-Y|@@0jr1$O{hw~_|~HJ=ry0gCa!Ncpj{$~KU74n?mvB$Pg0AC z(#F1@8d=ZKm{xcA>KYvIp98Nt85M=jilX~3p6QCtNQ)Gex3KdcVD?6Rb&7JtUYBso zSSrL2TAecP<1z@_GL^o;yIVF0Ip?Fr>M+w3qr%8*351QfITYTU34fea$UZ-E!zaBx zD1Gku+bLKgf>=WWalw;!d}kc?aq;e~WtyPjaYodnVEWZC@k1cI8-&%Yc z+9x~*0T>0|LmcX)h$G5a`bZfeG^Ps100g4HIJ_+?<1NPTP3C33?M6cQi-kzEe-2{< zGV(p}KSyQUAH=b?EmIvG-&X8YqpuNu?iMO-SYq8kApikt9T&M1-`8m#ENH~gl<>{~ z=0}m&ZTqPjbPL?{op1blZyzG+eOS_Plb9dOY3NENi;{x3OQQ8ZEL28z>BHt%A*SEl z;T_&!dC{2VnuSeB_1AX6E7Pz?<@rrm0F7i|wSpm#S?$ey-xp6zACAi!Evyy&1{w5B z)2ZwgGO+kf;mJc>qPwg@>=(bP1NTK^jy1MJ00Cf4ElIT1uW7;nLqNR0W8;e#Jyu0z zLC0*nU$F@Alw=kp7Gi?_@RFsEj4(#-ZXyX!%36E(x#_O5T76fUkzvj`2(Y?}RqX=h zu5$gIm#ylm#jsV^O@Lb;i!Z>fg(_sAS)@uLf?c*OOyN-}34B)hPNItP*=kV@fbZn? z{ya3(aNEpMFc@^#>?yk8gR`eWQ)d4FF;$P*YgS-Z`CP_#LcxLRj^GVYiB@ZU$T{CJ zJ6!uH%A(4wE;cSieU`kupt{a@ z2PP`$r~0_(41~UX1jlGi`k_mz!h&-H#W&}-P<1VwxE4AQCdOJN6n{6bg&HKlRcv9^ znqRXvT{ZI_b+-P*Ktuxjp$_EXp+}E%3UvH|{Z};62jJ`zH zWWy}-pvX539j-pF$L_5xi}~kEk5{)nz?Y#bP!)#&Do`aJG{52~`i?3iF2?HcF9p=7 z0u>hcKA9EoaYhm@fAa1C3^m06L=HX{Pwo#G8a9}us%$cmSbonh*_Ow>`+#>l`dtG1 zWsJwZ{9fd~Z%S*7#}8LQt<4TZ#_#oQ>j#j!W0LRg@WBiznij=yoKDS0NGl(qNR`xd*394W?Ype$=@NrwM0Cx1HbE1D9>wbjQ58Ha>o|s!O zEip2U`hRv>eCir7q^`WhpVhjW)-}|IUo-$XGyu-1x=B6Oh|1rqP9VZub?_K{otE4U zwd+6A{q-6kde7wS-UAGLS?pTg&e)E52b!DW1Dct_qX?#Ds$;|JVcfO^e=L6!iM>#} zCj}4NhxdnYnKRTx?LF#lxx-m5lt>(2J`yE^JE4Y^qYss%Ddsya+H+bi?9i9$(Fd?1 zq3V9Nr?B}Hc&-SGo|IwIT3*T9ec;kvuYcrePq7~$Yb=yL5cydD$`bn?8~7fwS<6=_ z1?Zhsb46ca%UfNmdZMD`+?RY&>hO-Q$X)d=T8+5tkzp}e&I<_H_1zNpY7 zMl7;+`A-b?u?S3dC|6Dy7g(9h|FJ-LS>LRBk1t+H7<$Q(gHMjwVpn=~)$8kh=YJTL zd&kP#@(vc`9<@Jl#96@@l=RJ$UF0KEMAg>^;8oqgUNgURC>D_cmLK5;lcDp?bdtFZ z%1p=;%LkJaSV#9FM_h@$kjLs`XXr+NDvd23nP?8|yQE!5`IFMyBv#FA3qhv+O z*bYMW4+mE9SuV@EP>)+Q_vlQDKODHl+wH^O?k=*6XtoHiZX;X2d;|IG5MXv2d9OBJ z_A_n@o;_vDY($rgr(tU5-jZ{IIg#Zp0_@T$ZSwJZhq=eaBU+Gd5j};NSvKR2x1k0? zHG{$JW_&LmZX7US0;i8k5_tm^hOJ{auu<_U=ry?Jq}Lfke~l5)N#;7Vy$*_pw|p!P zA2Yp{ul6;Z=`ZZox(Bz7%9h)lXb(V8`KVsO-l8HHmtP58!!{{2XEOg|JK4x_M_;83 zov@wTBm6d0(2mf&yZ&b__ie-fq-u|<#9FpA{anw!J`8`(vL#Mm*7lP>sp&2C`a`xz zeQrg!2<1rFpNI`6*vzECMl|eX*I;Y>UFbNY{Rm>H220ZUZG+!3bz*)V1TBcaI=v;s zXL{QP)}Y~hiL5D0bR0CMx=@WZp!+3GL{($L&-~mA#;XdXyTB}}aNMD4Jjgl^GJiO# zntH27rmCqyrq=BIdU_1`EBWlt{AsEk%Ab&WtHztZ4yxV! z-c+?`K~9ZKwZH~U4K~kE9p^We58%)K%wOt!AW%Q^L0N%Zeu4aU)6?8dullnf$CIz8 zH&(%e>LMTP^H+UW9Q5|*b)3K5KZ76g*C8JsRAc$@kUt!SVHk-u7>TLL=Y!F+Z}WS5 z7J)nqllhq7*|Vw2s%btu1~s>IwUfeK@mSPzER1)I*~!NytM1=7`Gz9-!O*Z5r(`b9MYy!F`|#%boXtXztB zF#m|Goy^Zt;VxFT!@bxAK```urXeV+KC*Gx;cK$KFia9gQhnX>PPuT++qI@LtiQx~ znN_bcDf|ed!|I^T3%bRh4%fao(sUjE`HiZV6ZhKAc4ODYk`exoo;K867?M7k|!7qI8Gk+thXB?sxjU9$?xnY0#ZLzqxB1sfP!9Q3Sx zdLP5Y$dudPiea)NGO*~rjIy;m^xlWQMG0OC)v;saqpwQvQmEc%K7c1+mJkk3CPCP{7Ce_r+G6DH2;0xf2D{^?wJohg;P);d1ue(NmX`&-KgdY$ zm4LwmDN*3(>{oME?QJX8|1FyUMF@OTGbt1ld0fpEh2(&@$} zOa5*MhRSDH!UhW-5Pd-OsJ9GbU&cqQd}pK(eU;tjuwWHfNJ#t|r(a*cX1Hsu@yc2? zHJ_HPOO{jJvMQwf?XJaQtUjTx_m`(cp&lcM!ZtkUsv6C(HSF;^UuLV9#~kvcbk2s9 z-B$FP13HYxZin1N6?1fUAa&XUq(*XS74=6p;KgNszH4y zJ{qsHrwZ$m(0)PHkBbz&z5{(Z7 z{|`KysSDL&m!qca!40lb(0bD{@soqKi56&wM6GZ zMCe9~1}u(v;Dq(UHsr0IV|+IhY<+ovX>o4Y>#sYA1j+JgM#+!Jcd6w9ws-H&|)1-C<9)yW$N2ZnE9M#NHnGiG6e%Mz`}6LfDUP zRt6~?_KrM#Qc8||-N&!K?(l1e5z}39*!D_t7{%;(QyW>B+XF=zegmmZ$l2Z@`=a1{ zjp!BAeJ2n9dIzB0O@9!YYg9~cz%g&Y0H)iUh~Bt{Kh^9~_psEN;=AH1KRcNbj*3WI z@pbMhO^&=_C~V!1eOwob%H~+j-7Pfq0NrM?uN+AG``%}Y0K9C?%6i|hKF12W1T{Q+wt4ahp7f$zcEC0NkwZ}z2QZQzMu&u0qhljzi z4%#0V`h8xJz7!Gqs+(74vxQKU-Y-)qDOgQbKQMBsyaUMGffjxIs#{9X(#VFKr4V2s z2rK=dkxevm`$Qwdpb??nzVGW+`VbO;!Od^wT}!u8vP_xAclMo?hKKBAT-i4*Y@ctP_!gqekCzI(skLZ->%`YjPH{Q# zg#;FHT2=MWV4qyOzl4{u`RC{XXY*K`*ob<8*~O8>2%*30ug4EF-Uaqptf!elVWK^d7oDZHWlwqG_*1NGPBXvQ`$HMF~GI==GU(9Dw9=< zuKkun7&lhIRsU??@0m3@?XbG`_-Fh6a4Hr!GVpQp3q)s-3yGXcF3=%h<3mwVAD!aN zn?8_YUMvjUtAU8Gq%sT^4q=Gn z>mLI&!Eth;vsHoPa@4;q!Xy0p4DMW8UF*+PvBA04T)=5~w?<4#`k>l75(n(mddC~~ zZ==ZidsEvmcyH;!i>D-fs+F3YN+=j%Yo?u|$ONg-`)*N>%Lb|DeYlny9TpW(^hxJA z`~js~A2FMExs4fw$Ao1e(;C6etSix?t9*Z3%(=V8_S6(*!d!~r!UqRd5nYH}bkAM# z=8tW-gXm)vdEZ>^~r2@}WfO!PH<{AY@t0MXl&#`SF*@f5Ei zC2=3`A+)mLP@OEQ)veN;|onv;JAVy!);n`(z;FsNscLzBa zQWcGn-!)>v$zax__sr;?Y%yzD?XpeN3Cr3k0)Y+F)Tki#;(@AMXgpkF1CMRk#OSCX zj+L}DBx|}UZo&P(!zNMXNIV-UxI`o-QI_gFy(xdVDSDgv)BBFNm2_;d&WgQ8I51nZ zZ7l*S$39p=;~s8d-{q=;!`L;CHG+vwwdn$fBSe@uIfJt5AToTzg_@O6$ajbqcXA)+ z*jyq;;H2&3q?OJsf*wiOnxH@-?1+n#dM)Z~-{BfPVL3iPg@}ZY65`5$XNAKV&Z2z; zlG|}Xnko`ZS4ArhCR4rc7Q^vTAJ?~k$IHt7b}+wL8#)>j4)y$1e&#xz=Winmee@_jRZU?SOXuic*KOuWn?Y?wu-FmdEG!)n8V&3zC@tJ_!r+(YN< zvNI~$`FinIuCC3@$ND4O2=3%6^hm^N29%`4@UuvgfF64{80u{%^6AoKc1nazTwu~TRt1XWtATWka0#^LBqzJY+VgV-(KJ&FVHH^nx!qza z)cV#r7_f5{vAy5)ftJ4u$#Tc|cl({}?hKoX5URLu54l=-wfMM`Q^fh#0tZOs4;YTF zf8{f<@zpzTPm7NTKlHK^mk#5a0Q7qc~;wB2e{RUMuz3dm?;pN6x zxCj|wyc8Dw{WmxqGr75iVjsToLZ=0%>9^RQ{ zvMz`;7PIW9aQu%*jllnuxBDnNXhH%UdFzbtB|}WU<5>BKXR!bNx|lI*Aq!swQ>JiG z<*)CA_iQ?Mw#zBHm^GKbGa6I=hkX#==W9$xwAK;gfFQ%nKN^;0EjOCH9(O9f%ABg- z8R0~ovMl)9CJnRcW2emPl9U(GddY4|lO1v)U)#d?KQygvfq5sECMRrZaw=~4XA$jo zfpcD%TmR+~TXV_t24A*W?BVU*B^0X^xw(&51NCZ%SKlw4%jeYyuM#Om$8d~SlS`Na zu^Q)x^E|+IT<`5{_T5%I^-y*Be5MhU= zSl=PMncp)$U}=4=(EA3O@?0HYM45($u6n?WmwdC|ZK%=RLINk-_s8DJ7QyuT-+Ud3 zAY4d*IL8`Mv~@olj87y&GWxlJGu>K?tKQG8y2e#ccU4uk)3_@ZHb4XbtJcM!Kt+Jl z(W6?cQEK=cJr%AOgCdkk_Um;^g@S}=iO7}mdT}bcz7PGPgeuvAkpsoGkIF990-*Eq z1{Xp7HB6h&cc3n;GdDmq#J2-qh0px{u;pWueV~h1WEda#RzJLN0YZ6%mm@e6GzR#4 zi#!3KxvC>{+Sp*BT=bz65&gE~+KsS5_@K+Lhh@)Yq4^a@TqP97q}s8QHCam21_26wq@C{ zFflI-GjGA~I{&7K2<4MticJCO$Ku;lOof1Tt1Fk1xyts}2Hf-c7RRq^mt2UcgLk%A zLlyfdF#r)7+|I-H^O5FpV)>*m!B|=@M&??}kLAAPBO!FYV(ATE(|$PjWu`f0%w*fM zbBr%y%S0R1@as**S6x3v5d$+vZ(DwDtAnDyfd+>*?1GutTh-`xexp;dh%}AvuT|$X z`har_%gd2S*k?X$*cal}cj>@Z?-7UiLveD8u8ZHPVpsCeD>pdR^-BkMCA?X6zo zzz`%~%Q{m?v6~i#X4cKz0nrin__la`3DgsIc<7Q4i76tJ@F4oRwXJ^9zbC9JqiS3V z@pH)DcM>wIW-YSIg^D%$rsduDZPeW@dKL+a29X$02dDN}L_Q{^(EEs=D5T!T9YLWv z@HJnqlvB=7Evy0Vg5M+5{BT6pCRJmez-Nr?|4i-wDSR}hCebLw}ei}2xJz;@py1MjMzWg}k z37kCKi0luji6u#f02^Evz4xjNBz*40p3J?Av0U{+*(}!`sL(P}6EH@2YY5dVHKcjjGc z^!l5Aal+h}8R_vi$ui(BxyMQ~xcxL@zbo1Y5Np8l9|gXQ%>~I= zM9S|z;x>Lj<_8ikRn|))t={I4QDw!$J8?G{S3{WCkZ~=Z$T`!Zz>Ziqn)rRm&$b~6 zh#ql~NZz;sKbhCNB4$Ms>$jj1ReX#Mlsv~-PK75vWch>J#=D{{?Iz;6zh$dB$>j4+ zNL**>fAv=0I7eI&!#0HWb>f!Zs5sY`946%wbnQ-pH?w{G$?A8J_(<}R_cr3u2nTj! zBW0Be1RbZ3_HP4`eAneGIQU8D(ca4uy z`3`_k>vtuW6C`O{#bF@5VaY27jHIAFK$9fJ8FL8E$7oRWuK8teZVoBeX#vqjC*O%S zo?t-(qMa0vh z=tznJk<(5lIKZpAk5b7pvZwViUMdSw=l%R`W?Q5=WOHc$O}Sudjk+= zr8}3hST9l1QcwGET*?K($dasC>e9g$Vf_>bz-bfB{vQIJH+rPSl=O0fU?!^ z84jW^n}CPvTULfd5!?ZMhG7=B)lX@sDD8rnXhEf2pNxt=o8|5!i=@mU8h(M3zKCn3 z5HJ>JNHAr-mz^)}0Ssx}RlkY#uP`d*-KeoZmmGPMBI{Xii;rxqQQx?P?k)B?@)~{6 z5r^NQ&XT~rLw-vUCZT8Jw7sS+)Lk(8lT{kRE_>;JseXrT zBVq(K5X-dD;aMGa(d&#cI z5^|xD3^n==nEU})vkifP&}M~9Dwz9f?qQdFL~Poi&g}`|2gHIu-Gp81N2tSQU}o;+ zXhH5f?t>yMe*n;*zYFRZ4vUDIsnmfWQ|gS%uer`NVh8-SBBC5@6pE z0Gz-G#CU5f=A?47COzFokF2#igAZB4TP*4OK456;MH@_kQ1z@RNgyjWqfMpkPp0TW z1dgxxY~B>{*ez~K$m=x>F)CwlL%Cb;gi3Jkh^wVCD40>Y#3{+K@1b=}B+CdO8kU}h z96)fi2cc`G9EI&8rGY4O=ys~YcK}7Z;2ID{HLk5@okMcol(B?%Q(t3|*(l@$IiiTR z-YRYDZIn_wyo+U5iUYQt5xt^Khs zY16iF3yg~dP$!Jp3Eh6=*X4KAQv6U%I2I&@HiaTu0zgJSXJ-{b zhD8Kcz;#ENQ6rbQt33C5YtZ$U?990tH>0HdcVViUc%4Kg$XgG$Zi^Y`utaozx7dqb z8FD=Vk5NBcV}iwMA>`*_7g-K*_!>y^Dl32LqGs$0z|A$=#F z>{~{{EXp{o>URl;%AA(prb{~04vdZldrBN|x^~TG%DHda@t&Leu_%v&_VQYhL}kda zyeiRF>WuYHXW~aVa(6q8{&t)FfaZdy#P`vH*GhfHruykHko%4U78rgo6HR4tIS%M)(IG_5@wt;_vPzEVmj+ zO6XpL^e3cVDd8RmbZ)EPHX4%|8eUHko*j3)eR3YV{YXA+LJ`eY1m8BUZHF~+0$2IN zqW0<+Udrp;fEZK=#|P#{tXm=r5BV4$=wQg|t6623^L*z_ndjRu^kn9_UwRFriB19p zdCQR-%lnZ8RW}W`ZKe`3McvNi_@q%wk}>wMd*KnhPOw~$kj zU)PSX!d7I_6D50HG?Xzxc1a$ty`s7#K>!fIRzlt(sGDophR+%nbJ~P`kZWaEGS^hD zV2Hm)4VS;H?@BVfUE$TEGo)-otbXwE1i2&0&9;WWt&fu;B)41~qy{1xoZcPzL?{nM z;Gr@S%irgufVXKp5eImukO(2a2V#IdM=QM|y(Vfr>Iu<)%aQKNt6~7G-jdav1Zg<( z{b5)V6}*p(K@?qqSt4XA?;jzZ==UR^xwkevLc;X#%nc-^zVvj*sT>>ApytfNyS%ENTx>;R*6@y?aSJ5rkj#X|?u zu$}Y<%p}hD<2@7oZQ0;m3I8?WMZPI+i0kgX*h;}UqbHIc=M8h|0xPNvPUjg<393JFb1V>;hbR#A!jzAY=v?*_ydkT^9z z?m;A4K;IuY?aBfz`?%oSs>`9P1a>>DuJhA*4 z9gkaFr{2t-eWW^f!c^mLZL3#=Rn`Y*T5p)6*H&RsTc-ex z>Bj0@GIWC)yN}=oU#JccH+nN@;%=hOvsBqE+A7~Umjj_ecpdL@guFh;vC*jtq>ELJ z;cqXKN@~Cg6OnleRRA$JU*zT^@*~{ajg^QiQs!91ghc0+0BAjN?75R6&d`Z~?Ej8V zWPP%$+bSIHe8VM9wU3$lxmuMZm#^`c6Umsfis&yV(?Pl?zE?pjw=NNUeFIfbN6Eax zWcSmpr+4%%UwiR7sQ;me=?W*0gY**Qboy309Vhb&zpT@4Cl7$Dg8xod$3-V(Ws581 zK8DlarnnHv0@Q|R^rrkh_f%AGrO}RkmPX&|Mu)Ny12ont3s(6P1B9cn9oDG!piddXk2`^Gw1AotmEw4&3b^l->N7)W`gkT z@fe5?1h0!I*$`|T$y~O`z9d4Vt7}}Tb-7rMG4vCPtvQ+p))a3UF~3p>iq)x*cjX)% ztCcXs9nyN{K)NckGY7t(?mZtp=0OYV*O3J{jf3(af{SnE7XJsgo_{gy=WNsA|G&5C zx#FqTe{xsn7Ec{=wW>;GT2{zyhIMrh5w?d;o324{!j7e8q#+byd&x}ctvelyz zF7yqKl3VyF{Nn5TB3wq;7D{4UyeEdHvqMsV+npWHU_(Fh2%DzD+HKJZ0IT4b3SxdF ziGs>!uuosV)zV)P8g1Y;y?F+1(8q zOBGs$R^XaVogRsjDJwZg1A*0E7hkhA>bSI8%i(Nqan1H>nxulsww+T=SZEoPh_>8R zUiXT*rDb%lzu3BDm_(92-c43W?)xFX|ANp@`>+=%SZ23@QoDg}s}Irb0Do3tnpC)+ z;%{f)2{LwH*StgDa9_jkP;%f&DvP0*a4~xd#W|Zc9r@Xa zoK~i<)EaD{k_@ffiJmS#ObyZP(pyZeeLr`b-2RmQ-1gXkJ?v9f*X?ninC zH+$ZP^u%2j<&Pzaf&0K|>01)%XvU^O-Re~`0~gOo*%{c zd-r354KIqXVWjyU2dE8{*%yS`7X-Tp^b4u)7OM{G?}1)NJJ1MeEP=6^%$guFr@_Mbp?u@={mElM+DMEExVW_!h<=ak$CE;(jl43n zw`NZcWNXvgUZ-GMA6WECb{=LS4*D429lL>@19R-MHA5%-+<*AN~5=1II=Ini3xwjuD2dtuz zxr`pP0D6F@-F31Ss`R2!)kfxRxXf?!tDNv^u=1gasCK)+)lR;RvW&{i6+3*8;JAQ{ zM5rV3(J{MNNzpZRoXZUy%*O+`VeWXt1d(pRvJ7T8NP8rrc@V3WcSZH^{z@{(6K-WS zLS?Hs-N}>seHRVzTX^%WPK7@RU%xBqC&a+Qtg8i^s;=_U2?0Y60n1cP1eadH=AI0& z%&0aGo*LEr5}TfP1Zp!)us32!Ki$i)>NdQ0Wqtd5zKDHr=rsz3`UiHUY~J{;Ox?}s z^>N<#o~x=xDIY(Uf}#&a7g2|_rj<_R$w5|nhrzbIrlVk1Z|mUs(YbN+l5Umv7uW@TQ+=mZqd|9-oYhsPR22^aHXKT3a0DcT%91)V- z32Mh5C6N7kJ=G+c;;=;Na9yl29}w(}qcIOoj@WAg@xI_80xPPnC+4g72yFcY@&r!7 zy~#KJ319eSCaX$?`wcP3+yJ0)l$S%8TQV0|Z!<9iBY`oOmaqnEo8q5@u!h4;G0@uB zl%P4{iXpb5JGvCb^NI=;3h&nc+Iq|B>CA>fRm3qFPcVk{M;dhfzSK2$1BGXp6>rvy z+4UlC@IxNCFT@tAYenlMiU_&2tsCp9Pl-S zO~~Q3gjai@b6Q)Cnh0>rU!!P%Qnq;QV^LiDr(ay7bk)kzAm~f&7ACSMW0}ZgogJc@ z_v*QUTXwfl8JD15e)Moi18a#b3;m|%$>g#qmJbA*b@2~5Mtn?XR1!0?0BCKpV!AME zWV{P@Bz`#CzP#S{2X_Xe7*MZASe%o0+`!lO4L-bVt9G_)ooEZy5$gw|Z`a=#8Nl}Y zmPxXD3|sqMUVvc(HjVH3Ajg;B1VQtCfL;rBvgLP&0XFC!`wA3zQbJ+S+B9I&+mPB6 z%zN8o1JUgNd2|3%0@A!i`|jlL;^b=xV30GM5ENj!hrhdx!;dZud1C)6`^i1;1y*BQ zOAsk1?0$`*o(_+BnOSxc_r;yKY$2X{od5vqj3_Esa%Y|PSVDOshTP{LxSi%BEVW8Q z#yaO;c#MNhk?P@3Z$o4b8#!Y=wejoB_)d7Nu3VFI{u#Hfaur95{tQLj-5XKIj$6 z3AV)h6vTP0&wr!+1igs|jja3OcP2gR_eiR-%QtE*fys5Jgt`dxbmZ^X3Cqb3-vS5k zN`Mv)nuCLUdi|KX86&;DTL9t55@@B`1ELqb6|bd7w0rVi{sQ2zs{J?P> z2Jk~>^T)zX)UgTnHaWgTylQI#>8>3R$X*x62jtq?Lu#^HP>~1gDFR`l#Mk!{Ll}W_ zA4=T#80p8pM+#EOR{pwZ158YTPBe8>;S4S{k4FwS-f>W>HoKp!ZiMuxTqj5F?z$8C z?b~-4bsvn(sk?l5%+%{GBDqe0kPr!`ajJLTA8ZddpttmQCj^~m?}LK-$TWV z8|VmbhlTh(lmzceEVH(+?}`s%b}Lc34!7V-UT1Aq`6Jx*-w!eV$FYz+@^?#Uo)7YO z^_|kUz~u?&`2-moTEZW5)cO+%_eyhK z8bEN4;^PS%rVyS<A(}dE%I=iQ(Q##2asG%c3Q2Bfzp`)L73t-({0Ty%d}K<*&`!J_l`R*=zkKGMhEnk{5qj?cPFRIL$iM=Gp9)Br#Ra@I zx2EERIAel*j1bIj1%x?lyuN{>=~`X$rlZm|90Cyrns4=Paa=;gi{ba8BP^;B(yWy9 z%D+2ubU_s!pS5etDR03lV)rfno`Te_vE=q#19Q~pmEmYwM_raM4X`N>kHMyJ@bg}& zFW11_p6!TYvwX|6jS#8MnEfX`?Qq|wqn0e=1d3%{fyF&Mz*Bf1HjW_!c0n@A z5L>);nYKBaZNx6htHqN9LI}%XpNMq*x+qucP052~_r2%~<(R*fzpHZ0A0CC}vFcUg zEyj`0kXaLX%gJMEp9Ev>J_wa3E!+V0vKIlLje+Fn+rXwZYK1BXUD??kuNS@ZSx{mZs-)ZK3c4&19XSV3q0@6eSxFR$52Huuh_@o0mUaLN zpx$MQtUdyILWrC4tXH(YCec=D*wUw*Q;Jl+ft-!Pl}_{@ZGew#Pp9pq-@uK5mr;vf&i4thdHUPNR`n#>QF;^rRL+Q1W>n=0=iR5-L2 z`}{f@?RO$A&@msw2Cj z%}7w-i7@U+Tnsad(>+x@f~|hpah&Wrv<@?vF3ccoV4vDY`~B@y^pZg6Q^3niSPi}) z>II)RxsP~4@}cBDRPF(UwR=%0OoXIxHV2U{F_jVz=@M1}4z=zWIll(qBxD|I1o7@W z{V890ZsKvr#auhGCOOFK0Py{eyR!zBerHoW2}GQ*c`t(NvLtPxilPY$Dt_E3YPUZ& z;Grzh(T9zq527f|2Lni?o&BF3z#yoYKY$ARX(wXgC377V-;D+85w~~(E)v(l2PPEH zIsQeHK{mMfiVus!U7Qi1xJgPL`gAcy;?;o=}qoWlh$zH5m=H z>NezYbi)=Tr7v(#Ln}2*D*D0_i}G|`>=Z;gy7jK;_ik`**1toI>|q zP?Vr_dsxgVTG|g^9e{yBE@8Y5MetDPh}D6%Bo)jC&ZEWdR}8$ zOmttK2ON^K1hMJzA;ePny8x4@A4z{d1r-&zWLAls5z?`Fr_GH0s@+b_F= zyC2^9XSedCe;F6=-g^%)UqLT5>x%{`cDSEyCslT{n7o&BdcP5*P4BL&xM{=i+pSCo z%u(4vZ*^KMc~73PRDv(t?rW>GI0^=Dr-b|INDpqcn7b5qc2TOvZlTQN@Ljn)VZE}! zE8^WKaK@gKxr))Qdq5f|s9 zsB-qIKaIVr9(ysRU%@@GP3@i2atCyQM_W)YR*SgLOYUA$Q7dY>I1+PyclSnWf zm6f=;OUhZ=}aoQyiN|6f=R z$mfOqxxOBGab|rs5={uJieOh*S*3TCGKnht(O8)72h#}IrG6cSB*o$Db8#Ez&}tm* z?-cC93I1IAWGXmRlGaLyY@nOW6%Wp1vZty^E*Hgryo+8V*#3>C%&$J!3uP6{*#)J2 zBdaQfS9kR0j4HZs5=%VXDF;Tr7^mMHym2%TFGK$K zVUxO5yMVhDuOEbuvr?rGfkBt!j}v>Qunf%|Ih7COP^-6}?2>%4Fh=kx0ps7UEKixj zQ>Je}C7<=Ah68!lk!ahD?O!e#YfNW6V9CVb-#juK7Q$<-f4t2?O+olR8~ow<`4)lo zg|}D?{?y{vt$%Wse3jL|ewDB%c7O3g@u9dL$SB?n7#0hDIoX^nrf3mRF2Ah1&b_F4 z0VNBN5g){6mOhv>%N(o$2{P6XXbZ5pC$GO^#Co+6Pt2@)JY!1& z<+9sCyJ@0sJ;{%=>Y7p}ht|oP(MVQo1B~H?==dRM)sFz_(!>k5faWPC`q7-@LGCOz zjC5(4Q(|M3Zw%2eZr%Kg`)h2_jYDtUmP0~Sc<<`(9f6&xgG~wi@(ApvIJMHhpSzV0 z-QCr>D|h%wHpbDX*sMr;^h_MbeMKn)W#NC8e*#-FP$3y<(*>$q_>1W+$1qSl9`V70x-+zD+4Q~PE>`#!0uRrCx z4c|;$VAN3yfWf+RAMXF%xRIxdw zK4JDDJjWd?IwaCx@Cx{{h(k(=^UC-#I>Zx9V^ob@hD&={$I0O1kLtetuRUomUX8u9 z%WgOk8z^)S-=P&fybhRj;ziu%GzqEve%eBnKBEJFYYsyZ&gR&bnT5`-leBq>&SRpZ z1bmyA`1foO*8V?EF74IggZ~jrH~t;UrrO4 zwXMa9ykp=MrgpeR%?X? zW>_I4IL$^-!y$k*pmt7wg(FP%_{X8t5_L~FyuD8oqA^KP6d8ZJx=~|5hjA+6%P={_ z<|S>1NEtP=$D$jc+_KE%)&_aRFHl)C#~329hY%TP6n!B7tr)=198F{fv4QSugvMAR zAjSISz;c;>VCeG$!B)m8^gBD*Cb_*4U1*$zaIzZx%SWZ498=MQhQ$S3o&=i~# ztGAGb(0kh0reqpJdCd}}&dYrRZgB~&E-~IpDg<-o6x36iTckO5qCA~e0>kP?hJJI* z!nh~haA~_s6t}nrQw>R1o4#>_)Ws2WVr$VA!9j43bVK~*8w3Ft$tS6hRDF*pIcOg8 zV6q5@ZSVXJrrcEGl;H%Dook%30c5!f@fNLEpt*KRqKv1kEHtRI!^9=lU-B&y&h61F zZaRK4quhTLbnc}dmF?>!V?=|#vO|P!A44MZVu*QVrAAjw?bU<<^=ZoHhN^Xx%Bgtr zL1^=xi=D&3*PE?J%og809{62zA-kmPo1tG<1WFtW+imMSB>#R&TEv+*L1(OMzr5a1 zCiQzk(lZ$-^Su@Y7baVj8`8lR5Rm>%_3@0YU=hy)2>W^x!*p*$IJqSPdXvQ25Zy?Y zqZI92%Kmw=k=}6pn#kp4hB86g0%Ln~xVv}3f#AO9hr$~C5$Q=3xOT{W_GYbOYHlwaQR3HEkEm5Zf_-VBCSK%3Z zSw(Vls9|``0+%_60u(L5EU9cv95ah*R9>}R224uBxb&3kLo1=gG+;J zB|38cM4P2~wYEbfW^~9Z<`!HKWf$@=Hdtc=DJ;`qQ(zzzdP^kX|h zt;a5L=w6}#>ful&vyA-pCJ+z%l0uiQjl7Mt!a@sy{A>Y$aj)L=<<`47IP`z~YMu5O)sthfkRwC=mOUP3mIfuom`RkVr$R zL@jVCRgf>JJw19xZ=)}AGbj(ud>Dm|fkq}~acu4b^*23JN7L0OUDQf`9y`a6|4ikq zJJC#cqc`*6|6KT9>kp`U7O{1HXh>f-7(JWBg@U1tmr1-v@-b>5U4kE~LTX77rP2j#FZj0x@2=<1#eR;3rcI<>-iu3q#ip$(~`%y;iuPBI5oVPC$a z@}W9!us~IeSK~8@4wzQZ#;FP}wo2Jyyv$w268L)8k)ob_Atp)JRMaXIDjKoK@u6Ai z>op4>8W+W11dAV=_>xy>vRF=%liwIw`YAw5o zuGKCmayty7<*!|2&G2wQT3vH9br)#>7J88hvn$Co#QS!jBHv_bYp={Tn1I$^wFl|Z z@&`*(n4%3v*7qFMT1x77Aq|UKUM$c3yKqqWI`4Zn&D=1O5tao{zy8gO=%BFL_aa@$w#&lRPlE8WGlifL@CSUr8ILFrl(!p%&%7FpQd_ z7;p9VB~!&wx15P8%I5B`R7uLzrPRZ%Ik%rkBWQJ~#StS0u&%?GTg&ce-_ z4D7%veTlBtx!^j1dCV&`BfT`aNni|^NRLM|>;EE8@A>#$TM))FeFSf!gR z=kCmk^d~SKQ>eUeRHc@-xz_Q@U?64&7z)8C_!yydZd4{^FCM9fo^R^%#e4W}A0>Hg zRm=X{2Z{~&_=9*wXY_ql`%!|&{e@tj<`#_>w)l{Lsg&&)on5`q6ck7l*YH=+MU0~g zmm>;#AcoSq3niIJRk+3h4e>_@Ag$Eb(aRLM$Ld)$Dc9VQvj@t4HWFXwab7cRqkZU1 z%5cntMSbaV7-iVjn(^4z*skKOQ-FNonMgp^&dlTYSD!5uLh#!O3-(iWaGN~bUZ#Ud z^AOtuJtLT05uc-d26BJ+BzMRcZ&?7Im9JrkIomKfTb{85WWVZz`T^J|*Cf#NiWu(n z@{J3@XrK4K=+oUdSw}A6LhTz#U%hzi6?G`lk)Ux#V!zezBi=nO?Co2}uXub{FEUTq z+pwOy5ApzRZSo!R{dzSOxqxlRLpBLlnd7a(e-QBRjqVpT)Y zf9=|C4K^W{Hmb{%aUDZi_g-6PBWK@;>aou4F1)?f+~L7B&Eib4fgpNxH@(E4?1_x7 zEogx9$7VHB5fmMrd#z1ry(}c`QM)*Q`vN|=3MEYLL=W#xoXaS@L%}ZD>k2qB%Guc9 zsIe4sr=r@YOOX7>|rbtct9W&e|q0DI2FLuiv@Ax5x!FMpknAj)k?b zK1R_EUIwIs{y4Er9_%t1DA$l4egaQ1X%QfF=`a1{IU_ty{fJ%kZbP#W*Y2#svwYnG z9p4Y^gi-ADcO6Cmt zLTD8li-#+E0q;|19yVb%tDU_@Z9qnnmz@_gw{&0$kk~;+g>(%&_b@>!L&W2TQy5M= z8NT=F1;$bi(&zWNJ4p&1#wr4@j2nnj>~n&H>7V!`zMt5K2OYR}-4txH{sL^01?i|A z3ww8^&`SvIKhqF_uPLdP4@iW~?x=mIHvp(u_llpWWefiCFYwFEm2_B~F3?}z#nk{R z3=F-F6e|${k=tHYX$62t^Y*e-+X=n1$l)52kRB@Lkv0P_0OBmmF=$H0_G)Zg9Qh`g z=EH9d#TweQi(A?l{sK0=E5eCPnMmAFgg(cBm+%K2P}H)5T2mVL;6m5hj}-555+0m> zIw61%?8(_j`F_KPS_}KKE^Z6MPNlD_4)u)UrwQ6n3ettaI(mtir%EsIW~7t=&qQ7a zBK>N?p2Egar6H3D9G3{zTcaf_|FZBn$27$rO)r zq{IVKG7ZdBM4dW_`Dq~fS4@IoZdXaOcT%x^Z#uw2GXP(5Ue+R-=!lKhw;#fxbk!9_ zo!*$)&nR&$&ImJE8iGrt@3VHql7?Uq^f5bNjJU|pKA;YG@CT$y0JPsD>;A>U_f{&) zgiK4@;D<3bBU%@^j?F-RO#wQawTgrUN=|_Drei znrwm*shkC zyc8#>j5@jLAWSx)Dm^PsSsRw5)nC1aye@25&lG_8^JZwVy|XYo;utxGP1n~J#|dwb zAG=$?d)`Sru(y%;)!Sc#NO3O*D|PRLi0qAB^|irdrE~^UDe;avWk3c>O%fxy!dxNi z7_FAQys8#8j@45lKj{f_8$@i#f{59Z=CTc5FJu3X73QW z5XESMA$%Ajx~6x9F}y%w7v$QcQC^G4qX(yGsKUsmppUnF*JC?puini^sSU(tla^NX zvv(02m|Q=Fu{y5&*85VK9KM5HDPz=N_Wv&X%2c{|+xt@a9>L6}8rfaXRRpp9|xH)U%Z zaxo|927lXm?%uJ0>gh-7rGh!xo=w$Fgo@N{YdC?vbvG7EOrc%|;j$L%ls8j_EOJSl zfzVV4+p$q0`m-AzFM-*{jm7cg#LCOz|7~8ey9orQzIz3i>1+6$hKmCk3wVq5Qw#7t zeA`+!^``pH-ud>i#}j>*7ZC(+WiT?9+oG6y{TBZIEZkb0v3BG@K^SZ@vz&wBZW+yq{PvJL}~Njcjop~HKL zb7?Jg8Bl}J%IPqlly**V6vtrv1|Q@ITZA{H%T&e2=*=ay5bR%!Xf*P7k;|^BMmv0# zFL{=>_SAG_ap(eblDoeq|5}&$lDl6T_lTm!<9ED?S7fjXo0#i8;wD8zQKo7IIx4bm zft-q*i3fW_FwO$opEht-_8Ak?9JBjzjGLvjy`-%Tm{|ye@B{#sw2@1w4&%5WxE21U z24fI^faH}DimWQJy>WK>*4Yc3w#1)RbT*6hGYJZdQ-TGfl#VfEj7Et9&`R{1iYNr; z?%7tL|GKa-WqSGmVp)UL93yvK)7Xo%E#81*5moxj*xlJX1)t-`@C}#dMhZ(*XVU+7 z;}c7WUS3WTiyLIVp+2o+x4@TywKR(h2h&n>hrXk{Pe1(@qfGMvB&TXeknh0xEMnJN zq0_tU{4eopJBYvURGGgPKnML%WFRVv|7+3iCFFg8|>x)&%Z!bMXaO zP0FH5;VACC|II4;7XvXjRWUnVj>q2CV^SrBcrp4@;L^g-D}jlfyQ-R8oM)KU1OINq zNU)S=Q)(IdkVz_lk$H%CUQ<=F8R&CBVFa~KeY9| zKtvllti{L&cANg@ABT~!6QDM(6eA#CmuYp&xFI*WI7eDD(JVR3qRCdfR#)%Qp&pymYDQ2-_wv^QziYjSfr2gH$*U?=up0QlVg7pA&-oIMM ziaOw3S6s&+hXkRE+O8bWCuwh;Y-K`d`4K#K!L~fB5QZ3g4~rSba|RsXC-J_$9qv4q zjZcx8?g0t<9#+9D=uW+39rQm05kPXUHGY8hfUnO!_ux5aCu9+szzYB|aawW5PWy}T~`KiB`cpFw%!-|XzszwPYu zf7RKVn$ioOL3c3yFnA2qLumpH9_z{Cy$%nY48c}&gIHN3L;muO5ENO1;oiuFOn)dT z=y%`MuOTd%edH5{!gv$4t>0WwS|NI&o<#|&-{I<_2f!Ps9N>pa0K1OmK==RI;0~2G zNPimzzV>*Xcvsv#Pd{&sguGpCTnzztZlk@OgFS(v79Rti)jv3?A>vCW?(_effhfR> z;XfEUyz-f3+A#}6UqtV>U8_1ans`C8y3@w5&Fa1<_Cx3HcB>+x$Ci!VIj~&P4)JEZ z+3^3^&4SJ4Z2^B3)nTOhM+{H44#6gOBv=|oH^*VM*f2%nJ7n8atepdT+=uByp3WgWo#FxhyeHF_xhS(MRp5VdHtP$ z*+h(6dy(N2gcYNFf|bWSmW&^d5w(Vyq8Rd?g4c+=7D8aK{m)3HJMa{$$ZSc#LTeR- zsO}4!%|S#=T>9?f+tk_Wl5u;5kD@8js?jhE_KnXwbCQ0c=%fagGFMoH_jI$*h+zzj zCXpybhwuTWfYx>`=E=IDfhuXd?aiRhx{M7GXO3i8}>@ZVi%ZjEgj13jtV-Pj`B5r(`5bRL4&k`VHaWO)eA zk!kDkmQNHdOWt2u00LHXhVsU9|6;kzrnCz5=Gpj6w` z&bC^(&}A%2%C4RJkm^`l#ji8{l2PZz53GE|u6>8ZkQ=-BKqs@^iyQUYM+n$tFmFH@ zllGZ*z;dvP%!^YUHsb;EF|6|Lh+)eNPUvL8$kJ%tIyjAW$v^Yp3#yzKahmxlM~Xw3 zie8f-yw$CKgM@;4>8p$5*ZPpT=+RJ&k&RPF^` z8#3oJN7CQ!@+*8seNjGLcoXv(i)FBX4fDUfqR%{#>#d2vEa}oI^>`N_ttiUUKMe%_ z9zxN&<%#-{UK(>--9iEK>E|rOLfz46>k3M1&p&*w}?G;KC^JD_#sPD=`A*51GDxF z&$+v@qt!)^FR)a|@+NFhp*Er^WCPR2@9VQ)bWkGGexf?1K5Qe6;uY=vV~l$N3t_PF zleK03AyT7z?m{z6|FuNH!%9afezsXH;29e3-r=gdwTMm?!mb-Prg}q4|1yCx^zMiF zNK)J*JX3`QcH>6!Yp-j7M>j(|EM8D=M$>vV#O4QMYyJu2A24lyC1G>GyBaw<2H_Ik zFmh|}Jp7eziqe*M`1nV0?z#`Zjc`V&z@adJqu5M;$rg>FzL~}J-&tA=C~!gMh5HfN z`6-c8>+C~b5VM#7T$vc0>f@$S8E%JvVWdlh4z?Zb%ht8=*|MOkwnKs^GDEu*GT7h& z4_`nl_LIx^BM2Xl@G7<+;SQ;r-)wfTqLpKh@UgY!#;N%r+B$r7Lgo#_65j_V!}FM! zrnw;P9y5t?mXbd`oeIzk?+OA4(`jN;#3<@5u)w!iWFMX+*%LQi18qi#_Qt`|_%^OMCOK0?jtQqm{{&{7aaon{8*s31jqd_$> zvBCr<-xKh_Lufo!K5w?QjQn6fJk5S-Y^b{U`+w8ec|56?!8+bsk*I@>ko$~V5a^i2 z2sn-T$PQ1bYd!Vp=;ozaYS#fSvB7#@H2UZ(*4EkUw$7rh_ldTadiCIK8LaSgt7t)~ zW6M(jsqc-|#_~gu$(qM0hTj?%rz14hzQ%Ah^bf6%BjPF-;-K>qA$rOo5IL2acJ*R1 z9aBu)7UG3vJa>H$MS|{O5`FGcJA0zcx91^_x(uVw9YE)Tqs+HcUQXbnr7 z->qj7+UacI7t7~1K%K;XG)*#9Jz~fU@)#NmR=oo5pSwevrBM&z*Lul?a=5PhVyUiq z=|+)z&=)hlZm{I+fLMunM?qcf|=v6C5aW#;_ zJBgOf?ax@aWq?`=NX^McyNcVCdkThuyL|t_x=i$1rFFpVpdR4Rxdjb>u}Wf$mAQO!dSLf zWxdJ2!vV?<;0Ok$$(O9yD{SWokoz-TGN;}vbDN1P-N^^6iP8)rmle1>-aX(ep*-MG zZEbD21#du+80rfmLknHXUR5+Yo71OIu{LN+0A}Vw_#sp_2lvDrLXJSR8hqKg17D!c z>aDz!C$~-J_JKOJ>l6tU%zfQDq{VS`aq=S;0N*@L*J?N(e6@{(0Ql4~CHbo8_!#TE zAHTW41OlMGlBy4#^bv7kMBwXFt{2olJlR?mTfmz$#^}d9qK4E6WK1WN{vD%mTxbE* zLgRsT!eHzq-#}#bnso9;Q2q0an_!@~id^epdb1j9nyHPW24XKBmqYZAd;m{|e@Y z`anesKWX)kihUP_IWj_5V-0j=WXo(olm==_1#mE!665i(mbA-Jfn;II%`En-9yv>x zxl5af>Q=}GNy2VfG+ZoO?GcuRW@)2B-Pyb*`I509>8tnox8PCo!fg3bbOf;+ETp<5 zDA+SKWsdbEN#+Iy9LRGNf)NW575{3WRYf@)1gibfO2vt(bOZRM_YnH2HflJu;~}H8 zL^C=Cp`c`S$-={$Grhi+s@ggy)7L73SrU*!2m0=kqk#u0kh>XL(p%GtOzW}-^+qe3 zN}w&Qih2aQ9vCR$Kn`HQ4zT{zkr2H|E&0k##X<^=9ahkhd+m35MOC4GGoUNLttJjR zm_stGvPpZ_9;=)F$IGmqCk}R{gA?19{tyhRz%&$Q7PDDZUI6|r-wf~~IMb}W#RE62 zYuAXX=m(KO7Bt*jSXpD(ti%`NjsE+t!AUJ& zVHMcuKJzAat`>R1jXCHBFF#v-qIG zBf?8D%rjGGsWNXRqdzlyEX6C$n0u_Fe0EmCIQ0x8Sv$zpryS(DV7Pw#^!yk0VV9t& zn*;rF`Ha<61ueaJi^5mI%3F*3=AP*W`j4J0r?c9>iBnqA3sv_&o+^JpEDPm>O)VU& z!5bsg_oGxz7rwSOs_-d4WdT0_NT_$Wt!14&XVq`SQc%u5d@!P`t&7r@BxujlzZ_IA zs$Bm++hCz}udaWVii$6y@ymAHZk8yQCkuPcV)bx&YX69dZ?Su}iKvsx$zbutRobw) zr0H8yDYt@})k#QCEck-0&En^E88sMGmlPVt5I7TQfl}_T3*=N?0itccrN9`A%}e54 z8&zJi%;{BI^!7FqyX3Fx~w1* zaSL5NZ$hBSmH`}ep}}y$&w|0cR|r1690x3AXtB}bM0`IMQGUwizp+Z z`=KF6zx8%3k*Bg@JN{Pc+f?vUeS2yf`OCmQ<#&dw?(+)t&<2KquZbx36W+YVK)LSH z@{pA*xuM}2_60ByJ5nU*2H?bXFLI=I`^!Ln3bgM|w%ZJ`p@PI|UBbsU*oa@E*6N_GHmU!Y+A7`xD*LClinpqJ_&?ZIsCEjqZ~VMaDpGmHFQiDcDLj=n z;ZSv5R~->?Xyle`g70Ere-9B4Xz8uYd$(`_7lG(IO!l;dT38UUg^WX4i@*mqFsA47 z^FJ9|Sghd-uT&9Szxv(Xhgia}G&A$!U-vZ((;gsO9g3-(;~ICFFm^+H4j9PVn*mgJ zq?qp0>|u3jIDJ^T7gMz9_C8&|LxnT}R@n6dl8TJ=sQC6hs*O5ATVsBy3 zfKkcBH*bL?)JLE`2XNbr%8lL}N6rG|O{$D=aj6IF(|JZ1-b@NCgF!L{fr5T$Qm*PT zo%s^NJJe^+?bVo3Eyr99(lnZ4(;WiTSFy=yjhneuyAsi+CsL?GyP6z5nH|6}f+kWm zCTX;H<_Zt^OLeagSU8VD*P~KTc$;mCZ?mc}9Kon$_`~&UYU_d=vidd8Ur;g%o-n0+ znIS_pk}z)Y^0B;Ln!|pQ{Yt1(taYWFdKSLgtdCbTS#MDB zFei_jHqTp-gwGhUIEX?|d;e@c3HumIW|4@4n1Ksvh3Sf%7vRt3EwV9Ag0!%_SwSmn z6K)FdWeYo@dd@z|?S@hx|2U%OZiPxZ7sPtn6;U*O1aD020BEud{ja$|G_|wCJr+*_ z;I8=izV5W*eGTYAhzvKXQ#;o7dAsr+4Vrq&7}VvPCWQojw)ZYfn%;ylkl8M-$>1&` zZuiC)a{40Yva}a^jc6X!PkY~|2UGO{&_r!JEW^NI7JW9?eCh&7(w<05`Ds}4h{T-l zBu=hhKix$6&=QS@8<`~O0kHQe&~ZXS?0>Hjq5fKs!)qxF%8V<5n`^MS{;eJC7_#yN z?@e}?=Jp$j1HrN{Dj|iidOE`)+K(|B(o;lU$E0&RtYWM)Ye&x8Aj2x3)b|;oa0DM3 zLZYlbNr{0b((#72)mqs6h|6@M%e2Ao;ZBtK?oJ%y&7JwwMf@;0qVf%avB=_%AyWhY z;u``hL{kj(>ah`9V`AshkTTt|QIP&_O(E1dvjLA68Wdc8swn9Z8rCP8=9^UI@e~fgh+-#m?5y zrL}tYq+_4k6gbd}QlqLydP{o{4vp`zRKB#Zfj{rz?nABqnbHESlCU|tUl+Ll?cqVe ze*>hWEFY~_g}K9Y_Ii&MK^{%3V^waxiz)N?x9_5=Doc&?UhGi}TPz4p0)sR#2xTe! z&h_MlU>rY_?{$Gs6Mh`e@wR2Y?RrPd!b1-i|g#(jp?sR zwIl)GvI+?CFbZ8%KSDf;adg>{emzdg=VaEGJ`+I}!C?H+bQgP3TC9(-s`es!;#s?@ z`c{wXI)?UWVhkEx9*2oNcBD&Jw$|U#!+EYI6Pcn@dprS4nPen%VPZ+4NHOOrY9wm{ zJXzXoRpy33 z4XU)QBf$*CE(z5nQ-C<@*KE%LCfJ!^DMER5eJ%vba7CvG*ly4c)NJJi0Lt~LI*jqH@e^rA%F2YBE&-w=lr8dS`i;$}FvquT1 zea%67=)8c@fN+s41b_A~$V9`X=;qLt^4!7lLWYDTfClZ&M#Y1jg?m!JiA7C#O?slj zaO27$N`5XW(%!-YXi=Dl+PjDN#Y%t#_&b5Y=$nIw=LjmI&Jm!}iNsrjj!i@9)u3N? z(q+Mlj%V7!&uyjOC9ikbFoMgkt5ejNph=Ew%repkZ)|oAulUl~X>k=%?-HzOJ)L)P zjX(_hrwM9B*VL1SXzaeJQIWW#Ot;; z{JfQ(3A_%U@MC3!xT1aw{KvzViafn|ckE?j2^`lfuV(tW457GBUWSLS8u9*GC1T=x zFiOsGAL+!d#+R@Y*Yd8NHLm+@?)MLUYx*Vo_TNmq83(-S^UK>`O+1fV2{C0mO=hAR z8_)Dv$8w+8TU-2j3TJ`(9@T!Ev9Ye5U?eeH@r@EhvE0yozjk95qoJFP^-C~#mNUw) zag<~5t9Rnjn(=l}@24d<@0r{Yc5F1>)qbIb%?f3aJ&=QUx{wKA89B0@_+}G2F(oLc5mr3_3tq^T2+rgYM^vLn1kPB?27_}6Bn*_zH(SZ~q-iuLZt<91D* zfr=`_FNYuM1_gZ8);}3_gWw$VbrE}>SGq@?Twt}0?)r3uNIs;)&e{k7@OocCq{c3i zLa2gD*7gOE$IlH0>v)bPl?R)E<=|kCIQP;JvO1fTjc$`m_+41#g7$&p zXm00ED(;Q#S*Veg74)ReTl&rmBG2$xK{sT1V(DZuQ6~v_w)9}vy$nyzFe2|%oL&C3 zQc;aZ9lCby7$KjRMSmP~==168v}Uv!0kL z(ju?a2xbI4>;rZGP-45Yneap<%xXbj_D+0#31)3QK|fZciZ!q$;SsJ>lGoP-57&rp z-7~TOEx`+zBi*~;f(dxj#^uBpwOIvjv%X{VA;8Ac^SdnRvL3&GEHKJms@qx)4 zASxy0DzOSpV+q}b*&zfKZtj-$Ts~TBJI}lG<)}1;XZoSDQJRrd5C&0hj%?V}UU8P< zoqAF%^@i28s~>G%L#RJE62ZUTJ&V9390_QK5GRfhKF%jX7nQjodk*l`$`6Y5th?V31Ig>L9?_p`GP3XAUZyyB55R9m<`GSMtR7K>sdH z1q@6kP%%rliS*}v6p8cagkp|Tc0^AC{`cr8DHPkGC-;oJ6re`20QmxN3t&%L*gU4b zIooE&1Xg)lugM36RXKPo$8&btfE;grmlhtE92z(=n6E3rEoan^xxG~U~yEUCZDFXE&9BO)x!+Wq*p z-qV{$U8g8z0iM<33u&2iEkf_`wuWhr1e>H<0e?oHh&#Z{lO*g!Jg-F$PxA1nTX?o{d5TtCKNGPiJ|k z@2v-RYUqu9Y>}C&uRyxJvP&ES~LEW41V9#rH=H_tGnhE{Fl z5k!~CgAKF2U>8J1kZ!8W=?5{#Lt>k~QPCUtfuii(L6GyA`>fdF9jHQaH`dmRD{**7 zoDSUie#W=jO1w+Gf(xZ?)>{eE^{XiHIaCQ^r%`7(!qHPhkULS_c!k&d;*z)%XTQr& zsjci&Rd<7<+UpBzLCrRg2x=$!bpFWBisgH!(SN?^To8t`zwiXoPvzfZbDDXC&H@Y! zu~{tu_@f{b;R-b^FwUP)cl~~xfP!A}i*K0xbzOv2mjM(a(xwl95UsE~tsls&92J6N z3LUU*ttC`9*o2=vKm;)|DVGdR90$#-_`wUU16K|Vhrf$7{*L9k#AlZH_W6s7h%4c5 z>>mXr$B7vnceF*A0gb5{nmXJICvcD{O0y?ow@gWx*#p4V*f22(`_&6ml7iaCC41qQ zZm2hn!ZUr1x;UGmrDyVvrWTpkJv325`4FSpU9IE#bH^++VMYb|Hb~o)?E*>i37ghb zP8||In9r?neGtjj2^ev(VnV;Fbpa=ygDEFOd4W@TG*$fg+Y}S?+oZ6}w*rXxmLW1z zBte>=j6kHQDZ<0fE8`D@g{9qHhE`dIBZ;32kKve1$$Qt{9_v0Su7bM~%^( z87bK$0++)K@}YPn&DS53i)*OWc#1W5-dXazu~Zax-hMr=8J^eFKooP{v>{gT)SflW z=K&K~c&(i?J4er|;!N?JDwzy_KQUZcj-!Ug;3r+ZA?x^t=pa1TMZ(3{102?>py+Lp zgDJeGVBH2;?)vh9rF8<--}*-nGGH1{4m zwkwUHIg`pf%{Y5?i}(Sqa8E1iUH{X+i_oZB46Us_*^`A{&oO9k-~}Z?8Z6$^ zeVo8g#dt6*ZdAf(n^8Z)DSJWX`Q)wFbF{voRMgZqJ6nAg3?6_`gKnx9gHPJvJnK)5 zi+!5K)$Udl zu`MFFW{SP{E6J{%>;n%t!ZvT6k|*>I2ntv246<|=jW)G91*x$6UNASe=cX$K`lmha zah9S>tF@aU$;N{-D@bn*4)}gy^M_#xsE9F%inY&;Uvhk_{t2hd%nt?g!{zD+okd*R zgdqoJZ<()ESz$=7$pBO3_oCxt31i5wR9N-M$&E>u69wo2QOlJN(Y#OFCG?Yrd!sc&GJA$ zp{^_2wV#)VEm`J9Axlk*2vc5ryVfu1Iy*j6(3e7i%apz;Z^1xpOvA{Ao|y}${2J2^ z`p>!^=C4YxGE%BA)gCz#gVCuMJ_jwg#tiMHm(lR*YdDvA&2TV>TrQc5idren)sgc; z9#MUqZZ+Nej#Xd>rWn>hAE_{et!CV{HuV^Vc;*RULCvlWqMR@ME=h!!wfz4JyyAXV z!c;4Fi=cL+%HBvVnN`msUn^`Xn#x1IZl~?!7AGkY*Z6QFq`vE8)ZlcA$&2iHk%_u> z5!zdg880&DMXJe*oOzMO&5Inxb?UJie)ulrQTCE_11ny7%}YNcmkc;Zw?au>m;Z{Z ziV)n6C+>OTYvRP=(L`GHzdk$(^BQZ6&6$IK-(WX*1;p00`W6Q*k_SEGAk(U6Ac)#K z=IhL1ScR3jVFQ;+9&?XlOasW|YOj*V)Iwe|*Luas6~B{{jk9VEQlxqrfTHqyH2Q%K zbFIQz)@Gb;)@Pn>7?#uJ*tAh%f;KE|LFp%PP4Y&kf)l5U-4u9D2Ll$=5n{rCk1=>8 zlwW?VN#L*ek~#()BFz>2@))*@dU)awT1f_22QA#!pc^$rmm>4E@N4aRT;#7?wdqfQ_(MGbZbNep9$VegyFs|buyd2khWbu3sZIo} z6voL2iG8lq@jIv#iLNi~Hau2?+Ms3lKj8+t0_bMwS$+6)f0 z#M|;kKP?JH^&`gDmHltxN-A(gh)1=faMD{P%jG!>b6Y}hg>1}Y>z<@f)cZLT|8~Lb z&rS?zkDf**BHoy{=0@{nvxxcvF&W+01*Ee(rl*9-4#R+hM0daY5{~0No0%h+aN*MJ zVF4-+8P0mHTcNiASOiqAy)`K#7C_TA&v`+D^>>o)4UD?YjP^2F0UB8W!n@hPeEHq{ z;aqE_Q5o|Yp=1g(t#HB#b-88PxY3Z#ZDeD1@|(!23T!s@wBoYf!TSjDLv)B%$SuP1 z7%Gh`H3FifnBJ`a-YPH&7~~edfG}TdRqXk^he!>le^|$juE2ag{jC+|Eif-7;GtiO zs@1JIsH86T`6+yc@0D|-drRa=il5mGTyZ;Fq2abQ7MqUDdlQ>`Jm{0+&)(BZ#*8Av zFv-l+Y~jV8|L(QiJhmP!>eDkFetE+MADSFAI1A-2_E|O#mJYd`H=Zg$-TA98GLbs{KI)+e{-C(ZZ|?jE69AhZS6h z@205v=wYM<1NK(T&XsZOQp3)hwqS0_l30625(*MlujM^r+)Kf0bSVVq%ciHTx?y8_Ei>lDh|d%y-D4K%ZvPezlfr~KBAEmCU~-h3OhSv|tZ?TJxL zi)o_~8tz?62V5MN)LAX!{OVXCo+>;_#R%t7XQqaJo%^yziDC$$fRZBL6?sSKL7a5y`bX>3*Y~Df`oB3Xcg*J#O zt=}ZtDmj_@=KLeBIhLxn_Jnfdh)1!%Hldojuo^McD2f!Wk9(HeN5k4e*I0$8Hk4aXY=OY1he;R zqQMBC&h*UO2}41@_BpG7eopsTIe3Q_mjpGmsKq&y6g$xb{)o=7=uE zCEAADwkrdKJIwt-6)_ z61?XH*L_A2%zYw`N+so%SUuYGlG4N+Hmod8{J3@E;x$yqa+x&=PCQCzwOb|%U@X-e zEve-&3FK_|uOnuL?{Z6TWAcJ{l-3Ka)4eMRl;K`{)_0AW5Osu842|Itcd=0b(X_S) zJ4!`Zt>V^>E{n+im*u`+GQ^NQ#>KmUI+kp=De2k=b|uXH)0w9X6R$sR#`4ys7FP1F zA8(|P75Aa23)g65FHuakhqVk;3L&$rJ?X~*w`xzCzrI#*$`l4^`yiy1>TO@O<3I#} z$-fB)n_d#&4?J}LuuBHvXOiP}v(6l)#Cw2acM0G*OU3b9edc2k2Bm!ia`cTu0+-Ip zef(Bm__2|>ErKs~0$aX0J;(T4%bS~{i1O#*Y)x1dTN6(WO}3GF`~Q> zX)2w<{cUVpO%Cm#9SXgZ(%D;`pT0}nwj9RM#g94MM@pvbox@#B4>mA==0Me+@b$1L zNeZ=aG`dDOMKEtW@z0*M`$i?`K9~>&PAFB%-;wNxCnvb@Am_pXZW)cvuA!?RR8T}* z?n#;AB!=1Ac_=b`X7m^L%Id$}PQw)YM5RD8TI@&vn zi{w55Jt0NdPbUx&lFdq6un|k&5iQeC_b^VOu(H@lDi(Z?tqbh^O!0bk(}Q5YAud7i zMS~+K>rR3PsFD<4`sQ>KKA>JR658_aHL_8r<4*nKGNmcF)KHJ2hpCO#zjH!xNbd)TBZd%U|5b?1fc~N5AwV)R)9`+z9s-DR&ocS+oYc<1D@!uWa`H zyDY^7-=0v!brP?PaM9sI#KER9)#D#LbUILuNW~?uqQ!9faC1i`%I2l$jX)y>(}X3~paMfORml;3!`pC&EQR!mU!nw3nGU&M^x3)tm#=EoGq8+)N* zR<9$L0=97heW?3-M)4J%!pBqi)5qvY?@fAVy9(EJSJMV|KpiOr>rWtFXw48UdLBz0 zT}y`qpB{6-tAXR~6(p^$j;IDM`Pg2T6bhhWoP1U4@vziUBx){ed*uL>Rqn@7QWa3p zAPkK?9#t!_s;RBcpY-}ohjhB{S>HbFH|?d&2C$nk*kBz_CG7#pW2w!{ka&^=52 z#8UxV3bsNw2YQYIM6#&1;T~(!Jq5|)HFh{OqrY@Dy=h@(XPn#-8*Y9ZPY<@}B5X-z zfIQ%QFAJAicrtu1Pw}xR!S~PNYg9+KM}a)S6@t7_Z$MuBl@XoC*0bq_sQnVG8iY&a3lt1nCX}^eL4~aFSz_54a4O)(uk3-5GU)WSrH)@!6?7yrcK#zi zTC_2Jv`qz%pO;o|Xn@?k&j^uF$v(YC!FNsIA+3S$QUG@qSMjjcL`@oz+ZHs-UF=f} zVa7In#aNZbdChpdM`X3(kytajEkwfJ^8!RDtrO^T;0CR1E>b&I3sfY-<|0zw+I?I- zwHKA+0JQw0HfT(h6fK|<3eTo(^YsK7Ja7K=qdhdPTNfUbJ+WCPWI)-@V+;!fHBGs8 zx5;xkk$xQ8)gFk`9#NulD zx-at}@R7CaxHv@5DF(NS7Zmh<&y|o|_Z~%Nm`$+_rFGkX)$!#ftYD*VzU2tG4DH`M zUP)~(C#+lWu;U9`x%%Ew$6za*{pE=bfy|s;f02zALjnUR)NIaTg=^qGHxW1|88Cy;%8y0-|crhAcf%B%t z&ZZN)VDGV}Pwg_TG@XUei44;t(7#qQH;Wg}bWoLg+ejFh_Gy(sU((oMZ8Vu_(~x=F z9Jqo7*D{|C6SIEhrlyQDEuMZ4!BIhrzo%nhskSwm*`KI>j5m11)N(|j5L%ilp>DjT zv%)^xER82~>D3aOy7um{fljR1p zLjpJ1Jl3FFxtp?#?J=spm7ODXvcZBU@GA?zG9SPI`sz{uwyPb;`T19gPqlDPaF$w! z?_2fbto*IW;^6O8nU%O_a!c%+EE>-ex{}xSy+g{4>Pxsp{jzBUkKE5`r?fwFrKtD7 znB;mP<;pJ`7EZ4r=hHdsZMQzL)2mqLTD{4{PKY#=eDqj#MO#xE+*>)-s8G3KjgMx6 zT*xk#DNxWVq>U29cJGEAR~p)X9-RV~DCJRmZbOCPYEW+IwaXbCYZgpvv9iQgR8oe3 z(#@h>X~e~Q^eWwvM4*y@h4_?lSV}LZ?fmN2E`IB zFJ2>yUl~S(h(}?GjD4OXu-b?bN9qdlo)$>dq_BP&_!Rz@x!ABn(zQR0oRP2-xcM0W zr8PerVpzS&iSr&=EMws;^ALVN(E`_KX<+`rr98mVCkPC-xnLWx;07Md%w_xmm8MlXAfjTgX$vLZO?tB;2SH>D zn#x`rK65HKGWg-3VlNh~yXRNbf?rIW_+VlKb(muJNQ|7!Ks)?=Mc81ZcXWDabTro(b-f9>7sdwRk6M6W zw4CM%;e`sEE)g$r5B7-MO^54+gmj3F9EaEB%bcexdmMSB%Gtj8GRF<`=+k?&M6#cQ zw`51_+aBe%6UHG6-Nao}EijRZ^x6XB;CwFz;NhwzmRy*o3?3aF<2Z$B2Zrvl@VNC- zEdJ!szU8`X)Z|ZX6W+>dokxi#(lN-qGlP~^H-kCc;l-jcHA2X;Z%GURC4qYN#;+&i z+^%B0m^(%9Vt7`e);<3<=&O|9|Et8dYSVVxgCMqO+Tw#xbYroz2pn^?&+lUQEBB zS*8hb#EL_T``uB+z=S~`8XO_`|DuDnT7sQCTA+t6hb;=mJDXfQ?4h&UB@$+CA}o_m z9+^~P&}4w?X$56<2!vUS!yQiB$M_ZImy-PWA`5+qW&tl-$=7UXJ^##Jwj{cK^H%db}?9Tl)kR)w!= zqRf#yRGQc0pNU;EGLpUy6V|MZp;eLYaINg#z7cN%djYrwH2Q)SblJTfCQSTcJ?{K? z6WbK$pnyp|&DmUxhzc0eecvRGlU=L)MfQd)c*gI8`4> zImdQ!oH(-5Gl9x_S>>{Z2e=%Ki74fFe;cnapz~q^+t`uHXo7^sq-Q&*7(xuhjm?8f zfadOhhtpe)A?i`0qSRi2r*+R9yKn+9sqpo0dD$t9t)0s5dm zab%i@{L)Q&oADLJY864YTDE!B>s7}!YCn!ydQ7dw7HH{JAx4Bo+Lz6}wB;n?33RP( zSw-OIG|j4hR(&c{ z^|`m1zzNJsS;j0G>Q-S&>Uq6lYU4{334}Ar)$v$N?9p4a6>q?9qO7Pu4XOHi4g>H= z}v z1O|N)MN+__u}+x6hB+5iZYgOZS1>$&740P(#dAz(LXX@^g~ebq+sxp|M2GRH;@}+{;MLVIYD}4kM|!aSG|aNmX$L z(M@H3l(3gV3tV)b&V7r>;B`^M>}rS zXr>N!cB!&H)h<6fVq8(N_u)&#*U^zvD*WN*GR69v3Wn?&=gVhGiFgZFqK1FGO7TLx zWj*;OqjGYTf(Wv?%m8pG?0UhB6WtpLP5#zSdR24Glqiv>ru?T?Z4+84fmQ@nuSL-6`}O1 z-qk+*vjE3`UBO4fz7}}0RkAnZZx_pp{emR`ozw^Oh( ze7dkkm3_@eqo9sB2FFa5$d~Q{Sp91Fm=qE^3hr|xlwmtWGa_Ux6tqEA5eg^FNSI0y&a`eO;LuK4FA;t%bk*QL*xZ@r@CB1mKMC~fr7iV09rMjHDwJ8@jcQ|2wzT>S=>_*Q zG*b5px`s;#WDO<`@QB%6r1hgI!_Qg*(z7lo?5IPiu%03heOeZ9_cH~8tE~KKa-$US z9HDsp6aQ5P*b44B9tnZiwrQvkHL@J$`ofBunH~mdM_^#1i@KJo;7>qVe0* zNrjXi-)Y7!$7f1rNZ@fo#^GfaEwLm|;fj|Snx+HpCu+KJ2C7C?F!_hwlPY2*ACrPD z&Gf-K3x>4WDanww<@bxL@Ap~L*sD{rv5(;|o2y@Rc&QH#3|+dxSI8v3&GOq^R)ysa zpLu>+;H8%&W+-NV(z_X1x`vfui|$ggPTVmaPVNY79GWOzgIucHIAw%;P$6Z6T%$Qb zu5tVzASIhu){Ubl*Djk(AuT8ZS#hPqRn7_9SRcOm=FlVl^Oa3rbmuI~)I&I!L-#!Na&=XxLp_+1yv<$mab4IAvm$=p-6fxqKUXoC zds)B*^}QqjSmgJ4e7}|N!GzwjilP(SQAS-x`NcCBwSgiE3&Bz6{m05bGn_VAZc70jnSj3xhS~W?_~4wTok9WQ8n>Afr0jhECM1z4!^q0$H38mB}`& zRuyXH6zoOK;3gugr@SA^hj;MB8gm@BiXY}g{PtkNeQ*-PXbt~0994I8k9^%Y$sxtx zcF8kEa7(DZo0gV=H#}!3)0u%Xs6j_cZ?I;G&Dtx5;Vz%yhHYw5PLf~Km!VHw$#6xH zsysPW#0);eE&Ypoi93V%>DrExPZN%tx!y8`NUCmWAXqPA$4o*}5-fU(jQZwBQx?Tl zG|hzkHci}Kv5y?~35k*uI<|fW;=jkLkop?Fx$L?-)DErhCBX?z^xmYHc$k8iVA^hO zTF$`yI5kV{>}umTpLHY=sH)YcDB0Gec5`?q+1JVN@3uL`Fk~ZmUVUD1JgZ z6cC;=jdwW(wxQrt#|mroKB6#Iw-%G=p49YXlR83H0IcQBat+AmBCr7YQ;d2^m$zb) z_lw|zFKEGVuV^3GZ5%tDcqu3csuJ#>S%4q6)O=ZX0QFJ5SxT^SsE;JLaS!S3R8g+Gni1!9Kz-bp7wz zw%mtoE@|%>OAo_Y2S>;VTlj*YH&)Ee2-OGc5sN)!1y?J@3A-GzSd2vuQfS;**Kn|C zJuH-&zF8EaKN~wLhcT-j@_e|0d7mP`DCJNS{!r!@Lk{2xVhEjd1}o1H#0+;p8kRq= z2exDi%zZ1kulrDq77U?6L&v0YW)YG^P}uNPAH&V#F_blWT#&sqk5&-#lMzgXvmSlDwA zR%(w}nKMLhwGVIshcftA_MS{@8n4jNDXsZ^ymiLlcv^i+gIm!fs)_pJklyCSY4Gku zfx9;0(?zW^%g0_gXmMU`pO2 z*q$S-A07XxOQS~ey;!Xlz#!(ShTJ4`4kDN4dfLs>J&5lowz-~mvt-qfV$ERPFc&gD zU#S+w-m~H5DtRt8)nsdEd$uq20~+A*AULGa1Y8j zVAiqKD85kyORd==q$jcZztNJBPPE!w-Sib&mcOyhB}y?vC+OLX3eBI$-_G;fN+#}< zR{3oqw1$x4(=8KNTAJ0;9gS~xM>@8Z2d#-ly`Ue51z5WiC{@0sKN5Dwh1B>U{%`PC zk{YhmiuO$MhR11G{~VZ-9}wjf%fl@0u36m8?NNh(w^@OMXU{jpV(*r(&zPDsJS+Gk zSFQefRo{|IJ7b@^a4MC>i;wcZT|6)<^>V4))6Jot3x;|@%I(1VUBF;RxOZL%OY4Rz zPAEbgPr{rDVLVl&Fi8GOE{jw%qOINid(6p2ZJ}vcYR8Z#>I2^jrMR93`6AiDnW$J) zl)-aas)Az|&nW!C)6EV2t6rU5DH&8!(O1%Kmc7|#rJ&7n5HQf!U7^hcHSSwx19LAo z$8sT!!sH6hU0`t$A0)Uh_d1e1!#M23LoVujiPTzm#S|MGePK^2cwCkc|KN1Fv3pys zr5!uVYK&3Vl64ri9~2BR>DdnFE`78?j=$y4;(e5niVn*rixEBQ8OM*+Q|4P7yh zj0b6~OZx&>=%N>H;o4F~(bE^mH`lb8QLkHw8+Pu@6CpaYY^KbTGRjfX7!|G1kGYqZw|jUfyT!7@KAk=jhMG+m)>Y+b}>^H&O4m@W$ed%1*{vlkR(t5PIF zP7knbA+p^A`{UqVq@{XkW?6t=3mW`0VdA49byN(kU_Oh@=hpH3D5w&a%wTs!;Nt9t z$BQl#VkzNm1kooFNDlNRduA^%Uc~ZbM>!(N-p-|E4o>DmDd-HGzfv+0)Y>8x)+~R; z8-+D|AbU_NcM7e_xqV2{0;1(tWv^KH#7Oayml7B? z=bS9@PGliI!Z%QaW0 zCij_66=27vF*wsD`bVHg?@t7ypiVCG$({UXxXfsJ`iYR~e3{jPYY2MN&yQ?VkOd~< z#vWLb0T$A)99Fh`M#W1~F`PR^?eo0&Q=r^x5F%~yWv}eGjXlhFw|up>?i7Gga^Au|-NjanV3-!rwqIOZI%g*w&0pGbDDQ|Y-EmQXIFoO< z^%iF`*z@-(f1k_mE-Q_z?5sUDH?Q=rQuhgPIg6Yiont=^%y6-*~<;9^`!Wd}JjqB%aSL zhRFTJ*AdM!XU4YC zHG#q42)+>PZtWL$hhANl>g(K1`75JYZKhwFmqd`OJ(5uz^v_iYC*ECconti9iTCD` z!UoV;h1;&v^~0qGiJ!x#Ls+Q_TPCN2Xa=@& z1LltO++UPpVP2J2Q!L=%PCVF`Vtn@q%y}$sLwUE4gA{zjl>RhVLT;aQ5vN47ICSA8 z+}y_q<{jo46-UL8Fp{B$qMBnH9~6t~h8r85Y|cwATN3HbB9E3KMpN?j%Gh20x4fBh zQ4CX-*Bs=zy0C9n{$f>$KBS>Z09w%@dmJ(#nvKutn5+1|9RhHAF?^rIEhL8P zSIr1Fo_w_w8X{)X6s=onvi_n1Ak690%o;IPzv6Q!g?Nw5?Yw73fbss*$?G2rq-jH! ztp4Kq!*VFNtFj(S*`yk?hTu70ay<@LO_jHg=#XFtsaQ|RuX>x%Em{4R!LeomfjFq@ z$4M=X*KXl(-SFn{>8dij5 zK{ZZhvd9(HQ#PY+E{)l{xMj&iIJ>)FzHyRv+MUbol`Kp5AbB;uR4;#hwLB)cbG-mw z=%C+vG>()(_3C2!Bpq=!YkG1u4gAoXkH!}LDqdd=)!;i+@afp1PO+tLTDa4p6U7an z%L7{JhQ-tZeH)|*u`D-ovd3^;zFLY=0fnsDM*(cPqUdCO$l+6IpO-wk|Abh=IwTEgv()z27=)cZVYVgxaq3gRoc4>KBY*RdXdVe{;NSsVng z-hfEEutsQI5ILBOJ!5HA8qmO1JuH+Q*~0p2Y5q9>o`uLd7E`bh0B=}zl8*X<>Wn-0 zh|;?h^ISVXkSjw$3O2?tr;&(QSq+_}=*p}UCifI=f?l-usE=ieH8rWI31HQe^JR}^ zs(C20L^&n8NT)EJXA%kPK4KK5W^5UqlI z4;BZhs#>wEV~RM*{25i!q?IT=M5)%^B+I%o87sXtYQI_AG!!SXmUp9a3lrfH$J;|0 zNqskUt}BB))&oR%YH?~?f|Pi&pm5kS12#UAb-a(7A>EnT;7Uek`!IFDZIEGU$|EX@ z(ilPHKak2IHBt4DnGTe)o`~t;|Dv`ii%^!-Zc@t%(rOQNAZq4f67_Rw2I$fl&Nf=A zbqwoq+;`SH40LEj%Xdr|M;yy%59*74{9BMq2>p4Sg%};yWQR3o1vvGoPgJ!%3sPnA zjH=iv#0SQA#6DP753saNTPqWA#%JqVdZy2>^ z(Tf1s{0L>_gEK-Hu~YVf>GSf*7WsDEN?egNG*DMwUhr7%!OkIED?7EzRE3OiVi*hRgAOdok2`5O6 zR#j0k{&93;&jgQ`e;UPvu@FK!Chdqebvpu2v&QW%Bsn7I@M(nIRVWZt5#Y;Xut;E= zgE&aB6lIRJq3}fdI#5(wEJqf5zyxL(Z#B8;0{C;n3yIsWM%Z94F#UTOJDF$(kDk@b z&f@8S=5`d-T!Dx_4cfD5*6hx+Y=SNxk-YA$htsaqD3f@q8J^03p2KuGm|ytj()VS+ z%3N5k`XuA^h0Sat10{*Xt-!HkMW${xrEVxD=pGTf+oiyK9-uvW<*;-YD8XPgx&5O9 zfU|zkdysdnBGx<^kGDrySk{3(izB4{`!H+8xRvLLd?L=}fNkcQ0KHAc&-%DbRrtAW z1^f2vZ4%vFGsdA?I@mu+bn|_^eq#ktMWRt8iIS8>fupOQ-np$&?e=F!b?W z8NEjTpYG&y9=nLYAF>2etYSX{T8}I~(wW*NzWD9%pO;plEV8aW4OM=N zEZ1eqz;L6_$)=`{0UO@ChEFSTSG;>3O?b1W+dUDMsX|`uVX$No9fbrw^++$+*qU6) zB<85zxdkQ(Nvn;kq8i;hZ3cPWESN6u=Ag03v{1TB}R}cq-Sj2D4z(H z;3Kwyo`aNg6?e^4$(~z@B7Q3;S7Gppj<19PT{=Nhl8v2aq#~-{-i8~L*{E`?mX$!h zK;z*e^)Fy;_E?$SJ%a28URM2=fBox!-4zRKB?tl?3RUCH2M&2N%ORMor5l0i;zqHo z;`k)ALNI=0Yi~R-t0G@Xht!{Oy#x8XWI?l<6`Xf~m|A^87VpD{UeI3ocseR`mWcAp zFHd*=l*&D|Pf>U+x{I$_nECZ<@)?4=NZuUJkcH>hxQjnKtnzAE#qn7=LDUDUI7Go+~Tp{OEjUz;~b%as<+p9XDgPH5^l zGXZZ5(;B@wtu_C@(6D)Q)iIy!Ymv7@{t1i!|C_CPM62E!i#5918n@Z~<8Y5psJfAf zMU{PqA(LeNldQcM8IOJ;q^s zIu6^>M&XuU0M3-3i-UNw$K*iDO&D}3S0lNZgPQlTIcChy#j2F3Y!ryYhrH^@+y-~A z&}P)nC|{3L9C$K6dY<9E^H78&a*49O_I#;XxTupfYwrO?-er~(Ls-@;ECjQCurH$j z_nA8Aj`Qzj#}$nOJF#__NCk-R-LhJ8TU|q$(~bVEyWz_2?ris$pPz+pz+SPaj0qbF zAPhzHPRAR5{#(EK?~d|ZLLT&VKrEyrlTSSrfoQdWsI?A#y#)t8s{U8Esy5aw0YtiR z3#FLX0<_ch4rivXM!7`r7fC@UfS?ar`56UIxJnpbeW zw4E^{lN#Q|D$A9ZX%6{3#5y}jTz2MZ#uZl_WFxB2Bz?BLO*zt5q(!!?Ut@iPKOpRD zlGOtYjoy*E0W$>g4~PdNjj+WE07>b*J7P{%MgjQ_)69Xbz$QAZngl_S6qE-v zM(+Xx;@r_|%E-=AdufbV`b58&x{DcCLp0P@ZkGN(bu(<|>-wK}^QtgNSd9Yk$G_W0 z^>G?t31lwP*vI}4Z01#7|NQ7q}m= zvzoAB&<>0JPwE3>^9aZ~cSweEW6-7)45=}E>t4PrsQRi_h89Mx{_U({;B-zSkRGUP zg4K>|XYaCfVwpRt=$PzW8@ixi4uv(=yAJ~fC!1W=tsDl8F{W1buoJHU=q;+KB+J_S zdc16)x8e^YZM77XFS6l9Wlaq>26YA%B{En=<)4K>ueQLA{i8$!U9A^peNKh**jmde zjyn@>BdZY#y(;&7|D)WE%s8*wYk&y*qiiRwVg2W^;MLJw4XzY8H%4|!nx)p4jV6!n z0ZY8*stH;YK+2DbhXNGRGST)W$_L>WJrcgBQYTzbA-;EwM3;$JCWlpc2~A_*(6GEZ zqwJX*_@I2n4PsBF(`CY}jK`>%rwIP<|MgR7s-&CuKbPb0>usEjR3p|(sQUR5_IY`f zLymBHVqkkZ+@&jJC+dLRyuKXU2D@j~Ps1dn_f^M_7ivZ(`z=%r@8@}f!H_x7i?L~Y zEmDwGDQx9(JF-?Qkr9-LH_Z31JW5SEl?C6L7^{sU&-@ZgboUIF;R)tm(Jq(*8kRso z8ofD^-`x?x{Nz<$GvSZyd{(%bf~f&XO9-WAU}yKU;&ZypDXx()ent^?u%6zDpmVU) zJ0Y_sYL;u!A$cb{q#^txt+Ri1nHAo^%RwfqvW5e3Bjzxt$tpv<%^_u@0FPAz7RX954*O~0 z+j6V+1@!je%2g2#8Yo&io9`dajP?_B5@v!>nUxs}*2+4}9Pp3_2R#iB64$bdqSS5$ ztKcB`0R5(hm1kZ)5k&_U+_Xvqi;bd6Zk%aWQ0$LD;;IZT+ z{R{xh+VmY{A@gKR)u#5a_R~`L(s9rkm>t$(OvO83u$Gy>4(`{{_<(27jE(G47lAbG zoTz7Xif$?x;a9(Z^Y@ngesz8;`n_#=cUJV)dick!RPqGt=w|Zug|_fcuVqT&`n~7K zOKM@A@10`#3isqJXU=W^XD(x>*3T#H3DcxED*6P?O!)lO)r!8!0RV;=* z-J<4*`cY6K-V=#?u5Le;1%~$r-(K_pt^fJ~nmi(QLvd2Qwm2vmM1LP{w+v&lDQOw+ zR?Ga)AM6h;!`p*5hxfm3nZM|odi()Ce{@ZI*kjqquBD?*3igV%Xaxj%1}jaRC- zMguJTVbMs>azqTyBbb1pBx*&CV=#vL0(!V@ZHQ>ATv_mbX0pVB!=*8l$HG!m$3V8Q zfFI#-p$J5c+}yj^Ld>sfX?b;@t;5?Ep{(BN30p1>DT&@fyGnCm2t$ZkI6&s4Z7AGo zOS+@kVD+l0^>)|7GO$=VF$UTSfe4eY1X5U%qr`I6Cs!r7J7ihwk3=cQWzSV(B#-78 z!D1vp)#g?AU1#|cK`q?$$R;J6&@aj0J;nr|Ma(uMELjGby~o6nkdcS*@hkm zkq%KLPg_>H>2`>;f)#x9@%!7aSdnbB%Y}|I*tRii9z&KI-~cAqyfx;Fd0E90*t%@A zhEjw{#8K|zX~yv2StXf?CqtLd;1a?3+RC=m*&!C2*GMmon{aQ8qN9|6^nfPNCpPqc zhESS+Yzl&@*fiIXFgUNHVHhH8g9mMFzd+-lxt!Gu!*Mt|8qSHYiR3)y|DC;8__O#IGE;~?nvdF88POS%YD-Ip8DxCevm2OP=`;X`X7-`#om)jtdwW40+|EaF)sNy{QpGZi-w1 z-kOXOV<%kHEmfW*&e`*vV)C4$Ip-w5`_?{2SF4_ue|U=V7@3=0@`_VQ|DZ}But<|n zG3Pm_ji$h?Mqe241P~N6xU?TZaRl)fFIEF#l6=T(?&2^VcaD3680<8rNg4Qz>ZN8)sSgp(d4q{Q}ai70J zEOuzC41(`k!NJAGyJg8xKK;jKO_m8^B~&YC&mxISIi9p&yux2&#dkw+9RBaV&nhZO zs+~KLK8rSILJaCZl4Fsu{o_ML*rxE2Gqta+OcGj7UFPUftK6- z@(|d@OGq`u9wP7b;P?OX5ZK+P!=DeabIW!jV-?KU_cW=4Z!VbgM2D*U)si_slhr|L zE`zIc(Y(3drAV+2eC>{j11@lt#E&QbC@Y#9ThW5`?GgJ}0i&ZR`Y_LGC zEYh%S9FW#(Va=3nnc7yMw+~#-6{5^_5ws2lb`C+>E=}=zMxs65&Rz;~pj*|0sOF6@ z2&BF&cxAn$J0C2)uP=kw4c5T{>EH_vARu}H@i7HdO=u*$vqzzxMiWnBV8zYkmid>= z>g_)0Z0mieig-s)D70KeAnPRn>mXA05_LzC+`I_j^2J366>(X^X`aWA8!>UR_6!L8 zJ&5lQpEw1@0nl(dIT3NWP*#76{apBF^e?O=JKKku3UddV9m6>c9;*HJr#WB2mzopJ#P0wQ+@F(5MB16u0v56DsgzW^VaLK$TODDyYO(SxO_ zlYB&7hAI~Q8zZ=y;074X&X`3VLbx`wvkVYopiyE$iuavRuvBxTQ9k{XG{2I2m%Sg9 z1dYlhs-^bCv8-7c$|z$2{=%s8A_drqx&egQ{jX$)un)FRV=Be}nk^f%6h@?z-G#fB z_1D=V16GCVqngE_M8V^J#G!b|(K*rRc4v}b5=t2=f&jwWkpb-H)f|jH+$vfENBBfR zu;`lnpK6s7sRjSBRXCkmBh>r5%S5Y`ldbZnbf7=|G#3&@;(uruw03@3yzA>FY89$kBuQEH{xl*p^IAnYo;^U6u&UOKR-oq-fRZ%)o-vD182$ zyl&c^Qq#T)dtn}1R^Z-)FUgI;iY_Rmn8KQ$-J=lmQDU-q3Tq24n)CWkf(^mjr!K(J z>-F|C7Nw=)pDbQ(7K~|CQ<({63)k$&aGL$s1Ao^Aj@mzX*f2_?f$=f7^wXS}tBQU1 zkmqqJ0O%jm{9LN4m>FQW*DEz`Ez%x_lG0@vFDia7Act4a!i=r&S~7sPE%QmVc;=M% z6=?5LLgDq<3MjHY5_9!a9b7VX^GO~P>|tea1wJTeURPhE(s z*GK875y7u+DtBx0(CY(| zrD}h3nRzW7nMUt)Z_9XTTH_}ZOTVaCFg*jN%8-DZ8UJyx1g39FlI|}OlK;eAp76g>Mcbt2I9bfqH@>c);qvs%v!#Xlp(Prltvzhm!y~m&M8b1; z7nehlrGq_%pxwcXDET#ACz}i!MT{0|{#k%soDmS5RTqiKzEjF&D;1-Xb5kEX;5thmaT02t+>qna57K;R6dC9?C}Ty37U;V>;?TE86SySdMt~3)kdL3chcKLsGKq1|7E&Ee@CTd6w11`nNXz8*S z+3EAreqSe0NUbPwFK3)qcX(53NH&sDYevLvFuSNV#Pglq`H>h=?iWZZK74YyR30 z=uAt>bhasZtt#Tn2P?pz+M_plz9r%iQqS%Jh;nsA=>=7s-;5sVY2`hkBW44Lv-PmT z;JHRN!(jF8Ooy7_M81$8JE&2Cm7DO?~_pLh3y#%RjKSCQb>C=uyjH=lILHg7#+-7f6n+pw-R12^N-M zYCrYly6B$=LB5X*7 zmTWu7Q#@ZE-{($b1Z?ZpH24J0w%M9OpugWFm~{2n3z%x^#j9*YMQE&k{KffrMV_t~ zGl|FH0p9=OeCa83{!#1@tIs|7?Qfp{17&2W5uM`xRgAXx_#_*WsUp2WyqaH|4wT?F zuF{g3H`+RpO46UNfnh0N3US`aE%_vRsOeeb>j*c7rcO8Us=PCOML&u6)-Y*h4IXQQp>o) z=ij`Aj16943jV4_6_$T%fzrkbE(d}Tzbc=CO{^}PuBOrUjd~I#e`*N!pV$GKoqQ?G z?={E;Qw|H^`4NUe3M?aH6t%KEa|@>}1#2;babRK?t)`_g-D(h^$n>QQ6A!{#iA?(6JydxYZL2E9OCya4IC+^k3 zPY+jrB0ZtTI0o*a^KgtNhqLtejBm9(X)T$!0jlOgBcSWPx;mW##iYGXz#llG@gS3lAMbl^~Wu_`I$@h5cFD?jdW{_kz36>tD!J0%nBQ361e=64b%cTyyZD^1m zFLwB$F=66N*E0nU2g2Oie@K(Oi<-QyRToIX*An)?5OYTdjn%Hs==zx^f<_0$HhkTa zTGKLJQD8n(R?pH9ePR4SeGql+gC@p%H%bDiZAj?(p|5wSmlA>wwbdxPu69CZ{Jb6+ z+LaNi0l`V3n7UgESxsx@#!qgtK1ujzyl;6&qYa8fWDRB}WrPI4VBJCBm3$A!ciF)f zV#GA3Dy%AdMTa! z<=gl5G~KvA`b!f7l>G?dQt|)sNky~UH4V@TLo_f73mbXj!D>l#w32O0xLWa5+hMg; z(Ck15VRT=lZn4&NBK0A_)zW;4JRl|ojG%6MrM+#Swz`Dqo%o!L zK%m+zX*5qeOtH#CDC#A2*GAAQH$pBq&z^wlSNs6Vj-F1`OqG3p{Tdq%l6&*n`n&*k z{(M3*(*vo|1=*0n>^-3~W{$m{27Xq*XwBmF3nQ~3Kr%XbqEaV%>-kc}&KAVi*yv14 zZWr1J2N0yPj$>aDDBa24Am-57pwKXbzs=1GnqTWx^jXBsCbmH}%XXs{k}_L^%4TVA zXD0A0p}~u81sFpKwNloY60zMFyZoOBn_?PotWCZ5_@&F$;`NQIu2 zu&Be1XdLE3E+e88oHUj!Au(yhD_DSuX@c z-QEjK5&+4QTH4}CcW2_vxoCfRBI|tva*eIMm5Si0Gf@a_oe*Pbj^Fe%V#Sc_hE%29 z9a^=$l@PqDVlO^yVw{g>O`09e6XFzI0z~2@#T;5ze5JyrT zZc#hdI^i)|J1X3ZU?)JX*2_wlmU#DzogEMF>btz^*3~>{dT_KP2?uR-%GGny2nUm; za-gnhjmWRPWwN{ofKP)D)yV2_wVQXN1?%!z)pVggf{bC7A`^a)%1TK zbe&Q|?>}p5yqjUNLTIFw8`=?M!Hf@*tWO(ePHk zJxA`Y@W7urL>dP%nNxT{2OUvA}ZUWq|hK%tv!Kj*BsADx*|K!$6at|r-}OEFDv^DtkiSxzMq{4FE4bg zZtGXvesB%_6ustbPL5p_3EwQYPWb3d(OTYd2puTA+oTOoCebP@TWt1>ji+1Nr^vhU zCy)4lNm38m*V#Lie|9>AZgCmVk;_Aq#E{{}xYx-U_gy?2 zx$b<(m_VAK5Nw2o;CQ`ZFh7rbbaD$?3EPmJ%u@43Y=;1U%F<9c-~z4bl!~`91J(-) z{0NMqe;Gv=t%nmOucpkb&PXg67t>EH(RBY;LoMS+b>o`F}FO>t$40#7DGmEY&K>bjqsvjH?&2j-K$S-EbA*A>mXrLlBLlAAcN zoq3TbO(Vn(WocJuGQ?HL0aCCR7AbejueB1NhFK%0Fa&C^Ro%)K_lk_o_G+|B8=FIA zIe7Zh0XnTxi-BpV*EhB+N=&%3Jvqc%#%eF1IoRe>vc&-F=*#O6tXGoz%v>?p=PEy> zymk-p7Ie7SrESQ2_OQyfDakT)xAuN1H_zBbo(;|Pz;kcH0FibYEEXyp>MNu&nkOLr z8YR5o;b!hnkPMbOK8W2xQTT2Hh|n^IN|T|sC6*JNZt$~rhnt-{kQ+=)~PaSFeEBplY0L z(y^*7KNRQSOTbUq&OXueEYU?h@up|2)?saKr-lwj0J=t-meT)4ZbREX8M4#Q$b9lJU6bQAeeZ*<E>^)hmweSS6Nm&*Of$o{m?3dB+Sem-Eax>YWuj#IStD{da&m99ogGF$wR@LjBwb zT~a0UVW(Ku+E9t`<*o0mL=Y)x#8*teZV8aCavdv)Y<&D~O&IWId8G$0k<-mGENt#t zz+a|mjOnqi(|ek5E{8HPkhm^n%D4v>fczW4leAcKs-mMHiD%>29L$InSw%hyBw{-4P6{s!S@{5?nBrL zM|*CsCz7h|ZYCsmGmoGd=fkA)3@M(2J%SH7pE{(dmM-V+Bf$@U*wq#&jLuO2H9*S0 zKlVC-FSd@fPFz1La4Q~3oRT>*dvG9zDM!knuge1dbmPFfp+@K7%VX@qS?Z>l6Lx9) zmn+{oGTyG~6eWM;OdY@&n46GX%$#|F2@>9;M;MZNy>Vd6pmveb_Vp4GUU>JBeA}gp zE^IBO?16x^DZ?L$5u{c^6C`f?R8+Gc-ovrrB7@>uM@kZ}cqqHR=Se)=-tcR7`j;C% zLd&YYF|Ct&i)iX4s^9IM>N3rjazp+9-D{!+n%43q9&$j`dbe|KgxlO1 zO_qaW9?5yos7J!=g1I-fA8tQeSKxk44V2(DgPD7j7S)fEMM@Cp0K?$sh01Wxh+ZWI zi79m(0e;>ZrpZmlm3$~$LtW@l?&}BmIPD|m;QNVZVU58$|2`d(M~Q3u6ctEaob2vw zE2fUKFrk{USWI1sc6E$@FV!47CyJLg(M}-XYh}<(_LSk@8M&Q~Q|Gz~cIxzj05aLx zE&$O^(*|#-U69L1+~0O}9hjsaz6`xU;9#%iEf)5iY7yxvOwH`Q6f)~zh0arr5NeR+ z%gE#D#0MR;dgk6(OG4cbd!V~1vKuI{x{(}MV3e@F^Ur6^s0(~2Rq%gzjwDcHhPJq( zFy8;}0wXE7=m1ltCVzL*LGIeGVtEk^wzoqx4<&!CDgc$s23A9b(la8r~`_!J}L$NV93iWB>iCL=pLYl*(?oFrY~eupErVV#$T z6++C*e;AzZ$&MsQF1|3BWDw>|_%`IuG=}bt2%cgg6xb?)_jPcvvSb~R%H6i5vE+zs zQy9CIN6d4KBv!5!mBLGHG1`1}u%jU56eVDY0@~SKyd+O25_={X3w`ijHMzYE?QGE) z{d#6WBWyux%RRR(&zd?iLe@4Z%bLYE7%FP7lnG2kq&k*tkhy9^mL#Z2rJ zjv#X{9wqsdR^~dVq8*k0Tif7oH5&SXyFrqJNq)zZo*+tro@+bBL z)U%x-OOr0r)^``1>BCMIAk}ULWh7k*)%PSwda_9peBP>CVe5)G;%?Rf|8dybJCs47 zy@MIV2O9%G-x?89JCwk+%a@)U?P%$rpKjhTF+%n2Ql#(&Yskg$5$Tp5Vm|-F2rR-| zt!9}7K!)}G*p4-p)frP~7R937Ehbl4<;AK~I#uW)IB)JMGwSP9irp$pPzv!j-zY$%#9rD8EL1 z<(7;0(r-H~-IX0_&oR^*D73LU23ja32P%)c28FQFXhT5`2tR>to3viJe3DK_ zi>S%kcTlM{o3xDWqE!L;4YZz(*5t;E;sXU>&<83iVmAwi{+UoIk)BhNSjfb!0Bq7C z^203wpz>Yi=hOz!Kl2$8H}#rMe6||#^Ih_vLrfYE=%PVR8xszYfeDG74E|(aMUUPt zji{nl9wn69=aPSN51PeBP%IZ1t{`aM-@}Oi06Vt@w|)C9=va_wY!D-qyDF0)mY@Xy zb-^Zx$IJiskEhEu5dpq_lw<5s@;@J?fk)ZmQ3#RkNngGBa}eyUfvJ00K=7uDOE;HP z3aQMnLWV#%7#1j*KRA%lhB*nUJ`Jz%UgJkqgu2K5CbLm9`nF}cPt}EeHRZ*66ITqr=yKu@r{DiPMdH6ndnrCgsh*c1%eBPQo zt{`8~Rbf!1FjP??!+ZiEx}}O~H4c#oG?4VH*!=Rnq>0)MX6ih0K*eFA3t7h0^M49K zqomXvM#Nxsme(jdI{&7I&hm^sx{PFQ^RQz?Jy;t2DmE9|ZYIi1NI)4Cmb%PyDNR+R z;Q|^Q_uy8I&|FjkQZJB)Os58P{P$>flLCx}le3yTv9sE_xl~y96|qTzk-$ZaBm|E< z&QX$Am{E3pPiVkK0!mc}`(68TN4rs&Dm3R#u;j}WXp4W>!NPS9OXNgB3>EuHScKfP z(L7HJX1gxq;C0xDSW|S)MdKj&oJU$^vKD=wMv1~p6hp?!FQX$@JW?xN=!Q(oi}@p) z@w@%p5pjY8Tdp*=5ez94D5hhECXW8C1Bdc7b0>hI4Rre!r|mkFi3@@j1A!p0WMinA{dTRxh>0V+7MU z%g59BC>@;J3z?NTkvzV@3r!hxFY*jiEu;fkEb%F^9YLN{15en*KygvQffSLwBAiLy{pQLr_hF7tg~r;n>mQSgtfH+b_=#_KBTVc9Oz7dpmBmz`27%tti2KTmv&0x zqOCL;cv4hBgkWy-#2iiLfPNRF#ntrza*v}j-+C*%(t%Fx%!w5`Hw16xj%?hgch)na zJ+Vh01V!q*6;azMcEKKt+)SlGFMi{YvmD~i)P=Xw($^#NZ(x0WCSh75cCQAl@sMeECV8_TT3svk;KzK zEYoS@0?pW9LI0i<60D(mq%>;?MMyG&4(XvNRikA*zjo2V*QL|ydK zx4ehN_3iqW`>t>28-s2w83f_db*vL}NM#cu#d6s)OKPSM!z9~}F0j^h^UH_<;T5NaJg^WaFG+)=4cB^@5G=loX*Ml8)J4uzVWyPF*#CM08 zb4HS;vs)xK+>8%9onpo+u8NKdk*brKQXlAuEtVatRhAN4vd~(pjRPL<76bky0 z#4{yH^13Tk1wx7yYpwCoi5-l~G`76>PKvGEqO#(P-o0}>M_deH5tsgEoVHKBGnHuu63-D|dT?7~la6gJJ z@+?(LGszysRiL3`&!tC+QrdB;WvkrI&Fo zy_HR$l{5XNUqzTZYj0DGM1UDSV-EqX zT^osA{X?7aDP04Q8yh?n3xT$KNg`kF4z>6R-3w@|7H5(H=$973xkRVCC6xIM&>jiC3xkQU zRs`c>B4XD{h!%9{NUr~Q+976~;1+(}2=rLu<~OegHF@{H%!pt85FGa?4;nR0T3h zMwKg@SUu~hL~WW9?Mr^%qgt*D87Q?-EOT8iP2JZ10T9@MDb=(duC;SRoSpq+OUYHa>>GgB%tOL?0PeLfv|n$2M2pq9L6W5zL2aIYJye6|`u&l7&5TQ0 zuES%DD~fj*N{QY-KyGb zx5|V&0zVNIYpse@@9B^bmcaTEj3pZg2j~hYppWvHpcBQbrJ!T{l+N3+&sMk4l3?K} z!?Z)(PTK6DvqkJM>2$L49r*z7w_ z9$8Z+YI~m;oEz-ggXshnO(kIjsUvf)(=~P7Eusankrm&?m%+HhNKg;u<&|&IGH$(f zcn?E5p6TAw%>c1WL%TUsQV&f|Wfiy7O=K`Tv;ReiR!wTd2?Nd5WfZ%DySSiU9a2Y~ ztRBAKyIw&g9jHupjivq@|_Ucq2a z@D1MoZaMt6I;XKZ7cgd!*&mqEdbJWS)ESjg?X{SrXK9iXl!CujCx?v{Zf+ywf!@Zr z!?Exa7~W)1XyI1HBN*Cl9VRMiyHK3WW68B9fQ+zBYm~wwE;zU#ESR;=vL&e6g5TZp$FjQif16BSP)UKV1F+UiAy;$ekW;wt4Hx_OSENI67fb7V*?7;#%-HP5Ev@pwd9o5{dxYbZLKB+$*j zCG;M2N>6LCRH$T0bVhOS9k)00hnS~3E{)$=3>IB!6N)gEvwj$1yiqS&7Tvy8)8o-33FcD>y2&? z-risAA4??2d@Gs?jD`JsyT!03tD?gQL()94JQ^|Gz2-IdRx!?##eZuo{k-XTjWUi& zhH62Wse~01_ycL8DX7+8k->zt$?iu3ZpC;F8?a@)N+Ch_4!Io`VC*jBvPZg@i{oy)@cr`02Ho<`2345PH%FtS0x>hu<+F|;#x zAQ&b}hc!jzR&sysybt)5EU*(M$%KzxJuHU|;-ZJhW3|yN9_|FsjU$P)meF#LlInUQ z+Xe+*M(N-eazQ38M!)*2(k` zSHsotib7G^Iz8VOSnG9GM}XTjVOT+?C?U*MVI<%gK~dhb$tBI~R^Q%N#X-lDm}~4I%2evqBR2wV3gqyTHkb zTkAmn9l~sXb8T-I$`yqz(+j!J%PmvW!vlr<{@=iirGMgFTH;N-PK#nuD#M-9L>TNTD{2%tt^E1 zn$w3U*cVtaYsXL(d(T;Pb#wWFc-f*zg)^y*0#oA5Dce7uFIdI6jGq*>wQGg@xDJ*8 zKD`lzn8HQ=BGRSqdqG@EZM{=oDmeIK^mi*hB5+*sFYJDD>1OkG#Mg12vXFv|K4d+H zL1%T%G(#9btsJbuHftbHFrB?AMr?!FqxN{BV&X}8M)-%ImFp=IjoJ~jPcY#0Bfrg1 zm1a?WNH_EX8ZBV^=9Rs?ZICIh9^+9&j-Uw4xz6EcdS`*KTG`H_Z?Drs6ob!Coy5ci zSUQ$Rh|K=w5j&qjXjS#LxU|c9(#-7o(u-AvOTZSfY$05K)Ns{0k}T?RF=o+y@XN~@ zBcdl6$RXkS!T+B}PIQnP{kI^+n9T*qy@_Fr$F&zKeZrn9p^PV;$2%(MF8m^_u z*X}}grnfm8AUg^dq+n9M#Htv^Q_3hxc8<6k4QJDhk|x)8iadeE4q`BM;}lhq38xBQ z1NsZXX}$p7c9=76u&i-Lt^v!Am9iJY1Pq#3*E*g}sC|M2!}nhgi3QA9IaJ*lU0Rk# zzTPtbFzS4a;tFssBYVzRy@Y-Pi#@$j@h>_XCJoj|8ms{5&ly-TJ=j5RPWzKdgycFj}fC5qb@q04|R(3&_&elaGlOd>wp4$^NY_|Xd*~yca zVlU-N>b1(`Oo`anF(sV7!)6quD%)Fw5WAN9K=-)5UpqH@$UUhvcAO=Xt1*gPhVjK=W7k0p;_z-f(HX+j_^8(Q>10ZlE^c#n_1s#e2);+8M^gE zPPfbd;3{=1^Ufq*{^Z1H1?P!O9zn#Ns?;2)lb#om-=;gSry<8ziLc7DSmJM427u#N zaScw<8fPR}3P&JM|1eCc-kFrD0Q=MfFn#1H(2KMCHmd&*z0{L)Gx_dnCjxx`07baP zYZGg1ht(CAT#Nv)QPmp-1J6ydUZjRxB9cNhsUGsYm`THe5W#&eN}ZLe8NiWJ16+b$D+V>!;k+$jjj^T+%<}Om#)+ASwqRq(a{Wvn)kAgj(imHMkKo860-9PiO;a;;ub%TUh(0oidZ1K|25h{+ zd5B(-{_nTA`$>jrB!P>Gt559kG;NV(n2}x9IsI2Z?$yzQH+C<`FnZqbA?nxdw}~T2 zDqwL2x1ukg?esINah#m@}wzF_iF_Hdbi2}jeDQwbU z$IG+2GDmoweCbBRXTltw7@~{KkIM)B7JrbUT+W->otvwh39^KOej~dOyYDP^=kIDk1lKiw}YYA%c(pm1c^e6VExq0>$7 z%^f+N8`Uc1W8$8AxNjq$dy}~9Mg8}8O;*DwnrOk!xiI!|74g*Oxev}_IEJin&BH#B z5-XVxgk@8e*}t%gV&TKrj&|UtB-0=Ix+!0dQ}FuVj-Fo1w3BqGr+5#6^m!8L0x5$g zqBJ^JU$paC`+Dg`nQ4fXaW z@8*6_KEt9hnQgKkm~4HNf!`3AyO)HEDeu#uKRyE!z8n{lCcfeW8Z~ifUc1DVnU9DY_I`_a!Zt ztRxiEwQ-ges68OoK{I;T6RlX_D?u>yf=}%V5zFMkFg;yXJ_w((D3CJ1(v4XUTajp8 zzjzFxuinb3V6p3Dvxt))v+<);2snwZC6UfBUu7qrOEz#RLj@*{DdBUcdPs&6To1(c#=h$;`Zuh;)(S;+ zvu_N%6?~3~kc_$$FP^K&Jp2UZ9L8jf%{hz*hC$>Fwdu1&h;0%1U7Vx#fPgGk%4JUf z-j?+BleNk@e-j1OD{cG{G?|s!EXj-nN$6oyj5M3i!4ezmg3^%}p= z#0w8dQoogtv$+!D-h$1aJ$!FQgJ)FLvh~CjO7SZke!D``@{Jl4M#t{)$Ijzft&<+WPkt3;T-_l!4nDFs zwj*V>quUz~)?uyGsj1G9z%m{JRlBwNu@VdDOX}8{rmcY=Z}`_@i{H zix}r)6y)^&upbcmcfv}c>&22;fXXRa6s1%Ji{@Z~VP15lWEN$F8_B8yUChF=`V#y% zje8k0C(?-^GIAWp@S$4WN2%FHfp{cW$F(AM1H#zwpMABNI4H3Hk8_5Qbn3rnW=`Ou4^y8jd-R*qn0{ zwyRbS48k^{0}Q$?QCHMY=bQu>X4~N`&7LK`ad530@6)`1dZuqQjhsK#5Bbv9MJJ+< z8jgRol3|H$X`Momh&eGx!Y+`)46u+Ys^y^#8X1N-CK9rCzVj5L5mETSDa;8#pu zl5Z|KCFF@(D?Mi$!qNZW8>UU!#ESMO1gouI&ohbJB_6Xsf*f6F5TfR<_sjHv}h8h2#|eZ4{?jjWb69VD=1<+e2Y zvtB#*NMk(h4nP(2^TS9ovr72cBuM4^b8!}|!DjP&9|sm~#`*bN_c!{WiRQ-{Nk;i0 z%$}{0(QA~r#*j>>DX}vX9dIK_F|6&MFki)6uQ%nJ+?piMR4OX15nlk;-k`chA)`V} zW6grY2!(Sg#22YKE4icrToh~6N!0F_?!Y;WKU)-lLrkhUX;vwc95kN=gho5V#*EQ*SkfgD`H~m<)_b=x2$bcVaj|MLyn+jy>Il@l&no zWOkXRCwE*#hxCz?a>5s&)I$$4|~v1VfJ;mOTlSxHNId5v!F+hUyNV7k+lUEy+jQywo71%`wMC5}x5+IEW4W5krz1s;-w7)9oW7|`EDTh5Pq{P+6PLZUg zq(c(UQ(6CMb#nTC&u+dSv~tUbPVciTny_tE$QWg6h+NAmiQCrC^7naTXPI-Cu*$_A zmSVTD+U4u_(UDepmJqop@6W?$IeN7c2?!fb5!n8QH^PqCI(&&5gLOWR>?`lXTq9$li_jA=3n`czFj6oGJtXR2@dv+rmpRdA)ye~l zWyr+rz3OUwIWDkKzZXj$)(j4tZy9jWwpTUJ*Qs0H$8isopTN6=MKr$^s;g?Im=|)nj>N zM;|I9B&=O} zNebShv6bz^X->MZOY&#~vC5!;*d2+YRAAQ0C_ktuxl>t^K}o>7>QPG+=)NywXMU52 z%fw!b$g<|gSFp0-Jhl%g8)+=V%+@7C?Z`88m?<9q=LLSmkBh9tMhDD<8HT8D{pSi|6+&kgV_ zhs6F#;#Gk^KgO;Q9;w+hbggF46ZOY3n5=s(L;@ax^GdOXYjsr7_wEM^+)FEEAmGAH zSSET?Yh>vuHGqE?v=7+{*XD=W)ekyMp~)i4pK-3pF~6;T#t@5|-;AXV_0KGM&5m); z1Gw(2Z0;_G8iD}l$kuI6f!}q8Q6Lx2fmG~9B z3Vz^EW%rRM@^qI%gLigC>HTJgvkYE@3vjT%qGfpC)SQRv20DQ&z%NOj5cehKOTmvn zR@tr$RpL$sGL2L=@jF^RHWJy7Jh+rBX#2N*5g8_=9an=1zqH?TMW4t>ejv} z2s4BXNvO~{Cy`i(NESN}5Z8F6VhQfa&C_(;VIV<4Z6^#^m@I|(IKBbq%tz=LHU+2R zzD1EfAerKYE(WUShU@qh#4jvC0W0{`3EOF$zC*|6lE0gk(p1M~ftzDa?6``S$sN*P z#U}(FITnAp4C0C^t2QsF@5i59mee@!u!_=DXDDQa%E6te1>5OX$ZfhNs(7-tZvb*pgnlh=$03%TE<2^Zt&Uh^?KD3ktEl>K80+>hH8}{XsZE^sDVN#9RVNOzv3^{xCxT3!M7LYa!4(kgDV1x)vAV+U>D*7+4CWUUV;eXvv)H`p< zGeR7%kY!NGX$z|Qep*ibfa(@%wfk!kv`0pB9c6`l7$3GWW@sH9DrD>(7( z0tAGvRmdfp7R0#XKS;@LFRC_dWRBEE)o=KcMcL2u50j)plSI#eB9oXfQGyYLsyL^a z28{@`RFu(D+1R-}ie^?w0(4FwDs3K7?$SBr?XWH{tqPP#+?b;!@KlX z{I;*rgou2E><4+FgW0KWG~2$Q(!qYi=nam*+GfkO!^ub)OF!P?G9*UG`T7n{XnsqmrrgQ}$@X!dsb4uK%DqYljZI=T0A zK6nS<2QJw}MyPxj`=mV|ePwt)f(M4EQ6m~pY=+x6Q3sW$*i?b^b=e|{j)x1*b#ZAC z!MD6=kuvwE_}UiO8+kZr-k1mMPVv<(IAEX@Tm@7gO{YtXF{SWZ_JDBy91^_ZW-XSp!;r=Iuc)HNc(SPt!W7145CL z6;YPBhQ~(eO|WLGNJeR#Q?c@z#lg9?JY_I1y4gd*o|loL=!84goZ{3vl85xtV*P{F zV2^%lugV72VHnuph&9TTNO-(nT$H4eUdzz8vI{^r7bU9SDLwpg`D>cn9?DL*xM}*@ z+T~FuswSL?vd$N&YuLrg`iI+?(D(3Ua}69-<3t8SCNIqvhvu_-TVdizV=0g1)*7p+ zGVh?HcqMUqn$GouXstIRq7s$$HVrO9)-s|~lh|<6eJ5gVldC7$+S?}6X&mpkc6Ze- zl1vb2EUSNdjrB_wH9F`kqgXW@3M!=~9!Z5C;WR*mpl)h?&1lGnSj)q68y_@!LbCfQzh69a$R}BQRV1fmNwICfennY7W8G z?yq_0X_8b_V!O%^rW%=xWKbcnS~HC4Tzk$_hzTd_F%?2O^_;FE2O8 zSD|V1<8`u%&ib12b(KzRfkLJ=*rAPs*BX~3F!V|%DvR6~*6w3YTet zT{~B%P+k6X6}^z~re7o(e>r^2x>aP^Nzn3clZ0o!CUksED@2m4#fQhJFYm zzAs(Cm8uVUR~X2;%w`ooHTP+FSL(CC`1$u)w7<)ig*r~wnEIIiFPK`*V-kOH7{tLWtf<0g>VvoVnc_wY|2(iQC5t>w|F^0<0kjzCZ8yuAo*UVGta8ItV9cIJ@;6>g2 zdW%t`24W=wWe>c{y?xvLsR|KlFqzGT^U#@Y?75>I!jBS(76`7^ZjB#%G`nB;Q6D>( zV_lIE@hMLY(?F+3h7mI^EZM&b-2?{h2~&ARZyu4GkK>4y*Xf%%o&#uLTl;(>p3?~9 zIgk?Ef0+19Fq~$!0)iuhtC;Ay66Qcq-@a0*w?73@=S)(cSBjf)8BrjyE{k)O_!YW8 z!aB8aXy!M@b74_(FOFeQN(4i{u7aVPdl1iFg+5n@AHhx?zyF3B8-AD6m%WinlRPHINnTFEcG$R%GF(P1^cT947?f$Neoy~ z@WcEFT8Kpyn%b&jYjAUxZD-c06#}cCNWBXLSY^F@9o~;Tj(b0qJcAnxjeY@n=hA|H z$8!$=#|nO$VIk_%56ubYlhsTcYEIn>@2R^H>@7y~)ZI*lHK`v;qIBtt&3K+J2N+Go zLT%r4{r(t~^EQUi_TR_g&OsYQH0b%`tr#3|GJY{{n;2V5mykVL_kXv?h#ub(0Ee;r z+vcL@L;CLby+pHAyIWyPkrEi+ik5xN)ve#VT8Q zH1NUv8?=*D>9^-dbEX|&KG#ldsQUUr3id*%xZR6!?;3v(_jD)rd1;fY5s(amDn0S` z+6F~=$^K8AJu#u>l)lxfs`V8%vbc*`*=rEW;p(T9V-#G~;})b1k`#TeNA~msz76{6 zeV&b-d@(2MN87I;(;R%$UDz5Ggfh9&=1=AztIf}wf38h2#AHn?vxb>g{iCHh`fo0+ zOIrTYjK%UF5__SPpoM(<6Dj#NifUM{k-s)T4cCC#7fgr|6LwNd0j0q19@*6KYf5)~ zW$;iasVOR0<=2P$w+_vI{Y~-B2OJrB((->-c~fGuB@k@t?Qbe?9uoC7WOf+a!3tzY-RBeNVIOAdxL~P=|!k zos2jp4D$Mxry^tJ=7G>FolJhGN#78y^_M2a)JB|NpT6Viby3@JHqFR$9_AD%@7C%kI@itH1&EUDbV$!_hDTvL|0qGH zEL*uk%RWNV3U|1H%}a7Mg~ova&KgfRy-)a_aEXb)4UL7v-i|xRI}~V?vTziZTtFAu zf8!|xzddW`Evn_xd`$Y)F5xiJE~`M7gUi%nT%*lQL5#sq)C2X?fKD~1Rl!uQ?A(Ri z5EmwcB_p6dv_SBGmlJm-C(cMZ661euoU;;_>)DUd4_jC>YgS38g79hk07GW5=j+9X zD9JE{jm2tg@t%zxa!W0`UKeo|t+TyB`Z4cqd5awzW*;7MsL}%Fq3VEQuQnL5nz?rq zBL@o6AI()*tLpC5u^%(9b(NepmN!+5sx_<0HwZI)>WV28jDhsRYL5wgn#E>*M=MO` zz>AcE?_x^I(%@YWzaEP_x$#bjgG)D7LaPxNG38FeGa3`c#9JeuaOEGBL;t8PF-ownbfB4bs+mh10i1sSX%I@UTN zxpwR$njP93&mj*cHpHw9h8C#X6>@Y_dnR7J^?5|`dCnekFjYlPuYHoA-zze*p#La#1Z(uWK%$`g*#8`KTRc?`a)bs|{<-Ow_CzPoN^6cf3GW zue*W0(>)1DrTHus;;;>JRTE?tUUv>HP4TS9!*wMIpJH+qb0RE6*~O7T9Q-YswdF;J4S853*97Wz<=N#YUFx zD)Iv3jQ|_?q^E1=BXeRBe8$Jq}64hK_s^9GU=4f0SGnL-nl zOjaje+FII_vRyC96i;cmJwCUW2<7WkvsNb&(=F}9TWH$|^=LX)j!3o(mh!=x(Y3-k zCce;Ev>`H0JMqX4u2$mo-@&FgDoCG9?c<}=#TFz<_+i&P_2sUn{(wPh2R4;6_ZR;U>1HVGkRr%Ik zXILOl)#)zI!sMrwW@OW>BZnL^w{%^!rxvu+=M1?zJqX3#J_$_yea*E0jw8Qx0mJsh z)){ZnXn4mQIfCtOh0duj*AV9(rEu6Wts-=(d6DT_vHo|)(=?iIV7Y?%Xaqe3b23|z zdxXSLYx~1E*BKW(@0#$ddd`B`a+;x12|c_uaRrkZ zg(S8N!%N9@ZzjnLZ{!ZavLfjQ^#RfI7OyFVH9^;+%us*S8_0er0N&bRh^IIg4Wmd~ z!x{MM=e*$)(G$2H9>G$}*9Cm-FMycpJD~&Y^3(icPVQ(MjDSxK%yC~Ki<;GZgdSoj z1j!C&{JWM1w7%q8d%KJ}kay5nDbz~(wBn4<*Wz3}3jU-k`ryy*P+!7vSC>CWi%<6X zA#oMLud;U{-=lK(0)pFk@O4bVq`aj2ny$sHbvS3OR0*#l4v$L9r($2XpRvXoIYgq? zP%tUW&<8ups0=#BA?;hC$a=)_^kN}L4~Mfcqv3!DX@VaD{FIVADeFyf-|q`=Sc{P7 z6tua=1PtkAR-aW0a7;FF!MLa@aO_M*K}kB6&245p!Hhw2#)8*u(k^URx4{Q z>KX!?)PE;%ep_R@LV3;w-Edjdf>w$qXi%*1m9g4W3gCk7YMt>{J_n29=VWT%P$XVf zC`^mLE&aKzqlGwnYHQm_=#Q+;_J!K ze+?S=&Cd_1DkO6&u!(rt=8>qxB7$;_svGb5U^TBIFwly!Oo-KT41RvU!0_wzIJzURcb z+1fyx>gqDf&>X|w}B;DhY!%g`>AU{x}K0VaFBD%m~R2sGjFUOom|Hpb9Kpl{2cCV^~AfD z9^N=xDgZq|!oO8yzv673SDu%FAQXrh7|BB4C<@YG;qv|8ZUT0QVDRQL(cmMgqcPW$ zZA7h$p=KV3m2cT+5bv!|a<_g>jmQ)!*=c5gQV$^Ul{C-I!l?^=-YEMbP3&g+5-aie zSO7oW7$*4u5<4*P|2yLZyU$`PTG!6*R;J7%kn6niX_xgd$1t~9_gg27Fs#jE^qCB13*DOtY-dq?8I(j zhY;nWV?+$yXGR<3`y{{DRRD$bFUdU>P40Ddgj3`})ZZc}BuvU^?Qm|J8nC}P8*&mz zS22qp0jQbO`YvY&#dW@&ZNApf0sT^sS@58qcFyheg3ft)!nG|C&=G=+<7ybboDTjD z$#LsZ%Xfcq?%^LlXbdq&A9J_~Nq!{tatF?XpL%46MP+b=+?JS=RGaxjC#h2Lkz{p;ceyP-EU=H%Vmt{$s<~Ae`~B%L9uK=E4(U2W0Y9?;(nd} zL7l-=Kq@V*uXQ8F9n=+6HNQo1rGCI~?Cie;a1iyFKs0H&xkgE3DA5XTrxFgEUmvzI zhounGCB+4UbPP|>i~ahwd_j&Aswc8Z)eQSbjn|HBk_IZ`65x=@+^9X6yd&FmV@!D? zWyYF;SCscEWK)6rk$s3_DMoQDg*krWeuq*leuGl@22=3rn(`Wvrf;uQ6r*#pbFcp@ zE5OLzqMMtud5Bq4UnRybXY&xA=58W|ho}0#fR;$q(GkReiGlZZ#=_Db3g=MkvbhzP zS2Go<6Fm(7A~=C!Cyh#4aOFm=N^p7nyz-I{PX2~P__(i=RT ze_7onbMig8Q=1L@_XWn(T>)Z4CB#JCa1l3TL%O3$VO9`ZU?zj!MmH zVn`S4@tUm6G^86h3~3^g8{ZA-)80n)oZj+Q@1~Nj{+^hte~K#Z`lj(Y;oN`>|BZ2M zcqvP(fInKYH<@dr*|jbYe*5LsaTfX*J3G=;Kc@CIk^$o5n1=lmB5w5z37M`o*4ng42-9&t%;@!1RluOFbgM2cK z0IYs7QH<%4AwDL54l|=^;GvTBh)dHd!k>TuK@IG((=THRn2K%LhlRldIh^|a?^x0j zn%l`^1qm>uVr}>iclqs>J!Hng4U0!ogl7mzxMxNSzneb#&ziiW3|#$e0-YECC?n2& zwSdO#&JcvGvB&?$aMGXGGsrGGWwfS~N1etB@q2k0+{6&&FI=LX&^lr!bxu2856;oS z9VKBqrDa>{NbMq)On(c$JcHd8@HA>`wG5CfEvSC4Xdm`MbOpuLt@zw7#PIeI1l`qwK#e!q*teZO6$7X@-hkF1w6w1(fLErcxI0fZ;{Tmn&*qd@aZTM zTVct_+gXtms4fkviG|>f&sfZMLTKUl;Mi8_DhuP5qW$V#6d5hPmBzUvdp)C-=>DC) zz|iqq?&%*&c1}PJZq^vG&A&HfHJ<5UhioUk(55|s30g3v+eTRCwy;epT=QM?xcx|o zvby`7v%=rcn(w9j%`gmbCasnFR^g-LR)I*;Z5PKaM?xE^EaDfW2WaF(eaRn}8A@xM zB84gA#$S}RFs`v&|L;TPaI;M1eFKhL%9msDc!zK3d|L>1_8LL9){G!E3~;Db)kOWd zVx4FS$4psCz`cy$NtmPphPD6<{~s`Ky_0R+nXp3Q*fZ2y>IsZ5^H;#AGctoZnTLpF zvr>}Q@G5N2Pv&o-8*#iRjY;Y- zv`Fsi3yT|5{$C(mW(XX5KV-|Ke%*KTKm}jjUf5Zz!_ScNh#=guq~QIhKrnK7bu?*@ z+C-KiVecD_ndvn%rRLw2+`N?lmrEf>iR~N;PVDmui=DBC@=SWdcuW%%_jzkj{Z%w) zZL5hVyTnkfA)8P%t9bkG^Lpwk9Fci2g5CA!*b?ndY`v)lR6ok3{JiJ(zns4NaS{K& zT`b+bL@F9}LE^sK>ERfk)c?$Mm>_uz{3Ca??W5wX7^LRZb(rrZBPm`C%s^#eX4sn=({SeGx=f5w*9 zu4M0+dv0ZMs_GDRP|_# z0y*~0=VZwrqf0X-Di-U_fy!%J*bZx(e-fgWvI61NNH&TmRTA>}#@t?s*;G9okOtR)rk?fm z2y|h{z$^djS2=z{JI!p*U-eTmb&p_GpOW zYph7)A?vX`D}a{ALoz{$SHUXedVe!`k(6;t>O5qH-D!y7=;U_$W_h!{`Mc^B3_ zXu|TYvFCdEJ8_YbT56x9gwQQJx&2KBOF9uv{j&~MrDf%4Q;M#&%qvr7riyMJBMlY_ z$|OMlxno(+)oFcUw}D;c!aBr$hMC3+nN=;6np>ePr<9`Rn6j!G?eEr)67s0*QGS2x z-mpwkeRE^}Zk|Y39?_otl%*&mDGG5=`G2s-Xi&zU;6JS~ibg0`yS7g_v2zjP0SMNx z$X;SD^(jsm%;W;j^P&;$YcUjZSd8ZjL~AZsA6sP*`PTPoQz@v6lI{bRt23(50GMdtn!I|_D zMG}*ZBvslM=1hOON~Ou!p5WUx_%HEo%ASDZvp2`dy)JAinbSw}Ylpvfx-xQ=hx=@B z#XavczBLAG;5K?eN!*{0j9~Uz(YldpO ztP9;zv6V?U1CEDI4~*;yN_NEwpY^$}$vmWgtKt?s0zUfNX8`FfW2`T%64(OU;ccO{FiPblQ z^>Bykc0Hz6cQU5Zsb9tiD_ncU%eU)`uzD41nCyC$UHLDrl;cQCm%g>kV?yIl+20v^ z0pIw$Za{BMN)+23aSdV+FOU!gVv2(Hd_1@c&@ zV9wOdJ3hyB<}0zCTgO50VQNn^HmNbdB!b5-x|sUc`FwF<5iY>sBYE7A*R4PQ3?}hU-+&GGu)~rU`rzN*Gw37 zS&416_ju!zNO-RNT|H+z28+dRENSkEN||h?c3WKM#AI>~`Z+JFh!JHZ*{Fc%NfCk| ze)V9K9mlhZ4f08_UlTT3y|zm|6gSXh>fJ~XZ1hZF2;_XmbqNvZ)aSVUd}tKdu&#B(DFh+ z+uT_E4wbk6$u=mL7OL}dcxw;r8*b4p|F#cixSU_EHv4g8kI_gChuSxK!O%UiK~IPX ziYy0dkTXSs;9!*yA)z37N|)dm=-0 z@ti~{xQ+R9JwjIBM+mn(E8-Y z6S3&T7@^^Q0x{fP`b6!6I*e2mMj$55w=d4k^tZoeFD^SBKcCD!I0uey!2*%I!K zlQi}rvXPc=w-k5eoo@EJdk_x?@>MHa01B$YwfW`)9I+L5*u2gK(*yw}W0#%Gm(t{> zQ2a!0GXx1!!H$#~CYk<5avN0lT@w+nVkt-Y&UL(I-HtazhflKr6RRo6wwk;6sSz>o zZ>L^(YQZo@-M;Ix{q0G4*P@8I%kFafuIn48;;swl+HhH!gtt%&W~r5GEUTqSguAR3 z6uhQ#jHaqARjyg8XcGpK(Vsi+wkX2H_YxOGGOFZ3#|sF7nH&95v#7XvU6{#5P_EF{ z`g_V+KUEW030teg&6QB^)c$0-` z#9W+fQ|fee-d+^l{B?cDGq)pw_WLXPVi2>5nA8l;JPru2Iq=N=2+ZC^CvIbnP#+td zC|YCwZhf#L;)^Qn7#pl1F~U(Qe%7m;v|)$p;p#8bWnjqU9qhqLd8s2E@`zX=($qye zGl`Aw)setKuG9F0dZBVOrkWc920}8kCUt^Zg^GzC%9dsFq&qU>L_i$sGj#{TjG_~+ zj#_S3NcBimGRsCXx!VHCSJMg7`SR2q&)S1>sh=HFyQ4^kopLPhnj_kIA`MQ#^ zMY~jrM6AGSiJ-Yt*+2Z&hElcH(U;7`9^{MGyRfGCGv^Q z?7J{Cv$U@c2fq&TWl{jQH|&gs8!5?9VE}jJM&3{gebFs)?olOm+A!})IK)t?U5L{H ziYT3|gB|cf`-|COZbv{sD`U6ls4A)@>TEhpm1b)E;{cHi04&6^de)8I+Y>olZKB${ z)3J2aU0zlZ?_qbO7(Y0f7gfVuqP?+QSVRBB@dL6 zq|(UQV@Ujc1G>70(I zSaWtb%l1DTD_RG^xAUqTD`w~w$dosc6$T7sb@9S0MLQ(8c~T|=<9&qoW`BcRa%Xz? zz3V|j2-Qv@WK|n?Xz(%qlJmT~7jTPy9``L7w`ejH_1N6Q;Q8U_g>X$y>`CV4&k~lE z{Yoe;9;&ky@D}-KsEHv19Hynz}+f zz$q%Tt)^`mf9xYQo#uSweWexZ6*gEZXp8=?0Jlr##C=jexNiv{lsb|weL3Ke>J~C+ zj}~b^%;QsW z06T5?X_?V&FJ%t5xVh@<4ouqBNFc;2pm?C4yt(xVKt&s$+E~JkBL%crcqcBNm|o!{ zy~2W~xYJ&g)vV5CDC%VS(D|WrT#+pFt^EPge>sUYE$!8cGRd>*Pb3BDCY&n$bR%Ly zbZ5US`aXbcUzH0yhsu1pd!hkBf_$gVF9a3T$xh#+lt8a29|!DRKv<0gFZ${6gHurK)ez&dF1KQI5C-ZDY!?s!x7>geFCE zgRejMbq;z0-OGi&#_#t9d2!7ZIGBUOAw}Q5;A?YFP0OgSlE&A;RgP&Vcs(=w#AcTY zhO!kiq+Fmtdk&pAWE#|+*aa+!mCI2@Svs;nRYKMU=o;4=o^0X>lgvl22EPcJX#O zCmg%ahQ+7=iui{jU(8-u8rA!u;M}+kx?k?l)7!5ION2Mj+=X($NrD?ZV3iH;rT1EM zEB#q_?O{Tg>W-Sc)^$-qOJ_=jDlPG$UnN4@n-9EsUVbT3YW|ejrR^wDQ;8L%fH(3t z9m?0;!CE`>wL~coq8q9?u7$?V4vTTuIr|^n^3y|zKXS{4yeY{oOBGA&E_V9`rNN~c z3)vP$Ie0R!Z7+g-(@3^BbWeYP`HcuadHd9 zAsX8}gO($sJn(`|9xok@dS64S0@V)<*tI~=ROb&uMn(U^zvD;#5$~U6MFQJ@H}nt+ zV6-7X{DTVMTZr{n^+lY#y?7#tv5XZA&=TO3Md42EmjLT73;4KOsE5C44LLXBnyZZi zPg#5Tp9N^=FF|7gn1)fMVLx=W z^}f)soUNThwr^@LWRcO#mIWaJ4y>iLJbOKri9`)?kCv6-)X4MLVn1RCeg$^m%_U$x ziQ9e)ETpjgstH^v*^g`q?#MRW<wfa6-bTA5n(uqUR9suUDX zy1pSr@uV;a-Pa{N3__=B!m2w#y`H%}A8Db&ySoS4^SUrn7rE+f*%($G%YC~1!8VE8 zLz;8YRg({3%8_}nn#Fg(FQjd~>;QSWVa}$|u_!9cbtZhCBU+>d=R0unM@Fxf-JGqnc0J;UnDCG1kVdgc9A!9ZJEmt6fA}(3aw!Eh_P)i81#ou{?+q7tBec7Dh<*K@ zr?OglVn-W}=!fok*%xx3;L7GfZ22TOsH#II()D1ltoy5^)^$kF7= z^8UJ)EpKlGHLH9JqNX8ldXF#&LX9UZ{oPqDez+;AoGM&@43_Br9b@cbp0f+rWitqc z%i+YnL$9r*;msu$&W&C;RoTvb0sM_E0}AU^%FzfATr%z}#P(BmhS|hwm^x+cFU>yG)QBQeyQ#r^=kB%2K#(<3R#23LS{~kmozcLR9?=UXwTMGqMcsj zxN+Ar@?;8BA;Gq>`pw&4;wLY5xC6$LyS+E`P?lH9JJk0YV;GbWs0+`P%AV$qH{OP< zEtZ!kW9F-5ikREfRjYR}2sgMfDCS`lB=SyBfpNCSwu^uPqBN&cglyud0xNLgEcK3i zvgHkB>|E;G8zRTnBFn#MH_z`MS90??-DgT{=3W~#9f`^t@T$}?`HN9 zXEgGNW12}fC%-xeW}YQzv9VBnLquede?$XUnAfcr;f09QnT#`_C7i+*=+%)qNQUD= zlzpCW_4n|Mb1^6o+|0TwL=oGG<6m6yYUs?*c348Q#1+f#?t~!B_;wo?qSx1+-)!Uf zY=_l5TU>Ef*_;qF8UD=`ui7|02b4UPw?+_6kiCtuEhO6h&O5IBHqP91Grf%lOs-md449S@dC) z)-%Uw!!fp%$i=1%^5Ky7)gi3E<4ru?#BZHmfZYP*I@_mTu8S(J&gpNin-+_4=5EIn zxBKO~Fx+~(+t)=mSl*Z&j~4IT+ytZT@XM7;2wfch?#h0f>;BeV3AfqI8Fpi8$Y4B2 zA^x3@Rm5!GjtB_zU)5t4=D~9gC*VtrVfUFssI@I?o6vFFVgpKkx%K|dzH_0X(?|=Z z_YQlG)jB{yrL*#GjNSUWZ+7Fhc9Yi7h;5yC(#-olmTNU`&P`VIcF+gg1XCTm5kktx zJD?y4G9vg0C8J4>>%@wL^ZZ=k=j=OL`;L@>sLGsF*x_5`NV>^9)uRg`K+2>jipsalA%QJ+=9_suf$(X~SCtSq+n8k^1s4Q`!% z2VD;(KupU_OY-=>N*+v!Sk;mkBuVE8zj^-=?X#eLelO`uA7R5ZiFB%(=ALNV?9-7; z;~CY)y{?;#c9p5RQ}1rdGCL>CM&vw0!0f$iLc1Rl5WW%QE$q}k&pLP~ zJ9pMK`^s8L=1^H0Y^PI5vwQg?YNA%=PX45edVzJV3z7;yr6+DCA~Ji2;r!Fufq*T4 z*%t92y+xMYYO)SR?cW<}Ld~Cs@3mr=ehdA{#sOUte^{FzW>-IG@Nbu|Wnqu9#8Tyg zZ{4pQ7;OG3x3GgyH>2-En}3Sv4q{ZP+S5!j#$WvA^y&+Xx}%z@RoRZj2;E5O5FyrKmFhzofJ?2{P+%qEZm)4$%#hhmqo(9Z->U5G{#N zX@?klzl{Ll_rU{57rzS|5`4VkWR~5rc|p4e4E!0y<{NuN8ZV&78q5%!>@X)(LO`@X z1=a`bNd2*(Ba*_t&~(vT0{Y2fP-qmVX03UL5_ddI5}@f7OSIkiyK(t$y5>!Z$7>C= zcK7w`$b#Gr|6IM80bYs!lb7#DL?03{3Y^&MP#1eXljrFXz>0f!!CtY%o9!Ra3o2SU zolJqAUP6kI<^MushlTTY3=4fshjAs}INf0oo4R>B27W$Aj@76*-OpO;8w8c3H_2JZ zJUtZ{Y%SV+3vzY5nY3-k%(8OmoOW&B51v02H^WV}~uPD$C8CRX#b<6>867EEe;z7|VjJeFO95bc!!u z+550m2!JN(2$m;YoOmIT?ny8U&FoByRqSTg>y?$nl)ewgv9~^ii|5Lf#Eq%*VZ;?S zDOeACX~SM2n}u&`la@uV=4~^q98>o&tji9k_o`cigebgbadLZLlo1t~xyWl!lzNoZ z-#RaJ_2Z|`cCqN$f$;DYIWx3W%fXrO0nZI-bN)oF$gzw)-$NTjVb9r96yUt7mt`w; z`~S2c&}BhjC#ai|ia=@CY;Slw1^?Uo->$ALqcJwFv-?-;+LQxf%6}E$@891y>U3?@ z_(8^xuB}>(ooEt(*y{ddO%Tl&@H>k(*8hq627>_SFNUOV!mO#057gCW>|D4X$Ut&?bujK1LHr3{38f2q< z+#u8O46Ct5G}>T5q=un+=|zDd%Mnl~LeC$7PPTywxL7;?9MMrseqY9O7Zu7L43Zgu zcQ6mHD$rzDFYT-*YfxEd54KZo09%LPTJ5<$V#6y+b}ng`WLU1;)=mJVOLwqN6L^}| z=FP%yU=HC53YjK=T42`FU>ck-OfdIP5j5=DE=cTZT2jZ zw<^flj7b&y^F`#t0oT~z8mZVdPCs7*^MY!RKbxOdWxhHMR5M@I*TIgXZ2`4l zhWm!Y5@zZ2+62=-?S*z9Z|DtYuo*`)F3oqL1hSM0``ZQ+5mQpgOcm4l@-~CxT|V2q zfW}<1sJ7Sl9Lh%Xf~il~Xl`IcXRT^}5UfQFn$Er@ldzp)T~_OiJ(ofw_Y|zw{?hoK z7pGr1d6aco>dvTH+G>w3;>nR6K^k6E0LOc~+{YpWsfX~mVumormV`lqZ~zIbw8~Ox zZ2vb`_A^+LTf21(4OjrnawCne&CZH zRY0m;Yl$9%UK|qlW3fP;d%_Iba6qr{9wyW}vd0H{Si*4y8n4SX7Ex!s-Jo9xU` zfP@ru9!P@NK+T`*tWah<-T3iA2tuPlP>{G7+Y#7GLRVXeULd%ukKgg4ZU9oz6G*Q+ zlr;$z@%$f~fTIjfRG2tZ9QlIJwSyOSnx!d2tLcitt>5%7RGPadOEoEkVDi!@1Bdz1 zciBp!t$lci0m}I(;Fk3Y7!BDwR^sUn%8m5;MWADPtZqSfJfQ$@7}?C9U?%?4*4%sr zh?yy49W1H>yr4EAscUK;1=;8M_S3+CrNsjCoocYx7GLLz9i^S-QP-w%XN1T zHw3`#gbv+cdU7};V6aCiiwjh2wTL3UR=7(yd4h;iG(?|aosl-_h|=tlJ(EJv7AQ%r-ily2dy7Wg=NM2pzRn25asITSAH?wz_8S_qy^Wg?D?@}2k ze1M5U6n>)2a1I1bBtXVe+vzYIae5BOn`bGBW-F=b)m~sd$ntjwe+f7Tq`ixwLmy4g{o-fD2H4oshgkeNuul7FO4*^no)Q2%PygYT zCSM_t*GTENMdVF=jHq!diC|}ajymO~hmiwZs(?MzNe%I9Yc$8f%UcJ_Aa;RJsxm2x zunPiWD2r(mPEZ5#?<;{p)20PcD*)$a(@a5dkvT|NV*<3Ra@DsZWQV#lpey$kjFY-S zc@*_ERUjSr#X)N*Li|t9JA48f@({rdYQ&}Wm|{31HwsZO!dw7!-ZS{0mw3|P*S%cS z6_}ZF@_4rpov%yE?u{B$Y4e>jCWP*tL9oXF^4Q6qV(EjNSpE>{R@J$%gFDu2Yloo# zkXjDrP$%l<@^afPix8O{s;#nZ4%KK##Cy8_kZR}mjF8dQ}Ty(zJkPz4z&U_*fCsYn%#D8 z>y>Y{Wh9L;YhmQJWzDQi*>C2_xLhR=wixK2{iDma6^f&~a#>JIr&q3Fy&ucHu=|&w z*9vSL%b_pJD4G8IvcP&2W_Ndbd#iKVokRRMcot0?Ie_F#w6Rfa#c)ixu78<+eIXZE zJ-wnTe~atQZD8lIgdOIAEnI)jRKgTUeV>q~BJolOV=`Ufnu`2?jdC6o@O9E9Cmc_W zH9ocLJVLu>9hRm@b>^f3WWxmvJOFv7fC1@()E+U03Bstg3=ny~ITe2POi}*Do**RJ zKL{YGKd%ZWmc0g*!wKIm`E71Y?uXF^NRY%M&=X`^=u_@Xp1gIBc`rrpGLh1x1R2A! zYlZ(hX`55AT}G6@wS=eCK+FeZ6ZpUG#TsHk)rFj;1yq_=zdZvMZD6#50#`!*@gGsd ziq_b60X>JlLZh^ns^N+7^jh8BEIwn&=ik_2x_9#Y-b_^rWNfx%=pdB3t3y=o=PL4O zQZj-^>zYSi@@VsT+6Hs-Yjp8>?P8B1El_JQi8-H86hT|NCutK5_IRnv;=@ z-D++?FW##M<@3IggdL!c3ZS+Qdyguno6YM20e?M2FW1aI#;a^Iq!*S#JaurgFjYI7 zO!P3~tWVe(+ht@TUK5x~^4ae+2h*YYf}N5R+3ejVoJ9J9-+%3{jDszu6Di=?JEohF zJC*@Df;j_vH2!ds!>S{N?r>ZN8G4y1$+6LG27j{A4v&vlC9EsZAViPKq(OV0avF5$#9oG!zH2nSoG7wkF83%LoX6ZZWl$Okeeiz}uYP zF8D1ilg;~?)l(jh$=n_TUb^T8qJHJz*t8(k)zgyFqAL-)av#Sv z<3-CDh}iQwB<~n+S}b>E?06}+qhk_3Gs`nGx6YJOG4HML5gOB4@TO}_QlPGDS!J-O3^vldm!8luIQ#8wANs|6Ye4^+Hho z3U||1oP8`ZUjs>-0LzkeQsD4OddnZOQ+S9fa+T}SC&M8+;qdm|fz&eT4S`d+ zYWC7&50RlFPlAd=il~*=w?zKz6e;P+j)7@EQmp|KsiQ+8wWOW#7vgOY`ZyHSZvhK` z7vD+DLwon`OkH*=>T2%5hXWZIL|N-dsl}b@1CHBY9p@X-yvxv^mPcDB({vGglMbLH z2@C;Fd>NS83qbW+!$tf6rrly0H{T=MkR*7_*tv7-CFDH4_GHx`LU}VWKn9~(JeIeR z@UyIc{<>`RA!Y@NE%|?sp#9K}5F)2~DURAqEXZrcV|%ho7FdRsO#;i5uCRDhS)Mg9 zYG#*4Fe))^UdhS5&SRxG@eO7QM%(H{Hky@oAI-mCG&f}sd@^>UY>dmOZbUsLS967lzzMEnM$nG#3H`jU+1NG0W@|%u z2ur5_2^!=T-2JO1K=Y_8STvhEnAT@R%BSXxnnj)h-8h)HQsVzyfNV_b32?-Tsj?PI zN$Ht`{RlSbe9%$4;)8%YeAm%HS;tvS++c@rMfTKcphItWv%fy-nr#84x)nLx`P+j< zZ)z3`RGo2F`yu))l7#AYwa=?W;x2p$-vnCY?RBX&F6Qs-#_ML%4W-d*u$hZrccS<) z6*8vZPfcK?oa_ZQsRo4x5GbkNx?2e&whgA=MSO(OXh%w;e#Uet0E*lbTRo|g@T*$} z#JI#c)7UxZM8Hf(Q&@sb8&I`hW+c8IM6Zw{s7`k9wz>TE<4OXijA&A`_rr+Xsp#XB zs6vV=DV|Sw$enj>*KZsu2XDlU=15{L?oK04T5J{6C3#f zWEVh%0?{YS$fuD@8S!lyi!P7Wq!6~2VbTce#UdbpRi6d)WfuXIM#w?EgUGdQnx3ot zNBTsoAY++EnyRzdxL0ps!MCswTG5mCGAh=P1LTI+GTbu#Fmz&l*F>OYA%q9+$ayp7 zEHhc-rC3I1JHH{|`>)}9uyW0Z3YWz<5N97?Rog`@=1=w?{2a=EG$2Q?%M(~{~g#uGxdGL0I$ z%PV8$4qap1S0`xnW%b{(F?Z@)V4hfV9n1LD>^yuw)iS5LX=91fBHYe}&*O{9z~C7@ ztM;}Ty3sFN=Ck;1{)}gOByC_?7cQJ*^w%~mg-kPdmsas?l%8*E>`Q|*NtUyOKjnBv`rUSO*j?@*Q;SK^1SGfLLxfPc@Etp=W^TZwv_@By`_srQrcT2%p4`KLik z()Tqa!qfWQ7fq_4d{MCu(oAg8@xJy!b$V7%OPlY8X3359`D7Bm6z{L`?CSJLjwJ;` zjbZ@%lI?nBf6qR_9r;3#MA;_v9aY$<8>OS%UxpyTVMa^FR|~SNoktv z8ZsW8miT_%I!;v|kt=$d@>d_an?#RQPkLlUZp(AsuTZ=x4m9)1cCy>;9y(~hW%~Jf}WJ2E0NFBk5vPFCq z6SfWzb9iMbpVD!EnBd-U9E5YV-7?84DeWUHj5c&!6>l&|6n}}2g6&24praLbMMq_3Um#WEzazvCRNzJg-q$f`Fy4BJe zQ4<$=l=K!*&k@u~Hrk%?r^itC`?5Q<(-Orixn0n&e)_E~yC0A8-PBIVuSGYh%4lyB zEM!i`9?O49?$RzY+Hc-fUiz!(PMoy?h#Dq1#KYA?8Dq#hix+F8*TJcDMt#N+Qd~2Y zMxfS9Ef}Q8VHl1vI%_)insE>IIKjBb80ADu=`ok$sUw&egG-TJTtNP=l#%MI{tn5% z8vF0$5c1aCIML)T9<{9*w|t9ip~g$>_iuO!EzChZ$trJiypnLqE99t!gpIDi2c?8XVT0Q{9=@&KqBUQgG31<+k7!2dsQmM zszxcItj=t+$Rsf23yx4{mFy(ud1DBhq&q5teUO;;&oF$rMl9>+wPVX!i)wgTIW$p* zM(|E;EI|5y?D)LCr2o5qx9HE*^BhZjTK08Qo+((2tjKEM&o=XO5|M%i3*R_N+$?t=cCj!^`m5G#?nJ4c zy`u!BR9?-9jwGd^M5TlV`h7fw;sp1MS_Z}G?d_BUc|wmYu|v_TO76lV+uG;{>?|q2 zdmjOVY9r?vTVhwq*jrIZ@Ef_Be;*jGXhsG>^}@utF*}cR=cXp~sh1gqPK#W3O@TFH ztRJx~4)||;H>m_0t-iQ%u*vO|ac~)*CKdBi)x8`3_qYoAcl74HMhj&+O8ox-!ka|e ziA~daF=WrtE8=oRVf8cUfH;5s&8;2{O|OZ2=8QyJj)mft)tBZ=C$ke3c zD^d=C5;;$I*4lK|k&XbJ^l2I_n&HhtW>Z>zj0z+4p}rPC9c3 zO}(I5X2HDKS^Uw9uBI+h1cKBLr^0%5HMgN{Yru-8Hl;zh6+tN}Swek_yTL+Zy-qgX zLUo9-y@LVLNKOnkRj+{w#AVW|3AIip3nK>24$E0%X~Myed_6ECw=#9rs`BeTJSBjb zZ)tAlIVyy)#`mH}Fj8bMnZqUZwqT|^+#?`b6PHy)%=M{~`1B33Bmy*BM#wc94_u~F z`^wTF7}YqmwuSr?#Ek;~XH)6sRRl?{+NYI&+()~D4w;FtdX*Y(up+?-l~T+I7VsjRKpu< zz{jgtqJ{%E`o7#vgk5%6yuHU2LoEhTpGJKHLhvJqxlsfMEZ>%8SZvAs-7xd1J(7{` z8=U^6tE}x3A_4U2jSmnV1-z%7YesyE(b8ewNqf%7n#!^YY`0r6mKj$|Q z?$(p^Imn~k2b33=oS&S2IptDdOpI(AlxrJfcm~d7sT?|pni)3aJE+FB+r<0Yn)(12 z=F52K{xR|Z1X9|xgR*C({m<>tF&1TB#8@EqrHp^L+7yM*OU0y(-E=_{bVU#5~_7^S@iC= zJkJ#Bo`=t&WsSYLycP(Bi|ok+!SnVBnc4GD`mi%WfUI5GFdo0-CBtfPm3D{E@QkWA zpn?g213HIFWC^|~@F-WaUW~y*qmw12I>DGfRl+4%6G8E3-C5duUgew{1$$?pnMz&= z-Wb1{Eu^ligD!T^xk7Dx`!b*6fs{MpWeOecH8rh!a`_D2g{TKEVwF3q7zf!DZ0WF5 zYoz(oZ()2?|Am}>O*oG973)_R(vkC1GQTF!GI%+0Jn6{!6;G;{xyug~mZo#wZ;T!_ zK`bISG?Q^Oq_FvU=ER{FnP9?RCQQ3ZE~`H80u)2+wHg0r}0bg(pR{z5VK7;XX4bE|tOk;z5uINMxByL4hHt1{~>@@;Ql5I|^a4xDm zgz5?|hV+`pZ0oQVO^hym_izf(1N`L$2G4OMc?%qryp_XtKc@(l=`>jDI$mdWHRnN7 z2g(X#S}UiazMQ|JK!9s2)w)s!U?Q*pH$ce0{Kv30TJk$?-VbdIDmomT(ZmfVt!_bN z(h5usKKg()mhfeCZHAel`kYPtoE*;S(=5h0=01AJ=^Q z_CuUN`;rz`q<&WXnJPTCAyJ$o?f%`VHS5>B=xCG>DW~@r4LI{t5wwd+OIFf!659lg z%_qVOc$%QleA99-=E=@3qu?i&$@brn5M4mC-CuS19Qm0Wc@B71{pEe+Nv2Xj3TM2Y zNwbc<2#8BJrT*@Lw2_aA`0au8YluG(1I}Z~B}7)!5+31zMQWj#vf8X!$Ay_m1^6Tx zJM|myi>Cxp4E>xFl+s0sHF#QATlc1dBM43g{K<{5>FGT0!HmVS7IY8u6anmhaz zB9ajOK9j|^58Z+$$}E<9v0tooR_42fJaye~s}Kq-A9{(s3!$_PyP-6b0-*i^?rP(_ zMa(L29i&s@(W(p#=cNtjZyE_r)J>#{JH+yXlcbbr*#z=-9zACKIt zzJN+fEp>L{v-skYE5jwpZGP*9EVn#snu*@jGj%%rHBk^{#S_*E4G#j%KoM73VQiLa z3<$Ug2vki}@@7CF{TVYA$95hA{StW-rJ9Km`7_KCIU)JfLSNOaOcE#xk~@%6O|e*F zi?6j0(K4LLJwuNRegR}8szf-AXL!o7*U!XpHwkftYMGmHHUxfw??UeSzXguM45A6fO1iOd_&P1B=yCM0K z-nzzE)_%Fk>5&D3Il0m(mKOC#%wfZ_P6NgZ(`^#Cb%C}XCmGs8b?jvJJ3?XSF1Kzx z2$y3CRetP5qHt%JCIPabu%JYisEPYq-vmSZik_{jBM2uX%NK$Kchh!BnAMb9mVhg4 zmKcn{W8Izp71`6$k}NKBsGtD2lS3X_(2wqEgBhKfqhuyKSEyHx0_X7YRrqNx51b!E*d0A$_GBB~0QMG<*DM3t!b zB|MN$?is`CSz|j-_M)Uh7F&O$Xuih1*kHY*cuDTY&Woy8FW1BjOKt%Ox-D@n#QSYBM%-N>93o+) zs|THi_1(V7$L-lS zS*rl29I>-Gf5W(gCf;`oW!Af}9x*haOhh%eV0vTbM2F3+9*y&k7O{{}Yr$O|o})i~ z(~L$l9y@#i9>nn2k_n@X;M_>98N{hkbmWgN3X=e7Yf;d@=dEE&WG6B^Q=z zEsAJu#w3-YOBpcl8)KT>t9nmOv;IpU?C$%_y)o}e&7YqC+J_Tm`Y;dd>JfJRTb>O6 z^Cwe4trc7#q`Z7W9I~ZD31tSu{%$)M+}r}RS1A;JhDiaVOlRhUUfFY^Wr6O~IsE8E zi>~|{b?EFdwL2H&-eQ||-QU!N=FS2H;rnnm1|*;AG{Qv$2koYv`I0_fNtk_gFi5gz zBV@iF5u}6}($e7{5h$NPj+w7(U6UDl`9j)n2?y^YC9is7xKSH)4(9!?UXy*lE)Sb* z5lh3B%w#XYP~Ryg;tKj2%0bT|ElnpALDQ8zht%>G;sdSAkncp665^aC3%66GE9C_c z@*UaRV*JbqIJzNND@|-COjrIZYk)1|HF)qk^`NU4a%Zw3ZI}dysk&{|4BL`i$Y6gK z-V0rFbFufeDBnd_%k$_S$qI8?<>X#bir1`t&M-o&?8*izzJQU_MLs6TV_1rGp#r{N zyP;m@a!wT$E#sr6L5-Kjg?~RoATZ_(LG{lgXH;&V(TJXrRZBOlQoFlxhK~Ej&j=B8 z{!(${jJl@Gik-2I+~XlQqY<3pH@Op>A(4u`8R%T%U_CYAX=@08XXxj!eWuy>0YQOkyPu-)HXX4qttS^QC4SRQ3L7JDeCg; zvlm1RJo@E&0GF|B_De%M68X|)H4NY#5DJ;Bkd~gV^qwxm3tV^lNr;lMEKwHA0lw5< z@s#ySXaLgO3XTlX$&Gs&0{^x}j_WORkbv^biN_p|1auws<5%BJ!J`??3yq>oK5EP*Mu^Q1ApDS@ak+^1JX=zVnTuHkf8s^3qDO zF@8zi?8LbPR;(*MvddA7LHD(D2q9`L6cUGEdfRB4S3Dv?pAvWXrOku$@qY> zeLyhUB0E$+?8Ph1+EXm=tpxwBDiBPrL_a0htT;G|iRGT0Fpk_>z*bAH!UT?#O9gyv zRT(+)+vqZEA$!^&CW!051Z{(2x*&i=G@8#pVuuA~Dtih<=WsxCL`~=ME~355q?zc* zxFLY6Gds9p@RZOI**#!4gCrHvt@=Gm?-B9q!fjF$xr;Nkr?_3`gv!ST69Ekse57*qPD&)xzYR`g_9r{b>$7cEgON3XrVACyQerjD!*%@QR*K}TmLgRVEzy_Gp z{r-Aw(cVs)N9P|rU+uhiBix>!-xfZx zDJLikZ4FsvVWu=p+&b96robO8PY7G86JO%;{Z|4p#aP&y>Aa%g*xWbt!Mb2T#UGSyOR*n)Sigh?av2O?%#+5O`0S7 zuwgs=@Oq3OO3*Y-_{fo4E4umw2hb;}~soxC^ialzC;CanSmk$2r6 zEC5%J>+lVz=b2|#_UcoSm7=*BAhp_U`^X!z#ugbT7f#UKIv%n^jIOpXYqSn!EFOZ7CKzYZ!0 z!!(g?2;23s4JWa!KRr&UU-A#fovwgKvGG#`G_pymZ^9MoYl>dKdavp$53=#Yf;Qm} zKkvL?6a#`#y+jF&ECjXCUvrO42EVcz)XKnWZ6~ZdTFN^3wfO*}f(O*+{4IG>c|>BsUU?_bqHvOSwUA?c6K z7Wx)*RT#b(c9x6z9+Z3u>4uAapzCX@)%BXy)c(%$5WidiEM%lBIERL*dG1woL5T%0+YRQHCf8NvRh8XxD{@_o?tKbyFL}i7{y+J z6VNw#3MD4uUFT3{#xb4Gu|rrqG@nb1R836oH+VwQnCnwN;QQB4_;#3A`s=zlYWLL> zqg7giSo`!-kY0>UDVg3MM)*)4oYF)W2RHw zN9Ufu;$NtsxS~EeMvqR(z$6^YSXtR=9M>urWZBr-^ZRJ;_*T|}!)ra)OPrf`Fj~v; z(Ym$wh`Eam-O?U>;r>Rfb_*C|H-VUU2P9pF&^HddSo7E+d5mH3oj#J+TnU&xBz8Qt<%Pakys_DUWdmsKq zgC?g@%ttMTjWbLh+qp~h)kGpAo9Co(6fCLx+9)s*MKN{5gw+pxw;k@H{Wn6A3p`!L~88xh}R`$eLG@Lz941bgkHAipz)Gas|v59zus2!Osu9wrKa*k^HDqu6+l!Ur|K3_ z?m529trT;C%?pP^2D`f7zdPG7?70^*Uphw_7CZY0V~MMoVxd6^B51!|%HPQ7x(e9e z!9!RL>X3aq<=dj^ui%-xXjAs_raa}OdW;&Ue|gy&BBb7kPzW-Wjt#lWAzYTKA(xYa zLKD_mXx78Q-6x2L+M#+HRgzs+y+|pQ9O0(zRY}F&AibCBvaqH^TlAK?Oa_LpRof)( zFdqRZrXDXXYrk|u<{v`WuPxmT%gz48r={NL*!<0I?K`DKI{O9mo8EHt{xkG$Z7^5y z!`nNG+IiD4!+fx825S|wBQ*lJWz>M2brpyNiIZ*?MDCjQoCIC8Q)4ptvc`QX$z=-z z=^bU9>auqN3JMFQJX$Ek#NR-#;5;6WXwFJDimu+JpQ}f-y|PN(jLwXDVZ3!NxQ=R3 zEq*v_@Iz}p;<|MA*ZX>`Q zy}P`{;z(;C4(kYvx6wGiYve7hD$~i&Vbi9_@;y``1yf!!sttQE88ZimAf_sQKq}_9 zt5!#LIi4pOLkFjkMP2xC1@gEw{K~3m*y-q-N7TCJ3;V|QE%B)1ZHF~Q+j#CqS9s1w zfH12t?OPokM!Mgjo6}oltMeo|8lPPrG|(W1KOFTUsCKDaQlcK&uqKE2p*ct;h}v}h zEU`$ZZNeE?L_FhOOAz2-<2^QvHw9xvy^|nzh7!Z}nW_72D}pmM=P*9g%3d|RBn^jB zus{9DLQSSJlc_L{?|nq1m44CH>bD#+Ejo-lwBY)5M}RgXKCD3TOIokmcw!q45KEmo zc%m)vz?EOOJeCw5x6F8@omf!f_g<52xO<3%+&bDp#QNLcR54Xrv91Ibs$T@sF4+Y| zu2j7(6shSOg;pd8t3FH+7=c`?hl1BZ862NYSTj?-Xt^9A43}TOsx|v!gDgSkj14tM z{#l2VzS^4{9qj9x7?7c}>ahXTqf|_PfTQ;*4EZCUlw&a27}wuy)2!M)MIRXA^XdcN znyhJtx0k!~A!l`V2W2B=b0Ck(~rM^q&Mngjkt z#!Ey?4oi@B?ct`jPfMZKNV_S5D!Hj#l>qoF#FkoJSsoCF`uhj$aljyJDt@A}0hU)5 zNQ%3OV%>pk87KLq5~m_t`+1yf73|{&!855RR%%ZForj*pwg=QB4 zxrC{o9C=t%4KsQWuIrG9PA{V+Dc)5wQL1Ga7_vG#cO?oHnP?V6@r}ueh*tkuHWdCG zI#HkN0~1aHx`b?y(xExZaH;f1bjlVefWE+NsiJwFK@x}8i%EjQWqoD{F4_>iHf|Y{ zl!3Yu8j;SnZ5D|=kZOnyjcV6>z!`x^-s$EZux4Z$otK{B?(0qNvLL6%(4=Oj#jc{uk8jDCCf4=-nz zvv0^AGkIPcWz}`39Wznc;~SlpH=Wi=Z<)bM$8$i5EiRFi0ig$yz7VTABhS}}w9BNW zUSpkc)p=!XGUYw$@K;%=v>MF-A=jnb;Y18_Ef4Lg-O2{L>H*vo-P0Rv$2Txs0g#kL z;3WYFTvuKFTUn{q$~DftdVm`S_2ymGL=N1QEk>q$M0TuEhSCTKVYi4>H1f6RZ(!-$ zi;3XBacW*w5$=Q>-GgDBmPTufOXX?^4q`LzA_rB6n022r)c$SjV($Q?P|NXPgtO}4 zSLvU4u=f4ji^{xxZ}=Vnvt|(;7;pJebiq|xF}iuH<$4&PLu9j}(G!r_M`Mi0KNGpn4%5Uo6|STU0a zej_K{+FtTbrpv}m3{G-L9;!3YS%VGH1_h$S;ZY12dl_RrsORa+=-%vW*wKowglm0^ z;UlT5^!L6n%f3jd|D0lZoXFu`&!CfS*c@mE>fnry+;6mhr|!tnFCpi(7yZhRGwgtM zDVis#TGiE6Uhki9;-^V<^XKsCHeQYuiNQ;918Q|m)VPXRQR?Ohn}L&f3LIG)yb68k zyXN_*u3wWs;5i`?{9X~ch>;hjquq_k6q!Y16xX4SUK>dRG%tvMOK!M)EqrI#(^;Ef zYSIue_e3>5ApT@yJD4Ml4~1j zGKvqfCc^R>Ze-zdx33Xqe8({3Z&AbRJ{t>NFJD;KllkzQfdqlHN}5iON4)Twc6jgC z_zrCMFEO(F6ez?E82J7_uBTSD@++Ig)u*z;z>_%B=(bR!4j~#BHBzO2j0aF!L@Q{_ z52sbmL^4s@6|DiO8yYK1SEbw#cQZu!TpNd#e?jWaf8rv_$#w8;VAxp7B-T&q$M&E7 zSgB|4DthBC*$D}&yLo$6BCk|0vU4v>fEkY@LtM+-`R-o<=+;Zu;40nEjTw8`vf2xw zpA5*0bnZqr^_37TVmGT<+p#Rku3^uK8o@{Z6fLVVvy()1@8kD1w>&RR71_!`uEbno zi!4)nbB>w5ybf3}4o2w)=_RYbyLm8GAWSkxF02kt(FpgR?J$=K)Lze8ISt_w^)a9bb=0c57uY6?ynXHC#NDPFKF-J)XA%Ejc9EGn zfTloyt#|SK5hidBf1BAOB{YUH667rytVK?sn%y$mRSW!tNyJE$B~Jt1^^%n|nUSe& z&~Iu2^v!q*!`UQH3ezBeU)}JLH{TvPaUZ$&El+r!Cj=N|HuYUCKn6|hAq|D}@y3s) ztIYH5bZfnrL`(*5o+70zBH%KH#wFG`o{)&Emn-4oe`ZUwZk6xg=sEI>hHaB+c7bLA~+hxXh%v9W;bhRSxTxeqG#Ej#84Ue-hY%~*8b^v zb#LJz-IHyF8b4e6RxrO=!hYACbfT+qbCz3)Y<;sGTZ<iuTK@H2i)t0o zS4C>k6T$|CfjkG1u+Z;-Guo1`n<%)qbg+(9n~1lfZ;-VY%~sWSq(=`+iJ`S~E; zt&XY%EWP|`ZWqr+SX8pSXBw1QULyG7glhTtXHi%{PR{NPLY??(1@a-S)KM!n1!sfeTg-zD9zGVcwRcUj6NF1TT|WW*4&xa ztlwnV4-c_XwNclNogSR9K{dU&NP{#$@NBooXwlwI$6B-@y=yS`bjD6=%8kT?5Sd)7 zIzl?}o+Q!YC?ehb92S9fM}QxAsWIg0Ut`~%$Efy2^jiRU{HsVnyy9Pt=%g=cAC z_Jr2x2$YRf89x`&cF3Jt%3x>;NJVtBg_Z?oLVq|Tz60e*BNcF6TTM;h)YP5C!gb~9 zmn@-|8kv!FZ|L}^h7jSUtEUMrS>KlgQ+}V800D`3yGu#QxgQc1xqkrKVPj<1va@Z=$ z`BP+Jo<_3hx*56n6dP`h#bC|C$wfBEld!rSmhvOW`5IYG+@yV!x7(WZ zkd0hXdH#PqRbpV9ETuC^U@4^e$@f0KH~~Q`ySq%!pIPv&d?KbiUyWHPcBYy zfJS`JxMNNqWC&0sEC?8Gv?yHPNXn|P*eTODRZHr1fy7v2FRqo)u#r{`tm!k(tj&z; zG4_Ksm~LwrD!MOZ;Z>#{)D3&UC`!3f*|N7W)|WU0V?AxgdhdFy&vy6D&ZXIS$HBs=b>ib$GfMO6h~MMBhOW1%~B#q#;+v)Q{M}qqG%s_KR-6g z;28zNK4Qqw&)->d@_Xb*c3s3!Uk!cd_l?FMibGmW31n4TW=vpR*1#j(&l2IEIZM=+ z!t#7U)hH5Z)HK`*xr)0YS%oB?-hr|JIdf+!bgJ$mG6#l3f>k;3msq>w|xUTC9{r*K)>u0s!x!Yy*D-0+NlEj|L2 zrKuO4&P;D+FV%|R6Z38aw<__u9?a|}Bz2(TyO11C4N*t9jfgmDWP_J<1>WV#(q9Ln z^5<*Ka4k@P0RoFk0mQ2N3rKHOD0L(sy^&2FFr7L;OhMe;lFHa6k?pZkYDP?JVT_th z%-)NnwVXa^U7F{!YskN>YF=8QWBz*ft+%lia&Lp_zX}#srDJg`yPCv+>F*`9T^-qG z@K31}nuIpgi&;1^Db$y)yZcwx#S*53_6ktDbE#16SEvs}f6$t+EJGH6vB+(_pAcj? zW7;<-VW?G=XOR9MO)W|3Q+>V{XW9JS1(NI26p z|F6D<4>Yv1M>k3Zyr=|W`q~_BC+MqopesE&B{a96KgRfg8DRdyWxN@Hvn|*f2RE@L z)W=}tWIjpI*%MYy&65Kss!3@#^K(%M z@n`m#xWf`^Af#?cYRbLmh~-p1#?Uu>zFR$1R-~M5C;#0Z(g9aDT>*O+fwXizJ-UXS z-8?#6T9PiSSVN4nc6l6B9l9UFSLS=1=)X>u{h7;nwD&J2U24_Sf!df}kLJV_ zPlO<^b=Be0qwr|uIt)0>ovXK^r`#5g(a<3huWTPE>r@&$VS=NL>7!l?M!_Wd27PaM zOKsI%1`N_vEHg97g%O-YqpM?4IVSm#xQb7==3NFXfNA^QI5mlfrHwNBfl;dZeQ`rc znc^bsFSvIpdE8N*Qb)h6k)p~Zvv@@%%0wOMv|7k;>Fuf8y_JX+@b~z)dx3#hkxD;j zeIG6X%B11k4=k8Xvns0h>QBpC)?O0zkmZZijn;u`8JNC-H5YuSBOIAw2U_hJ5Y(^0 zk81lycgH48jNct%!*`KS`o4NxaV-VI0v^AaAq7JkB0ah`RZpFq^h!NXs@eyc;sr}s1X?5D5M>{Poe}2vGs&_T2@E&mtGF!V%&;Srg}t<6eKw6sc>d! zRm^`?SyQnkC!_hpBvf&5i3cy_;Oa+d5@~dc@@5#>`niPuTetz#h>pJG-oR&lNC(P( zhUKnIk2x!=Pk)rfdOgmve9#~MCv3ho@HJmfv2}`tI&IVksX7iypJGYgT;w1(tt2hG z7l@JuxyT1F**c5>?s&fLkk`b9=tKeAsOQavi<&AquPSfNmp!V6s|JPc3O=S@X z6f3T;GY1eI)8}1yCTWGI| zH({k-eKv#lREsp$~YKc zTJLr!7jh)igw4Be?6(ZNoOjfLk*F!3hyLF$_7{#rzkj=R- zy6n$&j>^-wE!YtMir!GrQpX5WwBVuZCZ;1_Xon|-4TJ?On4_l&)h+?RnIUkb+uhU1 zgLf;1C#mJ|)F%XYAWf1q1FWsXX9zj{Ft(T)El(ElJb7JBJvxOnX=HY0`;hJa z@gi$v<$Q05sDj+*GrSXGkaqa%xhOyQ@%WtN7i)QsM~j-HzL7)%UNX1Ns|H32xmfEf zQQ`UNKH>2x+%4_lXfcA$#tKsxr#FX!;}R@*e7)XGaVQ};g3`t6aq0$4lD?mu6Y4AL zPzy;9Q+X;_Nw@Ajq2a1ZkWNGib<;$e$HjY1rKqX0!7h)&+J*(`YyIyCFSv1(qEI2g z@#h{F6etr9PAMuVQw1VTSu)_UrFzBbqz(RErtd@Qh#(-B4H%E$i$cKBB$}&XgnylO zLm^097b(>t@L*U( zU@1_-zT?|aj?#MxBgl=dluKenHH2y3doe9ZU)%uPy`+tj4;HPW1# z2V0=825XpHkSgk&kST2*rIX#VTEX0XnNA>PZK1T3?_M(ujBQ~qs3K}+y`-dGBO?P( zd?fJYnXV0v!g7_;o1+9Fkw;nTkP#W7A#stDZl_(tBjfo%^GIk2x+bZKP0M^av1B7Gs zY41lcjV9zG?-mHV(mW5^xm5`QnXE-sX13lfs{ypIh9K$m0j_(bGe!F4!Svb4?qtMP z^F754Jw>@J@hi~=dLZ?uVxTNB@+RbedT{1z(OG8Np=lTWJE%MC>|2cBL2=E2hQCly zVnwzJ9JpD8aU-Am7BR};t4=zDF_`!aVn$?3+_pi+KV@(LuFK5cqkqYWkPb95ntCOI z?J>lQXdhU6x12K2TN7nWjUg!lN7+stkjzSpmX8O+p_;lt>2h75Xdd`z4+YKP>j@>W zW6_Y}=CKsR{|OG84qAGTVkIS%IZ6mMWU)ouw;2)U{MOXd(T#{sWI!5yW)0P$C6QIe zP0X<{V`_3Nfbaq^2W*8FNN+-v5MyBfKTJi(wkTwWmS124<*yAjlPE-LtEyatwh$b7u*$eEY}_xh`$k!L(&dnA24_OH(Z;^JBSy5z4b{+hwB z$2kB(Ad09>K!=GvN+-|+O^yLtLj`6tQ;TdlyW=e>la|h$Al24B3A4N>xUq^=`XpT2 zGuFUlNc3Nj<*AiXVyIH2>!ONm7U?)zUUPhErpbm18=*EFlBRPQaFhCjC%2{}Rx@l} zuH|=|e!AIU;8hFe(|{mZ}Pl zUaf2>Q@QE`4(t%E>l}cDAqMsM7+C~|(4M!%@Temi*362X;8KgN95a^mK6#xbfwo?Ow9i1I23JXdpJX*h}w$aMdu7$GlcBcS4 zdXO}%OHzRCC6Uk77O=4(8kI*6#?c9gWhxV8rqNxYh)?K{M&T6g5r1%xA3{fOo4&aK zju9ppP=wknfGay83+UK>2J7tx^;B|4FQ6&TWZV$gyUVh=oDg1JZO+nU|4rv3RRpv1 zH>Kj?(7CGbG>hg2i)H~YYR(V^>N!oR6Mn4CgtEPDaqFpDu7~$qOKb$G@|H_&Xc~kDe4&D94ItT+L?X@jtg=phN`rxFd8M=Zg)?Z!7MFnwA#==5}*PCMq)~C>B zDb>W+j}WV!&h~$1JGn&6k}1+8RP~k(rH;y2Nfh(zJPMU+%MMtQ&bhc51d42{w*a3a zEgM%%F7_H;Zp-X17QH{;pon;X+`^Un(ivx57{l3&OJ?9;9vqJmMvf4cnv!ukx9K@B z?t2I)hi+!fnl?iD zd3(%qm&sHdl@WDjT5IgkbuEV#)-(AI3;Cx&qGz-mY4g-)Uy`PoegWhCg_kk&N5q|u z?8;Na{%0|a)ySQUX{!5wA{B;RodJIlsDaaw4#i2To|wrdFN@Pl5+58~iI4EDO$)RM zEP-gDx~TMB#AR_&_#!@vKkpva3!-17Ox}IbISNcD-)$M%+dSX=%H(zMDA`Zo>dKy3 zxtJ6{3Oq%D7b@=wz=s<}HiKTzensD~h56)dkUf|<;W*ubIIaz4K6;hj5Yey3NdBr< zd|QHL(I}7c?Hq{Y<_O(3&8mnrqCcfUH|K;?@H>yWl-0HGkS75P0e9E}8ScVIn4uCu zGo$PE0uPZ>W`)YCP9{SnXHjO7&W$&$szAvSwiVg$V#AtjSq-e9k)ge@OL{lITbmJ= z3I<#tNmrdyVx?wvH2UQg^EQQP%V_taX4X4@_=);!EfM~*NSo3#Z{`of;ga6?E*yp-NS?frt=usTvl5hW z6l`lR%fhOX6fL=zi0!ms5^*@Ahw)~5%l9sJNNac{ zt(}xT2V}Epdv5D&69Nj^@Xh;cep*VFmNwYgzgEa7dsi$>J>ZLcoOIT~#n zSRveu>3g@hsy=CK_AG=lvx;q^?0GmHPB!&k_FpJqNOc83aFFVnmocr(U{^o&}c(DS%+-p z+K#C7p88Zm)k2vUT-FjltV!>&@fzt^P4E{64UpXBRtCgtb1YAwW=Rw@N!|-IOden-s4MkC-1^}1(*w+fC}^T`&{O)0N64_`O6#@$(?>|)5q@k=awhBJ zMD4dmFr=yhdRcHS{6*`wj9*=Db+DU{w2typNxPcETGdFiRktp$hig-YYm)=Dfg#$& zf}lU`KlDZOPC-UPXZ8qlAQU4xUT(j^ZPpFLmGw#1$n?6#Rch~$_G%{uk-!*osu&6P z6cCy12reOii7EGmJPD;IDdukn0$y~}4*9tCSe0axR2d2^Sbf2I>dnZQFkzj^6#dnwlr7B7IUPerC2vkWCHj!7r-;TDCWdB|k_@ur$@odheupkg2!MW26 zWJv5R`{4Fr(OXotD6Y2cby)nsb?G>EV{w=vRM=1k*#jX+*~U}B2R5B9dYNvZQ;gd~ zo4{)4%TCZtL;*yrAl}v$L&f?9i{1*eaD296@N98u&b6fVAH$sQ@_2i?9WmYrdR+WJ zbOP$V&nAS-TVjHKB5F1ano-kz)kGNHBa-__B<~KISA!MHEfNwT4fs2R z`sav}e+R%ELYISDhwdoe8B2o0f!`{EFt^DY@>{}@{Y&F>RxoZ_7#HEP{vxMBdZt!B zMS2@i8g>^>*f_xE98wHr+#fn{m=h1^xtwKlviPi<7r0*+Q-mP-54ifRB!$TeM{?~o zr9lC{PQO$Vl*=9O(tmXoeN%H4AwJUjvXmNUWUOqWAN7(mw>3kA5()?PeUiDC@O?E7 z&<`5tzz>j&JaSWeXGcTIjk=PWHh%Jz%*4JSyi3K_(~~TQ_BxI6v!h&n-z+!KA^|dB6(3_HHWKLV#?AG^jnDTj zB;hK&OHq`UWtwnyiWOdph72nen#KcH|p0I_| z8R@V^?uRWV6)|{|Wjokp#M{oX;#vpv+#y{@@{@I?eB^V1bi&>A{6nisU=Ws2o|{IL zX*;;Fmt^WtL#hSb5w|wu`QNN zL1!~~!LbE<2rj+0VQY6UMEHoal}0hXXct=_9Igy_3pp$DRan4lQf=U0Qhx$OSG+Yr z17j`6xPHnZGI;zjIT``7;PfVrdB!oVJ&rkiK=yfpemG{C-pMk5h8EQGUm^`xz_PIC zQHQL!f-@e~%701GVQhd~MWIZp>~MqhT@>j%$762snEoLGmBi9+I7y-%(pcljjh^kk z{gn6spmAcyu1YvJYzi%S=iByJnzKC8T$MyZGK6Y6X5mfLh@~O8zmX4&y^1D6Y2!X& z)e@S9aYqy9;i^P*dir6w4}ri(62ELJB3+0EtT+p&UnT__9y@XpsPwK}QZZLxxFk0h z(b?V*f2VdC9)#8xROK2LD)bpZYpiMGF^u0`4maZDIp6a^vQ|6<9F(=5k zsiPfKLZQN|I;}+_l#rif<*fb?t^t7g2 z+%H59eg3u=~n47F1LO zcrxKEM%cPFo2qNwr?6UDsz{2M2k40D->c1a zNqm?|dNr!cQp{ZEE0e~ot{S6-IkwVq?V#h@x|A0Q-@j_162rx{e7`p+?bn*$9SU>3 z8DW{Ntqv||@;s!IA!9FCZW&sthy`|ek}?J|VXlI3y1vYsl;#_(f8Du!Zb+Q+0a@g> zCzKrTviWw4=~yk#9?AdC>I9y2WiAK=byXI`xjo9n&N>>#e*vI*(7JtCLkPzbnmm6Y z(&P`5OspzsibB2i61S5vQme7nsH1nXg#N)dXVYZYOn|WKwV;J=UF(t};kQwzcP;O8 z#yUz}eJJb}`Vu>PVM;QOWOA)(k9Wmy*GC~yAAmb~W4;C5@E){ojYG)>*k}`FjBl@3 z$g^%%3M&J(Jiy9dpVHNy&23;L(>?Uwkwkopts7(4-J2g)S3hVqGLfX+Y~#ANL&@a% zuX6wpiJ|HBpS`am9s^|ljZ~Q^$kuo7G6Ic+z^Cru*5Mr{J&%;3))4fHdN)VP=G7E0 zP<`-AO%<=tpL|Bo&kf{IsWA)=)xdb&s)OwBVYB81v=+-y_H6T!ORUcu6W2XZCjxrg25}-mBRW5Bw^XuURe2j$QjA&Kr#_FTyZ;+7VIe;@&Z{Qil^ZA?M}F&CoAjjiqwq z9VPU{(sz?%$pbZu6c8V0!lU(gDH58p^&-<=EMMP!$hu?Xi`t8n)U>>pShbIfms39x z-_3cO1;Z@Ck763%y4S%q%ysNB=m&o73y5?b3VILnKF76S3F%5hQ~(_<3s8!0VKS5l zC-82Lx(||E$}&{vCJ#Ex=2C267hEyf&l_XYj3Zr($~|=t^29D(8+pru#>?P=yORt~pyXbKkzo~AFQ4xMnr z^u+oUd^;t&Ww~+R(og|?gt`Mj+U=t7Z@IoXIkn?6G))Dj_|*J>xf{$T9Yz!~MsoXY zv0-xiYEer2c;03e1Aiem`NA!ACtpG7Py3yAZJOF1FV)l*A zg4PL?+q=ogYUtm6=a?_d`_(5zu9F~0tw<{6^G0@oo>@Kk6j=vq!aL_r-C=NmJJ5o-K zNPUUBku1!&g|LDYq8q zR3R3sX3iM^SagSaItwwXSE*24*@ZhH9IW8aM$Drx%dCDc`tRzDFmb7aih{Om3b{S_ zm7V6TC#w?MCzS|YRxVd{1Nkme;^i*}@8s9P>+d2E zN;@1wi?B<8&qQ^wG;-CQW^Cs4^spNv+0#RASbgL!hSgo{MHv%w#$xi=GciO9_@KM` zY-{K6U|Xhs{T~idcqcurS0kyz(klWm8C%9gyGL)6ddJk?0GX+gS3byAQG13=@R@>G ztV)Pn!83A?RaV!J?bX;0Mt)7li_VBklP!E9L~JT+lk;5u3=SJ0J5U%>zhS7Io% z*7&r+r=?-G^%wRccum*X^1Hpreue^z+IVC~C#Y84lWbpB1i6$T;@*~a?(9Hvcr*Ux zp-1jkR;}(cYnbuc%eY5(i*d9<*TA~zfxfXXy|A)*sC1L;)>CA@dO*je?87*`R@FRn z;}Wpo&+N6Gu~A|B8oN8m_}hyNSmE8U=4Sq(A6^DVk0#5kvsGfnYl?gOk0ZoeRVKv< zHNzSo{Qj~7YL4oODU{Sj>e4PwB$+q0kxlUz`UDQ^=Cf{CV?3TCrFlGaKxtk~$YZ0( z&B-ID)}+xHTrh2ya6hYp@6B}cZKZ>Hy1BeH5Qr9895YuT#hdRr_@f#1}SGG?i89Ykf*ka|842XhMauhk>df{^qX07tQl`EJN-v`(KlTs7Jzou-7q zDq(I}?%tjN3j<|WfUds~GX##pe5JW#{!~j@lE8 zv%{X%Sd;u|Q-XHc8gz8+EC>Nzz(g9Hyb#^G%lBd6?}GpIwdL^FT=n|>tth(JFn7;lv1kdn061|b z(e!dYpreXJNIH-uG>VsF(ODZxz%*?y3g3Qh>cw3yHxkNh1xm(6<@?HmG!N-kn5|(b zP9k+$NZ>IFZB7dZ>L(ntZ^EfqYn{@&zoyG-5aBE6tmC{0VMSyVb zsR)N=8UBwI_~e?n$=TXhD_w)nD++T0)bicuD30(Zhz0 z4E?Mz2kgB~ZESw?yVSy7;k%;)|4ed{c$(YZK8Xs38;3Ck{|&X_%2XrFrr#qA zXE*JDd}y$X$o34h6_tDcwxexr9U_w~kmD8+Hx<0klPR|Vf$iTf*G4`B3bX`vc&sbt zfn9As{sD$6_5i0bS5 z5r~~4Hy?z{YY9xgj6b#qLhdNc+}R&ob>8&vJd_lI7}aA#ys7aVFZB*=J3E+}1|2kv z{OV>gRAz9hyQ|vouC}P|qK@_3_}!wkrn8$#N~0hBtnW+F`?dxSiKNox0gPK1${pNn zuo66%0heS^08t$lh`E!$>J4^siEDN_55l^0o`gpw1bGj9okMgkTC}WV+qP}ne{9>f zZQDDxZF48tv2EM-J)QT)xSiXW{c6nBSfgfrb^Z@$@3!%dE45pv66%u7$3p&Dph!B{ zsqz)j+WG4)>UZNhmFPc1)fy>?9y?g={`vS}kb{KH+tGvIuMs?j+g~D3 zYAlRz-kv?=tv=Og&(IU3TDyyTD25irTKRTJ|K@p*xyQM`o2#ZVt!afGeIs>hwCGWQ z>>#H;pZu*H9`@bDUuUSgEQ48)KtF7J?C@WsUOenu6tlgNvSTTaLpU`S+QPq{z^y%~ zcDz_%nhRNZ7_yT*!Ih_P1G>7g9Fr8)uh4ls%7T9*oI{9MjLUW)QJ^3k!Kg5=YisN} z&CQ?%wN=%`OR({MbJapQMt}WI{-MoQAPHvu(dupGqO618(#hmK7w@z@gk_ccK*S+Dllm(C7}s`oPwaVK9W1|~Wy)x0mu zcxsxc!&>4h49+zZ=}i&?yD@*EN)Vv>Cwmv(70;NZT^C8xj1cBYR3|ppZjlpL34}r6 zWnk*XBSoa5qBGhFdY(69GnKh5juWTN$+x@*rdHvPKwh8g)4#dhv~kyp`r5`#+MD?w zbY+nFB<*FDvIUO(uXWIuu`k8;&+)h+-SUi>dJnt$c{e!0O!fmScySNC<>0OPKX^}* zIilTKq&VxF4DaVxeL2=Bhs`1UKvp(*d&-bM>b4X_7qwx znR3nkV7(iB54!hn>0kO2jL5k`QP)~0g_lTBe|QZCJ2XZqNXzhk`o`ogOTZQi<26>aWRt-s#!U)0Ij1@RBHDd0DW23fx!Gk*E(Z2q$2-q*#e8oZjiaAJSY_O3nW;yp=Uy~SB z{n2z$R_SWP{F86nn9^f9+fhRqoUfo@0=IMPT%6U|>p+BVtM!fk;m@i8ksF7@AtC^3?p==A0GHyFY1 z1;I5eQ4j?PSQ>vFg*Y}kY|JnV!4Qq!OjBX`q^DQni*$=~S6I{E!vE#5%AiIbojVwK%#^oH`XSiwY zGJF)SNgMAiP}claSJ(-)f(Iv77{?}4K7Zo!ACTEUh0aW~$)X(htX9DiF0oLbBipL} z&Vh1rkF?~5{E85l_m6e_a5rTh$BGaO8VAa)3Uc+x-y9CXMW>m0r=5AHnT~lkx0tDl ze!%ALs#^18F4N`rK1LM}>&OcJvB}1yju-O9!>zmvxN*INZZ)s-!5+s zQZ-5*uSS-S05+OqR(1>S!>O85`d*s!zwPQogfFo89|Wg|nY`jk(Ptr6lIVB20yF(SGXF+0Gk)Pub-K2$Fbk>llBRPngSa+c zQ47luMSnlPXg~YR+2&NPH$ba!T&P!OGk5+0v2EA8E@%FtvcygD`ClQ@SdIRa?Rxb# zlP?rE8_m&M*!5^Bvh>Z}4Zu+tJwEZY)<*2lbeu2#n#?!+F(+>wxV0Ie~jZ%F5QEelabceSME%o>H3DN~m-ZmV2Z}NGS@5ysMxv>w* z>p{vDw!b=ecFj;Y=ME>VR_cs1E~Qt+jPbQLjf$4M&Zrt^pV;F#GqhSi1G##4YnJJb z{g_~w(s#Fr78-IcU1q0~;+R*P7OZOY8&EdR{L6MU(6Fd^l)S~@%LN;;Su3aom2md! zcNft=VJGjMr`8qc$fdgT2Bz&%tAZ_<$3Ip4QcBbm>DD!z#$njqG8L{WK^Z9GOgKxH zx#Ic{C{-#7#qQW}iNfh}4Of?Y%B?1NlK{M>-Rc9C~J7Vjnk2UVrx;Pd0#Ul~e0YlN{*H2h1R!LGOi8 zFihu-t-TzQRnnm9ef1?ro4j`!_ZVnzJUn%ANAzm_i`QVQYBJuFGT4mE`;-L8-b1@vxdv&6m>e;{sFiN%~vY^W$^7M;pr zQ&-M5l!xo(_*|xez5NSV%V<4}$OGhKBeAqBK&zj?hqBvd1MkquB#&PM1>0zM>J8;C zNmSfIg3PR~+vFvkVvhx}nVO#ZpiqUfuFI($6~Of5K%TX|<&hIRUMJZLgFb!#Nv@h) z|CbeaClT&u6)RGKY%2fkgueu-~ECjZL2P|<}zvPJ37QNtV4J8GK7 zw?Ll0Hy=KKh&0?VXC@236BfukvC zoeg1gz+*HTpJ8Vg>bAPw8Pp$1=Bub?l83_9dvj`y7BWFNhT@*pU~gOk!X@p;3?x2q zhPzi{X3MUpZ^HkX4Jl3c{lXv9n09i;O{%UUFKQyq;DcFJ6+B7uAbLdP2+$J(gd)4iv!L-fG6yR2}iIRx4@^ z1c3O<_b2a3BxpTuLq+8YtSP;#VLhPmq`%qdyte@48O6cw3j2%$_~>4P;;O6`v~Dr; zm6><7L!TDE`?+cMGDxIPx(!@GW)*5N;*$d$)YV3#NX(k>S*M+m>o&zxjEfjX&Hn8N z81W9{tQ(OgapXQp?Qfwm0RwMmsSMjf-30=9V<_S1xOgz_%K_r2oCzbQ5JeJ zdg&g*WmaJkc*2m<^-1oQC>zp0F2NPBst3RuEjmkejKwXesZnm#Chte}H&5FWZqdzFzeRJAJiTWK zc&ogP@<1BTt3#k~*>!rx-#$9GrSqs8j^TQjifz9`xI0aj)GtJR`^NTO-5&0+F9-_t zmy93=p5c@^GbF~BF$r^py04-sw|jlvxIGz!AdKc~6o7;P2mozEY)53)-0$^| zxZ=qj)TjrNMZHi~`P=n7bToeh<8jep^9Q8KLJLbz58Dr8_g+5>+omAA+$&?a`S&hv z7ArdpsU`ssjhdcA$#oeYNL~W5sFL;yY*^!WQL2lxn=V>dMRVFJsELbOx z0;;ns6#!Mkv{I17;~*gG!+cpI9EOqhY(X`nz#Q9X%9kik-`KsWCpG9JwHuMl=1DNm zOj@8;BjyiS+;(QLMnze(3cEQ(iKGo<;V|vh9}m#Z_XaR^A$p`YnL(8_XYsJJV?Ra{ z^fZ|y&b>Z>Co8a54~3IW9Lml+q^j8flG9_YPg46$_SM76ZJq^r)qm-=0A-TH|BTRr zv+{hphf9!;j((A^>c+aWzE>)$M#tZbcsR9uBp z9AJ_fZz>r5S&Ql6bPvIt8;rY>ukaw!k!*%U`HB4q5Mx3NxW7jKn^kj>(>MXn^G3aL zopZrs#tjKqy8})x^_+Snv>7}ZfGo^@To*pat%nfCe&@zq zGdH+cy@L0H{XpiX4A^J65i51t-T=W~5K(&b$Xh6UqZjXHk?MO<5GO6(K=MPy*Y|2u zgd+!!4sk&yxClcx!}}XV+wGE+UoSEyy198v@6wKOlb+nIsp2!H9BE50QkIsvX$0<1 z+lkT*xpm?fnGIl@-ThPMsO25ef`8b%0rYn%U*0uUGA_p@dj#0~XGTbQlLyts)s_{< z51DjaPfTCuLaC!7+{RJ)7@1h|tj5JRNy9NH+J1g_ya5bvW!H1yNrjQ(-=-BXnU@7` zbW#E;!%#e?*YZzaLumST7K3GBCFmus4^5qzMXKnWiZi9UG5KGCS4BO{592jr&^MQe zCfp=m<_R{LrZv5IQ%y{Xmv}b_mrgQw194k3$Y(7j*~FqS};P zk)a|NoTkif*^P%LtTwC90%Jq)$L=z{%d<1aCY#>L<@Y}t~`_FEtU8jP=nN2U|?G-kJnGan+uKu6$TT}*?6>pR1z2r4!d`E(| z1#qxv6>!S8t;Y;5MkT|1-hugTNdyg8$~UczoFlmeXlz4V>dU*GqkBnP!-3UA$3M27 zW11rWC}L<&uSEuzqAqDMy^d3-jxRtEgKFTgqK0zK0*&ACTT-t1YFI=?jq>u{oS7=+ z_Q5Wi;3NIB#SheetB(zE)aTpeN3b?>!0Or+0Y5B)Ad!`$(2Gl8h|0wj9F^@&l{q7i z?^CtQ$fY*BGh=}=Wz0FJOLSuKCDhu52yM%@BrhLhFMnYpv8#9&ieyhgMACuO=BF8{ z4r7^j5;ta7*=}@Y$VpKv*Ml4yhj*~Q{=F|r*#)Klx&sk`UI+eb@dip)>=(VgM7xYd z5kA9p9lg=97#IiQexx`9AbZ~3JPt`M92lY&s=ubu{grd9Z=tI3DuWwhlB@81K#LN3 zQwM9y)`g~fT@$xB+cWg4vjK%m%vv#qcp2ip%9VhjzPl-do8ydBSWoVX9cw!q!-gZb zv!rj^SiM>4F2UY0eXZInR};bL`gqA}=_lyCtztsY@)qab8e{5G%qIisE9G6*CO%co zK6LW7`ikr_K*!r?a({um_(0Cj&aLnM2Mff_`?;DouaBc-I1O!3O5lR?#Cd4ZJM$9T zQayFr&RZi$8-jAgip;pBTOjPVYisv5Q_t1yfZgH0NjST}C^RsaSBFKo#GeSc^?Mh~ z4sXCg#g1(rM8Rwqf&;DT;D#7x?ZPKG%hvZpmqwP;R2uq|vvemmAB%IZ{jM$6?}&bD z@|)%ZEk?1awQj2iMXTXt$Sy2SWps+pK@qHABT7+4zO&mDT$~IdQzx{it);{6He)rx zms=#~jELOlxXtaYp8oDgF0d8J=$^@@OBax51t@GqpQIh5-Y|Z3=H9>8*$}pJTy6pb zq|`ySgyM_SdJvIOA#uqYvQ@uO`8!UTH#&0LudAnLVw%fi2K5*4}g+^MZ7E^?Bq`3i=1AQ zsXH%!-4?e}(;laoHtaat{zOhk=p74~9yd3m8NAq0?N)t4r@(Q)UkaSQYXx}9F@&6+ zyTkhCz!Fk!EcLD3>RN;;v{P2g_mIMNPKoH_*Hi#gS{`N?bjF_rA`KQBYq3ukx0`Q>Y~zS1mK@3P*pICzG~(kUZC{UL3zbA-YaRV z+#(GnycWJ$IIvcQhIW4x{pZZVaG7B+jW9;|Nh*&e%*0L;}I59-!lYSvzn3n_luRfb~LN$1?urH7-=Ybe5Ivh;;= zrTEkf(k^;@qRZN1*D|7kgv=S(3I3&hDsSJEA>&63H-a)<<=Opnd5*!Y&w#`1ob1G8X*GaQl1PS*&^9>+NK!u0;`vh5-i}v5md96kGx(Zyhf5OcB+=IG_D>m$YlJ z@<=f?QMj^u^yGmQo2}#K`{zDDaUqSlZ<%Mjb^7&r@uo}gxMz0}P|s^f(O*5wj8SqT z=C3jPNPRMHT&1yhgBk4cFgUT6ns#$#mQ)iGU6l@0`U_2Q1TqC#d(M9bVfI*sOER&~ z=N(_ScM0Lm$fcr|xrMbEQS>-Dz9VwZ3TK5*B(bq|aps|#b7^9&<)e=7{oI3FriYepb zxgQ||)I7<&2c~jAlzpMBR+zXW{K;96C{Hx9IzD@FH2F&*!6a#XAxa}Js|RGvh))?P zpIxkQUyMq9PmJRQT>_~oWQSzweu;{Jcvjn5Rt51WtUx97c+L9e?H2FXd$QX6wmQP= zwDtE(nemGyhEWD_p79rW#El}tM;MQoFWrDt_&@g#mixhvbP&0(Mp^y>%Fl#2+Zbu% zDfM?!TfK^}i4e13COnea&6U1YKiR|wk?f@ZZF|;)hDQPpugN^_JI)MW^=9zQZd#qD zV{Hk+TE+tfrW~#d{h|PKUxb4*Nw{2KFTU;Y^GE>R)!i!wTQ>_pJS6-dHP1pdUm9&- zhpBJ_1i8m0v%MF*J#+Wg3fT$E;iJ7{S}R*Fj`eDKUPnKlv9@Q^V&wqglWt0M_% zp@bFNU=Y^d)K86VZgSpcW@Q4+G!<{AE5fsAJOE3un9wCyAHW!BGyx9W(ns%K%hoLM zbhN#%AW{!-3@qwxaI@pNlG+ z!ap4I=d$sSKzgyF6HxGYg{B8Y=9gGAES9_JHfySvZvC#Q?yU!&Wje++xZost!VMQb5_dczCZ}pk^J7R-%q$RyX7Hy>0 z?~F3N#t*+NW{Uh2szx_5$qcclq-p`QoPT^3f`LTphL5TlRK$_Xa*GW_)s~+u#W=81 zCu8|i$$k(5S@Fb{Y7~|FY;2QWoJ~RA8+4&MrD&z zz^=UR#N5Xclkrm(`8~^^EAZl{K>Bcmr1ki+h(T&zRFA<~DTc!sN69j{-6D}qTNuNp z0d$R=^tr=lb@a%q9CsV#jG9e7(Wmv5*F)or{2dc-`D7w@1WZLdlzyRvE#x9^^RD3c zSOx~`V&tLfbDg&LH~3o+pscTTtc&?^b8iitlk*zvnd z)ON?Oo+!=Vce`2yw|8Fg?x3M%wxBPtv=-^*pCUQfPR46{&I7#`Q^vC|WSM3~b^3w( z`c4(tlcHV5LxG#Zj{$)9P5E$3vqzh;y!WT`wMD}Br_Z-V!u7_C>i7{IHHXrnemARt zmwv+G_~)m!)ytGXx$1{dmNjd<;MHAg&8WOaR&RSYziL*hcOdO*iu+(xZ46_JiUc-f z3ThBwD2#1Gjw_>cS4F(_*~z{$jK&#HVJs*(qCdvE_=Qup_e~h3U9>ymQ8l3#b(F#h zoHmgqM`4QR#Bj?uB)FQOC>5ZP7M#@WPB9a7`GSc#*E8;pdEr!5d>2WF+A^J`kGy9X zdQ41?@_W47A^fzXnU;@mlo)${IajU=?|*>oOcx6yo$aEe0-0>B8X5|-{6#7sKvk2F zoodo694xqqX3u!eMJnYFPC>iT(5#7#{&d9ObfMyrZN+Io)*eG|*Tk(VfKzNsKgSaj z=6zxt>LITzS$JcjH*Mw{6_|Gh$phP&R;G=ep5wvTo3?A2z+PapBYTr>lT5WYO^*av zQ#Lz|nc8NIp)*ySJlua*ke`w8_qhkaPf=W8@YxJ@gf6R!heXJR88<*Mn#Y&r8IH6* zqHJIO1RtcuM{sY!N~fu(1?Q~M1ebGq*1IrsZ{hEJfZ18zxY#R(yS;}!zc#fxj5k1V zzWO*o&ZOPEi#a@yXbAvk%Xrnl|G1*CG_#EdxG9av7^9c}u+w#sPgTlmw>{ONBYi4t zfu7Ny-rehrWEmyAzzd4<%ZLooS!`_uTy&ObN{YU&q_RQgT)_%YN9Y_4tyO=09tt7ZBwBdk;`0bG!m<5y_fz-i16@#;IB3 z-Bb}w&&WrH!U!onoLo9NVKirwzjspM8s73Khe{}LkA?$(;17=0R0z^!spP%Cvm#Gu zgFITn6TV)uU+e!2G%#p5NQYxpoq^3J3nPGeK+>+Ue?MfIB6;Ut>DX)M!p!WlGRPQx zBJU$Ba#Vk6eZLZmJ02i{O-ugCzpx*B+e*%lQu~$(Hs>U=gt&b0YqQTx*Gcy6y-K$iEK{IsLxOSh;*L|D7u}$HBx21Tu`WGPWCr*`O#5 z(Ly;9Jws5lCp^~=CjFh0={e1M?O{!D@Osw{{PzlC2Gd?6+Mnm*_6!bil;g7fuK}(a z;jTqm<*kBMOsxKjgJLk=ETh3i4>1QVN%J{bXa;9f%R!SEI=xQ@@)9CC0Ya()0ynQ> zIZsV2-IM}|D9!D+;aka$d@xa}31z+dOPn*Tojs6@sL1{GH;ezQF2`;hZ8`Gm^bg*;Pq%3H8M3m`ToOp!Plu%(KokzVTx1ui2%c$aG`%O6cmtrhgJ)cgTtwp^I@$d5ZT zB2F6a2m2Z}-Uup}wx^WngC#t|SR?|(uPhy|X1F{h9QEQR3ERb?&+au)T2cnZ*8GSe z0Kbbvf!lef=7@$OGx4$)@*jzQ)uETYN?5?wu@(;0TgnZJn>B?I@$>dHC8*66rdxo& zrq5bUt_7Dt@b^+_C~Kxwb&-!rxHR92=FU|-bDHthaE)_u3&n_jhvNtpvDM$J!q3KV z>BF@h+w)uf0Xo~1Ln)o@00->yWiR9KQ>qh33qvR@(xz^V(}~GyHhlEXtuO4qT=sJq z-$+pkaD5i%lVOfJX3I#h-+>A0f<4i(#d=xYoarEp4(0PM8pom*HNMJk=HSPo7n7ZC zNv@8_@f@Q?yq_>KsdeVn`Xzr+moG2WgC%n(r_Itjvsl%;iL~R+T0iKFU0Y#F;0@D` z5D=U|cAE}H@W1PyL!+qVJSLPr$*Q&yc}t9ei3|(l$jchmr{OE&@*2DJ ze<3SJPMtk<3DnbXYt)p5M%>PprTwLgk5)qIs14`VJ(V@(>W|eH6z9kQk+_5Wxc4ZJ#Jp0VQNRNKdXb-8%7&*IuGIf6e}QYt)nH%X)PxOd~`!H zQ*u=Ppt;Ij0AF)OM4UsDE*{uT&AkMixhaA*@J8>_S(W#0D(rW*ZxH;pvG+lO<4+{D zo#?gvEZz=nz5Laq{C?6Y=60@=c&EnlwoyXp+FcU;oo$_9=HekD8MF=lnQ2DavVn^l zwY;$_sFGvG`Zrc*mS53 zkryBrqIVLB-LQx}-5d4%cOj9hzmUh^sioGUB%z+rV zvt9e@DMnKnDwh`CY|H9y?f%Dfip%NTr2FH*LUq>>SYF1^n)72b1Y1#G=PwUy=cLSR z_ld~5{F5-KO5j^9wm8-Hg5H0o*0%nt^v^d+EN;0=nwQYlx7 zEC80BkE9f4;*0|D?H**%VfIV594 z&5v#Gd$AquIggDEqX5XR$bta4p79>Tk`>yk!bx+Y`~vQJs>!@^t02WqPYQJm75Y~G zq1etKUK>M~;3xmh$V}n9&8KtoJgYbka3ZtgCDq&HEen-doC}^ zPpRhj90T1ol%JA6VE*k6q^L|ektc5jBPwbTTtvzEtNT^?MXrgYAe>+?Wh61#$)7Yp zFnyfTRxD>jF>o*MRZv9^qd*?}yhpEOYaAvs?Jvwx+kZ%l+-61IlWk3AEvCVg0*c3koBwiAs1I?q1%ap5VqS4zubWt_ z+dDWu;d_m#jt&hJ?X7g^Ew;V12%~OwyF?XtBZwEruhkW@ZG*nz? zD#y#2G-!%@G{mhja;*D;uv~iDf-t*J(qTu!5Ss%xV%})>dTG)WCjI{Ak)oQ+B3!V& z)}UdOMZAyAaagS3i38Bwg1cm?uZgCvMpBLE-PK3%67Lg+=_{TZN6<2HE)|tb%<7Tp zYX2V@%w;Qrds1;L@3vsi~Nt?biW%tB+_T#J%I#G&w!K2pv~{F4$AU{GUf+%%M*I(VcJ~>1;QfH zt{%83#JwAbs$yS0aPiqC1Gbfx^+|Yn#w4=X!+$pjb`aTJhPzO71FxrPCIss&-0IT@ z`s{;&8&0tB$tiCT+JDIovm);Ee;MVusq|>#l_2w4du&TV(*e!DuJPKpv=3}NGvSbbUZv^WLOi|Kk#VF;=HE5q`^+Hs0*0>?%$(PvX8*4T;7+6`Ry3aEc|NbU}P z7w^kkP=Sh{)m#CcThfd~)pbTHF9P>8?DY}1B)(V9?*9t;%I4zzuU7wYF?XHG{f4US zbP^Mhx>0?A&BH8_>+?VU7S2;F9nM}GG0*j$a?+d?TfO1}njLO@XL9ZmJ3*~*YQ5*6 zd~Tp6pK3QWCh{dWF8MdkYI|!LEOzp-O+OPEe}c#g)+m8SMYhd^HJ>lfIbzDpkYxd3R(dil;`XU)dlJ>H z(;~Q)O}Yp1&sP)i`lKNbXI<*H(R`cn-;Q1s5s^EMGqavMxiEcC0*p)9W`;5$d2TeP zN8fiaWcEBLkL_ofo0@~*+hw*)4&8qO`}GsU)@FqEOuh+!9|LlJX7`=BbKrkw?;RVr z;0Q)Hw}0<{KLSpF1%G#c2^D2P!O(y}fS`bc>QZB-WKfPjDw{u`SA#@@ly%)rjU z)Xmn+h0(;)$k~;_+J({7%Egt@(#+P;%-My(#M*_y&d9M^okoV9W@c(urHN%lNqTY$ zpw^^3A@yIgR`dnA1v>3H75Zrg26;IKt(N%M5ckZx7kQ-@IZ|WKU)@Ysdt+f?bA6t~ za#Mb)KxKNM|1ApU-%!~06A+NbA5b9f|67!arJKEt%m3GAYUFC?=qBtK(}a-13R}9o(YWkHD))OnwzSp4{U!= z=REG-W?L0kP4JVFnj{GN_sL0ES zeCHrg6q_gi^xWT{j*O5$|DIQL{uO`T9XT;frHe20^#7yJXD_H)#(n0Va-s=;RhT^f z?TJ>7m>#_-|9gSl`(J2^I1}Zk8S9nT`pR0?+A4X{a{<3RX4NaK``(oa`!wU}^X6%6 z`>Sp&_hdSDX2E<*j)1vh451AB)qzldX)qDva8T{qz@0$cZ`i2QXeLRWQe|z{4;{VLMbfxoE&>a zr(AzD4|_X64gS=yV5LZGd&z#8izUwWqxL8d_r141Lh}YQdB>5DURVCZ6AbpyosWSk zlS-E?43O0#9X2^wk+?P1Ys6Uy864J89qrbQ>GWuxWRbdcxF@UgJ!q(z!}wJwfSK+; zC`tFKhpKC2K|6#KqN;H?U=+NU|EEcVQ4v6Oe(uj1`c+}<56 zmiH}02-)ln9(4V01+~L8!ip|_mL1rF?O7Q1CXeMj@r?SxY38ix=_=ZHPh%dl3kTyQ znHnaCGB!JS0exsZR)zVlqt~XYX9`_0Wtaf!Of5a%zK)#crrf963-nX!DyqW#88@VV61?Rmhtk4=yNZJ+OW`F6p7%S4e!p)k48=#z-f$A~FLJset7$~^dw|2^I@MTK2f{g=uYxHY@K1(vwRndQ(Ev~)q|y6D=wKKaz5Eg&Rtu3@P9nq$y%}>!&dp4;LF4K?ocPO z`W$~ER_Ar`y(S~Yr)hq?jUAt&daAyT`J6OZU^mK6aw)Yp3-7ExniENy6hqFb7LYn9yBq8ML+(u>MbwaN4mU?icBN<0S`~9X5yNT>P@B}N zvnh18h51$t8&oy5^ve=(!FfC{a?d?knO>@X-U5c^(5Eu%wye0$h?G4wfX~f-W%lJ; zYp7;Q983R$L+#7(bxEVcJ>TnX;8kR+qB3AE4rMsu)*V(eUN~E0TWW|mYGr}<9zRsY zjEEd2e;l9^;BwKS7xaoSVz)!KabtQv6L(y(p6T#-{nz%V0uw%ayfh1aheADlU$<@5 zW`$?v!*t#j*c1MtFG%PWou89Z_5yYKQ(92hxG4`yWhCx6L?VpKgpp%298yD%IL-mZ9F`kHpo=to^HTokE&7auOruHuyq@#t~_DgJTuTw z?M9L?Ej1eOl4Zd1O{D@-4dJL9QJIfwM&Z3$eE!7C{_r_ijp(?`6y{- z@PTRpO)FY;o+93Xy~~AA3N{}wY6_?Il2}=_{F3f6f9TZm;a+aXpeAs0)#_)2(P|5u zw2*3=kj%v!NUz$$p)4%WgvULUJ8brR^Au&^M&Wm84=lgWi0a&ap&gNPoNbx+{yxPhpDn{YK3y2Ms;vtLKC)u0+Q}!SPgss1 zoZ3L>jLyA486?8cta*<53qmAB8fZ7}HWw?HXwiz~# zryYjdhY>Wh*T*2*L)c&EWD*ip?w3^oL&pb;2@8w2x^%~uspLPU@7D{$ zqU;`|FL#QCr*+X9+Wgpt6*pl6^i@b zHxc^CK~|l=9MR{aGnRQAXs}_C_~uK(y)1z57e3)bTP_V;AWAr)Qi3dqd?=LDVhS|r z5O3EcC<31A{|`AK#Gid}T(1eccPa5-S4*tp)O5K*6^(qR5Bn|ngp-+trXMRTnW{lZ z6w)jeM)TqZpiF$Zg&c*f`ornw(IQpQ?}tx=W(r#gjc@NsGUddRDeF`0t~&r)E=l%c zJQ^_*h-GSv=0FYJT`aV!*hup)qfiwKeAQr@O(Iypd|~o(>9!oC*ayuCw2VZ>j4;#a zsmUDwc}ApM?boj`o0Q+A8O^=3gQk^!WdX2mkMVJeC#M7PFQo^p?_7q?ctf>(4hSqP zRcOqai8LX7i|+;;9*kx1vFS(V0Pf=Rf-*6n8|GZV%1ycBF|XnnOHj!nc_^Szpp5$h zZcL$KPC4LCjQ%qvMr_diA#{z*8fq1;n|6P0N}FlyP!Y{o0^`a^7s2E2XK+`u%$(e{ zFyZGC9lJPhsZ?`+qgH+Hwy`o(j9GRHvZGw|^@3+xv0{aA^FTJ-cyZTOdK2=y^sjLT01s zWqLa@dqF?Sea~hZX%Qu-i>VFWC_dQbu%FU@7lM5;$V}sgFibo_&c3A%)&%0jF5;jG z+u$5EAkNI`W>YMXy4&)rP0%;0oqIh*pMl$#Pn1y#E62)(UGU>`IL6IrBvLK_d6_jJ zE30{G4cxt>d~7UKk?XPgYd8Nn~Y znKfoCsQ4+Pzm99zF)8jjH@nY>P~7rbG!xyYvR6)UIn0c{hN#-(j;U4VN)4*+$RM3+BUs zjqtWwg1^``rS)(iVb<8pI~Hy??sT?C45X;ZGv2c@F3R9wqkBtQ)wr5e6$}*cm(HRv zx7?EF#YE;ZYV29^OB}JhnE1<=uEW%?pank6(g)chd~FRjIztY943$EQg8}IBssU(z zw5w|J+43b8CMFnbgepqQj`kp(2Ni;;llBOYw5MRGWva1K%%3l6mI|l2y$iKNnk@f$ z4U~1*h`c6l{C+A_-h42y{>$AXWgGbq9UXlATm(4?%M{`;{pi3=`?SEH(dXN&ck?Y> z>^Jk_0YIkl?=uQ@(5fq%6)E=TgBIDS?x7oHv;;UZ z*Ds!YvYhGZ3ymO0LE7h&H+%AfmJa8aWPl_}ZEYPbEx&tXKffq8Yisy?vT6OVD?nE4 zBIN}TKS0Q?Z0{#Pcs|31G0z({B)CFb3vNzzvvv;L6ld{8T1j=blYaW9K;XzabeCh$Q~fQ3(6E;Uf?x0t9oMFOVEeh$8%;$@8o zykqVUU2-MMm5IXkU&PQI=JF}Ykq!JN4bd8kG>kpEoNp!U&m z!>4wTZRj$D0L@$ZhX}wfAdH^6^5boxYoLXNA;M51N{DZ%6HND%z%oiU_OZFPm+{vp z(CaKMeLSlfiN`sL!^`yPsNMb#08c=$zgE3>>+0RQdbi^E=Qs`j;`AL>*lQ;gFe!{d zuL}I`$lOUQK(D7?N7{7tQ7Dxfg1i1UVB2kI6h-0dPm+Y@Got!5XT64-v@1Oh~@gCdQrl46zJt(}-2G^y^R6ylNka&d#N! z7h*NC35e`y^!gsPy+Gx8SEG&}VONU9Sl!Y@W2jSoF|S~ASoEnhRodU~cgd)838GH) zSBuAEplQ+J2yAn}qPu`Li$s=z%_ATEJ4LLhTdF-8+^H^4)V)+2jRvET-^D=j?44c* ztZ0gTL3#zu(EDsYJ?&i#x_Dm}-7mtEr|pPg!MVj{xfE0_m&=cL%Jm8ai9H9NWV88wbUw@S1S9IoHr(f>3_Tu}>6nGf2e^$sQ zV@gUh`AyqHv*7EGg1TYsynC@(gu-_$$O3f33FX;DdKO?3CvD~%XQ4w|);>$36ejJd z?8nZhk9tI&A_l<1bBWW_TvT(^+ogUM?OPtHVAc6kd~Yhm_eJ~GtMENw#vtsIkK$G* z?x)38ay3elG)zSBN44EWOv&M5(&}Esro&D0M`%*DrrJDc%;&m}wG9n20C$^a zr>FRqVOPf;2Yb&TN6eTuL!$TJo;^?gXUsCwx zm8K@t*+LIrR~9tfv=YR+Vk2=O6?LI{Kw{w*v{_BH6caW5tM(YZ^i&aC`9gdFCRK3( zyoW|$x#zEn0^>3?wx!xajtDUZ702g|0@-UKB7u_ftvUQG3+Rxe9yInoO2B*v4yviO z2>UDAUcBE7S3VC_o_dw1qA~(_w&0I4tYjZB#|Rm`#7(NV_?vq5QFYH2#tCu!s8t!hZsHRWz=}D{&LWG z)DZi+F+B2ioSDJ>2MY}B;C_@6!O`-L6F}QVQ7bP}_cK9MQ?3 z%m^eiD^)&q2HbDWE}b~^XN(j+8qUzq1nK|aVgp5*QlWV||4`JK{%>-2P+X4wS24KE z`P&8R-FV_^F#e(_FLsttB-NLUH?Vx6iaL++{iEQq3mv1Yt;-*ma_QXwDgx3Ei9|y= z3JNeltm6p(=(CtmPUQjdXn(x&3`Gb*W}b(XnNz9oWNr2Nvlj}vt3S{429#M++&)L3 z+iy8mn#`1ZdZcVuAA4`1XB~U)0SKxDVn<{HCj2Job!-V+n70g-aR>&+%50Y`y5LIV ztU&k=p(=T#IJeU2$D?T>P2y3r?OGC%H{%!$iQqStSuFG>>fkEmO`@KkLO$=t(c-e> zZb7p*d>oh$1~-!-TRdJ^q|02MyCaBBdP6Xx_Q34bZ;n6SAKii7s@gr0Ec zW*jfNav8KxtOCm}Ky0RDMcNmIArJ=PI+;@J0}agB3tuxOEKU3Knno^^`Nqu1z#N06 zH8qlUw;c_w0MTQT&(bsayxZyuzE(c5&RQ37b?h5r^@TH%sxw!0^Gp=2K7s(&;Kr)S*36as53+=K=OjnYg$3 zI6?BA8gnh%881^6qfDiib)91P)4+U{JA z@y8Hag^aYK|ou_%dpVB<@M(JFU+v*^*^bU^!xi@L; zPz%nF+RWbIHqqy%s8>2~p|M@F*z*&*BGV|fXd4qUUs5@I1{i=H5t*(f#F2-fmaL2uhB-QB-9`qg0#~k+$en1zduPjPD>cYXRSyA#wUXF*vLG#c<#oVwHjE5QPGVJlBn)CD)NyQ@KavAApJkLw3)=FEcM+! ze0K+Ib(jN|Ot01T5=DomMO9YrHoP>qVWm21yDUZ;Xxsc6>cB5w$CygE}Vte+lvk zG@FAywCGOF@s$TRChW^k@cBWv05exG|5p_(*hxP-BKpL_XkUC69ig{?2|4k^@{6`2 zT_9AdR9Kn!Lo3*l%(DI_>^8EKcnnIR`_)Aa0+!`xxr!kH7GBA@f@f&q6vOlaG>Gfl z*))s{(NFH!_>#&=B@9GQMiWdpy!bUI=m>rbP-GOG6@*F9)_m9q5zPVjl5t!j{YQ$j37ACQXf{a?2`dSnt z#M$65VammMmjOI!j|Ss$H=%GFU~hzx{sy1|8zQFH>v0K9kgz^RRhf+w2;3i9BQjMO zH^&o>v7K`q$J}k}*As}|XM+1t5M+hxf3t!6tW`Ib4F=~zi|>+Sa{^UP2B%1Pd_;x= zt6R^IPV)xl`^uO&OK8%Y;rDH$WE|_5O&B^6gbCpJ(~Za4kW3CB);%-!=gy@CiW!cH zflNE^f*QGC(Jq$?MW5QpPD%vh3Pc~o@rgiOuDyznXRFDD;)9w#u)y5EC`27kzZ7y2 zaEt5C*zlQ~UBC_k%=x&}O9qqi<`3*1YymbWy|5KIGdiKRirl6!_n{YX4JTt=>ax$H zl93z(vC{fM(lYCbf^BUES3Vl_!Js3BFsJHfm;)ipTsI-MPc0<9Ktqo?BCJ4Fo#NXj zs^aG!7Fmr4yQ;+_XvA1a6ct5(rS?Vl`zLqzr)ifgAiHQrO>tPU;Ar5@t74<60^R^kpf9C{F=@0oNjRr1kpg{>m6K6bB`mPhYMF2j<}rmTV0 z1u+Z*U;Io`TrbSpA03RiRVv)_-_K}^+xiZwBvs9k52VAmUyp|=f78M8)RxIdoyjHV z^`dEIgG`j^kJAx)Mku-+$FvAf&gVZ+i;v2C^{c9*d8-%v`@5~IHdWo7qY4=ErNwzC z2B57hZWz6`MqTYVL;lw|eWCzI5!z1@u<9fP2BZSrQm-_*93{#Z+Qsy~^Qpn{9Y-V}buM;Ive5U#J1- zdj+o#*N*%TzB9i+&Y=RjM@y_UqJHr%bS~UK?)m1M>Kjnha;`!4Lrd=Hn~v^KDBPoR zlG;Hx1pOM+l=^ji&#$Lgdg_;+V(F z#v)9I4BgEb)eet;A45Pcw_tql6ogTS3Ql#4(+66d>K5%fY&sg5I0f&|qO4T1Q+BK- zd3G6Vv4aN0AU`c>C)b&>H={%y*IJamW9+aEk*kJm&mP zNrJBb8%s-fcXx{;>|uxC#C0v{jJLWyaiON2dsSFq=NessPLqinHv0; zS;O209y!0@#`%+^o--3gXPsFS4NW#wDLB=f-OOp>@w0u*uIBFUu{xRAy+VA{9Hd34 z#h82E8@w8Nu(H8rvaUbraJM{q(>q2n7zYkoP0=2qMQ5jJqI!e)9niZwiCJx}%(Jum zlOW;_>}Ievy3dMZXbm_+FoIHZb@wzhT!`U-L-zJJFdSJryUpOP5Srv~JVzK6--zf# z1PKzx!Nmvs6Kc$@D-S?s^TUJ50eA-}LSyrmCNvH@2)JJ!9MJ{-;D#CMq6p09;_~x# z__O9i(vP*a4?^|4<_MUmplr^OC&B%?ytuNmy6#A9(7ST+>AFjkdZRE>dtsi zvJ_FHh#A47(TXp)rEyLg5V;Bw!p__(ps<@YtChv)%PZ?IJgS<}Sh1MmRx%n-vpuL` z{IxDT#O?I70EF2Bn~i_>_bR796d-1L117_R_l#nb;n_}FjpY|bX09x*uddI}yDJb@ zo`i3M{FZoztHCWpO;rZA;gB)0x2RVhOVTm*P6&U>+m@bMsOO98&pdbro@sUQ`ML~0 z2QHs0kWMcUo~fs=yQ~lh>#feHM{5O3!-Z&FmTmW$)=beE?X51Z`VGEZ^P3D+dzP*D z;;F8g1;X$q75R`Gq$+nzZ!Mi$=*OUgjhwBuR}GaWEC7i@gEp)vDrr_O9 z<^YD_FqL$OMgFqsaFr2cd)KVwf89(*H(f}Ru3m;MD>~@`>J0k(qdNHILMW~LkZBR7 zQ0E$jKlxc#^kZk*ly@SK8pj9m)2vV~VM@iQV}TUsJuGM9a_I!N&UijyIFh_VdXS&y z0#-Io&frW&8dyEOC~jl({)^2=Rp$ZEd(XL*tz|#_`qRYBfZu-8sx>^Na1|UK}uzO0iH8cbM$+ z@4;AL3jbW7PsUlNHAaJd7|aBWj_1ad0(I__k^A8GQ++}@rg~%^6*+K)0WIj&r*I54 zuz@IBu|2Dwi;VoV>`^~1rpdTCXT<#0BAV?$+*F?GH7pG#iiOZ(+DIA^@kU`zvg>pF z@v@(71+Z-PEu??Tz8wz&@211Ve=BSmd1@_;n|+Z4=l5BsCUQ-gKclH%*2MWUh2W+S zMUZvjHHaQg7+4cxBMq)bNt#j!C-ET~K)AVa;(fU6&*co<-4n-59iT**ozp^SkkN0g zaqtFLVWNObFtldd;oRTBhPaY!=}}9b2G?9}$&5u9k79LFyk=rdTPH?u+S-t+BMYie zb<$*On_V(d$j~D4(M{zwl(q+Vp=QzzSDWSSpFIpTRmd3FAI}MEbD_&)n+UHuZyoDZ z=1TIL7&mAFVUUGRua~qs3cq!yp>Di+wL7ikFU|`N?!RPK2HlVh*!>9Th9YZ2I69a$ z*v;uAd>9;wwNu)}1ar))_ji!Dv8@p7Rhy&y@LXptleF+xw?Pma@5a-?Wc)}}+{MBI z*eBz`LELKLjDRe*>&apO_xI`P^G_3kMflrIJ z2}h45TGr_Wa1;gA(w2cI=#+?i3NXtB{)?T$!u>27$KHbPSUr|`L|dJ7sPK#~XYB$2 zJpR-X{=btKBXpmsv}8D|)FHtI5l%U*45y+dNx4jPKhVK1O9fp*p>yyYu+HsT5|Ot$ z=!@2Antgc0@^BS*eV{&?VAxPG&SG68X3JV`P4e<_Y7GZOt>}<@wsEWiA%t~EFdR2| z+++uoYMTnP4V`pspiYemF0&?CE8AhY8~I&_HXT9sjMR^I92lC|TVAT7DaBszB^rTa z<852YMwrC`%`MMiu(UqdgAo%E z)fo~PyxU13?ZGnzMNp6J$(4?*m~NtPL)rwEwR5RpThGT0FVTzd0koxsnTdRj{d`>h zM5tiCRPeqyBLxTdMH@cJnqui5eua2IPvNH3Z`9oAh+B>MDipgb(q3_JipIV~b;;K@s-Tk{%eTc(HIi(7A64cL^J6L#G&u z6^94F6`Pd2EHl)-nBK;NtTi&Kq~>P-E!Y&Vm7u>{~B8sJLd72OacDuvfp7WuyE_(-#b5_eZ3yrVJB zSX?P~fDVPm1egHnAPq>@+pG&ttw@X^=zr{z6V?8G(LH?8iRJp|E;~mDqn#OhF@`-R zJWMfTFcktIOE{hw65O=DR4C4l#BYku&s(!p7~#j266jXfN`-Y$`>X%fA#ZrIJ840n zVjRaj^hVqITVZ+e1*n3=%@D{>lA)qFOBp&_l_Ceg1W1BTo57`6LGF%?Ep|*c1EB*xf?K`5q`hm>lv}CA^<3|BUWd< zflpG1TYn9-;JCS~e5-=G5?|hrXWCCj>^Q5f7iaKfuAQ;g2mWD!`@5qQ#5%^h6xmeT^E`KJ z6!)Oz>*ItyXay@|?!;m_a-PBEWeSnur7)WPD%_VB$yKLc9)Czi1N(t@ifBIF}y(X_HqK` z56jm0)BJMCXsk;iv6Mmx?a2iim2y;r zC4vX_W2l;5db+;;OjPZFNA}v{@}d^>{=$?Iu2>2ZO&HpoS=(l}Gc+5PUG8$LMfc>@ z2w*X8waE7ZRu_=|C}~Za+R_%RtZ{;pG@CsvY?fqt=2TvdIxV!11ut4id6DX}5Z=&W z_7Jp@T`g*?HiREZYZTw@_i^FMqa^mKz*jsf-g{W7UBr$Xg%{3S?x6U&Ili}a5oR{j zteqZ)Qx6qiGwY!w+SCahp6_OrinQXijY;X{i+yfc?TC4Q$IIsT1Cn<q&s z%X&xrx#6&h+`9>%ml>6NsEM_t5CABoF$ucyA(yM^I%`Ei}xLHS@OdT!4!|jqrr^^)#bn^ z29`OY&eAhoE6v_=5V{}Vh=c9EKFGF%Q#U|S5(|F@bSFv_NVR~3aLNStC{g6n2x9Xo z5=7k#9Xz%q@+%=9N2G6I-#D5Rt*bcNWMoi;30bjG$dL((1?|JC{PA5Z{k8W-yB%vE zW7ErMkfvq+s8uhH;P-l8MpqYcadll0srDZ*ikhFxR51&_ zS_;L~GMB1a;c>#(>LMfRf>o&72O>Vg^#Dy~s!3h^tjbjGFIPvjFk{R)%2tn#$kT0y zb=W__uSIkUUcN^)VZiE-M;ZorFg%yDZjW6eueFk=wbN=4$4X|V?nQmi1RT;S zS23A2hdtdNF-`kpnw%Val8%tsIlq}n&r0Aywmsnr*^u?xow7e@IiXmMyn_<+3PA|h@KcmQLmAFW^V;^lUJyp*4GUSZLfxOU|LJAX4Q5q?>!AzYLQvJ=s!a~P0TfE_tA3HiM zGV}~uRQ2cM4W;bWzk>^xWgmI$ZrWyGvmp0&seswW8J5#*^e9S3&hbMqp_;!oco>Ri zNkyykrrFG(f|cgx=5qj0-h-wC=QSsST5oJEw0SZImPYm`B2fOF7&^iJ$vSSF{*%9+H637 zNNzjL1bx+yVASAv$@yy$`SNepJt=B&4Ad1E2~@qB#_kr|O(=Lsw!_54@-=DhF}p7C z#g_J=cW4V@UQx1L`#c^@nr#Yqc3>;fed{lN6FG{{FM+l&q*$R_zN4D>p|Hv^j^p+)l_eWo6Npze{xB znr>GHUE^W52bA0UkL=q@29}B$?$EUv)x4qyh4a~_9k_dRv$j^Y$scX3nP~O!gMFzG7M9E|IUpa;F68iLr z$ZDiK>2LG)i9j*@1rt#Rz5wBviPJ`3x|6F;KYOaw+=gn!AUS5XQp!r?AT}b>Fw-D1 zG{BB!n*)hQ8LbdGLQuNjKN$>dNe8_!{U}kVv!fKY%;HjMXOH*7@8b*&@TaB`@EY-o z=x-nCR{BJrQDOx5Vdy5bk<3*A66(9f9y2IsG}zsh?#}PV+=!yDf9b@{Has|c=Z4E) z1WgG(+@PTuAGfAQzz}jG$QUC1w?qgrqrFwX<35I;qehpIPva)gya54Pv>chC?SCDX#)VA5@YI71Dj1L0{fOO9~5tlP8;)kzItXw{sEO3SHI80Dz4vL2XU zclvmGX$Ok@24fB-XaK7_|0pK&$q`a(mmxdmk1)wkLTr6E>Wpn5dn3D+^4SwR=FrsQ z6joggXocPMGRujVjwd2ozKM0=Nry7oB89r21~Yk$&I7$CYUqQCF)H# zB5O;h0k~FOyHl3_`^!;q^CdZB@Z$7yFm)uxGJLImVFRpVL2|}7VP~yWLgx$)@#UWS zdFhwJ|N8v-;Pj~W`7>C=f+4w4A5%t_#|myCy#cP$Lt;c?L5USWzGNdL7Zv=(oVHnF zwt?Pm1f`%4`%}RJl?oqoWP_!k+e9g#UH>${nGNa=9iXZbyRzw%w;*)6;#2T}oD-c_ zSQ2BK*|8h zVAMy`@k}3A$)J~v!2-t@+m+bhVW9pPU{qwFb>}=`6WeQY|b&3y+CTHy&)+==xA;!+@BS zvf_Zi+RBM72yZdL!F_0+%I$i!RJh zfzoE6I=sL0;W8WK{}EyRdPxjc9&olO-}(4ny9?8)Q!5&g)NQqjCjx|bc^TcXz*SSb zx3HqVJAi<4V<*!e71%It;4-|q>I-$r>cW7|K2n)a*89hlu(HmaI$+;CzF(BHWVhx; zG!fvt=&DKCjQE=s9ivp*wEdf&iVXll&v2pZQW?23m(e?eNa&W(7swW|K{lZX#Zg%Hue?G8T-u!KfpHn`(BfBipt3sY=mR#6*WN{*+Ru{M*13)Qg4RjC4) zg=&;ECnJ#QcBik6$^y3Rnlz5r1V1=nqjkJi`*@A}crEr3m5de~bghrqlJogHd#U$R zc9Pju|6^uvMFF4X`oUe6EzM$oyweOi0=4w^K;uEZYVP7nt4oUwo+(`dO_{#_7Cgt& zS=KpfSjjzWCJ_~0r&mpN%s#m`TdE25&Zh-2n72qkLC;!!qXbV6xqONNY=loX=sfP&o6*M$ls-;TSNnogpL{)91i zUt6~zdc6dG3mCp^gKr7mQ7ng&)nZXEtZ5Y@M){+ItP`0LFW5SnsMnB|hCl<{*G7nn z6#bEx{0`ID5Q$Qxl8QjsKH1x)cdQjE!GU_6Ps>O)L6t;2K&{P6SvS5X0u#sp9_3Xs z=0=NitF1YC7n{o&ksFt%<;H{?^rB7lzrwwM+F;u{t%UM6Q;7lwasb75iJPMIxwsI( zxMCVXfkTqB*w$)L5hwLGebE2Dr3djyB9>LW8=2AL*L#O^nab4E+65+;+D1QXlE^%v zLQDO@lS!I9AmE+fu%EzDeSQfs8fh@Wd21Qm<>e70}TbD;}CRMA{&BEn^?J_ zD?nt7@4gythI zCVs=H5?_fj`avQu)2TpUQuH0j(LiK4xX{w}p?HY5_SaW4(||%x=md12Zc9VHrFWgN zBF$-97I&}&Roi-`g=S~e)XoVknck2t;dgFY4%JuE?RJJKEwVZVv?4TA#O=!{Qxxeh zyxbMkN<3inhEZ2X{`x7Y=BQWeRv&kJ1IP@)puY%|=gKok-m5z$T68!X zfR9#cTZ8=Sx1DrCs(Wq@muQ4KM0N3zfS5JQiVz*B^9wUZqKg=5)el;vv{>GEiRbxQj7Pq zS~RMm%-yLQlfzq>F+6H^Z9OM zS6I&epIYtks{PQS<*ZqDUg+Vv5$ZW3-|$(!2f&er5T5Fc5uqj5#^bLnA)&bJbh||x zRMmBw(H0L@%z+{vbmuR6wspQ%XEaH4)=Em~Nh}t`2|?adkvJ$5aFjGykW?`A8+f)P z9m_(ong*8%HqwhnSBiss0&)HZcZ!{(7mw1*bW#**Hu?}&qiBTI8^UZY#(*2fc8nT- zosn+xC|>CwAl_SC$6$wMfZF1)lTrv05DaOaoZ|(hj#<%9ICt>Hq}BP)|D^FP-lMWF zi5D@|_Y>WP`2H(>AF*ALDM02!RBEbQ84remMy9$Ej$5Hy$<1y6u~={+XA73al4=!~ zD@e>r(gd|`rd={)FUh$+DflIL_)koEsSoK4i@Ebre;+j?F^i0@-ujTXUqJUeKy;_%t%TBMl7)xr41J}!Tvrk$57pByWE+)>vm7ONPM zjMEt_b=(qubNH3qX=PoYM~5Ogs96Y)Zd# zs2{6V1#?C<`5!QzoTWAGViHYZSQ&x==iK2qp~6j~r3;E)z_&nHjGTGO$Y^f|cjS)N zsI9CN(#a4p3Phc~fFO-vXFmjALN*Hnr2vS(O?@_&fkEw|Iee<^!lg?OhHXPLp25A2 zTB|C9YvZJU*^RHRNd6wFv4bzyR%eu44ituf%!VbD)*r{0@u&k9YO24fX#xfXR&DWR z(w$-;X&bQZhwaYG2aP2$lmAs24erup^cghj3Y;%G-Hr(eW`s9%m+{=QHpjT~j$0TK zYp)8xuW+?RTBZuGQe|+ztI9Z)h^m2F3;DH@M-tS_|p%HzGVPZlw-CZZ8}`{~un7)iLe#4jESk)KEUh`pN6bdy0lqI9SeJ2Z1u zXlpO5-iz<4r%WJzK68(&=1?cN&QzEx%Ka_?#(%}(_{l@bhKiZroMEHv9QAUmRfr4f z%0y$@*a~b&o34c&q(w}%hMrAW6%lgr1nN5GzGJv9`LxRqXio5?psyu-&Os+}t0i3g z@XmM~S{Y$*7E!nGpOCkb4bX&}V8O==f3Q_fsnFJzHQzz+uG+96rr|zBnjjuE_0no( zF4X}nyi0de;GO@xg2{nF6AS-=L~h=8hUXOB1x>dQ1CuU%c=VXkd+HM`q`4m|3tfq3 zMFTUYVXMw)wG?^;~vQC7x+jv|1yj^S5w@(yiTKa#A6f5k{;_tt=7K*Poe*b+De$Bt0FAnejOnQI* zhx+-ymrTmkt^KzrpN~(@cWX}d&N%LNntwu8mJU4j+X}Ic|D5y{#qnoxaMA62og~G= zlh+@YpS=7;|F)7V)iyOQWM1e4!tvwvY7T~>AoJPJO0Cs2@CmfQJgj^?@>S!giuX?Bo}S z{RWhd3764PFxu_3^Z?Vp;~O$CXbc59W}0nMhJ*;UqQ03Bn5tx|P*W zp5d?lu=dG{n^3E$;A6wf@*zWIP@(^@WvHvASCIKPs2cRmhBNvrO!tU5Wo%2p>Q39gPnuz4~Or6>Yc;&}W@%yf|+@NIq8wZBq3V*8V|D6k%F8=|Ci0^(W)tmc5Y}_fqf;xWL`G8t#qLxHMU4N*KP$NgV|l?XU%q zR}T6KscU{IplYfF7%%Q~>m`)rYL8eE4-7=D7@yVp%MSV&->k4qLn_=CmJ}U`N%YzZ zg4;116Ij6%0^87NFmslo)|QyO?6*YfgTRHwIRSJiyCRC6Sky+9O4#1Kyi#-~j_{QN zE0H-uxIBLnb>(JP%{hK0pzDSkluDkH`C@K)or(cJPzqo5{`>r2+H%bav%ihHo_n2c zJR)|vnWpRj_k>MC{vK>VR~AIle+7&yY`%A>UWf~;AC-|Zt+;Jv{T_~zC$K#j_70`4OGHln8zqELLP;BFvrzi+ zL?=h@rwxDY0n0o)X9HvANZl_W=z&Bp^99YGKv}*~RIx>EeGb1-Cb57&M@CBnPfVLr zDN>EVFGnH5psL9k#amH_PV8nM%K$d8?1>SNS6oic!odJ1VW_k7-IW6tx~2G zWN=z;P$(TGG`}5PLN=I<8xAN$Q`Kq!xB07PqZMtW`+gnx`iPw7X6Uc% zPxaLZ6>!XI`*oYVVIZPs7X^=i(X%J_0^R1Kb}aD2;bR-2X!zVZ?ngtd0kyZXEXWWX z1dF`$MnPVdb{OcMxS4T3{fRg#`pg`aW&GzI!=3^7V#cF>ajrq!qz(oKZ82}1v@q7W zZW4l8sYflZ)`ND#M1PloFx&v@I(&N0Ea|hDCP(!uS=EIOhMwg_v(4G^qDdhpCstLr zjvFK9#lLl=^_)KL{Pyp-ZQT-u(3+!wfQE`S${j>eUSPEOO(&0iKSQ0?IL5EMt-f^n z>LNSnuL9XMAgy@Mu;R{+Ce*v680IEZ)nmUV*y>(fLRV0YmD4-PfR~9e) zR?<7H(6y#Ya2;M-eJ2bSB8l0~jVW5;y9hF1=OZG=d%Dw(6TXURMjlK?1zOT^vS{p1 zdKC&-B^9DtBt(U6h84i8wxZ&9W5Nv0<*J|%uH#Mo(BW2qy{0EDbxluS#oXg4PkG5JW9GEvJnJx~z_76bn`A{EzBf6ue`@&_%-8j~6#wn-0 zdDDEg{Mfnh*Ll4uh8S|CFA(V;t?OwjX0w2c9LmH zzKsA`Id2X|gL^7dH7PPobY}N8#aO0QvJLSIY)1q(7OKtuW#?)Uhn}xB-7=(=)u8g_ zZf8>X+>D2)3jCJL)S((s`sFdh@y{rbdN>`tt!Wf!3=-dI@d12rIZxKUK^XRw^>0kv z@H<8LbO(bQtg30%PG3?{D3o*69SWT8O?&3?fhL?0L3V{>IVwuGAcvO2ejmhSKSP!E z2j^N!#wQep{)tIeii5kNY_T#a1H9JZKxpi)jE3Ro5qB9KUk$&%Vr*@LY|KIX2*P#o zL_nWY?&SCWZ)m+klT}zr`!djizbbs3o1-S|dP3aUlH}?!5N+u6*>!rw+5+n5H8Dho~YeMeuS(D6jCMf(Ir>c;d?)bijQ@-J1 z4^TTD{bsr4kH^#A#h`0~M4iM}pA;)eD_}BU3hG*9L-?%MoBryzcFr6Aij+dhQ1O@k zVitSDuDedV&N+KF3X~IL!-4_siU(T7kDL)?adD9b_^D)IqLdk#83_>x-z9kgycR+@ zh4n3kZ0E}mj&Dd={Mv~QnhA2#SRvm<&rqB`>qIa`ot|NcIeIzzbS45Pl_K2}dJ$6I zc0!UkvS5Y9&!E1N6|igzwOU>c1KByfkY&y-q?D#yPY#JJa&mnSr(U;+qC@Ih$B zUnt17@xbb6**(q5DJ{}d(8<;32XZqUFf5?TPJ#x5v(9%h|JW%pfuic{-}Uw0+6&nF zB9y!7fGjyKrn*);PDQQ2G6dUnW}97;qvWzXYe?Gt>a*E*Zt2ITtQsE=0Hf_+1_m#_ z7H1Aq7Bqu;^l;$hsVg<_)TuRoBrvHW3jL>B3g*k*E};mnI=`p`v=#s2Qi-jAgeWAW z4}K=(oH-POyFQFg59o(R|JdQCk2{}f&iP~kiYv)LWB0)*CMHsY9=`#XX8+wQdkGZh zt#CpjLJV_=rOh*O>VUdfWaVKk#XtT{Y#G3Jl=K;7h7N5`_ibL>O z%WElAzm;KGR7>V3)E9aG9w#UnkJV;rw)P*TEpc`mq0KEZ#YKFqsZQxFc!^%;*UYYh zDxBr!JW`WsJIT-aq@ASNocupLm7(Dsp{yQ1|1cyTPhi7L#e5kf0SC0vF&t0*UhLV1 z^Hih`0~0oyjKm5E$R*07@SOeC?V%Hc8QqNLA0!|H%`dt+C9R<0fiC}NX~=(ocEs7| zlpiv;_di7Yfo!3fbZ(Q;KR^ZQ-F7P24*oAD{`7q&j^Lu=adyN#2F7)o_yXdHPZYKH zy6{IP4PJo+Fcb0adtt*$;BCVj4-=oVxBnvuP8`s`irCB_g}?IugA`@{Aa#i!Tcf{7 zMP{i-fsR5Ho`aEo80F0*=cI%*OwBz+mB>3VKuTC)thOWx-T!c}%Zz?>97QTWJd27- zkd++RYO#OB9*|81t~4(bdei6VJutbCrK+ko?K`+qJAZ-4Ft{la=kro%nHJUU5^584eR-2CByS|}iP#KqKb|yi;Xy0*jxlYwTw}R z&%s*VvZrizLk5KC7P*WW?M`4NiLMb#?t7_z=BwzlA#^`mO4p_C#lv^Q(HqkWy)d7% zq$K$+Nm`QEOn;I*uZ_WP&ZPxjN!&=Bz;^h)0ft^duV6{%M%EBw=s!1#m22BzRMdW2 zCBHYS6zs?yzrjLYzy48|ZP`guO0X=zv2l@6xoTCm+E!h1gtv8P?2X@LhP0MuHWX4^IA?&HBic%|_(R}%20{NbLLp;47y?oQpkU(L zj&;^HG#E(Y<0>n3M}-4xLfFNu~}B;Kxw==Mb`| zanvm>S`#jzcO)Y&Gf)p|<$`_m8VXr+Ik^la?E!Lq2^(c?3Q8aVq2#G6whjAlbl)Ad5HSVl$sZ0 zN?7~uwqnkPwrjOCfzjVW0%bh`hnck6W|vM^X9RU5KtSV}3`~a1jr^PC2B`a2WKs&W zI~IcBZD=b@T|(RJt5UvU44X2QpzOR9rnq#oLgcK;;aEKzAb0)M42Y!3)RtDi`%>ArX*`27V%b|GDK2u(9z4EZ^dW~h4Dw4U{)23#P7aG0abPu60lknjf z%P$(U16*q7E|6)lq)A2qH9Fs5d;NFrN;)Q|`U<=Q5)IO`l9<=9>*y*&oq-t>&<0}A znjNvXAh(GQGkOSjV6F`Y>b-;v=;JXqL~CH{Y1@B$B-|XN7H{)zyy zL9+h^?v*dY?&PY|ho~Zh?zl7jg5t9;albS?vdRxO9aYwSB0`sg5?@M4jJTf zDINyk8(W@!VRd2SqaZPbabxJ7Hj}1jBg|rNNnwaM*5;G4Gg1eESy!8od8$xx&kzGhm191S6yVjR zN-@_5C$l}0xh{p)JWII}nFEftF3F0(?^B{-zbscGjCDS$fqeSQOZxDHXV`jqs6l`d z$8B*ep3FISf}I3PT1=7Gv1Yb|s4dOoI98CJ-O#Tvm-IWqpgk_YrmOPlJQ-V^f7`B7%q3N0xmo~@PKn&cibd5eU7v{R5khZCy}{A+;d=3 zjo`{TSuNBdu`oEl5pMrC1ShJ^;!gB5r8f#X7So%~(B#cwmtWIA%H7NN9gI(h3kMGv zGzbpybdGej`U6Rj?m>8@z7??CW(aSjI7UpCL9#n=Uq7JqMSkKA%EOZL5fh-~e3OV` z!_a`C#3A&lkM?}t>+dG*HAN0n)Y{SDLX}DsSdYNxJ%#fGi2(Y8TXI~7v#pSfT2ctT z!m~wL038EfYi<`}6>cmoQ8Ts`Or9I7{hW?F&2))YEL}pUcp786*dF(~MkRRyU78i{ zO^}04F#_Wd=*{1MhOHhZt>1q(0}$9xXBvJbHiLlUwcG*_PMYu1=a!=cypn~*cUWBD zILv;9+qU0D-PZC7ptuk&DRRFyQH|u_TPv%%75gZm=IZk@1Pb-0{#_~*;m-oJWAT1U zjjDhB@4OKZ+^E~-HOBZtK=ngVp%OO!pX%RL5`SHQWfmr=rd}z1yZSxPe#Gi0Ne!@5 z{;Yb_pI25lod_c_TyT){RnMbu4r0xEo1DtF_($D z<9PWN!KGUD{YwFt6(4QZp?PE1IJGsVZjGs|F`c(oTlQdv`(1#c|4_e9jc~s~&+2mP zdV)M+{|X|I0VYWLkTIjs8}tX`LBG=!0jSu<%AQ9mlTa&p_`H>L$MKHFTkxhQo?LDi zTi8X)!NKnWl;iHOZJPtX`muZ*#}o0Csylm>wD#hwerG&s3Ga7oKB5H--ZSQGV97F^ zVG^3-SDtLCuq-HEq@Zk!emk2dg%y|bk-h7=Vi%j@dv2dVFRe&c@h7J}bxr?d8<@#A z*(M~7Q=~0Z_a;V==IdXQ+r1qk!r(6q<`d5Pp?+xVxY{R$YD_;|68F++He1HuQk|M| zIJhfP2c^R5yw2hXZ?V;qj*Gy`4ZoFNUlm?HVyOVURF7+FV3Z~D>u8*5On0PLiRb+b z)&3j8sJ~>MH+hAd{%Ti7v zX7744jAJC4sih}!l|-))gk;Si1E;qy&Ed-b{=*dg{slnZG>09`s%QpF6>pu2>a_I4 zq5AGk$47={HukHSgKCt9HG49vd6QXqU^1(DlUc~0j34vHC5{zQ)SPrN21Dil`~QKw zeF!|GfuY(ueXu*z0Zrp6s3-e{KLy|NC&i?^m>}((ChApcDS^&-sF8jQDaAB z0|cWgbO&lI;L4hNJL zk38@oo7jd4ho1Bo?>dU?R(u9ULWifNJw}Y5o0E%9^Rv@Rj;Xj<2VFatMg8x`piKOG zv=lhgk$t1CJWm;gmu1Vn*)=ScA88mWq+L`JG9@sNTg)j0Al{)N7>m7~c_TdfpF`^Z z_apRNJjG&E*pDistUQdBe+vlJe523#zETv+j_(Hg)S7~$xbVyLl zXaS~2=~w9Qfns8$y{l)i&k@`(zNg7o4-2^FU6eU$|k^Rbl4*FCa1 z$DDSiv)Y+v(t&fH$xtjqy?BAquFe|m>f=YdI%~A6j~eawA9Ot<-8UT&*==eQ+h@*- z2!kxL-P^=Ocp3(v?3Ve%L-dHFzRuO_46|ZpO*S6z04ZL=$#j_fs)He0O6fOCJnZ+o zQ@pJ@kX_QbQxtxN6oU}$lrA2;TZVDJ9uHFy$rNk{L?T^^jLgN{n>@9rnU#bJSE1nk zry+@9LkW+uL8J&9k|5l(`Oz8mitx_4RH28A{mkP?!VnUH4Fd~RI;pPW0S!up|9Z9L&_GRjp$mIx`;Zj-EL(NlOf-flJCHcrlG zYDXWBRy%2R&^xC5*h#B6Z-Wj?T82^8omzsyUC8*43$zAJ3NP&y`B6V(;0Vyb>a9X1 z#nzw)e>V!-Cwse;(z4b~pr84`JBz1{IT$y<_L=b0*obf$P;cTd6F#m;ZlQA@*%<4% z9jm!Rn6*!Hp1l~#J?K}Qih}ct?Lj&Y>BYHdX6*htH7U;qP>oM0Wd{7>+zK322QP(Q zJjFZ)$p~^+$5%H+0LB88D9|Qd0IL{ za514RbM_B1f*c=Xk!sTH#yZXUZ_o`_fS3u%sLH2XC!c)RN$wW?Zgd|dveOMJ_rY0$ z%le??1CfD1iH-t&&a-Pb)+T2_-PXLjF2h0E(U~zY84jeo8M#?-;1^KAbFfcx*auu$ zcZ{2p23N2|J10!{CYP5T2>EWN7Rz!Dlbk^WSGhjW0uKZ8lLtsnLj5trZt*~?+gz%?pOV(uNBEz-^k3FX*Qx^Iz*1io{niPpOLR#H3;000H2A zsX#x@!M=~X$ku@aqvqlS(1&-BE!tdH5~_-R^QA(vsDo{q)q@l~R8Fs-d2=4%bu=1i zj*-bm`!&^|&IKNIJ8Ha;ue+$}{ChL0#U_4z4@r)}{u2(F=+r56t_!K7Wj9i$m5@{m z=loVBGIkGj$fBhv#sn5}F2&_ivlxuja6yGqvbkM#PIRP|fg*Pf!Y%n6+QR_F+_P|x z!gHs2twu4`mvZi$BOZl&PHyo+)W^fp;SU|0HkzIi)&Hl%1klkDr^X%_eKG)$=K46A zIUqA|6uuu$VgS<#)A0wvgfUI3D$cB#APH~;HxGa~j!vE`rT{WGC$%N@860)DfM zjN-n|+^Xu$wo_ZgC}4ueNh_o11Wnll^S!XGq@IYm0Z{bqvc(dfS=w#t3C>27UA(%4 z`_BZ-7^v~eY+E?-uPFbL(%t6XQ@~$=Sv|-l0ap_&;(f!|+qB{KU|t{RVlXr3&77(g z>MV#~-1c)3O`ugyv-rqnUBoB%1+QQ}<(byAA80bpp%)v7jcFv1Z7utSn`_IxE*Lo1 zl)n)Txbs@nt*Nyg)hE-rAUuN_aBiwl~V`!+^XaKy8(UF&!kX>NK*(6OXeRwcbxC9^-)t~@|I z$R@V_DYtQRzm30!@6q{1~> zn}c0-#_h=kI+`GzdYvvIhqI`DbkcN^q)Shqt-mz&8hn=%$+nj@GFlr{) zYUVATYA?ApL=NgW0H9;@qc9yEOX7ZN({}=Va4M$7+`O7&#pGLe(HUHKiRGR=Wan11 zV}89Mf|FTg*Pn&kL8s+-PZ)j!#6hN6blY=m2!T1-_Mj7oxoGyswl$xrdgg8~)zoa3 zTM>njEILV@xz8`QXN-V4&8vBrJAiq|bBOnpIaYS8bbOln1HSlSV=urg6EkvP zI%6$n`u*qTU<4%b??20M&8k_jdi?<;x3>O#U84l%kxUZlq6IF@{PB}4ATWaao)%c7 zm=08WRrvD1|BxH`eR%(6Gf-Y{p(&0pOlhG!=e-Lv))cwLJZi#SP0HoWp_qjGY{5H& zZUvB=x#mG)-mv7L-07QzlEZO}=(Q08(FJHN#`lW~OiwgwD%!r#Uq}7F|7L#E4XPUw zmpZYMG@`9yFwC@&lD=JL@6$0qOoHYPhKoUY<8CKagqzN%r@^)bX<$IZwb&bc>vX$h zubuRtoE|T=2F-NoEV)=JA2gPPDr3oS@_!x2mq~Z}nZk6cllGa$^O=V@LtD?3K9x(I zR`*Tn`J%?;#d)chPt(qAVyq4vdHZ-Yb!k(Z$KD7Zu52UFZq~O|yH4tC*ljkEzZebf zQgq54C%qxL=*7)ul9E({+ca885o0VcW)WmPCk~MaL8gE`v_y`wI%ACCNO8dQV$t8f z;@mh%L2*ghQhBYUkO8Yvy!aoe$$IH#JZ`oN#YEDE+JI6`_$nT?y0CbPa7!TaYu41k zT{Soml>SIMUI3y-W3`{nl|b3o`*D}Ui$JtWtBbcm_|Y2}ooThl2Es}^zD?La0-ULn z5u9vAWe}M3l5u;`f@>#b(G#(#e0!5{CzyID^m{uRn1vaFg!T_wWHNZ4>fh7v zQd&1$)dg4Cj(@6uI|XA5%j}$w5_F?x;HWtLVofTy>XmC|%dNudc*RhI1g>}`OkLBR{uI~Ez!$~%#Nbu4oz<HNbAE*vfDN=CjiXBDGCtpJ9Vf2DsaSeg12EIdjkQ&|4OlJ!T&RoAmf~ zUUzP=Z*|7755SNAf!-$07QN0cUg7)vVx}C} z@A1r?P$F421p~MK5E$r&17i_cqRhho6f`5@#Bu+?RJE|o+yDH<*CRs*QuDC#DeQam z$7c*R#gVrlEgL*mJC~P$V^aIR4{8H&moGzsN5uxD;H0aze}7aT z#jTF?$gxoc2i?Ia%SQpaQ#+xSn_4RZ_r(ljs(&m3YJ|G;+K#^Py#NH5F}!_zQ{-6X zwS^>fxUoOnfSCmae)hrjgrqa3pd{{3zke?rCs#dbUTIxN7znod*5KZPsS(r=?*Utv zNlIoeAP#1+QE*|x+TZj*DzPD9M1M2TvEf5XDK9+bA0|o?cWR+ciyyf^B(Kq$BUU8D zg^oF9yS#^Q_hGX%Q;b)zNPB>5U!sVfwDi2<--CQ1?;HLp{0CQ~Pq>HbAMZ8oCVCKp zk^%}m;rb9%#c6SAn1<)L&Zm3ng@g-;IXd6~CL&it2W1tqK zN#}(=_-6e$D`N)O93zW~@Ya+8KW3TQK8Ms2A$fe97Mg{59`T_ZJFh-ek#otoY=K z`JgJBr|)vQ|B;=p^GfKV;M=cM%?u&4JkE*rH^sWx(9Y1+^gS;}J^D#cE}oJYkV5sc;iEZD2!E3@P(Bnq|Ci+eOsz1RCu$(aauKMl_Ad_;4SB%kt6L6o^ow>!sFs zfa}OB>*J^IdX!J(khy!+scr{n20EN@|FmVFoR385eCO?4G}qG;9f*k@5iGvQQGJ0- zH{g1I!RD=tg)jGCN`)^|O1y$s(wD{HPH|^03>dwJ?08mnyU(+#T47vR8V7AX4v`a* zk#EdF)LR?KA^LX_e?AJ=&JT1emkNLBhR8!9>^Shy$~XoQ#!-)RtWjJQ2-uKuAW~T8 z76WYgWb28M7lSbh zdFwgE0EI}0EA|ys4aBz+VIRzGx|xYEMd2|X4oRgIN#1oWu4kw1TjK~VHtXTIR~r2E zhA@By?|s)%+CZqzg{)vlY?Pyn7T~O5Bh!(Fj@N35H*gZ6AYG=Vp90+uhEA{S`-!Oq zbExVKGc?9E9ev7~&}I_bD#$}8(?$j2utl5pksZ|Cd@IK6)}M_)oIg7DSp#>i`&`%8 z9I}VHGQM(1@|bWk3^uuxj^IweW7U8B!u2j!%$od<-mqVES6}|Z9h<5AfXYi;vS|_4 zE65}H_lM2|!aMZ}S9(!D&xpFJi`Zy388>f8ko+oq{ihh282ifJcH*4+si9q^MQrhL>&|)tWElIJF_z^}6Mix*2 zlEbm%P-~~oF)R=ztum+!8pf1L@b)61uzwkTF~~&g6-SG%s{vRPjdjDFOK#*h9Y~Pb zN1OhH2gg%{&%bdUJ3%2k@uq3HTsui9-GuuICej;V?Ebi~hh%U&+N8M5ZUK; zxgkk2Kdq}7Ki8!twsQ?nRd*;$e-F`qYA8OHhaJtN@Mf(N)($PuETYcG4ccK=@c@vK z#UKfhbr;LrwbjY86x#`y7@`HDI#13uks`%KF|9T43+Pp&7%<5kO_IgGLKbp^Z1MU@ z8Uhyn;8Us))T2l%wzl+$E4PP05)4gD(UYXM3=X9New@TdNG6P|gtCA6qLP4&gwNSe zKVg@j;V~?t_>Q@DeuUtWK7jIifX(xV1`!L#l__eH^-6xs3cf#CDTueuAd z3hpKtx#+6P=C-M?4`gOVQ;<2l2~>Onsmn(0=-k>#ZtVoR&D5q<(7ItDa!d<3jK86E zJUSadJUy(l^Ym)NRnKi^LJbEM zs-l>*gfd!OLC&LaS?K9p$&4XU@+8f|M9MkTxyZTbSiBS^5-CaQ7wkbc3Ul1foD4|3 zypf4nyrNz?L5r6mkt-vPV#g)6DS~Yj-kQlg>2SDGKk1YSVs{sAmgg8EefE^ z9Y`e*eVhZFcC+PaVX+CXgBj0X8_oBJI0454hB_EH_lIZQ5;t$I(6cuJ zlcfz4G1~i3((&IQh(Z((kLjeE($0IQa5YZbenEJbDMSIELPhC|Q{jy|4#6>)4^DA5 z-gb+gi5M_E0dEcL%dpYQY~T|Vl>ai|4ftJpQa9U)FZUfK!*1Mk&5Uo7sc)uBNe!|# zYJPtC{Jh(mTY*6=cKXfkq@`$-Om+H>C|)S=OdH&~ZiPbYih|!IUH;~H|Lr1a0y>vd zy^?yyq=fX!m=zV}HuK|lmqb*5n@yS{d6x<&N0r@~@w`1tr_Q%zYcRqD6PR^%LpRja zy~s2IibqSj>dI5wrS2a;Gl!;*F{!c%Uf#vjrugzBRtG09(>lKjSz%QPYvS0vzC0hwVP)U2j8;A+!ccs0?jxk80kvemR0+TufG8eeTK>EO? z%m=+W3<~&uWCG*qhGjU64Uv)rA}xAV{7xu!iT0ELu))`8JrElD7-i8#r;y(!h*Hgs zLLi0j=^-$34p6Wm)1a8Ki&}n1oG?XPOFw@q{oIdxN&54~$DjL(dQf<9(rE!U#DCJa zlWuo^bPA^6>KRcn6w#*PSO$}osbBgpAVT$rvb(Dv!_iB34oon1D6Sp9!6~iZO3ymu zHjLH;rN$~%Q3^&3Bo6cr&++Igg+gsu1DH}g9Cl#^5_N&8KR}MbSyDgM#gnLZVG8ge zf$9pgr}S`zJ%84g*qGuKnp=i{R-h8qxP=$D@IsQg@SXoQyMsP-LLqt8k6sL0O2LES zJCgFyHxB{VRIOO2wUbO~OuD&!*zwQ3L{){Q=Sv1!yT#F^^al%=E>ryms&MEH{i-1v z#NX{W-M{N=gMawgO4Jn%hJgTCX>))uqqBrSi)sV|T+q9C#A|qzs8_JMur}&HScif7 z4;w@&7EMiU>=?@6E0{)a$Zz3~B1xdUTBaS_B(!vKjoXJW2tuj3kuCGN84o*S)X+iu zW1PD>sbvD8Q^mL|G8cDWo|`R3?ocNYyRQDbfOpg!xJ1!fK~J4j;s53h23-I^Q~w<_ z)ISiwN&Pt~pW++(t0Tt2tNr7~N#kAZvv_w@u6{nK9eu9W>gs8`yu0-o+d4cgADyW8 z_;7Nz|M_IQaa28~=kDNYWf@0zg-1Z-B!=+}(@qy>6kot|U!84rcwxDK-i5!w9VD$I z`N#$JyW!vtP8dX^g1@6!uM!m6vX7rByErWqF*Go+uehPC z9-~A*p^=Mz&}r$R`1=T5F}=6v<}D7TTNU5TCu|e`s!yw;0rAsGd=G;iui(E>+&jK63+jrs$X^2rQ8D5KA`H8R~YU&ZvpCQa!Gd!7*3h#~RgxmnQ?=iE7L~eC`4W z=(_{5k*++`0BM~#u;5^DGa;->xV?#pq>YGufZN@&u;WdEQC7-l;1nk}RydWqZY5x+ zL~xvRiJnm;z+i&Ms++{46Y~fWp3KANG5UIjoZAD@v5!ZXA2O-pk?C-?1TJmzNNf3y)%70Syv`kXh((61Vt4l@w2n zzW*FS7Cc*4K4M|_g{n#@(zI+Ib<^U-;e^)Kl(vstTD~~$AXV8Mq_zsbGc}y&nqpsV zQSpRDooB$_Vv_cW<|vIhA;#NHL1Ri|6q-z$0fkdB^IFPQp9&R8t0yJ|UF|gMhl`~{lf6_BAWh*ItOGXHQaH(i)2ftHh z3!qAWFxE?l*@X##o^)_SOrH2Ee^NxZ{;8U;5>-eD7y@={nz-7z>d>V?fxI*CRXg!W zvAI1Q-zb4Vv`ou)E<4Q_uO=05^)UJ_sFP zVbw4a{ELJUAVid+LtCTxZohA&iu~q;7Yi0`S98bkpsRguj_>)EK2s!i#}kE|T+65c zkS=I(8)F0txO{2(j_f|DMUzh*2tCJT)yW*(m_ge&x^n>B;~Si;{%PU38($<{GZZ~H z)i+k{#nM7vN8@Kb9<;LktJg!$Qaq!^QNqRCt>&d@<4Qgi-?V?rrF zTQG+W0okyD0Sr;>HA?wL6JWE5ACV1w2Jq+*)O(sAvmyG4X$KmG8;O&;;Vn^+HHPCv z`ovCIAPl%Wbs8boHC}v zzo~{Ex{cv9l@VXFaZ0-1KS6NPaABlF8W!m3Eg^ms!5F!mC@6$`Xj;eR9bSX3i#vsI z_%=bL%xHz-W<1!Eg#YKBy0|73+k&A6AfbtsfodBY1kMLhA4<34XD-c;$c5}*p0pvl zyS@~l;dpcrU%@f%(rnTgmlQ-k*CZhW`$fEyRclG>gr7JB2aatwu@pXns%BuU1S|l@ z?YMiX$Bt|T#qPkt@ega0Lp_Rkvbxd{4ZE#j8}{2U`ug{7az%VIT+H_d6HU#p=3u0F zMUYFNkd2F+*)nIE8rO{2$Rf&-t~Nr_6{B%?iMYX18Vnmf61(DEaX{j#q^oWSWWZu1 z^P1g3n(#M>EqXHGQ;a{3506e(KCj|p;ItLn+%=d+FJ_9EnYeb5(;fRr=$?g8`g}d{ zCq>TL2OX$yS9g3#_n6}AHA}()=rA!e7V)1Uyc_;mr9UfEdYTg3NFiGGhlsug^hd88 zEi24TueOQE#J?*Fm3H}nCu;N5A~T@#TR0&%2{5~pt2WE)NBoV#H8LSLiMu+pPGxYv zOT1|2{SiY~=0iDc62+VOQcd)yX_bb^f==8WJ+YSgBnbj>=?%IDFT;W`xKpHWG3C^> z>_UNmSDFu8SEoYY<~6oxwT@UysrqAZY!e;IOGLD&^Pm?=71BR<8*gi$w`-01_KAAh z+JAfU`S|2~w}z#5<>katIrT5Y1MH8Oruqz)8Awc?3;?~ROqJ7ZFeb^&fq8*PaX4bq zA2fmHM}&u+aPNU2vA6UkYWM=33)c#}@h%%q#&qjl4m2v&yn|}4&cvRgZzLm)qWWaW zvr*-YGQy%biVka^KT`oAjK}MUrmilUdlHu_qUBh>S19vD>pC#f?~(la*-k_2p-$o} z65xwjq_(_MTQ;ti`hH5pdoq^7wa={8p(b0RS0Km^?6_4sLitfOlobf(lS{sjD25ej z&rlyj`iT@ov1NrI^w{T=ET?j=IBpT$qbov7i6rRL$MlM6c&Jpw`hebxm(TN3TF zsHFNJSV`Txs+n|HH6kW&3n&=V!cO_tWYr$j1vql2A=L#^T!i0d&*O$CZ5Yt#|oJE$M}OzAD7R&xbz_Y{Ap`1=wr{1b&u>H zqvi5ET`WqG0RSj9<#(%ph~?PhhEUtBwng*u&3FiBVl?RL)fkTHbp^=@BjoL95{7;# zEOKie-twuO3>CGUP(|4)vvKY-NDiIoxqHO545{U@QF(jO<6+r3UpHe!n>rA`_4wCN zzJ`SL8m4sWE6t|q6X#|!*K4hlkZWpKWc{+dAmKloNnDr$bdo#fbWIh5Rc#bO+)d6^ zts&jXG^GcNV2Z+gz&Ykr+0DREErviS~)V1+ci z=GQru^)t|F*4U876>QZc?y|DA)D#i?hRGO21d^dqOg16YzvW+St}4MQZNgArcnj&x=vl*&uSnbTuAo$DFMTuVeP>Eu5oy5k%?`autRD7iJ63B)`a zTGM6BW+kt{rFXLz*jI$tAG(;S)oM{U0LC$3k0K`B8qVf*&wV!OyNY2L?NX8t;0dOCtJt- zq)`gQk_kp>`Fa1fjr&8F39Dy0JP8WUSaB_Xvkwm=9`lgeUnZUjX`%H`Cz1jp_>?3x zI)(?2UL!3hs0}qGo*0ihAR1H%mp2k^5V<)d^3ZXiv`t#T z|IDfg$FYo8Q+vvxW`h0n@IE>A3k&Z9qw;1YwGmEeBX$&7x`tB50+`7vEh)sQ5L`j2 zW&Fpu8sL$VPtu0l$~xJS-MpxhDB8D4H?NG@IS!iakr`^NJ*l2F|3({LmX2DJOXo!- zL>VlC*G8RS@7IfmL&W_XKX01}P z_}j7D?+6==c;eYURkL3!TVAJE6{vb$v(vBRN>$A?8`zzCK^5^e^s@!84{5G79>TY% zbSRgoL2I{Djy}NWD)j>GH?T|uzxVY*z%a3CY~_%D>Sm%No^~Xrt){n5MR0-W{mu@Q z+`&rlPaVf+_Y%G$=)}8RDYt6m*E)p#(9>1R_K4}?SKTVsYt7y$)#mX#Z=X^Gj4d$3sZen>p&djd z)L&hXntmT*1Lt;asNp=ewvjWo?!R}p?K53>Sd2Gf9-;9 zl}34=Zj%(ch+6s>)c|1CziK)0^uYc_mxxTy;b)yNzQLYbP-D;TEVfX;9Uk9;@Rje{5t9hC(+hh{d-xTuv$ki_i#6MXgyU!bwEC(98fI zhEdH-;{)PjJ=0CxN^v2og*(H4<0v}}ghX+FzNAfB#y@B71u?4B`K;IVzkAy_R>WR= z_K;NwwL*h$Z~;sk@9{w3{ffIp<8zwCC9KMe8H>ZWI^lVHB_Lv{9F(pq?qy!TwAiwP z@Je5g>lOxUc$)DaXHV?HwDGPlZz=%98RE-bI|D4*5X44J57C?X6thp?7-9qq4Gc;tJ!+5Odu9oHL+^JS;~0DvF?vJ<%ga%}-*XZxR6 z#Pf&N@VL%j%^Egrku5tBx;k-XYhHnxASVp$MM%iO3Rj&|Ot;G>PTgED4RLE>A7ANm zk-w2rpswFqGQGj-Blxy9p+#$W-kvR2xh^*^d^bs}&m!-bVJ>hG8$2s(% zy}Hy?FQB)o-96eO+`~H3Qu|wW&v-|+Y~!*H5#zL>@a=$TzKG#*Ejq+~-?r`14()n7 z0)^ilhs(armaV9%bhd~fL%BMg`*PG$`1Z(_KxPy?1Vw-w2z0=h>AGpyNrh9R9B|c`-z;lFs3sR*~^}sk1V2q2fZOP_6rjpH&uPPb* z16%Nx$?M3i_~shK2K&4%7YDZTh)(i89@#w?o1a+F!|mMzx`zr7J#l6b z))Ijcu=k8K&Zv=c9DIzadqq_ef--z*l|jRtrQ^V~MuwB9u`pqW$iEujmg?)_mL1_P z%&bG`bxZs{h2l3B?LOa<`14Fpb1w|g`v&jh68g|}Vs~tZu%n$r1K|w5?}!>7Y>oYF zjT%Wg8uyaldWxszcs;VGfUY?H{wyN#ik$!~+Az{>SmJz(MJx^cUDMKn?BTy4LP#B{ z-J|dn0d|o?-HV-Jc@2$RvUj;6k=lC?snNdm#J;8YJBGDf*|Jgz>i?A4*{L`^lC?PH zmRals1oNRS2XFR?vDVwwrwx89wrfC?GH;~WrZqt(-4dnM3t`?-2J`9@2?y?wJK7f` zK4W-}%&5j1i1rN6w2SlJkw}9`iG5e_a!q)4-+8Zkeq*pYf@b4+C7(Ro=fm32*X>^D z3V&XChEqM&G=VwnYn8wyJ{0T6lxhbz^Hi+gInEuv!Cm?e5FBj~t^PxI#A+n~+jL2o ziN6oc8_~SFIO?9@DYC>(^7vcfx_WAF1-=PaDn5FzneG+g1Q6FmdiHJZAq7I55x=>^ z0WxXjk8;uc6`#Pwwt03LJb^Lb+!~8wVv9x8u{}i8y9Y!zLwY$%@L3b!$NGpJ+aqQ# z%BnBA(qdxu@9BHHwzDz2AfmCoz5kbDbC`e{(4h+nhlr;3qFF+R6Uz^hP^IdSfJOj$ zR|TGh?&-1MFTO@xzJ}<=TUa>u)!l#cdH`@}0Cxc+J4AW{3!meC5#z2aYTL*SJ1E_~ zB5*+LXN7m`Tb6WPtD?vXXMAQB^|nIwomCYA*li&yLrJRPBO?YY z*DMVzgj-Lo3aKn)2x=VfsFyu0&pzBHje)+E?khDs)se4rpw9=`ydYj1->O2`nLV}R z%Cu@l!z?PHOQT=Q%-h^Q=5fcIrLtWWxC@6BE2x@OxC?txy@;exqnSBFY4la^v z`#|ul4FFR>|Lc)2PW1VPg-FWwpH~C~ApWvD*d>~1nuVC`6?a>)Eb|Ldl68q{Q$E-| zZIcwLU7-uvvSmh=*SM;fJG?>LbX6(W35##WFnLf+UPX4N%*Yx@#~H4<9riT$V*8Z{5A*1Of(f1i*_5i|QX}f5&A!P^7xD@i! zH1p1uvtv+gt>&LFXFk_PJySn_Q4>fU345ffdKIhsD3j&`77~;uYt_3gcoW+?_gLp^ zHB$%12n(=|>WFx%8S!I1;B%g)l?LMPrqP-Yg)9b#U90&zi>iaV8w}(%DXq_y^JP$@ zC)=%G%L2?b)~^jW^u$f1ibxaJ&l_RNJpUbO2pd_iomyyXt%EUCDO!TIb+A^57>5Wks2L~ZvxFVu&JFiauBD>p)=PUMx2PJ z4ux$>>{D8iP)O5txYNlHT3cZaemioNy0EryU~6Io_kB%k8f8qgN@gZ?y~<|84v{8E zs^ZW$@D3sHwWzO)l;KX#-aCZ7h#KA*WX6ux0DF4@m2y~5Cd^uhOGL5jVVxKM*cF=? zF|u7nB=pYR=^=h|0{pAi)Dp<$`XG$UqN+YTH35b4%X2TA0;3alBm=3?AQX z&%$(T)+$UR0xLy%S+$qgoxH>vDE5Knn^c4}x*z3S9nYhj-Yf1Fp5H~z^#Et71n-w2q2URRz)06Rd$zZq=!lt@SX=T>aS&P1q-*S7*SV4B|=VS=I?1-g1B zx{~|8b0@lbz7?neU9E(=0u#E(#kE`BVOVXT%ptOdvi1Oc)69Ya)w8uo(yR3hyDx|| zYX52UL+u;M&ffFL>U=`YSG8gFp19**pdn-Ot>)9JD6AHj!*UJju$3C!DV~hV7mZu9 zSZH9m64Z~QeX1$csXkB$?$0F>&vYt29)Uix7ib;n0|4NaimPktMl`4$Au84V?RKh; z)skoUz2(WZGQfJ`3Td@arlW;2fNsuMpB!~7XxkXD$s_8iR{;&CzD+Gge<}3;&&VR> zxzOw*jV378t1WJ6E7Q`tXla#NTAR_*Lanr_T3W4)syWo0TG?JjuYX!8ms0Fm&qWio zy-MJu*PhocNDyf>u4cI1iDd`WNri^KR8lw&tXN$WH{vH+!&C2T zRk0{jfwjL?#0SX|-3ei0<95sLd@6*zjq#Q>ZW9tOI8INqY}OsE?MSpXz}6Z=VK0|y z%@xnrW-ub@mH^kG;G!deui%o8G9;5EKVfFa_LfBoj|3-s87nlt;i4I%dQk<8cvTr? zaVK%>?pVrB|DG(r#;iV8fbMBD$@9#pxuGa|tw1_L+Tew$RhHOFMeJ$RvP8BIc%xZ|cNuw_^Oc>D1dPe7spNaU z?U0_YX3&{^3|J>bxhuB1BaqqJj_tX#6Fk1ds!%C7;`pJE^1Q^G?f9miadnb(H)&7z z1xYGNrG4t^>}A~%-Zf0SuutB0Otj3TrVT>(ht*j^$>A2rw%2y|H4fc(*)PpvJvXZn zUA#cT`3hOFHmaW`?v$=Pq(&Vz>@|Nn5bV!T(END%>fa)|3LGO1CKeWU1nG`c-`;vd z+Do|#F5kg$p%L^jY_Nx6!&U1wK&Z8c)|Ix?$P8Ujt`*_lShZHj`$Dj2T`(hHLz$m4FLkfUF>YIYlWEXq{v^M?by>QJ3Dj%uV#DIazUto z%Oj zEm$5sY&aG)?0rrA*Pi=WJKc4pZ+pgK=w+09(R~x{wuC1S1IXZmgACwwekCv%zi|xC zYqyq=+P`X`f|U^N*NPR*()`91AJ37g%#JYlzH=o-VJ6q%M#+zN50?rY=)6ux6<_6u zU>E9r&GufO$zn4asY)xVh+Sn|GWsi-aH>Uf5Oma!(l%Mi*p6?xQpY(%6f zm}|oJeQ~+V5S`VkxBJ|YQ-w|rU;`*ghw8c2@tyzk%ba&c)RXpgXP zlmym0GOV}N5E|VvT!4pyOs#2W9CQGwEbWS;47b+PUB_e(po{He4y}P{Y>kCndsx>P zv%H05C)mFp;%|2Z@a$kiKZr!3?iqpj=>qHx6X z=rQX}m94O&9X-{W%A6HH53cyRUGY6vP*A_CxYX(etvX$kWCxlR?A%Mod{ccZDATV! zuPoH{Rz3*94R5n>Q_jpCz7~}R6+>Ygd;2{WF^@bZ#(`3&F~dV zPTog0Y|P~;g-*QSE`q9T<*^^&iz&~evS=lg0*>TZ(L5ns*>-6*mCmb$M6dj__{R< zDG(Qs0Sjp-^>r(_skbxCM`FMSR~12vS=pqq0TPbdhQ!(5njtGPB#tTGcv<&NrJmKr zVZYxIo~Y7zvMngNjYBM z703S^A(ZgoVTeRKvFOKF`9Q6wyWHnj6wX`gRyImzyo+ITd|%aLqbGTeJlInd39MH{ z90N}Q`*fEKQyn9it^-VHKq+mAYV6TU=mrkx%U#l_;R3*I`m*v2X@_$)j(R8_!UxZw z@x`ti!{CFyPOUy%7$vGTZtdc}bt>QXGFp^9;WuF-7CJXJ>7SY&PRxNKIP+bI!%M2FoMeRMahviyl&y}>j+~V!=oX*~OTXVf9 zwnosJXpg<;5_~5ps@R1dUNHJ8OqB4V9atD?Vs4ae(r13j&V2D4VR*KyTyzoa=a@`l?T zIlgDwS831H`r(Z^i0aPn)=&(-uf^aUT1u3~*ZD@XBuG{8x@Hm0eT}t-gj;vT%Hswf zZe>Cby%7^WG?wfzQsle#BVTJ}4gadHmGkwMW9Dq!;uO{ZZ-7YHpYoqs+1nDs)$KOpi}pQ78#Tww;Jw`+Uf2EFnCU zaVVn55L$EYs>oiyr{Zi;64Zjb{}mTCY2)$ zPgNQ2hdi^^9u>Z~6k!2h-uuB?ufVxqPjyCNHF zV#maqxU2cEc3cv1T$veH>WWOW29;sO2Y=tHAFmcI0+-jSv4@Ds$g|?#tGA++JCvuM z8#!Cs2yZR;6S052ZG4W}m2^8(iZFTmQKh=F)LpjJTffI{#a+g-C(pXUs60(!`g&V& zTE**+-6P2e{y4)|^>A2mMnyFzT@qdkL_fi0|^IGWS_g+MKo~rF_qI|Xm0mU-wh^AU|Z<{l6 zo@&x8VSb+ZhZ}d7%oTW+kC|3Y*atpxUecf45okWIn<%ZPT> zcC(NJFnn9tvjhmohHGF!>62vymrIp>ZvIR+A2Yy5PDoT8B%$F5d#r+K93eTL*nW|1 zQ8%H8u|NQ1nO|O!=-%}?x3-UH{q;^5yf(C;Puh=_0|wZh`3f+Fiq|`~QbcU@Byjww z-|T8ZJecUzqEl=DIjp7)F1urcYnM4BwmUW)M-}4~lOn!sL!LcuvA)e(Eb35Eoi=U) zELq0w#u=wSZ-42KO+F99$p?X00;`t0nyStFDCRbW>Mkm=f6-w&J#E%d-xKB#vbl2Wvbk8-O zBaL~i%>PW1NYReUm zS|MMsW?&zj{;VdhF$-Indw5h`&4HdZe*tO_(s9luxBm|=3U;tm$zl_~S=x~A0?D+~f2(pQ~s+n5#EcI(t`Hry3?bdpI*?~Q{%O!sF?-pUU1R(9Ws z@{J4CsXOGuj;T`4&=TmVE{n^8Ud((m=uX4Ax=hLQw&$HTdU(+8PE%0&dhXG)FC(YD zhvyPXd$ca*bklGUnW@*j_U3de^ziv}I`YgUoH;q@&)P?IWx%I>FNn4`{hGH=4K4Zc zDCykwh+JjFuxgd^776R2`|PP>`v^O+^P}BoakP=x)Wqp%gxS1q%K5Cc_7xc{& zYl@0!xF~4qR9ma|qMV)Y=j=RMjzy0^Zcz}o9Ww9V7)5d=&?hl+!e4+PUI}NmGOg}QZ(8ogNRAQnvnHlFU{2|dYG+k*;H)o1eeWrW%X%?IC(!9@EcYZ zYr8rN^lZDiZ3(dB($fmqNpW8&t)5n-jor8^vMJ0+H+Dw4o+&o6_xw1NZ$d^{d3qdJ z3Mao(*^SQCcySEm*51ow&+r>fvy8Lo4vk|0t?Qdh!EyAX$B#qdoHF_dIRlAlAVI6r z{i_oZT(z!K37H}`9HcAsWV><4oNyh%XQ`sGnUpST-;cUc%7q@;a=V=TfbRz^C-vus zp$~eKcpac!IXvG~T=u`O-AN`DNY5n<4y^HayGj-a>-7vf?O2fBSDL8qzkTaO?S@dd z>4`lcI3mRMk&XF{c4P4J=o%NhF|PQHyjevAxVN_Fe|dX{);fFlCz&r(eAW1t`SJ#> zZT7ak0OOo<&~x?pio-wNk*nj)ANdTe&^$I;6CDpwXght!i87@cI}8auD7d$)IN4#} zk*iACQG?@qvKWwvqhY*lLo++c+gYpQ#HeV?brGNaTrF(-M8v7z*KePmpsM5pud2?B zpb(M?WLp(>v8u|!(y?gh&}-;I2CNqi<@w~)bN0!Z&C802+^w^Wa0WuJy|;PGV|ZB# zk~G=&mPf`02it{{_u>H5joF3k!GY^@?zL2%)lxL8rC4}gsFvPD!j1-7dUstBeGSx` zw-gV8HzPJjg3t%lDKBq}{ewCO-BVFV@6Oxa33<^7oAFZ`sm4WWsDVLWRlHGeJv?d= zfY~(pRu207;W1-FgA;*~4)ydEMjFU`YtY$?C?G-b1n)>p=Fc|INeAwhTMi1>JH)QP zR=SlCW_}*!VrIv_XH;3(&LSA}={h9r=3+o}S23Ikob`=}}1PZ7f!vBDZ>0by82& z(W<>62ng#Mc@!`)Z|DFpjfEp&U2uRhtwVp`-sCz|x>hK4H}^oR?A$zcy?8Yz--scz z(dP3|tx;Y&5I}0t9gg?3-^fIIK>GW%o@=|I{h%V9z4kZ|7E8oFM2EvT6TACl#(u7g zh!@L887N@AK2 zjTp+CGtU|5FpHvuKMUMsqiBl~aMrc-hZ>E^5vo>=GS-F^tPhQf&!W6gIVRen-2Of6 z>f1pk8s$kiD)r65j2JxoZDC^HK*qg`tGUlcW)y=h~;n{bWyVjeov1 zQq%6Ax0JMN`NT=)XaH^a&R3P87RFzUOmg?1xvZnHSFgqt)%VW+C%k_iEjlJ;Zt>c4i zrvz@W`$8t7Pv3h@PDts#UWAbe1tP>GNwanHT zpL*Ct8D0?G%I5ywY`_@VTo7cj!7MJ9rfNi#CeSu5Os7%QO-AjnwK)*q!y7LEQr`M+TW;V zj#$S?ta=r*zV{U&xy0DbWj?I_#ECncA+M>GzinlbO)iW0Bch{yvkz8Ix1SLJtwB!S znJrqQ*-(pdrp1*9TNIW;k85)M!6tub+GrZJvXvvXc5b9^v$YGg843jHh$pZ7n=K2e zR>ezsF;E-3l~))rYj?{@#VM2!O`Q$n*!r=f+I4#?s{?`dYCo#x7@%@c_Msi_ZfB@D zvMcOpZC4zXzq-f^>PdiA^JY$jVsv zqHaCzZBZx+nM8R$bo&>dv5ezsNQcLn;X=m8R9h7QOJUgOm`YfTeA{6%N!k@x@*VF zCQ3Gp>l#(Ok?BC%6&Z{uYb$qMnY?#M!aB-XO`Xx1s00)KdggzWQ5n~wnY$Uxbm*o& zn4ASudUAj%*#0#lS)c9+KkIjvQ6m-Fp4B>wcty9{gnOLh$^o8^#MS%s9h5t+Ifw}; zFzV=VvhCz?*bC+m7QD&Q_G21HbNlf-r|F%X4BHNCLxD3U?;JU41Iccg%hJR%vN7y1 z!j-UjfkcruLe8lpZ$}M}Fk$|H0zo=*Hr^b{C@L}`;~C2t{Zf5VYN>8{S7CZ|2x!x$ zB;OXnF08V}8&{;g-9>zFBL_VvB-Z-KSCxI5@E@2+SCZg^s@A7{JI#{y(c9(I5M7wzF(l{Z#*u1R zmAV<5la$kLuCr(@S%&UnxouEu{2qyfWi4p4VJlV+a4*ztkg!#}fUPZI8d}LfMD=k^ zPtFKO6pfF5pGMBETyCU&#au*XmcFEemv&X(pd0vhx@?z)Tw`?<6{ zua%i2+u`ih`8&!7B^z#L$r+%DX5$v>|H}(GaMpGT*)4Ng8dri4dw=0$L4lH{7eeIc zba@%Z8BUKwr^g9O^0UQi5OtOSZkKvn$E*CH9#{$xA%k|ciy)A@@xzUM(>bR-0@hd>IT@##B3|Je?Q@4~m` zeZ`yLDjve)wS$KyI1Ws3x`#Ta{<}xaj%jD4^wUG^^!fY0(&-kkzl(E9otC{Nv7asm!owoVs+3nwty%M)V7{$aRP>vd>(9LIr7~e zjHXEF{hDkO3~A)DaTL{|S*fg?kjCpG8w6+DF}Q;Rc5YcAXd1;>7hSSLylV1#>&pO6 zVMFTI?<-#$P6TKn5F)qS*pRTMr%}VCdwSb8)dfe3)nOp*O8Q2)$JMo+5ozPDwq-CV zbM$eJ=i-Wi8cU@19(@o-C<8L3VtZ?34bL)u95#~ih_v~u7lHJB3K?TwDvGPp%+WYv zGh+<*ad`J3m(YcH#$7f%ADC8E_i){R#qRg-KRj?03?Ey5_C~}rm1P?%djiYADxHWZ zElnGMg}^~}Fs|g=Wre~hBLpm0oLnf#62xvCbz_EOWkcgbFLdvCM`R?CNk#*iu%c}0 z!FrX*CO#FI_w~I^+(=?CBbxim(x8T9itoXA^dZT^As1c(TTv?MBr3Ij*0Va0=3O{Xiyt^xzjh&FmF#s{>2slwve$WIO;|AMni$>;mew9H+Elr zTJvKy*Vo^R=)~{C!jBU#T_@QLZV5^BA^Bd&kh#Zh8}F_BWGfT7$vA}Y9?5)%v08~? zBsb@PlAObKJVoK^SNs5)M>XHh7ADHv!fPU%W!~BYM8QDNBt}H#)83H`Y6VLjc&#ZN z+uCg;R|F7Sn6gA1e4I;5ta7V3L;n|bK%Q^Hz}u%v8GZr;T9jER44x0a*oB0i8^jD!LWrG zWY7wbh3nP#nV{tq1Wsa74wFfUbT6_-@@zsydaScq_CLg^&;)V^v0 z{NTt8tD_6crS&eH9H5lID9WnAUq+aerCIeY%eDfG4~FPhhRCinT{foWPg@Qhwqr;( zA&aN!s*O5hD>%FUFKZvP=fU6Kfb%Tm@&3562I%&gZeD;?X?sVd!Gr9 zeTm@zEuN7ruVM0x6Wnvn6LJ=GYMP+W)_`zlJO8{XZl~_4)z>Zp+0s{pCG=`6FKQDk zYdyBVZF0wo^;~(11?v674Bv!?#YedZV29}nx-(n3ccw{z*C-#7-F$+);@Y+)-$+sL zblb+(f4=3$*&o-4`-}uz)vItemuK5roTWErT+IYVT(XQpWBq8RdG6rAOV?Gma%n@? z?29$E360l9kZzgfyLNYGr+X-95agkE)I^+c9CcC@U!mA@p&B4rC{%hb?I^?=6y$!n zqLXo|wqDo(>EkU=V<}?qaJ*m1a0gPpP?KINOTcRbH+D&YO|#*;IT`l@moMHMq3btg zb6k0<71>0Yw;PkH@AKk@eWbHTVM(s*mOby(+176_<0QPKQ;N^VEjoxDY|=69%sE7N zY<;UrijhS4Q+)bX>6l<4kP5>5q?9SoJ~*!H5ocGclOmwznGjJ^^_m|Sv+hT3LD7^%l=@=qq-&*ahqgbl>Oy2?~a70>J!@Wr; zm)ni0?CB)Gk+^eI69@YGJ*itR3`EL2O_5FOcXoe4`jZQhSBMBO{$bAM-rn+lzovGsaEaRve>z1I8{qXU0~3b z=e(kbvECX(s+tYuepM5_q7mmBq3UVPPeAc9&Ou=>J{TlcKXe4MHKPE7Z)@j){Fo-B zdRIn0Kg|ejIY&Be_)^|b(%4{#2fACqlzG*=)66!nX4Vr-OUV%PkUjh<^EQ0gzDHu| z@UH%Fgh_aL=pv?-NC%s1R2JC zH|zFZDC^NmmBIs#&a**&U|I*A?7BV^v+DkPR{uS-0uZYPK#bjwL(Ze5imr-t`k&=!pJX8F>M11o4L{*?;`4`VQ$ohu0f5DQFjQ8Q`uUG#i(+_l9 zqooM!m4~3lwdKEh3u}sD+fpSM^6Fg}O~AIxlj{ZZ}zUp4+8 zWDX71LYF(7i2A<|#J>;3{~sQR!~EL=JT?A( zQT+Q{{QIJiTwpmPRjCGZe&IF`&ojAiCT}@*ww2KW%N+eP!1@E?-cFohrI$WDVsFoE|cc@SFr9-u4sc|yw>`akd-kjT<_7e^0=HaroY}bPTBS81sQW>>@u&8MPJ{@O7nVGrf;y- z`G~(fvU0mc!A70RJuaO;Zxq1{(bGYjpjG?ais-77vo6!0JY}^&@yg^r)+bz!ygYzC& z%Rgw1k~JAxr2}=pm9_L(IfMPBb40N$!7?kln6$LZK-8jrrT3u>#7k$cjlzYs_+KU; zQHgoi5Si>xD<-mC?HjqOtycVmC*=O_nt+}eH1_eKh=jdjr@t9)J?Va>76 zo+vhtOhkuvPneT@+nPC`+l%b_J+x(%jENNQ56pM1nb`(ve-}4-KhS!c0K$aZ_`!yA z2TtoL&QPOVr|am&1!e=Fw5w}d+2fFJg>-;OS~ zDTQ0pp_^f+Crx|B-O3|$XFLU>VMH0tX&%SZrhhknlNFa`#RH+jy+!-@{iiLz`g%*k zf6G*FN0e@yE5687d?_nFlNF!0f>041&4P*#7AO!L22HdBzOHBRHN`$0SQE^Z8gmQM zNyvD|lIwQAo?|)ntdgx}_8$MK<`i(P!VOH^$|NlodtX(AKi3N~2;XT(UM!)y!L`@w zs>dOx8Or>r9CACd#&u>47>1ionXY84-1fffqTPCdY1|rvx?C6E7pyH4&FlaPDw^LH z1?x5#C$!$JjCk2I&2MLG>DHG->)Vc(nF)zPm(iFSPwO&big7}7Yq=+O+Y3??8JmXa z;I=MN4+YK1SY@s@t&h@M1C9#LJQPHi-M-Ah)zIE9JitS-X6XH??KaSqGOF5aGt3*W z(X@LSb__&*tp)UnhsH9qe13jAWZ1sLM;|$-*?g^~tw>^t# z_9DyS>^P}8VM}G$^V+bsutfo%w&i}HhDmb;Jo_igxB8wQNC3i(N09J zw%a-P!B^)#;K*8*OdV2kN@o`omU#)g@Ph~t+>-+Be9NJ<86ry$)kCK zPqz@UA%q&AzLWTHTIVX(eYmF6L=Xghtq8o*?jVV9_~O0qB5m9|8#+Qb`gfP5nKq@` z+HpAxo7m&oHqMXl-n8PMS6tz7#WC1MTayZv*~vH%t&3}ZOb77n>!qJdfY$l)zWxZt zy7-u&*VO<0c2@0`Y_#5@Jp2hCZ1V$YFy?!vg;t2iq z;@f%#28c`xG)RQn-rL+0a0r*c2*++Xxr3^}MeKQH zDJv7qTJkeqxI@R7{byC_dVnE56Y?>MGoeGD*{J`u=k!~?LK+4 ziF?GzUvBjtxjJ>yB{j6tWq+Y6F%$GT3XVVWKxi#m+J5|EUB$lkmH|a|?{%!rDQOhz z)tObu!8O!YQw9pJ2R!;<62tlrt{Whsmme}WXNm^E`&Ts|twATFsNeVpR!TRH5mpno z^F8|RWkzV%az41;ozb|N3t0D$11vZUvrs@k$#GeWAo$Mx73W-?B;+oSv}EcaW6ls2 z*|c4yi4%09U)kKWJ`rb*tFKLkbA63SJtb!1>6Yg5DU0E^nk6RFmT<_0E22wPk(jIZ zt}8MP&sk1fSU}sJ9R^Ei7dVtE{kIV zhU8gLgYxklmP3U&P@~RrPRe8~$O|EP#}lIiqH-)cZ@2?Jhk~p|tqV1(NDz!0vcJCN zM|{wpC_;#cdC4iYc4DWzgpej)c$wr4z#I-K?(Ws4j)E6~pX`VMgye%MJ>A&^b=_?X zA~rH~Bq#v!8L-jI4$?ZuPdk-x3S$$hz*HQ!Y1{7FSoN%bUCErTRS~Q*ZBvqzvXe?C z>e3nsu4I3S2lFnRez{w@yM_W$t>)l<0Fo6|6|(ZQGx4^UuO)R&(I(~bNaceF)u#b2 z8du91BcK&C=e&OEn&#Y-y&+s*8XJhcDoiti9 zMpq->YN8!^QM9+^^uoa(Fb;r0S?E!}zjiIw`l(fB_C>g_uh*0r$3U(L&{mFCPenSA zI=|g<5`LPuPQp*~)=BtTH|eOdA?TNC{*3SdmIxQQ4$3(22B3 zDW*d=m(S^uV>OpaZDLYpHv^*{Z#}RN&#v)goj#Z2CP`FGK797nUXiG4HOcN>h$+9y zs`+0WTUGkYV`)_K#tI4A^to=JOdmpUUz5hWnhzHjAfzmuRo*p<+lxo++ z->e@z2)n$~tcQP*2rTvO3NabS)>tMvm4M`>+KOS#XC!ciFdP-GeO7kVY;b>nBN6)x z8K@WNaB=_MpVDkFo@nwlvWQLFS!7IAnKh7Qp5}91);F26z63Whl98H&DUjA?e9L?~oh1VTtJywh$b z9%eQ#@>+#YN8_PO53SYCIF8C2M@O}1i1a@C;7~rF+89BeVsI|gl`gD&mg;_tLkA;p zgl`t-c96h0L-l5J6v&|pD?tHDAPAQinGCD#KWk?xGXR)i#*lsY_}30xq3RN(gN8$K zb5rq*oTFi<63iB2<(@Ao_Pq>2d5)9dCpV;xH3BlpI{E*<|D# zHC1;UN;Ubyg$ z+3snflIcywaR{$tsHnH7UtKyQ$lr0ylpV(e3tZD1o6G{ce!gX5iSM?Xj@TT8*)*i% zrHhQ1o3yP_IQQpWD;!ATdFA;N0Kt`Cq{rPTL$a#(> zvA(0WuF(>mkis&uxwVOjXc%n4axl(oNk(REOQb4lj?O;bBYWE(dLWcsLwgx(7D5s6 ziG#tAdd)3g>%b(fNQKlQI|V0Rc0Y3CjspPq2%%%a-C6mLy3*hihO~}&;8{g8cMzou z-2mQ+yQ|j{+R{U#dW^E6xiK0(iiju<<&hi=iiF%jCMI3S=m>FL?@-!$!k71Vh&0a+ z_`|XO@S*?464^ND=kLj2@TnpT5}ikYc6a@%qJtFen1r&=>`QT7!>4`9258eP)G29V zw-N}L2Fq1qZ#l1;Knq?9jPPsck}7KG%9# zJUXmdbaT*ihHWmXC9$1~%PjUqT+E9gP&=B#h@B%C~dLuPL;iI_Tkc2)6W_iEwK4P`_4TIoia6kY?mg(*s7yHm+KFm`*%?ncjK6GPC# zRIaWmm%_BtzMj2xCP`j25?eQ*=~RXJQq*SY>|IAnX^qZ(trFDdN6)Ll#r}%Ho*AwT zqjYJ9P<6OAotzykMH~RA1u_iKiJkDFdaMp9xZNLf%xDXVDM_);tf%5jKP^92YP!KUBw5QGsY-HF8R%-q=k^lG3y zJk--hk3}6hI3Sc)HrmP$cYA8=!r}7XVR2EkQW@_-H%O%^FrDndB4AuawIdPUuoG06 z-$vf`JAT6w)4Gw4^%^d|MZruTkM50VKqx&6uZlAw*M4zw{3-55lX(z)ygGtv`?iG9akKM2h znV0m@H>`I6RwK(+u0?^u-5?jYp zqrF}=OZjB{S)=eZ+5W*>@*Ho;EXDHl%vg0t>02EMN*#MbmWS=DN+$5!RYisaj|^{Z z6&KOk`@FnPWt2DaM|&R4M@||I*WL47&5cLTYtOnBA&qdZcgheH1dINouW(4?ZEtTQ z9W%H0URayh4qw=}ly&i;8{2LUD749j}v(4tG)Ee6wh>^*q#})tdPtbhhDC5MZI@DPnYkmA3 zA7l!xo){@tjac^elT4xMi3tlwwr%e`iEXq(;DQ;dQ0a4A_ZiI-N_*9H%-NCA?BN*B zhWg8?xz^K@%w-KCN^m(%_pJq$v_*&d(E;i zexdeG*>Hv9cZVPax99FeP@Fa??p5XX#5uQhKtGccwk7}xO24Cp(KcTG(|x=!$}a4# zZ|SZ$8EHh!icPk%LL_dla++&|0KU-6*DT~XRp7fdGKUQa;^l6|XJD4PSm4Yg#TG_{ zB$vMXAWhuR9r*)!emF7qZ^=0$#fvmL;ENQwMnxiudpP>A56g*CQ6N4{@~HJ|d5PJ) z&e2`fj(02)%YKanoya{LyK$(6C#p?D4}zDiM^P+0?6f4cX^g)PJ4Vs4??-_I^1Rj> zw)6N29|bn_J(aQ9@$-eh=pok?9RS_2XVH|izC`C}7f{a}*1D3{Y%bRtQbK3fZ^Z$9 zYlK;ZE5>KO{PWr-_<_9e7*Vp9(Z0NtH-JvfBct@gsWoolJ~;P2phWv>UwW}c#^_<+ zRj=Mw_3qsD^*}6v+^f8-8k3irN7vKEb9i-A$s^zZ8m_CJnt6@b(Zjs)(;4bSp?ob} zkRl%X;_!ZjQoK|%0vVng4AqZEo)XE|+4qw???CoDN~B_Q@zBRkh2zKTHIsRT%3#A# z&Wvu*Ly=)J?9ouBJ$Jck$e92eCY(syRZA$`?gY&JK!0De*}R*__{K6j7F)lFsQ(Ktr>&T)b4F$PRPDXDG74#SL6M)<#fBamvp79I(?TR*G*O<;e~ zrC*Vl0_?jDpz3gY<7z3+WHyd&UL~=Su?4c^=58Do%sYmxlAn4Jrar z4GB)YE}Vb($F6{yyaLDum8g{C_Kjodi2t1F7~HEjq!(Jr;BdGvs@7)Lv4ouVgrgpI zU@p{e(L;)8x}QXtid)&(JKKwA;*G%ZykgTeFVMxZx74o$%xn+!>OQ-v2$$Sd0+zlI zRj-Osu8Z&iJDgRcWdSk3p;njrl?=R!EQN<`l|p8m&nP424N;>z!Yz(iDRdzw2dh~768KC|vI_Tov@&Z$AzTDb%+&u|WGm$n>ML~I}Cy6sb!;YW3#67&x#^WLb*ERLG_w+y-w4e|MaraKQntS7r zTJGFI(hN{B?X5w}xXtnNtBQkq&{B)ybHpiHfU<0Ka}$hh>SJQ1#x+OT8-xAKG02=u z63eAal4EG62pS7m&omJZ+`;r2NO|vVpWuME6%+v-Q$A;5vm*|ntB7fNNBqEIyXaug z0YzFXea`Qa{8Mjk*#$CSq9u%-{1Tf2M^L4Ab}IS zYf2~Z+(@$;ZsetNt=R8C#yt5&%W_BrAY}BS_0hQ{WTR|u1oA=2`rSb-3M2$p~*|=&s_9}uJ)r{5sAf}ATSpmpGd;Z zD{*O~y-HGc=-(Z*`Ea6R-B<6gD$Z8aA36EkT81@aW@Hw=I5aYr+4DXR%=;MTjj6)y z~n+;9A-DK?gfu%9Tz!qh(lk}i=Td2AI6EKpmm^S9T?X#e4vb{I03I7vN3IqC~ z1AJAPvG+p4QT6b|WKgk8MRf4oxx;AP^`$j*?=aqbq@bd;N;e6{v)dzWfJ3FdD`&R9 z(cT@ zJYTOW#x`7_8tD;OD{J%O!@HVg5_c#*stw5}1X1@jPjfGPBtW!NA({}0;VU_;uhPon z-ZzRy-vK4;ruVGMYV8a?bZDY|_T z*2CJhn;=?knZ@*~W;x=PvECKok}7t|yVd*^FF(epTCB!ZuM#qE65)%;eXnsLJcP*R zK4WZiTk$-ISFS7W-FlMsHsW9n9Y=bBQF0?xPt(ArmGy4c{LISHUJCwlbX^Jha!4sp zui`ddmHUpyyOzr8KR{(QtmiSZhK<=!VhgrKZoYj=vc$m%_#Tu9}$KrZqy3 zsvh#A{b+zph*ovoAM4!W(ZyZO{`Q1$HBX-W)(4X7imxEvCF;l~3pdUIb|%wq<-v5q zSo+(5vAj{h25DeoQW|S}77d^6V`62rCP)U=fP)sK6^?Y~@u2I^U{CrdqroQj(AamP z(bu%PM0)!m>vWcpe!VBB%|?z?j*RTVHpWfs7qw#{060L$zjD|3ty}5!#HIg|&mztM zVQj&eI@q`=T|yqc*!S@U2UvOU&02}qP=y) zhJ>6_YWISqU!aEewrq2J7fH^Cf;4#s*5abC<+M?q)dqxF{#K#mXs;D}RZQsJzR;tI zfR~Q*(h4_oA86+8(aqFWbifwF!|mKsDvPfloVgj0xU>*KZf^HfJ`I(}C=bTaXNB&J zQ$xHRA=;|H_qXow%myz{X=nF#t&PRbb+=**pn>eMlLr7YRB$p^Qn6fQdWdZUgFp{U zH=>6F>|sCKgD|>R^D8ghNV-pT|Aq%TdxjJ4|LwnQhF=3c{O}B2bGKYex2oaPLECbF zA)FQIZkt|^Q4@Rf)Qs-|xa8HWmmw=H)-D`WuK{<7aCyh@^)+Y{>8>QhGbxk=*Wz-; z&HZXoOpU2rD@}_OxceQ3Q>N*WT-5d64m7g`iXF70wEru0u)Pq6AG5iNAbt}|r zWJWy5ot5Qqz7DcV((Q)_`%v2`)X6plp zUEdlkyqwoj28#4}MAN*ThtZ>(#_STg!iHtu!mCQRDG=fEg++ed1B>z|6&sHjCG&#t zTgCXR=eHDsb0}0bS;C1OnR*8gU{gv4VJMp`w8u@RC}_Ef-h@#mM_Bn`lv#T;%8VFg z)_p_gAinHIPY0;?YQB*=CW|jy<$oDArHjCog)vHPn&Wcq9~az#9f62;tZ97t|0`l`p6*RD5d@fjm!9j~2c;s7k1~<2$Gg3JlsNkD zLy36g`Ya${A7;6&7er;8jdvVDrL~OAVv8lAk^hQDYsvE=nO?jYR&pnR0bK>A?h|&b zGv>?1)!(9j09XGrX!>R4|0Xo;61tIx1FT66h9`&*oTIN@Y3dRyX7M`8!D^iYUWXha z18t{V9{0319p}r6`{&`m ztTnTO1hmyjjPQW0mK)cJ5S3Fjuba0SH;h$x(N8l*cn#;+$79U~i0u;)Yy(0}k8lCUYrTGd0#ylfrYlSy|v z*^!6sK2!`QbrQ&ynn}#5^KUv--^*%BmwqqP_t#M0y-XkP1F2Foxj%JQPlr%j@@d?= zGjCmQnXv8AE0-DJl0?(eV5Ak+6C)b}9M$A`bUE;$6O>&-hoD=mYPcF9Lg(Wr90 ztGza&1Ih+SX-CI<)*S0ACc?>@zqCJObf7nHNr$?i#k{fW1X#aj+&7ShLDO9~4#BW; zl#zb1;oJw;l_9#SQZzTAR)f1_+fA(@??U3)Epojluh#VrlMANsA zMsrBI-VHfWTR-yjc~J|USflbaC@j?(&Tgiqo@nW5ZcF=q zOA9-hmTp8#�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%0A*wwF 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

  • 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%0DTy@hRHETic!GWtEMgWR)u5gXi15owK>unem@ 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