From 19bc0518e34de19564d106b98c5823ce4496168b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:30:36 -0400 Subject: [PATCH 001/846] chore(deps): bump codecov/codecov-action from 4.1.0 to 4.1.1 (#7278) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.1.0...v4.1.1) --- updated-dependencies: - dependency-name: codecov/codecov-action 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.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 523d8d9d68..a27441408e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,7 +59,7 @@ jobs: path: geckodriver.log - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v4.1.0 + uses: codecov/codecov-action@v4.1.1 with: files: coverage.xml From 7c186c3d2831d3cfb6e42ce69d2a132f3737aa03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:31:51 -0400 Subject: [PATCH 002/846] chore(deps-dev): bump the npm group in /playwright with 1 update (#7279) Bumps the npm group in /playwright with 1 update: [npm-check-updates](https://github.com/raineorshine/npm-check-updates). Updates `npm-check-updates` from 16.14.17 to 16.14.18 - [Release notes](https://github.com/raineorshine/npm-check-updates/releases) - [Changelog](https://github.com/raineorshine/npm-check-updates/blob/main/CHANGELOG.md) - [Commits](https://github.com/raineorshine/npm-check-updates/compare/v16.14.17...v16.14.18) --- updated-dependencies: - dependency-name: npm-check-updates dependency-type: direct:development 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> --- playwright/package-lock.json | 28 +++++++++++++++++++++------- playwright/package.json | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/playwright/package-lock.json b/playwright/package-lock.json index 8172cf64c6..abe2518ef2 100644 --- a/playwright/package-lock.json +++ b/playwright/package-lock.json @@ -22,7 +22,7 @@ "eslint-plugin-n": "16.6.2", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.14.17" + "npm-check-updates": "16.14.18" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -563,6 +563,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -3804,11 +3810,12 @@ } }, "node_modules/npm-check-updates": { - "version": "16.14.17", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", - "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "dependencies": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", @@ -6347,6 +6354,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -8721,11 +8734,12 @@ } }, "npm-check-updates": { - "version": "16.14.17", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", - "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "requires": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", diff --git a/playwright/package.json b/playwright/package.json index 8303a2165f..874faa824e 100644 --- a/playwright/package.json +++ b/playwright/package.json @@ -14,7 +14,7 @@ "eslint-plugin-n": "16.6.2", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.14.17" + "npm-check-updates": "16.14.18" }, "dependencies": { "@faker-js/faker": "8.4.1", From 9e8c41aaeeca4528287040745c1b53e8baa12c8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:32:10 -0400 Subject: [PATCH 003/846] chore(deps-dev): bump the npm group (#7277) Bumps the npm group in /dev/coverage-action with 1 update: [npm-check-updates](https://github.com/raineorshine/npm-check-updates). Updates `npm-check-updates` from 16.14.17 to 16.14.18 - [Release notes](https://github.com/raineorshine/npm-check-updates/releases) - [Changelog](https://github.com/raineorshine/npm-check-updates/blob/main/CHANGELOG.md) - [Commits](https://github.com/raineorshine/npm-check-updates/compare/v16.14.17...v16.14.18) --- updated-dependencies: - dependency-name: npm-check-updates dependency-type: direct:development 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/coverage-action/package-lock.json | 28 ++++++++++++++++++++------- dev/coverage-action/package.json | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/dev/coverage-action/package-lock.json b/dev/coverage-action/package-lock.json index f89bd58386..f3f248e1df 100644 --- a/dev/coverage-action/package-lock.json +++ b/dev/coverage-action/package-lock.json @@ -22,7 +22,7 @@ "eslint-plugin-import": "2.29.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.14.17" + "npm-check-updates": "16.14.18" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -725,6 +725,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -4079,11 +4085,12 @@ } }, "node_modules/npm-check-updates": { - "version": "16.14.17", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", - "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "dependencies": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", @@ -6816,6 +6823,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -9249,11 +9262,12 @@ } }, "npm-check-updates": { - "version": "16.14.17", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", - "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "requires": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", diff --git a/dev/coverage-action/package.json b/dev/coverage-action/package.json index 4738139600..073d512230 100644 --- a/dev/coverage-action/package.json +++ b/dev/coverage-action/package.json @@ -19,6 +19,6 @@ "eslint-plugin-import": "2.29.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.14.17" + "npm-check-updates": "16.14.18" } } From ca98af431af93f33b99695a01ac6efde03aa50a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:32:21 -0400 Subject: [PATCH 004/846] chore(deps): bump the npm group (#7256) Bumps the npm group in /dev/deploy-to-container with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 6.2.0 to 6.2.1 - [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/v6.2.0...v6.2.1) --- updated-dependencies: - dependency-name: tar 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 | 14 +++++++------- dev/deploy-to-container/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index 113c6e8329..ed88c274fa 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -11,7 +11,7 @@ "nanoid": "5.0.6", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^6.2.0", + "tar": "^6.2.1", "yargs": "^17.7.2" }, "engines": { @@ -483,9 +483,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -977,9 +977,9 @@ } }, "tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index f4b7320e54..1b573ffd04 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -7,7 +7,7 @@ "nanoid": "5.0.6", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^6.2.0", + "tar": "^6.2.1", "yargs": "^17.7.2" }, "engines": { From 960ede93e84361af4b06ed0ba3a986899003283b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:32:37 -0400 Subject: [PATCH 005/846] chore(deps): bump the npm group in /dev/diff with 1 update (#7255) Bumps the npm group in /dev/diff with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 6.2.0 to 6.2.1 - [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/v6.2.0...v6.2.1) --- updated-dependencies: - dependency-name: tar 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/diff/package-lock.json | 14 +++++++------- dev/diff/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/diff/package-lock.json b/dev/diff/package-lock.json index b8f007baf1..d4583ec051 100644 --- a/dev/diff/package-lock.json +++ b/dev/diff/package-lock.json @@ -17,7 +17,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^6.2.0", + "tar": "^6.2.1", "yargs": "^17.7.2" }, "engines": { @@ -1193,9 +1193,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -2173,9 +2173,9 @@ } }, "tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", diff --git a/dev/diff/package.json b/dev/diff/package.json index cd59f2655d..99661c3846 100644 --- a/dev/diff/package.json +++ b/dev/diff/package.json @@ -13,7 +13,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^6.2.0", + "tar": "^6.2.1", "yargs": "^17.7.2" }, "engines": { From ed5e4863b9e586c76b07e2ce1a792b5fedaafa55 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 3 Apr 2024 16:59:52 -0500 Subject: [PATCH 006/846] fix: handle probes for unknown ballot ids (#7289) --- ietf/doc/views_doc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 551ec0cc5b..ab18cdd10a 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1548,6 +1548,7 @@ def document_ballot_content(request, doc, ballot_id, editable=True): def document_ballot(request, name, ballot_id=None): doc = get_object_or_404(Document, name=name) all_ballots = list(BallotDocEvent.objects.filter(doc=doc, type="created_ballot").order_by("time")) + ballot = None if not ballot_id: if all_ballots: ballot = all_ballots[-1] From 837bbeed09897aa6a6917b8d6d7d338cd946c21c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 17:57:40 -0500 Subject: [PATCH 007/846] chore(deps): bump the yarn group with 5 updates (#7280) Bumps the yarn group with 5 updates: | Package | From | To | | --- | --- | --- | | [caniuse-lite](https://github.com/browserslist/caniuse-lite) | `1.0.30001599` | `1.0.30001603` | | [ical.js](https://github.com/kewisch/ical.js) | `1.5.0` | `2.0.0` | | [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) | `9.23.0` | `9.24.0` | | [html-validate](https://gitlab.com/html-validate/html-validate) | `8.16.0` | `8.18.1` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `4.5.2` | `4.5.3` | Updates `caniuse-lite` from 1.0.30001599 to 1.0.30001603 - [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001599...1.0.30001603) Updates `ical.js` from 1.5.0 to 2.0.0 - [Release notes](https://github.com/kewisch/ical.js/releases) - [Changelog](https://github.com/kewisch/ical.js/blob/main/CHANGELOG.md) - [Commits](https://github.com/kewisch/ical.js/compare/v1.5.0...v2.0.0) Updates `eslint-plugin-vue` from 9.23.0 to 9.24.0 - [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases) - [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v9.23.0...v9.24.0) Updates `html-validate` from 8.16.0 to 8.18.1 - [Release notes](https://gitlab.com/html-validate/html-validate/tags) - [Commits](https://gitlab.com/html-validate/html-validate/compare/v8.16.0...v8.18.1) Updates `vite` from 4.5.2 to 4.5.3 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.5.3/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.5.3/packages/vite) --- updated-dependencies: - dependency-name: caniuse-lite dependency-type: direct:production update-type: version-update:semver-patch dependency-group: yarn - dependency-name: ical.js dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn - dependency-name: eslint-plugin-vue dependency-type: direct:development update-type: version-update:semver-minor dependency-group: yarn - dependency-name: html-validate dependency-type: direct:development update-type: version-update:semver-minor dependency-group: yarn - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch dependency-group: yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .pnp.cjs | 89 +++++++++--------- ...npm-1.0.30001599-834cd4cb82-d7e619e2e7.zip | Bin 839759 -> 0 bytes ...npm-1.0.30001603-77af81f60b-e66e0d24b8.zip | Bin 0 -> 841157 bytes ...-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip} | Bin 438787 -> 444329 bytes ...idate-npm-8.16.0-71c478330f-857b05ab87.zip | Bin 755115 -> 0 bytes ...idate-npm-8.18.1-c5271a0fb9-53479bf75b.zip | Bin 0 -> 760124 bytes ...cal.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip | Bin 167938 -> 0 bytes ...cal.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip | Bin 0 -> 256005 bytes ... vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip} | Bin 782474 -> 782579 bytes package.json | 10 +- yarn.lock | 51 +++++----- 11 files changed, 76 insertions(+), 74 deletions(-) delete mode 100644 .yarn/cache/caniuse-lite-npm-1.0.30001599-834cd4cb82-d7e619e2e7.zip create mode 100644 .yarn/cache/caniuse-lite-npm-1.0.30001603-77af81f60b-e66e0d24b8.zip rename .yarn/cache/{eslint-plugin-vue-npm-9.23.0-d36e581933-acb3a4dd27.zip => eslint-plugin-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip} (63%) delete mode 100644 .yarn/cache/html-validate-npm-8.16.0-71c478330f-857b05ab87.zip create mode 100644 .yarn/cache/html-validate-npm-8.18.1-c5271a0fb9-53479bf75b.zip delete mode 100644 .yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip create mode 100644 .yarn/cache/ical.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip rename .yarn/cache/{vite-npm-4.5.2-e430b2c117-9d1f84f703.zip => vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip} (68%) diff --git a/.pnp.cjs b/.pnp.cjs index 0c62d9b23c..82409e51c1 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -55,7 +55,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["browser-fs-access", "npm:0.35.0"],\ ["browserlist", "npm:1.0.1"],\ ["c8", "npm:9.1.0"],\ - ["caniuse-lite", "npm:1.0.30001599"],\ + ["caniuse-lite", "npm:1.0.30001603"],\ ["d3", "npm:7.9.0"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ @@ -64,11 +64,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.6.2"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"],\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.23.0"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.24.0"],\ ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.4.0"],\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.16.0"],\ - ["ical.js", "npm:1.5.0"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1"],\ + ["ical.js", "npm:2.0.0"],\ ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ @@ -94,7 +94,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["slugify", "npm:1.6.6"],\ ["sortablejs", "npm:1.15.2"],\ ["vanillajs-datepicker", "npm:1.3.4"],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.2"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.3"],\ ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.21"],\ ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.0"],\ ["zxcvbn", "npm:4.4.2"]\ @@ -626,7 +626,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fullcalendar/core", "npm:6.1.11"],\ ["@types/fullcalendar__core", null],\ ["@types/ical.js", null],\ - ["ical.js", "npm:1.5.0"]\ + ["ical.js", "npm:2.0.0"]\ ],\ "packagePeers": [\ "@fullcalendar/core",\ @@ -2432,10 +2432,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:127f44ed2d4bdd83725c8820683da6ed922142e851761151ec4911dcca098a2d4d832b774a31e7abf98185d360ff83c999b319ea3314c86d38eca853072fb0d2#npm:2.1.3", {\ - "packageLocation": "./.yarn/__virtual__/@sidvind-better-ajv-errors-virtual-ae7b5eb579/0/cache/@sidvind-better-ajv-errors-npm-2.1.3-e3d1c524a8-949cb805a1.zip/node_modules/@sidvind/better-ajv-errors/",\ + ["virtual:640261ed3b7a9880a388cc504caacf8ea790dd52f1cb31fbc3be445cb2adc6e73fc87097de620863105eb917510145ef2457d30000c7361456ab67ec0b895136#npm:2.1.3", {\ + "packageLocation": "./.yarn/__virtual__/@sidvind-better-ajv-errors-virtual-ff98ba00e3/0/cache/@sidvind-better-ajv-errors-npm-2.1.3-e3d1c524a8-949cb805a1.zip/node_modules/@sidvind/better-ajv-errors/",\ "packageDependencies": [\ - ["@sidvind/better-ajv-errors", "virtual:127f44ed2d4bdd83725c8820683da6ed922142e851761151ec4911dcca098a2d4d832b774a31e7abf98185d360ff83c999b319ea3314c86d38eca853072fb0d2#npm:2.1.3"],\ + ["@sidvind/better-ajv-errors", "virtual:640261ed3b7a9880a388cc504caacf8ea790dd52f1cb31fbc3be445cb2adc6e73fc87097de620863105eb917510145ef2457d30000c7361456ab67ec0b895136#npm:2.1.3"],\ ["@babel/code-frame", "npm:7.16.7"],\ ["@types/ajv", null],\ ["ajv", "npm:8.11.0"],\ @@ -2710,7 +2710,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.6.2"],\ ["@types/vite", null],\ ["@types/vue", null],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.2"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.3"],\ ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.21"]\ ],\ "packagePeers": [\ @@ -3506,10 +3506,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.0.30001599", {\ - "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001599-834cd4cb82-d7e619e2e7.zip/node_modules/caniuse-lite/",\ + ["npm:1.0.30001603", {\ + "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001603-77af81f60b-e66e0d24b8.zip/node_modules/caniuse-lite/",\ "packageDependencies": [\ - ["caniuse-lite", "npm:1.0.30001599"]\ + ["caniuse-lite", "npm:1.0.30001603"]\ ],\ "linkType": "HARD"\ }]\ @@ -5095,25 +5095,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-vue", [\ - ["npm:9.23.0", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-vue-npm-9.23.0-d36e581933-acb3a4dd27.zip/node_modules/eslint-plugin-vue/",\ + ["npm:9.24.0", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip/node_modules/eslint-plugin-vue/",\ "packageDependencies": [\ - ["eslint-plugin-vue", "npm:9.23.0"]\ + ["eslint-plugin-vue", "npm:9.24.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.23.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-vue-virtual-a9cf4d7c43/0/cache/eslint-plugin-vue-npm-9.23.0-d36e581933-acb3a4dd27.zip/node_modules/eslint-plugin-vue/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.24.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-vue-virtual-e080dd5dc6/0/cache/eslint-plugin-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip/node_modules/eslint-plugin-vue/",\ "packageDependencies": [\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.23.0"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.24.0"],\ ["@eslint-community/eslint-utils", "virtual:4286e12a3a0f74af013bc8f16c6d8fdde823cfbf6389660266b171e551f576c805b0a7a8eb2a7087a5cee7dfe6ebb6e1ea3808d93daf915edc95656907a381bb#npm:4.4.0"],\ ["@types/eslint", null],\ ["eslint", "npm:8.57.0"],\ + ["globals", "npm:13.24.0"],\ ["natural-compare", "npm:1.4.0"],\ ["nth-check", "npm:2.1.1"],\ ["postcss-selector-parser", "npm:6.0.15"],\ ["semver", "npm:7.6.0"],\ - ["vue-eslint-parser", "virtual:a9cf4d7c437b03eeeb49b01b4b3434ca26b6f59f98831796df73ffd0744dcbe1bfe9c60f8b7e2c803ab0f29084730afdc0220af1db5d8d3d00531e0df4f49dbe#npm:9.4.2"],\ + ["vue-eslint-parser", "virtual:e080dd5dc65fb3541eb98fd929c3a1d3733f3aff4bb24b09a6b5cce9fba4a29aca07e286ef93079f2144caa0fd33bb6545549286d3a9f2b9a211caa1f4b68ff9#npm:9.4.2"],\ ["xml-name-validator", "npm:4.0.0"]\ ],\ "packagePeers": [\ @@ -5828,20 +5829,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["html-validate", [\ - ["npm:8.16.0", {\ - "packageLocation": "./.yarn/cache/html-validate-npm-8.16.0-71c478330f-857b05ab87.zip/node_modules/html-validate/",\ + ["npm:8.18.1", {\ + "packageLocation": "./.yarn/cache/html-validate-npm-8.18.1-c5271a0fb9-53479bf75b.zip/node_modules/html-validate/",\ "packageDependencies": [\ - ["html-validate", "npm:8.16.0"]\ + ["html-validate", "npm:8.18.1"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.16.0", {\ - "packageLocation": "./.yarn/__virtual__/html-validate-virtual-127f44ed2d/0/cache/html-validate-npm-8.16.0-71c478330f-857b05ab87.zip/node_modules/html-validate/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1", {\ + "packageLocation": "./.yarn/__virtual__/html-validate-virtual-640261ed3b/0/cache/html-validate-npm-8.18.1-c5271a0fb9-53479bf75b.zip/node_modules/html-validate/",\ "packageDependencies": [\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.16.0"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1"],\ ["@babel/code-frame", "npm:7.16.7"],\ ["@html-validate/stylish", "npm:4.1.0"],\ - ["@sidvind/better-ajv-errors", "virtual:127f44ed2d4bdd83725c8820683da6ed922142e851761151ec4911dcca098a2d4d832b774a31e7abf98185d360ff83c999b319ea3314c86d38eca853072fb0d2#npm:2.1.3"],\ + ["@sidvind/better-ajv-errors", "virtual:640261ed3b7a9880a388cc504caacf8ea790dd52f1cb31fbc3be445cb2adc6e73fc87097de620863105eb917510145ef2457d30000c7361456ab67ec0b895136#npm:2.1.3"],\ ["@types/jest", null],\ ["@types/jest-diff", null],\ ["@types/jest-snapshot", null],\ @@ -5995,10 +5996,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["ical.js", [\ - ["npm:1.5.0", {\ - "packageLocation": "./.yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip/node_modules/ical.js/",\ + ["npm:2.0.0", {\ + "packageLocation": "./.yarn/cache/ical.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip/node_modules/ical.js/",\ "packageDependencies": [\ - ["ical.js", "npm:1.5.0"]\ + ["ical.js", "npm:2.0.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -8338,7 +8339,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["browser-fs-access", "npm:0.35.0"],\ ["browserlist", "npm:1.0.1"],\ ["c8", "npm:9.1.0"],\ - ["caniuse-lite", "npm:1.0.30001599"],\ + ["caniuse-lite", "npm:1.0.30001603"],\ ["d3", "npm:7.9.0"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ @@ -8347,11 +8348,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.6.2"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"],\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.23.0"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.24.0"],\ ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.4.0"],\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.16.0"],\ - ["ical.js", "npm:1.5.0"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1"],\ + ["ical.js", "npm:2.0.0"],\ ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ @@ -8377,7 +8378,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["slugify", "npm:1.6.6"],\ ["sortablejs", "npm:1.15.2"],\ ["vanillajs-datepicker", "npm:1.3.4"],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.2"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.3"],\ ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.21"],\ ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.0"],\ ["zxcvbn", "npm:4.4.2"]\ @@ -9267,17 +9268,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vite", [\ - ["npm:4.5.2", {\ - "packageLocation": "./.yarn/cache/vite-npm-4.5.2-e430b2c117-9d1f84f703.zip/node_modules/vite/",\ + ["npm:4.5.3", {\ + "packageLocation": "./.yarn/cache/vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "npm:4.5.2"]\ + ["vite", "npm:4.5.3"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.2", {\ - "packageLocation": "./.yarn/__virtual__/vite-virtual-8f548b7c00/0/cache/vite-npm-4.5.2-e430b2c117-9d1f84f703.zip/node_modules/vite/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.3", {\ + "packageLocation": "./.yarn/__virtual__/vite-virtual-69c30fd9fd/0/cache/vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.2"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.3"],\ ["@types/less", null],\ ["@types/lightningcss", null],\ ["@types/node", null],\ @@ -9531,10 +9532,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:a9cf4d7c437b03eeeb49b01b4b3434ca26b6f59f98831796df73ffd0744dcbe1bfe9c60f8b7e2c803ab0f29084730afdc0220af1db5d8d3d00531e0df4f49dbe#npm:9.4.2", {\ - "packageLocation": "./.yarn/__virtual__/vue-eslint-parser-virtual-6710b98248/0/cache/vue-eslint-parser-npm-9.4.2-3e4e696025-67f14c8ea1.zip/node_modules/vue-eslint-parser/",\ + ["virtual:e080dd5dc65fb3541eb98fd929c3a1d3733f3aff4bb24b09a6b5cce9fba4a29aca07e286ef93079f2144caa0fd33bb6545549286d3a9f2b9a211caa1f4b68ff9#npm:9.4.2", {\ + "packageLocation": "./.yarn/__virtual__/vue-eslint-parser-virtual-f703c550a2/0/cache/vue-eslint-parser-npm-9.4.2-3e4e696025-67f14c8ea1.zip/node_modules/vue-eslint-parser/",\ "packageDependencies": [\ - ["vue-eslint-parser", "virtual:a9cf4d7c437b03eeeb49b01b4b3434ca26b6f59f98831796df73ffd0744dcbe1bfe9c60f8b7e2c803ab0f29084730afdc0220af1db5d8d3d00531e0df4f49dbe#npm:9.4.2"],\ + ["vue-eslint-parser", "virtual:e080dd5dc65fb3541eb98fd929c3a1d3733f3aff4bb24b09a6b5cce9fba4a29aca07e286ef93079f2144caa0fd33bb6545549286d3a9f2b9a211caa1f4b68ff9#npm:9.4.2"],\ ["@types/eslint", null],\ ["debug", "virtual:b86a9fb34323a98c6519528ed55faa0d9b44ca8879307c0b29aa384bde47ff59a7d0c9051b31246f14521dfb71ba3c5d6d0b35c29fffc17bf875aa6ad977d9e8#npm:4.3.4"],\ ["eslint", "npm:8.57.0"],\ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001599-834cd4cb82-d7e619e2e7.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001599-834cd4cb82-d7e619e2e7.zip deleted file mode 100644 index a87ecfaa8ea7b500d3b745005e531338c2986931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839759 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
WFt?E~e!R8!(W~@e%0ps{ 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�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

fZO}66`1~Q!L2pyS5dbx?Q=N+ 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%0DI}- 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

    # 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˝Z*$#E?uTM8oE>n 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

    bG;5lm@oNb$sQ+ii0k^Hb`k(b4zb=&7Wm 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 z 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%0AE`3cJ8ZxT<~g#UayqpFG!D)?7`^d(_1+u?w@*a4 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 t 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�uW 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 z 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�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 M0+vn2Jst4>09i!8HUIzs literal 0 HcmV?d00001 diff --git a/.yarn/cache/eslint-plugin-vue-npm-9.23.0-d36e581933-acb3a4dd27.zip b/.yarn/cache/eslint-plugin-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip similarity index 63% rename from .yarn/cache/eslint-plugin-vue-npm-9.23.0-d36e581933-acb3a4dd27.zip rename to .yarn/cache/eslint-plugin-vue-npm-9.24.0-4c6dba51bf-2309b919d8.zip index 738f5c44c5a5f38e4d9678bb668b881010389bdf..285d11da2d8db38afd335f5ff3045e1d94ee1650 100644 GIT binary patch delta 123206 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∨F%M)D8t(O+WqPO!_Hmr;hrJE`w_x$2vNqNom@XH3@%h3|VyU`qQ?xZ69^jt@eCu zpxUKG-Q>mkE4`|^BL}1K569D0<&v#`^c%fb_{`D@ z*XsPxZ5%LwO$0ykH*w&;3eWyPC|wCwOdcAFGzS8?5p?F|gI3gB_Ov!kt+RDH31I+E z12F_fxR9Q-N=#lQG)WHyupFVt+pu`b)+A}pli;w%0+W9rn;H%(=6!0+DXnWgvvlXuY`cD=WxdqW$mvyuy-?kFIF1@W{xf!fJO{M3Jii|7{QRE)%+52eR*a9c# zyXocz6@e@Jzu_kcC&nHXU;B;WMQ@~=>xOvO0uwU7p&y%T3>&D}65O8OEMK9#^&|?l z5!#OYg{aY&$TNScGt&hKb*F1J%S6g-v0^T58{%z|2{RJ2Qf)tw= zri=@oY~k>Z74ZBOudHEJYkAlq6jJ?w_G}ZSoBS=P<@6r48v}KD=|)r0 zRZB=aj2Q(S$PSEk5fje}pt0i9r)~QHjr_vo+5iu1BU3ByqSh`}+*ddTn@QP2aFW7% zr26W>%}Jpf_!aiV@cZDt`@Pfc>zzveMMZy>(EEe3oM-`UBQpFbxLb=oV{Q1mS2*G~0J=QV@J~$lSGP?eYh{A};l`!Ee1Mp@%R&&Fxhm*UCba9Zaa20~WoB7K_+!ki(0WH45jn%I{v2?Vv+vz$pjR+?5FvI2~ro5b`Lbfi!any+;LE zDv3Td%oBAk>W%qO(Ye0az9`=S7xyH7Kcj-<%gT88(LarNDoaXBe`f2XnUqI;>S{f_ zO<0y=_IC^KmtU|6zw?!<%i4_StfWq1q_5JuA@;ALdz{`GE>KnBT$#1>;DqU#B?j}!tr-pQde_aj;Ec=}T<+vN=zHlOKzYNEu z-BmXE9I8lr@=Y-9LKs+_I#+JR3v|~95}C(ygEkHB0K2*o7oyg{i-BN|YpNQ>CwV2o z{S_R)r?}ZJ3M2I3G(IbZKihG(q4o{E&=4NHyiM*Vz*~3)(Nzna+^)4@{$Q6MK_!#s zVsREom-KS@Fb;(ArQO84JQ*m_%;^iGyG@>!H{#~v^z>oR@kI}c1kXJpjQ6k)f$AK* zWwFN0)H&ix6|oU%f)m?7*V^h?{j>|a zL0Da=>K*cs?z#om4dC76j=83dowS=0f*FwKcH;p^pWOk>H@Yhb;3LIjeku+Bs(AQp z?}LwWM}BNWT;Kg)D)|hI+pXDGb(g^W|AWPUf0oFg+<5>h!bMgf16;8|eqSLi8mMa? zKmcTS5Nhe}l--3BiWtd>2?Zi@D#3avdY(d%z1^R>zdjqom#D$21appvk}@7ouVT|^ zSJO-2UtxdL8_1tZ=N|n2qm(>>;wAEk{-&TmkVZX$`Y$2O zrvQ~`vrfZ$$G?)lk!3#eQk>rJGo4jUJ|Aa$4`qLZyD`Hp_{~$vm_?C@xl}I%8K-mSK@cCGzRTh zidTcWhN!LV>?*4!Ju=z~{gGXV6kH!Yow)F{b-kyLy5NnALprzHsS>nUXOF-K8Vs=O z)aUH?Jygcfe2v*F@CcdBp_Jdre|AbN>?p3?a;Cl}Ud zCc!+x(;2;$Rs~VCh=TQj+k8U2a1z&kiRDb{hk!oz-=IZK(MP6JeVAGS$(sT!4K>GK ze*oKfmp5xIzyuE%VaiQbtPTrvWv+OPu02+L+K%7@H!R97;isDyxIavjyT3I7(^V^O z8*7(#2)GvP%7Xac)+YII_n29C0!E0t^ERvV_O|j{^Qe2ynL@?Nlhx}t+Vq{tDor%F z_@2by)Tf7Ur8A*6-&DwZAI%A=fe@u3+^}HU-+xTJ0O$LOxeFZj-e2V?)?{WeIP;V; z>y&DT>yJzQDirz&i5B0TSUX~J{#LB^t!!_t&=#W%ZsYn3CM#_IUPC7u+S5S!Wz08c zGaAgQ*RsHRMQ1X{so{|q!tlgNnv3h_oASnyX8wNs4Q!iGi!OYg2UuKpJ@b`fmM z2hMDPwTSMo)~3(z*8VlfZ?yxxce%_|rZ>1Qxh?$ftGgmbBXZ_Q+`!mLr5KM+Dc5A^ z;@+ByeOUyo<1q^0NAFSmh*BH)GT;gU&Sc7qo$(8jNP?2A{OdoHI#ik!G%85w0057P z8Qzra_V|>4x~1dV7cl5<8SZ}y1u{4QkU^TGr}u+G4gie6jCT6^!X;OocO6WkLm8XSYn-Xr0jux40npYmE}j1 zvBR{Ac422YVIUF4Jv2I{Y>Y|da{Z8a(R|=bN=n(I$T=I7PDIQ;n=!>xwI#|2tUrah z#}(E|iz<5}6;i?K8eRYka-@45CEYOBKh`|4=4%)D#mGbXCSF%}fnWEa&O-nZaK!VY zgRWJsi&2@oQKkO1T)9y_@KG1us}VmguM5EcNO>D+JF~Yx?kncAzMiSgtzLS1f}7ws z#^$$eRkaF$*y>*p+Q3rlsX@hxh7t!lxwxact*tpT+~NAZ+i@2cy`MEmtLZxumVK7D zoi^*zYZHd2euqMVak_x{q5V__R9xF*al#?Kxr9%1>*t8`D-QX7F)r=pybhK7@x<0WKVFFrg zgE`Q9gr2HRZ0)i9v9Zv73DzOzZNt*Bq-~4vvDo42Y+olFNr;*8`Pf|v_@+$pI{fBb zo~P-NehN_l{clBOQSjp!MwxIF%->|Cn!gJxsW)epOJw9PwE^d=UD3I_UuwF!eI&zL z{;zrY`|2k1)=Qa%-9zr+V|t`}Fl4^o=2Awu9Y=n;V^E_J@69vC?#biJP7#BvifOZT z)IO#sq)woi<{{j~`&5hp5cxb1|HM`x5IRwU))|j-vWE&o;c7~o5^2b!n=FdVG7?&L zMxo>PVxK&3rTpFcgICgI$4?1T|A0!?1Do8xVz^TlD?>#YG&ah(58kCVrlOf`IxE(> zrR8w;I)=d>bg0hBvd+pSsh(1}jmdb&*VS`}8XyS=$|Cnx)Fh@+AVDVGC}*ATf^E+4 zOko_htc{Cy%G9l&xb@Y@pp2vwL{$%F_1{AVGlPm_3qJWRN_Q?iQSSWs;v14k zWV=z7(Nq!;#K&XGd7NyrdEyr{NC9Dv-=Hc9V;c-N@~lP%6LB3aBTB6rlFPQO@5(K+ zgR+huaP@_?GS;qfL8^ZM6hQRn$4q*~!&xu4O^ZGx$t&D|ZvQ&k=qgF_HzfXgU;c2L znUmS?+?-y+i@g%T`wEJmV3v~|qr;h)a3Jo*;G`&~-TmKGkCt90m%p^r2XrM{!9!R0 zPB{E*&V6F>!8a{dDa0Tg9hu^T-{(Aq1onLSIBB~o!WB0 zpJBcTv8#*R?-gRFDlA4oR}`PY35W-zPs`yd0p}`td%O+Ht+-HfodH?`zWF^r4iX#; zQP}R1zBx+{MS0<*_AgZ6`#0I5{USQg&1HytEPgpcpX3jQzZ}@@OE&M7^SA`>Ksd|K z_?h1S83fwwP5?-va2Cks6@Fi@g&x@C_!wqTpFK1_utr_s|5{>QU@67Y0v=n3vD`Kx zS!T&3@gDXeBN$@4KTIZtkJQvZvOG*%Y#cr$I2X6XTcH7cZ%QT*d$Y%jjME5sTwF!E8@3=z%H#zp_0o0 zM$G+Z6L~3~w5X#EQ)_!Nx1 zlirQ1?D1{*qAosI)P{BoQkJ`2@Kqfc@5%`>&FN#h9+QdnIN6pq*$TDxudTkHT1`p3 zQ;;w35`$snUkI(X7)IDL@w3Fr={m#Rp;U0C+-VG{!rBBUZH}%q-^XkB3kh5+B9G<@ zcOtPWc*6LF2A*my;z-uN?b{ehQqeyc_yAYIZej~TVi_IL^;yYhxJFN*Y;p!0meshTDb_Lu=KEM<=)%8ScTGGU%* zJ*nQv`yV=S`5A6_EDt=>c-o~jFUb(-9btlw|F#Yq9B!|ktY4)GAg-_f4#aE<#>O%K zFpPPN762@{`gwe9A8+uTg!h3Se~Jx)64a@kjV9XgCq{YgIS5ld9qsG88pStcj^La> zY~k&$WW@;ARZd-eNPcGBmo&Q6R`Im|LJv#@TOBu%m_jpEXv5KM{R{5%^N7m)vLfyb zsf`0=)$QUIG}o#5kBX~3nh0zk-N#R-Bf**y&O7SmCw|o5PM&M`mhK{8D^rWJ>nplk zf}y8(q*U;bDV|+fr@@g7h)__g{G3nveUb6*7Csd+=s|FqHP z;CD%BD$LkwTmSv@9jRiCO7l`${fL5pzGjg!Xy+b$ERT2JSVE?-mk+qRKg=svVn=Q6 zn8lc4=8!*0uPTk-ThL;G5&qh~FC7ND1{T;@rHFU=B}!Qc-6!t4m3LFdDQoIY@YMp$ zEDeaH&-2cFg=@!#*F&E!H^sueo7`?8(@I=^&Hx-tXP2K3Q2DgQjcO-8)_hEp3GERR z(vxUP6_dzx-y<15@$2j5$gvzaf?hs?GsWG}{yE)qGF~rSV6++GW3BAw{ZFC($N6f# zXGqNamC~RKGG>G@MPv+<{Yqq5+Yae$qhJKhGeR(;F&irGQg-Vvq#SA%cNZSw#kqh` znILFjB@gT#t_>ZDK%z_#FW+1%rJRSh?#;Dq-S;%I{THDcckyH^UkqP=Hu_MNCH%1A8*j-X+k0w-FMCI#}vbm4w#Wngkv zq4>~j$=b(|UabMQEL%Y3*lKB?QGxWNde|j&-djc0mk&g;txjjwrv~T<)1GRG?D1G3 zFrfEAIf@|VHj!FoF?MzVz(+3stU4M;RYf(x&LeNNf@(%nE1qneru>eWJ$iD;I~un< z*L)kO-y2yQ(QKQ~N8Dm7Uo@P6=GsWDEuAD2 zpFEvg76R~CA2vZNqXCKtaP_eu)U3C%kzC83LoU=kK+QGNOHMTEYZ9V0&aURT=>ige zRKj^X=Fhn`Xg(nxeGs*bOhjXk=+43@!fViyyPp4Yz_|>q(P4JY$wjpM9t6D>($11) zIlwedXQmeMwjl1h!bwRfxjT`j;U`^s18|oPha}BLO+0@$F9LpNPq8HQ^WYrhD2t&$ zWT5>&T)ks+X5kjC9h)87?x17awr$&bI=1n|wrzGgwr$%<$0vKAdaK@jKCBOR*a-VU z-77E)6C=q;Kxj&*J(uNFg1UmPF!<9LLfSNlu(ytpULLAWnxvSNRS5Q2kyOq%C7#Aq zt8;D|hc55q=kHxGb;uC)O=0=DWvaWtZa0Dj4N%Ix&%py9ohRIXt7_o% zHRz06(%$G^6xg{vj3{ctPEa$d%T>CQlfXAm!(kPA&|an=bugp~fTwR4w~I7@>E5KZ zFW{fD<~^le4_~N5k8+*0-b9}zL6RngKFi)OZV3b8cbz2=lG@l72Ia{Oe3{qB0&;?Uf`WyWTut5nWL zXzi?d7UbESCtJUVQ88pPj$!RE%6$`vxtJxG;C`h>LcrdQ~ty53!p>f_04cIp3z&GV{%N@7s0j9 zto})-jH~kbYm%{`$!(&sGimbf@L!zIv%;a=E8kvl_Q3i62YIe#afxbT7PHeLHx^kh zHty@JK-pciW<+-t(;r`=}~t2aFPa64)Uhh5u$ct8)gzx$(o#_Gfah6MV0K z=vK40l!X?8`y0y9=cVrqWMmB7w#S7R;G0WQw6)eS7^^3QSZPvlrTi&Pfjz9ax zI-X9%5--V=oB<$6Rbvk7&W%TC&klicBRf>OjCc<%gx!c8TS)aYY)76*W_e=gWV2ME z5+(bWxQz#hWyw{%3DLo{xcKO)V5{Koh5%d-Phl7oR#z>9ByM~G_e!EMULI%b4VsFj z5rFeXRY zCv}|Pfa9;a>p0Db*FSUl09Inv9|Y0nv8ZzcZ~P^$!$~^to6A2MFP=|e1N%ViR;K@M zo6pJqzq+%FlRfNju8 zxY<#n*P__|P9hFq7po3;*r5KZT^3!(i@x%{Uur`;UAUqHaUM;rhc8yF4*37bSI~?I zl)p^8`u5b&**fli;PAJuweg=*fLYGml4gNyln;U#k1DKnaw2LL%kT`I!rNJio(HQZ zYr>8fFDMv(Yu=FdO&S=A4h;Q~+FB@ZZG||`Te~ALiq2up>|haIcu7sjIHxlesihOd zS~GbSb&)D3LDyeIfDJj@Ey)bCJEyuBNaS>OH+#v($&{&3l18JEp9tw8BrJCxgoy-t zWcz}fhy+M`>DOis6Z1-(2&{$ZI)wEkZ!P;wh}z>eyet!R4R|tPi*l9Ctv?$|Ds#}OTN4zWgGYf=U*mW8v_?%pFOFqwT%*;xETQa~w_CQ9} zkQ*czK1f*~GXw1TAtyhK6HRNZFQ5|kNg9+SY} z!lnH!j!IiF108qOmKl!msWwdhdoo*uWd(t84E1Q0@0zeoKR$%dgsB z{t#sjnK_Lj-!1wrkPz$&LkG=|rm}?EKbjMTexaNcfHS;8w=Q#l7eK+;YV${wepjfd zLH^$qzONG$EUQP3S|HCd$7p12a1vs zjXq0`-Fo8pWA~H=G9T}5y@1&-YKO=kSKN`?H$Ho3qh|SYzC0k2?9O4AZGiGZJ?O}q z;dq3>Y&+D{I9%5l6(a_=>|~QkHV+49Z4X4k*TBVca0}tpMFXP9lpuly^{L1UsGZnR z(2L}Lb7}n3bNr_$iKD^(EAktH79teU8FQ~%pilZ6Uuv=f4djx86TJS`-iiq;X)LXS zya}YoNV01y-aR#;9BB;u85*@|4X%a-6Zw z&MLZypo})ouK>WD^I9Wsvr`C%E(6(Guok`v(^{hGjZ6Ggt;uwUup7|OW#6_MSi-&z^mFT!m8DxtwOE%~ zS}cViqX>MrRgg0R)5TV^NH2@9&^6rC2E7E@G^#1fUxCZZUje;pjDik4H_Gd(O+tFX z`u%k@YZd?%o-@;QxG(a34GQsL(2YcFdr62D+QRv>T|RW`T=1;XY~Q$xC6E@C&?)E) z#KSi>?imns*@_maY$OIjY1m_@R_^OY$WN3eyq=|G44L#c-kO%K_iSxK{VEY^&t(Pv zTt8lE#cRQ7*OTnbQJJ{Ic_Km?hV@@IrR-eJI6xLx!cm}!!@auw+!j#q0jDdbj6&s0 zBUZ#U{1fbdzY)@*|B(Dgro;dOguvCmJ;5r)a_6!`VVvn@w_^LF#0QbW(x3<++)LE& z*LonnzmeOy4ipJ&f4ucwwRRHq9X48^dWnCo+=3nOmH8lTk6Z75PzWp{C=0UU#=M%y1Kb+SWzQw zP9fIqZ7>VGNTs2Z!)3$*&xGVM!uOTX{*_WpckuK=;Psj;t5IIr(@LfZr9$JR9^;&V zsRqT3V;foGwt#c3nNLztctXq~oB1b*K7+nt6a3b=(wsvl3!^~&kjt_YkR*~2FI&>F z*v~OjzQ>TL)@TZUcmLM1njN2vGg7?wTgi6+4NhOzIG|`GYQGrFHX1y9!X2vqkHK+> zM|G<-M%uwvnsRNb%nT$}Xu&3yT=5tX?$?|Q2_qu@7??-TgVB697kd4@l8*+@r=g1` zsuD(s!Q3e!QuuMp>iGgFV8M`1004^L8fCxf&Pl!ReBKP}WQYXhrjn&`NAO)C8g_it z>}4!JKlUW93PYmp?^Soa+{9KBBCamPAxr)4_5)&E2jTm+hL|JXK+j|x8f8=|_BHIQ z&4VuQnMByLw>l7R4Ruh^a} zyY6p%V{!HIn0mc<4VJcozcpxs?;J9;3~@rCc3{>j_M5Np)kC%-8t{6k?jcvc^fZF( zY7utSW7(XoA3`t#5)2K1Y2(D)F$;P`{uF zNZ59MXH1b_dvON9={n%c*#3m{uyi;3@LMQf5$3|A)RN_15y`~5W1-XCFy)&gCJ;C> zWN%QWNo5Z*71E=0Nbl=WVRiiFZ20m56y!xLnDlSbjob3@?4#u0iG@03K*({Q;Ao9N zEK9sjL`? zyiympIj^ObJlddF9wZfq!F&9R27$?IREA%VP7ND@EBlx?aGNq@UU(0PUN80jHGxM+ zJc##)$4LhOsZj$ly6~t+B%B*4kY1OGXZ+_qVdsry9M`}#nLt+<%P$X<7PB1_F$>o;`U+%6cB=b@LzywXtBQ@EA#T(PT)^%Q;B!l(l zMW(BA?ZPNnLLagaDTk9VJ*Gcjd(T|XsLrla+{yOziE_JlI&MDa)O76Uef}DYQox&d zW@755>mr!zFH|h%%OZ4x65Pp{EAB>(xqFXxPiw2*E%ip;v$KcXWG-VAFwf(xw#?u9 z>fX7OtT-Pi(2oJbmrT_=0hyd$rdfel?|txrFpT!#l;LZQbwjmH0MOQJad1~ixcwuF zB>eCD{|X$KzxCZJpDPQF4|vmXY^R3(;dPD#9%#0rexPVLVr1t63#Zz6su}dt>s1mB z{qwr;UCks-eh%%0aCF$UUDgoRKISucQ+@j#+Y=IKzeztdX6+Q$F+d(D^=hC zM{(YVyWwm;pUITT79Z(*Tj%EGwTGf)2r-+c3Gcz2@li~-uuz~_9>AA^WdX@VKcj93 zC99SB{-+dkVRqO~v2z_oh(N&HarAxD;0mb}Z4z_{K4Wt|zj!w#2!?mPl>^A9_CA!R z-6UfOhEB7gJu?Ty47{GX*=6x8db$i%GBcwhIXeJ^MlVy%=tz);-j; zv~vUB0u)3<*4K+UXI4(Om?P9SeY>Dr&}-;Eeb?XWIZU`9E>r79wI9W7Ik6b-)vWJ- z8rj~C6+8#G#(TfCXO~zbBM74xc^jS3&7^UE7_~DoLB{|9=(^uJ&*?(#;C>{jN$B_@ z$|$QXs#%kg7YWlKj|DKPH4cQ`a&@8?bY&CM0wvS9S=gjK@%C@+F)a%;?yGQ;Rgc?S zqctq?RJ)OInNEY@V2s%1h1CXBr#WVtczi`9EHLyK29ral|7V6YPCN^yhO`TLan!$( z?^3oI?8HBS^l+*j^&b0bU4nmb^dqm$%{nZZ^0P1ucG7>ZurSk<3mu4Mon!t6w5GETKq13FxcHb2x+X6y!|Q{F`FO#Sr&8NT4is^qQ?&7dyI8 zi}gC@o-nRKEvooiw<+Gwait_NO&0Lw@CJG2;@gfoH~D$ma3!;qhv>c@vkW`KukZJ$ zDH`O_NtFEB15tQclEhJ{Xm&DF0BO17bTO=MnYT8(J;d;Rhk0ud^QEn0s^zWnoSzTA z=L!Lk3{wEpmJ|Ho)Uh-HQ~Y$LW=ZhlUMf&7@e8>6`Eo-!BN8JNxK9s2+R|u^({;H% zGsB}!Pz;s!wm@c41i?Hziu^)DCp8s_H(@fkkNf};nfnlCLN0>Sunyn+GD0hsJ04uS ze6tfttMK{r$eZ*r4`3EKO*TF)*MY6GDl@>&Q1_GCQKSX9^$`Sn<*_2QG1R6bA|uH? zn8*vm?sSia;WGG-?pAFAnMhdf_RQQ(l!=nn4WebRTZqIz^-P^`g_<#ke(_?-FYAC( zE!V={Db|ON_;07mYjqq$oAMb56-4WrDAj|&j8=k{f6#D0k)FQ;tf%T$+X%9$iv|Ej zBMP}qhJgLUgwO!(-+tZLLxrQfI?slpPw1PB^FyJ#akkp5qhl=bP2ZdUfM`Gsn{4UL z)q07?WSiGrjmUOzoPIlg}@_KK8n{#)U8e7G zzPmDD0+fDWGC!rjXF>Izu)`f>whJ-ghBbBe;vsb1ZSN=^$1I@Xvy(?E0EIZcG5OCa z-DcnZLnR}3M=nx0I`6JDIT+n@mM zfdM8Zr0j!eX!0g@eb#R(tcJd430n4(dx;o|4Z>vrURZF)YAwG zhDu?xTvF6#mIkpdL^Mt!_1c%XwD6ePgi$k~O#+ND}!(tceWrRSVxNC;IqRFrE}t~#sDN*e-Fd%%4oC{G)` zJ(0bnZR|=pmE?ZOBu)(ZlnkBvRaxu~JNtvAy~uwCq8U{)BR%`&D04Mk?)qOFbRip6LJ?gcGZLw> z3|M}0mOQhRXx?U6dRF1x{x#tJe)%m9@b$F&!ARu)abNlJesnsTWWiWs+YMv&L)6wO z@~JyD%ttpE zlQU5tx=L z@}@%x#fYCsDbRUVhQQuIm5LdcfvF z<={bFSetxtF{EpqTKRoAC~bHO-B$uqdT#X0UUr&(-x)9}crbTft7y$rHInw&vij^r&U&bgW_B zwK4O_it6-F1CzVBy9RPiQOZ3Z#}u$-B-4(V#IH@?(>1ebRc>P{#cVMMG8_h4?8k&~ zNb&$q-SATkwf>5f$noY<#&p>zuxU+ay8-3JFQFBkTvJdtlg|ZpY0>i+o9Gon#4F8+1AXm&y^t-4{Ag_teqf~Y&Z&MKs1xK^9Ew6w?y zdp_pOfKlkK2C0yY{YpeQFDV*0ek;KN7yBXT3}RtJ@d|Jttj?z#y=)5k3cm(ZT!YA`uI`DqrG46==;UUab1&?h*;#)d|k(jq9Zr_ zXdB~s6G0N$4HiHt?1bF1tX?UTKlM|9EKWWbqX#C2uGn29J0o8eSVwCd@dr(7R*jt$ z524cPVEX@Pp&lJ-bIwoeKi=G{bx3SiS*B^!*wYT<~c7_nfo&_F#lpeM=DSya@ zSj!@s+gX+vMi9az{VLMi&10>)aqY_(s3a#%*nZ$r-AI{seS<4AO!e2(aom3bP9&rZ zr9H(kHDRTC%x^!~FjSfKXXa@JPP5JYpSqc){igkC7p6*DIo9>seF&k7Z)44BEJovA z<#+iNn0X7cn%5sYgAWMos(qk?imb%l^~qGwyKXF0OmAb(Is&@6V`IciDvvLiQOU`( zjfgyUM}cKr1bwidm+l@Qj@wj#*f0`;X6q8#q=s{@^dDLGN*Jf;@)=Y4usym2&^U_t zwqou)mm{oHy#5#LhQCd8UZ>cR7a;8&f?jJ$Y<7Mv&E|Uyx~J(Q>no5{jUcA5@QFyH z$}_RaaSKvR5y)Bv*1qU;{B52#uG>&Acq1VAc{bxMsOBjtveJk zpc~K1VO{*G(|-_~TAC*Q^orprO3}ilJtSZV)|e+M#E86!Gf_*WC^d|ry6~&#dh&a} zE;=Z>EWlIAO81!TwD5emSPkbhVN7gkr>9%8P26L!I!pcVU1vS_c6V)>$XI`(%mG%C zvAoW2`@bH$=z2_XyX>o?EVTM78f-N))O@#+7enbmE(#`HQY~Ec7kES6 zBnr!_xhgYhGdaH9IgC*qMqN{l1?{#CUFO48dtY{-Bb?qO+eBcHl`SI~lL_9ldlQxg z>aCw0ocwbv;u4XQ=8Z=*26e->%?y?1_)?0q!~bhS6n2(+kWl;6(w>-abQ zh6a5SUVox{gCckPQYA)tcwcGj1(!*cJI;J8MFNmaA3p}FrPvYk=S+|0|Ud+YUt=4E}|Sc{0KMMr1KOJbY0~%mS8( z@f&Qmu#O|CW?)F7E8GGDh!ID;g|tgcYU()fA1+F{v)bTOFa-YcLAHReK61r;rMFsq;6z zU-pQ&<7bRe9g`&X0z~ibJ$^8f6Qgs$n+z)A&tL(8&yf)u7>7^cA$FYUd5fT>g8)Ym z+tFJ3eJ%)n@}Xjez6F`S`k(4IbH>rXw{k+b3|J#+msux_P$yvK|bKNq~qbaY4<3{aeMxd z!y0>|vI#Q^;n1ZT605k}UBpfw+(+|8_A**rNJEX$Bndf>`6~_ibo)tH;Z4|}V8Qxx z_qTPJ8)$)A5gPy4f0t>{J|<2;w@fy10 zmYf4CbhY|S{#q4gYkU9vD?=6>FVKUpB@^%a_q?TtV7Q(s*t>u<2oZw1dPC z@G501LF?ECz;r-Y|NHiuI(?lsVU%JHSQ;zP@6`|pNT*--SEq}Mc16Le_b6`=QfbB8 zg}|%c0{d}L&Ph^mD+a2uS8A-0gy2K&1X}?suev6*xnu$|g`w;s2ktMaKp?j`uB3xl zhVnMx?U|oi(Y+Aw8v()EP?@x(@O)als8f*{c`Eb)SP145lX&waE06MTrSnsQFi3yV zG}J?j_5K~mXc4xpeJ%8t6-vR4~_Rh3Z^`b z@V%yB+uSU<>2S@x*q3HoWuO(#N;wv~K6;oxE)fx4QKq4B-58Tns4(h_Y}P|mU$G1a z>R;^wFyRbg4972Wu>N#PZ>_==ydqjeDDC`G#235Syd zJF{5cUfFo(TNAe;dd)Pu4?fTsI8907{Vucq(b6Sa3uGNKXY#z5UN4OM8R^%k5GPLH zx34yuw5=03BT;p;y9t~qfq;gZcKFoXFmDJU7o;c~p#(!}+9uQxrM?~mohrZyup+tK zGD~Y_`)j=dIfzQB{N^ljxJ2}sl z5>8>srT1iI-Jl9x?pQ?Z+^akH4yYnA5a#zHHdK`>!8sar-4Yt>i+dE`llCKVGNJ&- z65T*@qgwO4?(=V@YgyiKh(=q#w@y=$RBg4g0KVfF?}&WUed-ZiOo?f#E^0>C|493OxoRw#S!^-&4K8^rqm>& zCMtAReva%w)y>+^re(<-hdkSMcvXr-V=qBA_y<7P`91?zl0fJwc*OI$hFT&F7TFIt zSK5ob=dzzYa@Jhe>*Piapc>dK%}T2>xd+{6vR&)7s3M1m&f>SBJj`H#qhv8Anhe*D zQ){bMgBn;3H0}d$`rCv?5f|cR%iK;A*?E)TmfkEkD9pL`56EsRKipNM!v}Q}%ZwfBNGD z48gF4lOLW31WOd!Gz(%!g}FDkC<`DGi5tCMVzlJK_FkoT=_+_!5;y*7V3`@c_eRO zy?xuw+ljh>pI?Y-)b!k2n3lAfRbTGaB!@t+$B82CFd6d`6r-xq(}EP4VTl?%vY-RW z`1xW5m$wGyi*Uf^Sv;yF$LKe9?QUOz3sE6va%z?%W!Tk+5FhTn>unc?u`ec6Z^ z^vifcBsebJz^>ObTO)v3XlnYEe+jo&tG?ZDh~M^1hV}f2^7q8!0Zy28B~zH02QK^X zBh%M4LQA8aKACTRgK}?ftQKhoMC>Rx4cwngSC>CtgM_Ma)#1;)D0!Gi*>KpW|HU|24yPI?9)Y(KJieRH_^P3Gv?iX>GT8{B+W)<6ws zWn&-oCe{duTwSbGpd$9m7_NTXc3{MOjmw>FD$y`Kt6M7S67qZ5)~(a{XoR`4qsRp^L7CVZIJ!+E_?Qi{KEyITz`%|HN;F|)w{Rr8F#y@05XiYtiiN*n zJw2rVSg0syUT3Q!(yC}Mze)e$_xrL^c}^>HL7_*Ed{Tgr)lfRQs?jBOtZ1?z+7}d(0#WK+e3R}|#y;nr^>wCG@4WTRY{+5E zOSBNrKvaqKv|*P1G3{H-^=B#@Bjs3WspCNBY0UbKe>uTy!C$wMbNLH{I(*7+>1K-D z(n1Hn1`&AW5e^(|pSM+|N?ZC_0w`Xt)-V@kuGd5)=QmXdO1_u1W7GhVBd= zrPuMjR6x;d2k6$I`>PS53a!w>j&%IRvyYRP`rD#YH`TE#6`5XyoAQVpJ(#eWS^mjn zykjVx%@!bFKM?~`Z5xa8LNpo91Mw%rHh0RGzy!K8OlNCB@Hphbc+s~YM(=Jb_TkC!>N@KPt-%+DGk4!+-`n*)MdY_yz%BreC}jtyi%oHB}RB$ zIn9`1b>&UjDmcaU7k2GNLFoECN1^U&1Hiys5<=&rt>SMPwOFq7bMDhlvIb{n+vbVz z(l+whDAnf_>g#1%IuCK!YqMLGvDwJq4Om%P9lZnUCIV(RKwRq6UsOO72X_x31$F#KkK*;x$_13KSzKskY^zFE((w$>r8?OAj0 zO<(!I=DH?$?p-{TLmuWvD=wAmOHK2QJsyN=w(HTMRE)uhTilvkX)7H=>&p7=<}5jS z&V$*!hFJ$rxC$Tl*Q`B52`4OwA-?j{%mX3CHB>p39p&k#8L0_cLnF}~SA3phAFU5> zsFM=c&a&$hi-6i-yNvqiT6S)6(&$xe!1Ll7zql|K>bYZ&*4t31pv2JTe15$9RD6Ly z8`}ZD9M9x0Bz2B2=vMYd@L(|5N&c{j)9*?Z0MHQ!f(a<-4g~?s@_@nsBD8=b0iYvv zn;f7v+%sDQ^;@EbG7Dh9(h|fmITBA2lhFn$0oMpLqlvZ-2JC|PHk?2ftQ;kC4Gpxm zKm$=Tmf~F^vkI(WfoftJqK$RE*t#0iK$nrK&9oQWmg<|vh-Cd~1fuP>{q!1VRt`&q zRP{*SG1~+HRf{ww$2wm6R+n@pV767&%9%G4B1MQveS8HfNvcZPB)@@~qYfnIOI_In zTXc3}H1O1v`Cie1CE8$zO(ZiP>h*W?hA}K1QbV9J1`vEmS0k381LK8b( z?czG8bA6v$<@jP+17l}!8pQMLv~T~Q6fM3n)u&P^rneEmyAFrP#v5<1eav+%~ zAl{ar@knM!`5Fspq*5jjfE3|l{jFhXu>rR6m+nn*YQ$tJAFVy@DBcrO#{P7qi&PS^% zjK%P$HD)fA5z&WcCemwv`ikAv0$inf*|P0de{&KQE&Dx#c_8JIGhpDjC`*#;PPdz# zWp#quEhB8&G14w7*ea~vNv0VSb6Hx3{5cLZ;cpx?J4{Ugg}?*3LbYD83*2TRe1@*G z2Y0Mf7c<==BI;0@6#nSHxuq>V+U>S?7Y!;#W>-3R+Hn&!hwbKOngs7pS+uP~(7IXc zptTNJq&1Klc8PiZ1;A++`!oMZ_TuLAD~c?6gsB4Q*9v@Q*9Itu;u|eBdi0-u=iN2)+W9&nAP4H6%FZ%1OU^K%P+0tT*76PPcf}} zgdQCmvSd6A`ZJQefKRPiUdAjx-a$|Gc!i2ckB|Z7c)7H>*RsN1&FXe?Y2wFwNPEnX zCK;mh%1Eea!G_rG`VziG%)#v&)xSH)CpU$cho*Qt6SQm<;<+6)&_ zF+oWG4uneIqgK4wY-x>SIDAcW^Hf8Xl*bCB9qvbA^A z8}k3kX9)cC8*(*Qh&k1 zM+oaX5)Q5E_%8?SnE)CXFP>=yoA{becD`oewVU@e`A90GsO{-ZJDo$|<(@){pm%b5 z@@vr&LCv+i=uo)8yj_nhS9VM4k=S6OL^M~zC8Q-%r_{;) z=K5!04?2tbKus>I8ep174ej#}r?-s#8lpxR9_IL5^^{|22v5JB&c<(d**s<2slm&m zomA;ClyV`NPchIUFTn0W4{F@=_LYQtu@akqpCr z6L$n8u1#Tk+D_SF^g3k|*804|v6K}R?_HaUiGRv&W3t?8C-T{ex2fzAQ6KtP_GGss zRZ0_I=c~4Ij zmtA(L4J)bO(B3+BY>`i=kTkp-Pl_12;4c;EM9&5yohw?$gsKoc^%*(3>^>B2R*5!& z7!9hCv>`*c{G%&K+wn-R{hxlE%jyb+Xd&+NOBezp<(&3Ahw{21gS$uFV7(wV6Kp~K z?0aQK>xk+2E$&IQ-+5k}AJq=6-wRnM9GqkGIS19Z!$=F_zZ9RZd2mSJs23Cp;QPO$ zor;{pIuk)t+MuLK`x6E!I7e+RO7ddj1TGJ9g;-)s) zFjx`Tu|tkbo6IMLurT^ct)q@HK5yXV2DHXOf-<}3WG#<`wC*YIW>SRyPHkc~UM{3{ zXd6r~`v!9i8a7dk?raNj1El$EV9VXcTV5L+T1+YLWJ6Hx(mN{M7c>R|8R~{~Cfph$ zQ<`-TcD9;KkZynKm&)uh?0!dh(o5H2+Yt1F2Jo0L>~<>QfMx4Qu)xNRf!v8|8G%gt z2&aro4KqgI&vP+$sOn?f{0l1fb4|UGW;5L^UgcDXwLz6Hbige4E*e|6e_1Ag2P_izIg1jH3MJr6Do z&;d)F`W?`f!Af%lMi#ysC{bf~M6FB$Y{(A!3?7+J0llb}ED*dkt3x%-Klc{ahKM~Yh-TA;rE z)AR&+xkA`99#jK;tWz?6WCg|s<{wWw;J1oWs#-2uV?kNBJf;jU2fyN#HywyIdHWd| zNC#^h80!3P-y81r--2nI+P&s51#C4Yxf+*7b|r27GXQ#wBZ%}5LSLqlI-OZc-(G|= zU%kTlvOzHCt4)FSO*eMP@g|7^%9;weLbh0G`!5U`A|y4#hfwGmrPs!9|A={(YEe#Z57G3^`5HM(NhMzvL z@RiL}^|)Hj#q~+9x4j;=<3lp#$f>NjlRo!H6z6UbHf=yQjHP~sXXx?F8;YRUp1aIQfrvI9{%lgz$n1Tm{9XIYRfH8;@#y1~GgpKiR5+ z@cJ~7=;bl)vxY6Q-#?^EK9GLfW0VlnT5PkX8qY(!WWM|gP&i>JrBz-kB7q=wJ}fq; z5IkyUF6B}qhOf<^Ud~r~bSMOc2M{L(Q=OwT9|^It`L7i`XXO`RGMcDgvflp;r_H5= z^{z%3%z7UmUdm3Cx6Z}xL~L76kkwTz7c(d#uqIekb8e(b(>^CT@RFpkafWfEK#Ql! zikR`euHZ+){i;LG_lAQ`+rZ2x zNH)sA54rX;n2)zMI{x&ND^-Sv()XU$DSy`~=48D|P@@HU_my-%uHHaGz&%NUT`E$O z=kqOX^q0<5?A!Ft;Du0U29h1C!CMr&b>aVW#%#>egd@J!Ln~n13b-;r=|6p>{?D~L zk-J$CF?_ZT{oEI+kNJI$JXNh=B8qvDljI#Ei3$blP+VWnN~sr|dX9Z}J1gif5eE`} zV-}4N<~Nm=mKHzXO>`S2{v`#sZjt>V@)%!7er~NxfD^K=8$wB*GZq>mG#n7h6sJ*a z5WHmCZ{wB13)>kP3!DRx(?q*NAW9wXK>hT$;`B{4*Vu$a3o4)JXj3IRq*FYN_{k}8ydnaZq8|ikeP?apeR7IX>spR2 zbC2ScC@m_9&KBsLSh2Hjrv}=vAWKb%z_}D2i@>F~77^&;DRSJYIVQl*Ob9Zy8;4;$ z8)LLy$`HO9FXg6ptEN6 z<}dtR^0ks*gN_Wc9OeE?`_7p3l|+QQ=Ng=$%$+g5ox1?fxCfV$e~fm0*Y$sjz6*h{ z__tUiB(*G#_b~#5Ma=6qjOxRH1anCAH{dNBXozdcRZvL5Na32XYXgaSh-Q4^2JZv( zxf1#gA`hk6Ko}!fN!y?Z1a$ual`=8wpFn?Iyh6nj%$#>q-hd6)RbRR|LW<;GE7x5a zv+L)6msJ3dJnxumS|qjjM+FhcHq+B+mFI2l>@RZYq=SnQQ=VN)i&+)Q(?o?*D=m6m zk_BZ>U$n=|I=-60S7lX%^dTDG@e^?EcGwPrNBNTmjV`0JuYt|$4{5_|XPaD}i>S-L zeSX`Lp^pe5y(c5d^4!hSMLO)UvTnxIp$fa3JpTY!U_l?Ru0;YLM)fDPk)xVvzDOpw zN+p`XfB)Hap|I`O;BTT?bZA7*PqM5Gt=0c7J$`u}M)HjdlWnZ_X;J__+Ig4gCG>Gx z=krn67Y!+BE=IELbEps!7A5%-Jl{EeV?Q5nax|fr5O=L5&xeTehZnWjIm(e`iE1$u z2G4(d#m#IgPz9S(m&&aj{MQ@-%=dx91uo5lGXQ`4d?UbHHo%kM;X=Z{(|g}ngC-=< z2?v4^=3x=ziM%Mn;ZE=A ze7?H9rP29Gs@ZqkZL3H$gHO&6TG7o83AV@udL)JzV$V~ph`OTPSrSYTs7gE<=&!sp z8$juyY6ET{n@KmB^7F?OsU~v+F)D_(7MMgseH~~JAd3|{ij{g&SdM()FDz}*Hj=|| zvw;(13VHeBhfCPZ7dSz4hbv-<=S34q?>;(E=@k4IU_SD4rouW$11h~-OwE`kbtjW( z+nzt#c8ayCjPmS)dwhmnS!t|IBGX#MEY!h)CAB4kyoQ^Vu9mvG+)i}oblTO&Yr+HZ zEnjy&OQxl)-mJA{UcbYR{HswA(3IcjT}JbH<8JNcFi5L`)}nDHMCe)Q4yN?xWLf}fW5dw6{? zR{Q437+jns&8A=(-_D;z5;?|5NRjqzoQ6!o;HhFPI)W3`6yHi5QFX)mlbn3Wjyy6& z-%29BI`H+_ix6w|R3HU>>O0%l7XGX$c{?bW>9tvZStffei~HXY8Svu_{2h)l^ZqmV z8?$yv``hpjAmn(xNq(R!i#0qA>9!cc9yXWels0`HF!UOJq5&1 zq=shZrB3&Wa>d~+aWlV**oO4nusS$jXHuoa55C-;BlPpp{e4bB*JVM%>KLJvPsj<9 zsxHQq&hR(!IEa;HqIeNkX^L*44?)fi(UK3aA_IvUJ38~roqh0GP709z<`uq$&3l$p z@z@azv+JUQKp`wN-EY&_eQePcvSs@ei4#Q;MGfzZKTqg-~ktg}BP|^7TFay#K@1JFwT;g*7%Hy-Lr+xvtdREqQSe|o1gl@wZq9X-|xSw5xyyR!+D&PbkZan^m@Vt z+pLW*O>(Uv+Y5pc9wBj5-J(?)y8P-l*&W0k>hd*gt5IFYbFJr?8N1K^w$JOm@3yO1 zkya9Tl#X79X;@-wU-$(-gcCJaDnW^vSj4%8`9&V~dE~MCl763gxLJ~vd zS%7e#AUPoLzu;+4kX&+!FP!P^YeNoRJxQUOB?U%=`ra2&&NB_v`fkd4>v^1;RcTIv z_)gBro{~T163qWZL%kD^VEC{X+>OsT}5ec)kQPOmub|#QHr% zex!6cUaYZpoN1+}i)@{ZgWe~2>-aOIiU53r@ZA8)mzINs`498T0^$yZ#sFDz0Z@TW zJRxgAYhrYqR7}BU3MyI@J{UII8`8wM?~i|La+Ly3MQ3flBFxW+sYV6>XK)Zyt%`7= z@BR~D>1o6@4BtH@1}7VQf)j@dQ!SW}^i8D!JaGZmpf^_1q`|RR#I)%#P1lX|*a>0F z+d)&RpA)uPYFf(0vY*uCtB!o}N)9*xt>I;kNiBP7VY*K7k~JkVtHed#SdpZh?!*zR z9lJwGQE50zJ2?(FKozR@9mRWMeM=a2Hn+>ihIIrYE?b9|Bc6N(d6Mu5TPaY8=?IEB zOTmJRu+||=pAJztD=ldk1zAI<&p@UZ(-OMK2y1{1?6@CfKH1HFLe<&&iU!;#|CF3T zKQ-=v!>MZEJ1uLC+1WexL~2w}_&^>dR%w?HU{6N>(~>MXVCW*^oJSuNc_K^h`HGGI zVjC}eB7{!OCSFY>Crvz;2)(7CiUZB_wGXx}@on%pbjz^TL68~m!w;2(G?SD7wWWd@ zXESoAANk7D@}czCx7CqaBtsw`=1XZhCYab^+rL7Wkpl%yjFqavT0W}m=&y{R&yqif zLT-jVl3T>~FB>6O!`$O=xyjHAZ^u0h%YPTdVZ-z@NIJVC>TcuWJ_9EVsd0iG>gtzn z!QV1=W1nR`6;be4-T8*;hiKyO58f2yur^*0yO@cx8QyI2uU)YrgeicH(6s=E?Z9b!nm+{^Gwh&uea0&*WMlgDsN&|yh;IN%8D`Ts6#rjyj|uEI4nR!MBWLWi*mFKc- z^c~?#V&*|0x6a_7BX<|Uj;A$GaD%xZe9-ou3vNz}V!w@W_Ld_YhPwD0)PGhANICS2 zGM>N-ki~3e{ray)`-+mQ0Exep6gc3&tu7W2sUrXu1TX=h0sFpa6<;15Lz_VgAhOFN z0(_X?e!>-&^{x)P8vs=}>Ru(9CMb)Hj`{I8(~#3Hpi50cvPF@>41#0ask9ceArjPG z>J8zAGp>*ujA^=GC|AeZ{`VfC{7J^^KZkF&8X_M5FNW{(lo)O2$gwfNdtI!6^9TEO z6;c921iOwGFzg3DHqwF})r|M~>1-$$aUaaD?J_u+3AmnB7{`&Jdpu>mBN+quI(ZvS(R8ns2%gQ!NuqF2>+J(DvCN#mz6ojnZ^x zXdlFXM`8ZNQ0hXN&r0+;Y9xbXT{E&>#Xjt%K3w@D2tX*|rD!LR9ufhpZq~z%T6MR5 zM@?rw0p{B7NI=#89$g&H3<6F6I49Y7v57;rNxCI#!FA_HjOBQzx*|ldxPq(H!?^4G zQ#&=zz+X{s>*2<8@!WM`(Q0BJ7tng_s&F1#c9px4-2htY3SoA12dfBr?lh93dyDt} za~gvtt^cod+93=G}p`#N&%uKZ^DLJ4e6>XcSPa82}A7>leHS{)nd@ zsMHMbjT3G&d21pR{pTn-tvd1N)Ch<1W*{ZV(HtNKo&%~k2Z(~Ffo{zKDbS+b0wayJpxEyK z5pY+~-|ql&U=Z({=aaLMJcCV?*V6sZI?l27cz==%<7sb&871z;3L@JDKiSX7oe)ORp#AIeB*9<;UGeolQtK|krsedl zO3sVdNG#jfc9c6Gv9kj+9VW=!<#)tPymYQg|9q&nfi&3UPSc4g`3%y&wNho1#@9|H zN@BD_jbA43FUAR-BGY3a}1g&68Vs*Ju;EsZ2*sR zM#M3xb7yxrj7JKs71r|xr(88!?KH@?^r{S~-AL6eTA{9k*p_C*3$ie*dOpr~4bK1_ zypww+po~}4mRC(EC?Ib5p%<4IF!+CT zMei}8VPy2pu`Wl&k2pWOZJ{nyzK)YW55+4*EYsp^!i4!jdMqqqVD0)lk#5~xV`n1+ zQNq#ny4$a2%Fe+r?~%7p+{g+bc{PdMMHhS~|0OLf+@&|q)FCztEt;7wN!SME^N2ib zJK%hHw5rrYFhq;8s#FoLv|z3f`7CpZtPWnl(k(-ew)hS}#DupkVGfyM-lLMmWc;ao zk+fA`uz z$kMY!P`*jR&C--!7ikbum9x7I17r*_DB4cN?cZ$#Z=yJJyxJDQ7_Ov7Cx!C@v8BK7 zM_w|llQjPoMfF~IE2Xe7+d5drmzzl$CBe2o3zhl9kOs3@5Qvs7&HJ+E6ikrC3cq@k z>d>t*yv`Y*jYou#=O2UEQi;t3Ic5jp_8JMk!jx0dXDM{|fxybO`as-UO|~m3@a75Z zm-N%O&(g(BN0Hrx4<%CZhQMtB_7y-$;8byITI>xGxJw+Q13i!y6_xHK`Cu9V0eHqV zPp$b?;c4V5P;T_b&+7XIHVrQ`J|;RU`@fR((ncE%-Vn(H=2=`#wC9ZYOj;UK=y@jt zSjFfq{KP|bkQKySBG75#^Ayrkw)wOW7g)GcZ&6xo0PH;QDoRD&1YaSVD|nEIHUtakDhe72WEcG<9i#KV zq$Bid7Wktb4+5q&Pqas-JSt|CU`vKvv7DMNjFI6B=mjI{qxP>#ip0dGnVU1^&GnzG zojsM?i3wQdorqXkRiUCl>?b(Rj}_Qh6+6w4fO52|AJUnA?n5wxC@-;OSs6#o>pvB3hc!(xj@nSi0gQM0`bC<%kQ++OA`r)V&!hfI$7?-2Bv zetnE~ioGFawj~a*Q`vuq z>npBqt$HgM{CnIY7bZVH(=ioW#vk~2?H00Sr0Qd%4s{8AHOkXBD*n4>hH7Y4S3hgW zKd!X6iyh)yhQi5(fx409zY>G`6oxccESXWy7J75(CC@5?`Y955rM7%CpUBc>Q%R`y z#{vfQWG6P6ycM6;&6srwmrikS58lzP{+56Pk+KVf^c>sqds$KTT1r>jV-PTgtL>D+ zLi`;2vE@MWt@p6-#-YMNr zCvNtg0SE4%^8qiI_FvsVYd`+uBu|D>mq0`lv*WMZIDi4W|#g- zwMv{D_*0N1hg_yZH6~3W9z778g0*)1S zjBnms7d1<^iwvPzdHp^DEMH_Qd}q2n4#4t0GU^=y{Y5gT|E3cT=GQ3V5&zK96l+H2 zL%(}Jw>?o{hXo{aXHTBPOigy@Tfe|RA?AOGwE7A~a7Yt3l)u=*1CN=Kc6~uU!7=wK z@8e?~+%Gp-R{KV{IRi~Xx@Rb+oXg83@kO2C7n6FEV|WEwpxz zzvc?YQbR)lI$%u)iBDUdU{6p{F01MuXze=ZJsXd8CcZ9cy--~%4d_FV<1pdzSCt^u z5C-B#cLHhnOAwS zoaSn9C#MKAl341whh{jp)R~yW3Rx#hx#MO^2}ikqJeJ2n&4gBg+6pp_&@sg4KYYv7 zs~hiq-7tsO2Am%k&|;+pgE6$0^X`!3CpR!aB4{(5&H0Q;dfpGIwk^1t>wNvujS#Z< zRhmS6T#uHv5VKU%K=YrE5qjt*MawGlpnHjnh>hT{J(sBES|PvB==ksn zx)E+|yWF<>k4-yK$nJHsS|e90$%c@sX+HhDPnPr8(paDTe-{)n&xh) zv_Y`}_Rm?E*qAL^>=r1yjOm>w3;2i?Im@5$zXk?VF`s@7qBVH!hW^WwO!_pKTef$yBNT&2)Yk5{s{-p0!4nX#E?dGjx62E(I%3u}sMxnNA90uT ze2ZXjh%vxRx3)}CL139fpVQ!01f-KBf%SikocWzl@s0IwpJ7Jp!|QIE=VFdN@S>X9 z1n@cLOK?*D*u+@$Tgq1Bd}nj^Yq9hvTP10WyipzH;ena96>ng{dda|!iN^3Y4eM-! z<-}7nQC03}01b_@<0EjvN2x)lGtR$_&HY8@XKc` zH+j91I6!NZVX#Uf?^OXgQ^W$X0=o@TB++Tv^Jf!a;o>MoNo}>CmFe^Tos-nKD1PGV*EX_MI zsRx^6ybTqlf)lnyK%!up1-`bu+uz*{I{RW8Y-ubFRXnkmD%&osX=00fkjIJp{54?5 zoZI*}eVHUg4?cJyvE>_7!Jh?{)%Xz1R=fNA-(o36gY?k<#b}Q9$3OS&oni4uWTu?o zpo{GpC6&A%@h;doNc%g3Giqws5jRHh7y?H#J#T<;6l@0%8S0s4!X(RcM`Zm z2kaoBK?<@F1XAatMAF0r9r}C^{xL#POoig|UBcm|k5^Lek{I(7|14@kaWE8GzvQ~l ze6>d;Z7Ccaw>t-G!#SLZbB@`uVVf$`S%$4L^a^X8Iv2XH275`|TrW1-H9SnZN@xcs zK=ZZc>DoK9rkeCjmz!;UW6MOraF_fV?oY5M+_6)@0)rS@kfpF1Lg>)dc+?uxPpw7K z-`Qbv`2qI*$(gY_fyq1{6Fvr^m+7%9B&}VQ08=#hKi%>k+h0cs0s6m&nEzvO7N4iz#*z8d}+Dw>Y%zYp(>UYsuo(lf=KvHACIan=e!QcaSGRo{_(|oD~vzz z{582OhWm$?@f{b8+7)mrx@8qSntb!n36pW+Ik17wx&dUsD2}&kJYh7o;c7*NqB2&SoT9;_ah)3@7BrFI;Ml5SxG|T_}+qyEgcFVWpDpbU?#iMP6Y`hT!08p zKR9KSvs0B6vL6dFSD;b8n@*BedwNK#K^!BBP)!TpugRbEtuf~A?aZ>khFcPv*o~32 z_I6&4ChIwtHsTD`#At4bImy)%tD(0vm4@P+F)BQ4#(@ACEoa~65wuIxM;KyIAB3~Z zA9|P6zpV-wdIuKZiy%5kywQ2^jH&!s+%Ynij?6+8ZNWXXiWE(#t~WD!J9Ttnbx2vS zDI<21h4#yC;%<`1E$!o@UIcET z9eKvz%ys~v~{eQ!E&fO-Q6PnGdkowXBu5uY*5 z{FB+qkK%pN-PCVou$>`$-WqLg#t@@h$mfqweZU(^j?!wioph;ARv|mp2#EyI5gZ2@ z)60Es48j$XKC(X{ojgHvUc8`da+gQUjWZzvCk0NGH$6`Rn_b36w zU26BEEZKOkRhtjp(R&IZ65LpvUB~p~(ySg<$F2}B?RVTQl!<0?{k?(it-!6@hkEpN z^J{0e>nDzlm(3@HF}QBP#ukC_M{{K6@wfjyI0IuULMRdbW2YPU0*rv&{utaB%{K6W z~id9(45t#a{fUQQQayTv{Y zEclo&odZBSe(pw9a7MM>TI7N%n{E8S! zSa#`bnR4wX;$fn~O%pAey6QO&?ppmi!3Zx1Wi#Y^4^Lxx*v2lljVd7{9KQNXVZ)YSn`UPGyw*d5#DWog>| z{Q_LvKGyDk1NnYK;L!Ez*Rmp6QiKj`Z#!=jVR#0t*yFTeFI|qakI0fa3Uf-zHL7h! zN)B>uA-MS5*BPd?XXjM2z&r2xERS97OdPD-5B-|ha@-7j+f9_z7q6ba&a?ZgPvy}d zDIn_lQC-1C###-OJlL&N5@|DIqEBKv+~X=$G(>GOZyDkW5Q#6dzUewB)f+pQ!JmuU zZZOydTUO#tM!gW>;@zi3rPnMosMjo#o3=`a#Sd-3f`5V%(;RF;&B@LEGSR(bjCxYy zjWtx^{kBxPG(t4pqe+^4aOAII>{I&=mn9U~l_>8*jlT+t#Kg=suJu)tKS3c1x2k99 znmn|Mwye+`KWx64uB@zc5efh(Rc=FR`}LsK2g2R9Vn-dc42`>~Z21BfWpESzToDwg ztDds&rA&gkl~VTeNvNT~{8O-%%|iM$%(vOkFOkXm16SE)!+~0C-DqRVis!0=p-n06 z=!g1|1#J<~+fLyEX*@SShP1@A5>4s#EC?<9_>Su+%qZLS?>5@orV~9M-}&7NwWi6< zPB?<%W%{2CC;JJDk{w{^jauSJu)zA7g7l6Zy4! zlx!{*C&X?oCH>ib6ZFEUM(G4b&wgaeVdxmP!!b9`p&itO<^z-Nem-ks2QK*uv{N4; zNBb%EzRaSIx-bK;ohSQlAO+B@mC<(^iCeLEZ^FCP+;6tU+>xruVf!t}5WQ)QEjhU* zHc$;1k;#PQxbnJdHGN*iNc$nB@A{0+a^Q78R6;vuid)JzcmzjrRPMtH`@xNF{lC}3e0r3LDZtz>i0(67FuUnUpj{7F>COw8=HSF}KYl)d`-l>S3=$GW(+ zXXBXUp&-9}d!>&8df&H6_h|}m>LY$s(2?V!>(66Ht+KGWSX@ScFFH6+sG{$@Ha5MS z6{pJfTzc6Cn4YRvBD?e%{wo-DvuO%2t5Sr)33+Dtp3PBt4#3}WAxjimxjrV^Zk0vJ z0By?5Gan!|7YnV0r3@ViHXf(wMKXd9u45l1ae@_!K`F<(98Md>iC;~O_N_+;-kwcZ z!|G?Ak+@V=D1bi#S=96QG-{o6>R~>+V~jU?rcS(Me#;WuPtI(60~WC3^|*B)O@H>1 zxBh|itT4n|H8^|6!#G9FpL;9j@swCKe%To zh}HmqK`UfhIsO_l{xG6QXWH2U;1BTR}$6cYilzgzQ7a=XQaT;Cp!{?jeRmiBTN{@$xW+pQiDKhwdPImd{xaGFGDlG?VU`AA4F z1nmqmuk^WVo{Tby(QyLO#8^Mqca7ZR0kTQmbLa)P#rsU!Un%q8bnAQ1sQtj7cp&w? zxNg>I<4IK28K0x%jp!l0H%2qFw6^GsW(T^hsHK-m6|0}Uo%Rw z1aI{^b9Es_5R8pcmZ~OASxu8XrOP^&>Ue|Xp&9E)Dmt%k*(Af=JG|te1mP*s< zGcgY5cVd{}ld+A3eH0TD>FGae?OPkC8AQ`50F|03qondcZA9;Fkk~2|?m+5x(YlWN zmRDeb-x(TCd{ymdWG~{wnaY;}F!GLy8g7CCHC~+=&rYFF|pb zW!jzeS^A7{;-3`QS603O&8FGK6NKga(ZnQ)bU)?yVE3`cFyTGM{XPHjw6-yvcV+ zM$0sNkaRZ%%&mD(S&sc64`CAL>?heUlh1=>VQYWs;!}~W2xvkGNEy8Oj^;z9Sid*| zAyushD##IsH#N@*uQluW$TQS8(7bFrlZp zt@jJSr6l0FhlB*o#sMF6wJsi*)uMU}YoJLF_(aeMjBAHJOI=3LS}wLwGeNb^8XqYv zDl(>%JrYUiIR@e*B}tnAw-h6&B)kio)z z>-YjlwH#(k_BAsb@ZyQmH&ns3hx4pO+@elERUg&YZOi)&Y~vs8YAj)o)c9DukuqFj zxsqao`A&14h_e_0UUA-OKff)L+;Ala+WT(*L4_qn&JoXG6IFhgh6%|S5s!(Rl-fz2 zO%zmt)_KxAb7J+QKimyCeWY%7tey@!|3D$2gqAoxPFOZ5eNX1tsF#c+mXNkId8`x` zC1{e3i{{$M$GB^K&P!b=9FN8Q%xYJR_dVnxd3~>`3SZmUeVy~XgZbYo+PY-jpZv== zR7L!+gPRRx7!OSd?ADV1;xM81+-fVh!pe%5MjcYmiyHLNK@=-)&!321nJOZe#EyN{ zO55lsJZ}kf8p!#NiY18qB&6NuK3iJyeG@>~M%+B=5_t|f4c?}$)@t1kY?x>(1s9Y7!& z-i+}(JEI!wN`^h`0khOM4d*-e)|It*5gSW#P59AZ`0~By$pGIw@xT>cE@J_T`susF zDy}EENMtw@a2>9(JC%|Ov4M}s~T9di`^h9j0QY(+3c!ihZ)OdeMSdI4u!b+&qldE0Q>Rj~-V|0z^%2b~=}LM7 zY)*Y?bH*)=l%!5jS#%-QiF*jug6%=hzlZ17j5pv*h_+FZ8}=&xwzJ{G$h1*|DE zYv(+Vn0ES2wmCQEdR9+zg9vp$aqUW8R*3W$)Z1(zibZIPkAV|9fXlc&$#!h<{i=+Q z7G|=>uwFO{rCCPW#MlRowLv_y50b%_FeuCK&v)a5`imL?;PS)ShEg4R*5Q3q1UicG z_L*oA5OB#*ssq<)*AJu%>!X=VC>2?Z!I)AKw78#O68tt$ za{`wal!Dk5v=BoC#TNr`s0QGvr9TM>78ML9z`MaC<>eAnbc7XQzRhXam+!46H4 zx-yth;vO5cPOK31#DsF5BMzo^EaZwM>wY)RYCWn4C^6r67K-xrK}xnwRI;Tx?k^VbHgSR@U2i)9>?YcWc4#bTDyfyDL5ulG_1bBB>f{n)LxL#Yb! zCBnjlA5RV-V>ES1cX`C3^FIE}=?icpV3Y?Rp0O1}U;z}08Qcc^%(A;b|BQD!ov^9g zYTn~x@JGZPkGjLEVc>B+M)bwB8&jzB^}iv04enbT>Jfg9>ZFGs-nY;lZek1rf%eOq zt1tYEd7dQzp{Fd9@toT`@=LnBniI=A6n6XJ{~E($Ux`~E)Zm;3#kv#X zL$U%_Gngd4O}7nH9KKf|L+@If-hQ?Q8j9>pQLg6f=D#}ppnm$l7E`JCS19klh6yh! z$T|J%jdA*ahKaWPe--3CXW9x6bq$cx%&S>okEzrmL6Q(vb6}FF?pQY8-6)djWi2px zUoMG~k`%_Gk_TFZmv64J9z%+ruU)`KuI$uKniH--DhrVPsY-|*k+6BpN>j`rtAs{~ zV3!0j>(TT<4TNVzKDGl*RgpfmeRzu9EEv-g)RZ(!#syQ<;vWo1sg_|spk&^Dkw3`d zO1jA-{1Rn#nw*}ZvP>UHbC4rzMu}2_n&EW~Xff>w-`slSFx~)C&B2g+O4tS3{XM~- zgMng%>6X%|m)`G{48Kap#F7*j&BZ+BYgnC-pe6ui%m4_1w5()TlE}tQRaX<|4i2}Z zwcZu7aEVh$9%c#Z%g`p1&7b5LC_0STsDWnq7HXl$+oJzgqFgqTz_WF?bNIl&g<`9C ztxIE@F|F-!8@XTc!*+y3mLS`Aj?#iNTG5I>JO8A(ovHdN~ta|$p{zw9X*j3zqwWwDJo}Ec_j>L*KH*)b*Ijzj?VI(+G z38mCrHT0#(@L~^{6N$a>bDkA8pVoN71bW$wu6o7-Zks!>Vt_H+Si;>#cs$mJyI8Z? z+pqn}UX{Q*S}!JJDuf2#YLD{WXF^TU$Vk{XO-V6e&0$iumYdZa+#ZeAyX-Gvy)(rb z%4ylj6?HN2pTX*9{7HqY>nhof1SJIQ6uJdCxKZ?6aF$CcMl9@BNGtPR7-@rPBKoa_ z!uGAy#vbpcxEW;#iVW{wODIls)~kmB{GLPBO{#8Q8!s8;Ui59lH25&(eykUgWz!htG4b+B95RepT(rCMO5{KRxeS8QJ>=}CR3_~It9r{`J8m!8Iv+I z`IHyDmam7=`sd05`V)JA?~YGa)SOe58HM=W>^ou2J_C?!1&C zBTtPIQB9H2k>_G^foJ6aPXZY-lprW4N@OkiZ^{USJU zU9zqT!&f%j0@9Aa<8Z~=c0J$W;qS4I(g!za#QvKyYubs>)ai-+V0soj3hs__mZh5a zhUC!nVs>MCC>O0AOAZO^oNm3?27`?U^U&eAk;ynb@BV08!Iru6^1{$9Q_NZoe78l( z``zl&H!z+JGZeNnqE|@z7QNS__dZOsH7Z*$yet`{>4AmdN2~8+zSY38`}My+h#dHx zU5@nUc|bo*Tg!=8{~3R5;%r2p`|x9~Vh9|XF|1pahtwbWa_dnm%{LhScyJR2i`n0J zX=rpi4k1A9YYQ+$MsKf(dAkImECA?$-^6cUOtMDw8bGm$Y#W<`oE8+34_r>(h!oujmlv zU6||=5)a)g8dw=yK|GXduL8 z@!uR{mV^p4bV(`2cx9IBk{Z_N!x5*)pt0qQSBi^QvizKkvjR>k{hfkVgg3$_ zd~DnHYb_jotQ%y*a;=_KmUF)0%zUb@&G^pX-IdMvU3}joZ_?OHqM+hWgmlWE3vk2=Gy5%?(r{zRX1$eJ z6K32pOS=<{W4npy3ihi6ZO;i3-JVS&-z2)`2E)(f2#}Z<{3|&0tM5ZF^j3z;ISIlj ze-7=SHxjhz7aA1;USP0?n7B<#o51jaB6s^@1X}&iNt-VYNt!mII*W|rT;T@!yNM5C zql4pY2U*8`l5tJY+_>imOr#t-0zH2vs5k^EpP@Bw?PE7;0l|Sd-1?-4o*}waB`)$< zChU8J9bNR^UD$;Z!#r0rfGY|R=ng=Jyk)>;i(2J1>D4Z{vx`Py-NQD#7ORorV91)PCS(8ERI45D7`yP9 z^dr2CVdd(lWvujZnW~Y;Xm3G(lfp#vl)Ub~6CuvZf7TH&;$DN+k*}93zZllPxIiME zx9ReQmJYV(Aa*|#7y@1a8;~HAlY}Jp;(iu3vcELP@hu+Ho_3VDU+=nwNh|T4JO7I~ z@G-@eiJdK<)Gc==7^hLZj}RBY@7>UQ$3rFO^svm`WzdLX>fg}JKFux*dlpa+h$vxw z6HZ|46eXJfH)+?GRp)IuG~2(ffR?%H`gRQ(k^ZaIw$k;U9us^FlqRCDQ|0`vA*h^1 z+5(Gg&%o=kX$0T*7(WSK%cfuiYo-w~I-H`^aoFpvJQR5R@=+=braEyI*wX|=&Q`;(nFo48AJ5FMtTw4=^a_*Zzu9A zdAFpPrJxQZl?=u5^WDNT~yuWEkU+Ax9bh!0TYqtI4|GhDhxT0 z7l&tbs%h-`@83rP417C#bw_v}T%I1VU)R2S4M-~FVWFKWOZ2Z=RL(O5x^MQoLV$?h zZplk-3{Facw|i6P-t%@jCrNabnfPinR|gaM;aSUc0DAKSAes8HJ!Pi=o27AMXP=#? zkjbF~x-ml$SUJ(_9O03Mu4y(4yrxQu-DZ3iQJ|0(7|uW+IETqlw*+Ml_k~JquBU<> zAMR^S$XGG4Ojcx)7;3JCvX6+75qyEb6dmJH&z73ywkGSSkf??G8S&$~?VqANR5)r= zLh|R93}3HZpfhz5@}2gYqv2RW?xwkuv)Zb8LFhGyHDzBN zS*raAF&32aN4u>|9;VCF{ES@Fm(aPZTPOLTsw&r;<9`gw%B~$v>Q1?0Rk0|Um0Ldo zgQTCP|6hC-S3u`QImfT>Dd9ljnDTte5aV)U)D9zie2 zi6c3t#mRBk>WLIe+S5q-q;mZE_l-;AS>$joQD_p1jKiel{u|z6DfaqH?b-_$W`3BjTam8v~asqys!CV5D;GZ z{b~KMG(q*~!SfeK>duyNaD#<=6(fd9y+MqI;QPHLUsy2FA3s{iO3D<`5B6q^d3te5 zRiv$fQ0i@bd`yLresLNgw9L)=7~Jv6wEV}KuiSaqGe91{bqxy&5fV<| z&@fc}3r_!4K!*z@3EXm8<3kTjZKk)XK2wH zQ=67ABI~{h>srY=soR>jX^UDPLF%y$EiPum1s9%xB929nh&#=3(Z|)bHERDHE5Dxf!&ff_T1csUpC*fN}Gw) zm7$ir)?`nrtdTaEY3^e>#2`_td%sw5@BtX=h+)oc0)XS#Z&lDs>8cJ1abkIi7F4Kx zn{>rRw%%^nP^0bZy=h0XQE~&B-b>MuYX_}8n=V5fZLbP5el%_&t)-#MDBGAl_GtDd zc4(EJbev)1TP@{Mp{gD{a?s&#YPHGgkK%xi;7S)uX;mNTDMD?EV25GXW> zhGYj=ty(*VCK@s69AdocxZzbM#2JWNmp85tNP*$>$aB~xvw9vQPAn~pL5{Y6aRnIJ zVT?sEMTdXuGhaO9Af*^bOQ~>E)I%S!b{@(tXD{r<#iy+m{8Ejr!@FNj%k*sWcckF_ zdKyYZ+;+|VTG_YqTou*D$s^25vB@yi8S;IY71-xOE4VQ6KgU|$_E!@Q@lN{b4=GzO z9|mMfe}P?XY-PCPuJR}J>OHWwHi#d8Q3}ZZcxX zU~ipWvO0en-sjkIp9*jAYZM+md^kQM!z0RT(W^p z(Lv(3y!Gi+ko)oiNf~cM2ggNvo?wuBbJ^aJiQ=i1Yw`$6@MlpBQVL<>oU*z(!(aVk zhM_t)uus1Ts6CjJ)Q}rj*v*Kvc=USpm@ctL&A9QI->qT9P?5Osibp?6Fuy9*E3yBl z4J6r_3mPPl0gVQ%#$9t<PxF#&YXew2G{2K)zv1)$z5(S%;0V4AlrBST@c<@R1`QGRl<%NJDe8X#c~o=V+zyx z!~R4<95V|SzNf#H#YtCEea!Kg^o}SR@2^#M6|3tkFnN(uIm{JLU?mUUvMO zYcoPLDdt`mwVAZ>w-xA!MieJ!i%V;kxI1Bh#exIF zi2O${8bV#XIzP^i54Oz{-?-~0d-hwVqVWWpq z&K@{a6mKq&RIr%{g~xf^j7ClV9t*s9b|3RmlAUqi7y^`@ z!bES&p86b><*~?0g~Ir{LP)`Q3aI3*wqA*@uk{vQ zeQZmD1rJHrj4yP`nQBHf_={7#AEk_%zXNz7u6o6U^a_35>}P!4!O0~HA_uRkJ0R0~ zY*nx<)zid8C^89?7z<9~Y;2Yfb64&jkTbLP@)-Qhr{?%NXa*4=xWVh0aLCx5+v|_U zAe(|I)-5{4Pf!v?O(r%lg$u>SrFh<{ORfnv$IYqge)SdbQv#h&uj5{@!TKA4*#nVw z5{EL+7;^5SABau1(Z{B6UOMoEz>-p$M`MgSg3h}gg5MLWX%jVknkPq-rqQ-jcUEt$TYR!ZS#cY;%Cz81rm*%J5fFN*cLe zta3fBTA`wZ65qZ<{qFiGhMN{@iULyU65IY;ShuRY*b%Pb*eYBvYw9|15MzlH2~dTu zGOjwUAmghl8{Cda+9Pb7ERVIT5?;cD8I$JdoN2mWF&CK!7c|`Z>s>$WE{(#c9~LKT zFN0@ZF46d0AeDLI-T@jW40yHN?p~aX;;hx?wE_6@B9qTOSMMxQ;<)d-8Ura_jRrW0 z9?atv_hon^d!i?e0^?IOH79&%XT~CXa1YH{Q0n9S&7XN-KZ_-O@$8%Ml+J!#+#s5v z=#E6;dm`=d3H=&^ZhXV)5@glR>t>(KPf{lR2WbZ@Fl)JCbrO?A|EH`K+@#-9qCd@n zyTow;E5>WJ$ zSRH47Ap_O`@#+_pp?vl%jTu_I4Z;bi|G)$x1vRy;(03Kkw`zmu8(+S9aS~ ztwbH{tJpDRCd@&SWbisHH#{J)Ka$kVd%Cjm&9& zcuqGA9(i-2y^t?>j|2ExgP-~G6OFR8=aQ$^oX3dF7^D95`#0*YT*KAn31|H&&DqMb z^T=8kM6;}jJXOVg7MJe%u@d5Kjm!0MhznJ-dIQVAS#?j2-sPavs+s<(6X+s)jen()@yO&WEXN-VHrB0IF*eON@M9c9HyzdZiXkN&gLJA2LD1_waYB3#J*Um$d1xw>; zzr-^HW}_h$s%r3$Sva$J5_xZRGA)ZX)<%mUAz!b1!Dc@M4=xrTf?yMsn6>8J-AV67 zzWEhv>k;v12MjQTJkohqBQnpp5NX?qJT|;LO5TGJKK>(j&274%2Ea4Alz_cdu1OPw{1IDTCM~p;WL>h@o+>8aOAy^9|YN z4UG^X)2hugazG$SC~_cWiJlucNjvRMKoXVfAMVH%-J1)gI{WJF`-25#qDWlF8^XyJ zKrs3cMQQzF7HNOy>sseyvVcxKVK5dcuXX}^u>8;vvev${W>VnaG##0F-+}*!u6N+h zMBBEtW7`!}Dz#2nF-XCX3q#jE=rJp&WVmLMu;T%f}O0kbxvvJipipDc2 z+yD{xA;Q54y4tcxlASXs{1pR!Kpi2p8JAu&A*_Z_khsoS1dY_|(M%>#W-wYuzcd81 z@TSqsP(c9ML2|*v9WCPekpmbZ4oQnK>>x$56z5lo*P{YrnDQH8NVc;QI4lnN1Jnn2 zEDo6kIt2`ufV2ecLLyQ!)cJY{;rfbrs>t?%9!)F_aac4qD(~(2R?e%(hKVF|6&Olg zCjD$34hsTH5rIGM-HKSUPFkH@(;=aGAk*68-Xd$X3RR(BYRLQGoK47E zlrlm&fQZ@I2&rGeZFy_qy&0ew4UqxqR==WyGgF?HOqv5&Pg68TCmeE&2vG2pWnn!@ z_K6|W(zFPkuYOzR&`)GFYvYvqC^?*(lqa+OsCI76E0bj=L}P>59=s!fw3@lQC?_kQ z2<5}ZlDsAfDPX*4&Bu^X{dA6=qVZ4z>1QY!;WWK*H{QlvTeui9??!91(tyw+DJ3Re%N{1KjqOP+H zKKrXV@H9X^otw$ch$FU*2I8czU{iB0(yoQ#a4cbhjSmq?k6q?aw9D^B47IW4DwOwV zD%J>)9W+D6i}zuPH8$t7? z#9NQ$1~a{dM9QxYD$GxU{N84t9M;F0aHk*;a`}PIcAhZ8nnHu|r?nxGWR4 zw?~|NUGF zIA}uiH@^+Jubf-(U%X$rzQF-b%<;~BZc|f^1Q6WaxatXVcA_x*=kRuHLLEHYd<+w* z=ubRa1K}TZU_o;qw=4}$s^m?`q%-Ac)?cGOENnl2m}s2-m>PWf;61(9nb7vTcKO8L z&P21;AJKkp!zXMp(j6_|wOdd<~i)38=>q4ZFJ3)NH>GttHN?hM*Q^Y$+g5ZNJ_g;#!u z-Gt~LzKPOgH+HHGpIX?TXrteKN)WTHEEUbr6xPDWxjoI!I?I2MWjB-HK&EOftAugv!XEbs(>F!T9#_`C48^v}*BK!olq9{ZLk+%0NUM-o+R^j#7zLL-2KNRfIDxTtF` ziB2fNIyQZzf9;#O2&!J-Q?*kwAzV^hpmNT3Y}0mLeV1PXXO7aT#P^Q7*|(nxKtG|8b$4YGw^lV~Iq*vTAnT)t9Z={xqDzZ}Q`Icxn?^ z+;FV?v+@f5@Aneg|FIZwrRkn*`x+Ulq5+WyAQ^#OIZ#NzZ$XeKfRkPF07;c4N(2aZ z)Nh?QU>)QdXy}Q*FX&BvGk^M6JpB+&KkvyfaI`?tvGH-Nq zX`$CrQRh>_OK;yUj~qYmV5o~p<&_4qkP|U*PLS^MXy$E|Q^`<9|6B}`SF*<%h{^py z%E0_hLTS*N$Ou`77{IKYjZ)Yc4^{$TE2W4mnbRVPRvu?2j`Ajms|?}i?T^5p8Rus3 z&`F=eJY%r$%2%M%wKWUeNpIP=m1$k;@h4>zZ6$K!4}!)?sn9PtP4R#BrXKenp!l{!7`M!2x8!8h2RgH5K~N3{o%c$HGtfv@%k|!#!TwBofK&( zk9?EmUL%xFsg&4lAfiigLv+c)l<(w}5;|3M7ZqcYjZK!La!>Yr`yy%sf&9f=yQw0N z70E!EEvNEBlYM3CwXBz=307q~w@NiZFs2OcD$WBc2)A`SYN?nN2zZ5{Px&(u?K{4) zN|I;36#J{^86e4;iu(xt3UZW1b&*4AeI4qV*BTQ@Rfuirf_lB<$oNK{+Z9}<$i zhA_qpekt>d1!_wYFKFY%Wz=q)|FPtlno&U?^Z^)cd_*}AV zYe#30J15tK!~Zg}<85=H0JbF##iX8RGX3=K;rUFM{GvjRr<^Vo|YIfilg z+&Xp0BQRzg7S=Zn<6RlN;U-L9+>&F@5usL014!k-!5EBq2_;y=Ofj{0qp~eCTB}%6 zEsbA)Gf(^Vs+FLUa4if(O|yzoug^tlrAZvgQwx+59$W^_7kVCxXw#iMFA=Fd=4!h%swex)w{S#5z2j>)n+TU)j-u5M;~ z001i0QD2PMm4QvxNG>V_UX?KtEiKA({BWW%sNfDF2dm7G4n;p}%*Bwgur8&MWS;|8 zdCnFr+eA#N8Ccg?7~B}{fHGbcHK%?iVYT-fBt&O#2_lc&3KK;o1E6ZFVJ_was#Rt- zC9$wDF@q}l3S0g4Idcveop*6{9J)O001Hh_8xx_0q#Ca*;!*Z)yg9Mt;C4B7iY}M( zx$~yhAL0ud@MLeAn=I6AS-eiz96XF&hS-@k+Os|#3l<0Ae+HbQ&VT)_|FA}>=n3Oj z+GTZ9R>|~(2W0;QcL(tJ_!hYKUXWk!I^&0m$N-{bClb3FZ1y=)FRS2`wwe=?069<2 zVLf~+P!CX{11&G4*QuVXlHTVfO4ME=z!T;IjX3|pTF`sSU;FNwX=KMy@tq9^&_TuA z;%76XR~_CJI`V4}lPfJtH{@zcOQ7H?Qw~|+94ick`g2WVsVe;ot!=I=n4u1uHBvQR z-@i9h){=cR=pywsWdh+WtPW>~03a%GQc)KRvDb@R4AgnThy?Nrb<({*OSgKrjoLpD zd|n6luiiUfRpot+S2GmpDb^2eO(cOP-(P;OqnzyW9w+WFGk%w4!kg;=MwN2h2XU+k z!hR_6e{UhWfJ?Lc!G!=@FL!N1g3}oH7;?#MCq!09`c3V_65^L3x#R7{I~%`i)1Pn1 z7>&?!uRR~`WA4hG6P*On4ow#r9j28!i3-a~&9xRO4bU8#JQo1f<2cEV;&<@o*>K1O zaM*I}J&1}g^audfL__a_F3hGFj#$f z2KnZpX-yLE_i5@)LWDu9_mXT14N3bm1?T#;RI+eu^-cc+V#7T(K-- zLai0$AAA|;728AVZ_vq2;57Y#=p~qxXdNuew&9pcfU{Gjp;RE}Hg}LR_T^Md&+#6x z3DQVtrYwwJ(}4M8tk@+zBOOn_=NO%>eP(pKr!n3Q53p7Uh!vWpIJT?r^gbDy{QMAn z%2OnJ3kqLdlTm|VrSl!y#j%`b6Gu$2b5Q78nUIRSn0)LC3qiA}=?v-5X`|;wsaUd! zXg|Z*fSeosWSL4O9|pe{>wT-mhtIoWQEwzgBXsrmMNyybK=j2bNLOL|Ue!m3;&bOJ zZl^PwXs^BrV3OsH^cWYX1yK^5ZTxXoTr01Er?;S;z(|y;M7HucW}D8fh=XXyYR{9R zN}W>845uJyFq4FW zE1!Mn!5cR0V)x==0`*RlAgiZG6U`z6u(5Y(BiZ#6kDM|&0^OnElsF;P>KU8J3T;ZN zc7K>Hdk*%zm;ES%$i4#XJv;ao+c-8T;k`rsrvhfJSah80i%=ecOjzKIz^!OVC}2P` zBs9Rx&dT-Q#O*KVdrp);Uz$Jq1bk9wk4JOX<)$)Z(5NO$EJ!S&0LIzB<{HF}qzi+R z_nRJ)(u*Zo?5n{<(fIt69cf;L2NV>bncXz%=`pHT&GY*LFoX!fKs*z;Kfk7y)@(;# zITN0Baotl3Hm=~?k8n{p^z`UA4H%3711u2qf>KsL_TkV;7O>PqTB++1n6q=Iapu~* zP*QP)@CMM)p@fJ-*{>u~h~LLCEFK}$dblXxnn?>OeM7l-dovT@y{KB2Cr<-suVlmP zaeM!`Ee%|E)WSHYrG6WHQj|2SSTF&JFEE0CMDDhQ*A>*HlzKhfF2j>G%f|x;c#C9F z>f_KuYUSr1p@me_?ozE4NrG-MABt~+dTFDOz&WQ(~uk_)`#&C;&P)Po*S@+J|l2CaYp zC3y@jTRE0V9Oc1EshcO9;8^QVfu3r%D#iyc;#$?d81LmWDw@a?N|kU4FW!9QmG({l z?~f8*F$_Z{OFI*outPl%q6wX5da{TyWxOi6I6EtAHI7S8^{d^(H+&Yo|g%U#L6Tft?eS8If;W~%mZ zWn1~)w(1n~9MRQ#Hmqhs6I&~!`US1_;lO#Qy?gssopB8m0=LCUceVT@HCX4Shk3rt zoF>|>gmD9ULO8K~v3KxIz;^maeZ$6n{tZ3HMe9ouZ3B(%6x^G5xe4*5OxWPTU1f>Y zu@p}@<`^rIM^|BTvnEG#@Hsb^Cqvl;?7_hUBb1n7h9$J=pPmlJ)n>X>w=`Q`Y&M~6 zYZ??~7ZI`dv^f=O0=9_@gbs-;*Lia}Zh4P>aLJiv7pXaFG>m}?fC*Ru%5MHVo&&b) zI4>dl){@(%GDenH`SFISCH!)Jcg_XsBanWjC$331A#;v^Q%7MkUkR4Lf^u;l8~ZAs zFo5HtkC5~Hb8aTo65=e=>XvH*^KI z8~!i#`knxW+zmraz@0ut8@ag^x8c*lfE{)lSYcRN?n~*^{o^HcE5Cq1jHvs zhRWyf)b`)=*%37ST7Ms6QNMJed)860Wr;V4Ljx4#i#TqK#%2=oS$*|Rmi|)*5Ot$- ztv#XyQYny4cBkDZLm<=KEagCgkL&A=))p?3vdYGBrYK880MsG&!`08{SUw=>)D{tI ze(tKU!s_gGag)gsC~d}KTqISAq&&`6LU)lvhzva85sV@3@)QdQ_1-)&sPEX8(suBsAZZcf zy_l_U2K4YNf0h?i(a}t*yG+qu)5{K)4!4Uo}CijKnpPM3W*T<2!tuI`QVTU{O zJ+7=3DI;U!+YHHvSG71wSao>xGV>~skc4@QdwP++-O8wPU9P@ zDMEgN{%6JIxfn)c{HnOvD8SliNVb2fEfJvoe8RHMUhX@XtCW%lBvhXu#<6XEl4MNb zEJXIlBZ1UNzUi{ot7$^VtLNi7gSWdoR`<6K8R|cn|0ob&@V4bCuH1jSl^xW74dCqV zQA+ZE!DeM*mo}ZvQqrMp_f5Q>t`4wOXvKDON)oY}${Lr4`i8L?Rede|XBG`(4gv}} z;CrQsDCxAy`+i75YT&v<^wcv%nvQ@AEjWUreU`yc!ENS^ep@;;6;^U8&as#fFVd>& zl>#@?=+wub(vHkU(MmD-sZbQZB6$uL0OrQrYyk4o+RqhIgy9N6l|MHpS6+adhEt=~ zDofiUjm+$jLH(YTY37(i#1-K2pbA(AU)DyWK#L+x$qxkoHL-QOzCb|R$&_V}XyP5+ zeJz!=rD1%ET0|To&nw4jA7UyQM%y<82jG$@inmGK+r}85oZ6Ty|1+}myQQAq2AL); z3ED1%AcKj>PpvjSBaO6tew^F=f^{m?g?8hF7@1D`ynFF%MAQ~3bLXr{wGA*36rsmH zs5n|`8vH#8ZHY3Wt}k4?bID6v@6 znnqgRwmj%2w8Jd{A>DFvvJ^8pQWoy7Up~GkLrd{|1y#m*IFnsUtYNi;_(_WA>x8ut1hjpk8X#2Fd|j~%n9D$;PhbxmtPMHXN&g&?x)k3Th8 z5snwaXKzqvQbp^2ojZB+0h^X=;JK?T%hprON?I(r$kQXng1l=h?$-U^PR#iqFt)AE z>g>flXtDw*QC6c{3_txtRh4vps&@-{iLx2fDb4Ybfdm;mV;dv|{N&UVxDGMwZ)>TT zUzCE%&duAj9n>@58|DCb!vn91=@qp_I%X8 zowp0<&z#v%bP3wlm~GBBmtwztrTrwov=TYP(GewqLx?nU5r_c7o1#o2&0)k%hz)nS z2>7g4o?@&b{JY?X2I~8fG;oj!=SigR^CU!SKiZJI$7XI~lW3!n>gK!3pvKFVzZX7J z)eTzSz@7|B;NZK}T69MH&y8heInK->`h@3s@!_y+X=sG_EqFCQ&$zl4e$Rtq+noF5 zD*$@i*;?{sX)zCwVt+6on3XgC&ThlLveiL9bLv*i_Vb{3T0$g*tW+yae%@E-IVgCGn9c{ z@U~=Y$Y8h!c|61fy@%nl584l>m2RK@4xEoaz=W;G+}qZ7b^;sl=ZH3-=i|V&4{DkL&9fuvA`=t*?PO zlyVg#ld_$m)UPq-u^+pz0Js>Y%CFs(GSmhoUM3?H(l2l2I0&Ly23aR}1x3uvpk9EC za8xfxDGU8LY-l_%C}X07Jvq#RJ97c$!oWihe+n<|2k=XY^%FT%b`ljIkFp~G|B+p8K(sQ;DnnYc3$ootny zTCi5a1MT%6-Gh9b1ylrbQ7aSl#7Q)lD0at9d_w^qZL zH8KxbY>B^YY5~t?)?$*9mKd^#8h;WgZZn@wl#M+vhXuzkQ6c1FnJ+;;VQ)CaXt&tgIw z19r(dxF_l35;k&ZerJA9AfcmNmzMUWv-)#<#+B|6%IP^APX$<4(%P@#p~Spe0Gscn zRohizR&SyiZg_iF0owmkD%%sKRp%F_x(h&=8J1YUn-+XgYQ`g7Dq@=Nzm)nL;fqq` z-a_Y^Rk^K;*SMY{xc5uf)1C1hBBA5+>klFM)Dv=P%?Yq^ig2)t^nJQ=cMqOxU~`sS zq_teLRTv(>hczVt=-}RtJ9j>2#cVq2&Z96gFS?igoxjIWA90G*=C^VNYrI2rxDb9^ z)eu^rnHv*AsktKYkkRa75RTy=NmfH~x)B+NHeKg$vu`mAeAluu`qN-Mn>6pZr9A-! zwJFGFf_e8LFDo}b>)L%a@q3lt6;cwMMd)5A=af+3!P(Cn;LSboFfXad8cbX4uR-Sl zEaQU%`qtH+?-S$3Fb(fx5U9}YL&ru>$yP9)81|29$Le+0J6V5GYJcq)rMCS`sU}~P zS`C_uXg<%N^VZjwHMMgfTUfiuJVZ&{haf+7X7ufr&ZkN;yT{K`RLCPF`(ePLlzn&l z3sM2>v5^w;37L%DpkkQ%2kt*N&_W9%x977fIoTUe@I~b+X-j`(rJW0Nde*J!M9jS8 znXRF($G*sOnA4vHd{L^q>%Wxhtr|mn`z*sC`bDWekhZ}8p;RCEA+LWRRs0`Fz5asK zqW(V;#C)HwpDFr+E8q$E9e_HGcV^bZC!YQDV zGnF({eNyB~m|HWzu16)+%p3{q5jn=X&gXV1Huwem{=Pj3%*OG-rdwq|u1Q zutjWt85}bq`v+5B*32TubT~w=@YLZoa`z?TWL}wXqGqiYLTa0%A6V8`$WVVOW&PYk zTqh4oK#-5F4NZLa#WMR=IE!m+AuRo}NDgKN>ED>g!HHY^ER0c$W$^dy5NHo9Z zLb`&y5i0LS`Q`R6&R|smJ}m{q>ubtZy|B_FytLTG%aJv#pkkGWp5k~cV)9uuxA&?a zeBYKjJ7as8afQ1pmXSEMXam;y`AoJMJi^>J*vJ)PwO^3hOtM@BXtZA&Fs%ivKco#; zNGgYck$I5B!qUxUX+Jd;(i1<;BQXJ;!?t~TxJDbh@o8xT2Xw`KG$3O2X~AhRLF>i( zDR=xE?#VGp(jO1MpgsEq;1+^a_`H^Y=XsFWuyK3Q?hIdQlNaEnJ=njqB!In{rz@SS zm5I$)h+?It&X;B$<14I+6EbX=9<5boley4lrAQ>;K8XBC2IWVCt8IOXWL#mQXXNKA zl9+Tp?XpukE~RnO;Z4@7(GY_H(iT}q)(yfwVmV%HbAU0mT99Mk*JIb%&EwLOM7YFA zCu-b+5nn?)M@B+3u1ozC50K)NV;W0C+4myGmKm^c0S~W60ywM>IVPGZ>RT(8O3@V8 z?sH3o046tb{J8}nqhVS=$ch4!X=Hz@%KR{e2!3MunmJiM4+fV`!>mwd|FUG1ES!dd z>tjJ2D%{=-`WvoH-=0s=PtN8j6N{p)kq7KY~FBmq0Ak=c=Zy z(e4*^pc9zm%S(G)qts|Hg5UEFV#piD!kh>Tw>JW;Ct-A{+TAQSM3NBgD`6}YKmmz` z97Bzbiz6zxBKf;&tV2PPapYs03a{{vdJ9`V*A6MBivBmf%vE#z9`cyboosl-1I`XS z+cOgsWRgLz@{8;_(MJdzVE`7+z04NmS^Wx(H%ot8Mk)fDN8*NBaXn4t?p)(K?7cz` z;md5BG@5`!g_em@6>m&x8K@rf#b@gV$a zM1=E@L=e#Q-Nca`QzFsR%3}T$+&P6U+ib?4s}U(U>33AM;y0@dy!vSgldg~<(Ko#z z<%z+l@!4Ip{=fl8Ll{wB4zC0At9l4kmi)+f&7;lKY-RPaONo zJgV=o-w&qH5oT9rwbvl4-(=Ul-t)DrZg7&0>FO)*rX9tPi8|eczhIz2`H1s*`~Vt zEHe(&QK3-No0@xh>!uv%W;Z+(x|y$~{rUb3g61gSQflA3<)ZPjFXt3lmUuMV7Lrhf40ed7=B9(*H`39MGJ5IeB_Hu8d72Vy1MU3C_P#TwoWi*gOlE_69I^TgC+kpy#I(VFLLK^{wdTD4 zg9*E`-jc(|YP3pEaH#bZw|rzV;aM`iDeQz`Rvi5$l=wh=UVFZ+R_s)u)q02mC4yiFbcQd<&pW9NK5HqZ+t1^(cHX#ZVp0z zTW6zH8n0!kIJmuI+>Y$j_X=kHB8HX*8i<|Ki7)Edq7Dbu3>l0y!Gg7RXotEzbbfGP z?*qt=twISVqXzFDP^`Dh4SH= zoXtF0-!rH#rF@#NGJIXMF!)@$1d%HatPaNxSZ!{BTEu-XtTDF;uAS~31bGpr`DvRq zk0@p=QVAP!s5=6NzgRg+fOH;i3nG-Nj2Ef8AIRtN^o(CQFgT)H%W{=EmbMRII&c$5 z72emiS<(tq9~pFl`><9ZvM zKg73)LL^{2PmKj2#|R2ljusf(y(+)f1&@-zGpU4XK#%$mz7c1_Sn#pf^2bvSNJl+~I zmZOq}8p-<79If!O_h0_MjbY^D++V|pBGmseZT+9Ww3vb~#n0hyNMt}Q!r9EPb~mj+ z$fHD~a|DDhqlZ~4bD9KPDJ~}6_e-9Sc-k@f%tp;OLz$snKM%qiR^ukJPr8 zAV)hKDT?6I+5Z6-z`x`|-RFYHqWGjB#vZ1GuaHTLiwK2&xiA2i#NgN^Tu-d|62v2n z_QN!)+wCguDulJRk0H$%()RGug;w#`%5VSttRpggLsHVkrp>}>RcXt=^hM(dk+@jm zYAqnyT+@6lf5np3g7V3UTe5Ymy79CZP;H?NACU}N0|3TV4Agd}PDIhlQR)+?pt9s4 zKMeJ^IjvaNf*#?SQ*B6v_$O1a;iJJdB4~#q3J!DekWiBWHkF&I1{ka2MKQ)9%h0Shzzx0 z4wF3*m@#R>(yFQmvYR?)Wm90-kmnV1jKkSkAT>c)H$ zHhDxqWB6+xi==wL=@uuKSCNZe-P-`}vDmZ=_7#H;a5IONsya*25p#R=s*<-U<#K$XK$UUA z0f6Iv!w@+6>sv=s6v=W|7SyX0*r7rC-PI#ta{l&`CYJvkUjN0XCXSU#?fzscght! ze_U`EK_`i^-R8yR9%b?(5RS?lL`|%{o&Zkmm=)b^{yu*N+MU`WonBO zis1~+B4t6bQM{;$TMo@3q3OSacO(Xl9(^TPAuu5bS5+{I^v%{W(<2^*tyO#0t;q4p zwkP@_)XMEq)EJ6ENn819yUL&|W~Y{pLun?)PYwO}pjMHtlkox4S-2Fp$OM%b!vjp! z?SDtdbG%ZKI)LP#r)F2LC5RX1GEMEUifPGLD9YZ2QJqfz#?-1IW73t*0 zJBA4@wqN;^%P{SN2^c9I6uv~ua=28rCX_F`ZIIhyyL{NV913qbdeWafw;xQ~uS9dz zFC0G{z}p*Vlwa6jwX(MHovONjIsr%uXs+D*=DW_4kbYHt+{k@fI&*<3kR#N74``YUndh# z%DR*i-fodCQ|41=&VQ#%)@{1*4nLh#<~zA^46*kZk)K{VbXYn951o{>pa!fBEss1p zmDa!aBsXC~rzDPMR< z)%7>R`GP-vr?b<%&zma>S@&B8|2gf|rFpxn{=$V4$baON96*~|NLYZJLxv#ApIe&Z zPTD5?qoKUSB1t)Pjk@GQWwd8wt*=Q{J>A*tyJIl^$JfRo{;Kq8aNx4n?ZKb47>Xni z@~cpu3>rjaX`YsSJbPy)XFy_U`J!=>&ePLJ-(k{E82Tu%w_4B`sC%rhp!0Q--uoSA ze;;D`NJtEjxD zN*J#=c*s;^(We6oaT%8y(GJni>wIJ~Zz6hs9S5i@so5b@uh60&2IiTqa@Mpb7F7#W z%V-#T52dYEnZG{O(CBiWIY4wYID?yJRRYN}UJT38SV*S<*y*Ctqi|$Y=wu@@C`}zG zRJ`_6*&(uoKKI7a#nqtkj?s8Ukjj;qtK4s{VS~91L9gaiH`hPvzB|fe_b2J-q-o(7 zP=z$0l6|r!%w}jN{XqA5sgLCwwbNpZvu`6#^E@cDfJz*k4wX$bk*d?+Q;-_>4Tk2< zVy&|F>%9{P6cMABTD+rnN4V*p2~s_irhP4MvP)3<{HR%%pH)o{6DttHkqeCfMens; z+RP#IkO87A%p-ceSMj)F#Cn1O^=H&mSVq@rLgw#!0tHZ7+qVgkbX}(1g%u)(HLNBs z#-|pya;{FNi*i6#(zm;gn)3d)^l1@e5WAP4+#?nNz?r@}tO_rldLVYnr?CS^+u*z? zOXuA2&r7J=Jnru2WZF{K_fWgQ>ujhuOt^OVnr2nAYzk``1R)m~FqCg0m-6vA=Dt_Y z-t!PW(h2$wQ3j}Y=Nxtd6qh%yiatBN0KTj4Eras7hjd5>IGmNs?2la7 z^eu+}Jk+0t2$1eyhnf{C2^E^*Uj>eSAru@SOGVCMrLs^=k~sJQpJalIl=UPw&`Z8Fu#aXB$WK4%4?@-+U3rXdj8j(6=E zu{o5|i*v-ak;PbrvxSrA^9ibFOIjLc2n#`*RcBnQuU#UG_0s)>nVld6K$A+_rqsN4bkL{%vV0t zC+-7E<1OXtf5pWUDD>e4tg8JI*8TQQTKm(2=-27^!xtH6d{g4e!z5BlXhbj?D;nN* z;+ZNun2O7Cs})-%108PZi(v<&T4n}pc)u}9*eG%JnDGXaJ2OR8cxQ7YhQJ+CXOP2c zQze@~d|0KiXY?zIvBSRH%4cI%B|GIV*`+pmZhu)!N2UJ_vsE{g3T5EQODuebf==-k zi^->E>|(|4nV!qk8?mwlvo2jQgFc_G4 z>35qzf6ugxFfN~hM6iY6*uVhZ6~jP|PEDaQP8q*{7jjJQRSH`MEnQ7p&BVI%)Y$=T z%03e~dE|RQZwR}^JsP3l$fK^77U2D;ah zTcT7~LrApT4S3^;UPzD?-sz@cwpDPJKJXZn)L28(# zL1|M!i&{t7^)p76h@5h%Cs@q>aEe21T5oQzVNC)esCni2j_&!!c&F-z~A*d?Ft63&;2$0rP>aAAbO>p>0-jPcH zC_I-T(M$~x!|Exmk7?(smuy_9bWcKXDZ7SGO)*|tB44F1O6q_To-fRqG@9IB?e-aB zv-o>(3vA_uo!9Vl8Zx!v)$tp$%YUAIn{vWWcXVg8W*qb*4{-kzLdE~Ug*LgatN0q> zZIIS?B&CBmW>{|-yaDTx9>*PWje;i(NJ5LAu*OA<>n=$@)8fv{Ht)cuC&NYdb>ICk zX&(ArH1Klzib;75wKGc?r%ACAUVk&{W2zssaoIn<>B2%T6#KZx6yAkmU;OY`+(I~% z>k6ctx1ru5!{;k?7%g=9>#@^?h?WZFcCV!&VF4>ax?$u@2IuB(H$Jgfa@8;(w>!;O zv#!UDqrR8L{nTH76^-csdBL9G8eNxPX^;qXInKa%dGb_gZBBI9UgLl7pl5w0hMZUUpMQYdXMmjvn)}L3c65I3?o96>Gswhq;?G!PAj67h%N~uri_(>2;*qmS zKedOW_s!cr0W#E~vM^_p;dH*1$!K}YRK(Tx&iUEREdnzUY6uvhpfOk#M>dlkZ#aVS z7K1@7Xw(>!BhuL6A6>DN69(Cru6P61YWpXSzc(CV|4+Ffy6@sjc`6JE+j3B7z!Z<*hshr@PtnQSJQR9M`79#Bkj^OQ#MUO+&_adVT$zW{g#o#sr#34;pn|sn>0E+K}8C$)Y*`^68=pb^e*zrBgg%ZA?kT z1ADidp0!^U?-a4I_#>@lJ9!ENBc+CYnRF;CVe`~B57WleVFg8Drr2G7VKb@|B z97xqHR!IrjHnn>IM-aEr?;qVa`6@kIzaJE@5OrN<8-VK@c{vF~!DtVHyyXQ2S5fH+ z`HXxVGzM96gjIF3-FQ=el!R{7%zc}rbH@#*W zF|)Bd=qa+>$RV!-@2$ky#kB;kW2EINW80XSZz}tR^2If$q5#TRyrr?G5R|BA03{g;4{nzgk95!%z7m}k{s1p(j0&u*icDOfst42-1CS#)R&7GDz38@eO_c>Fm8V#$_ zlC60zq3+eeDz@=-ZaO}|*SudQ7s4|e(jAo9X*QQB_y-8=4u>Lfzoj{z#v{p>k$OZZh^-**}MB-Xx?eFwTyX$zsiL_YrsqkvRZ#7&vS zvAdNuzKAUhpZ;oB{}4LcSj!`GK41T^458a`pVp4R_3JumZGkLrZSuz}d%ex+!gl<# z4@=+6uEojt=;dW-@Q3el3|6syiM7ngpA~6i65hdfYmcTKdl7$9qcs4@$;07L5w@G< zsnU~@L-PzUKGua6+Z=Z2Y6tK991l3=3g<_B636?3J>0DGUsw`$#{Sn*9;UlJz{uBXwC^cH!=t zNU?H!iE(iX$F8_N82nBWq3n(YF~KyQ+f68B$P{T+?&7v^K}iL>$OI_cw1lCof=&!o)C;;x<9L0Gx5j41x;3zQ)^UWz$kxb}uUoo@m37h@U%@ zqYZTsu^|nPCp>S?{QootVgEJ;^2B|w(sQP|`RWT6K!!QD#qk0=7nwJ>0loqvHcAOw%<{RB znFz$c`KP`ezha1{WR*~9Q(-V6e;9rB1@ljVwzw-(D;E`B{Y35d(G>%HkGJDOUa+h2 z6L7Tef5)m6j(Khokq%r($M(Xz-^OiqkF6$*Fq-LhdIJ8;=CWQPjfjubQ*XM`FM>^+ zs*NH&mq;6!^c3}J0N@mRU^%@s*0|uJorc9L@s%i~xbN*NTeit~eILQHZNxkk{%Hy_Wp9@K^mO z92z)J%NQQ}vJ#zIv_JX@R66>vIAemrzM2Cn#^q*El&{W!X>sc{1_5+BZUliH+lZGp zNYD~#ikcKUcaj0v`gq_{(hqLSw+xtPa5;OlOA~F(1LNXO6f{-fIDef~Iyk)&1#IAbt-{)$+V?n;^+>k?VLSpr7Up@WRQvUk|H+n79 zJ{gd;N%}NHBY-j%k=f-|Bt)3jLYh4{zl;fF1ouLl#=e0 z?hYwMN+hLAE;){kjkGwRDD%Zd^sE*q5>@3^Ug1zNHoS(pS-G4%M;? zTyPe#PUdM3tqk*K{G-2bz{JS3wDNeKu|>-z9#avguHR$S+y!1Ed6!_Ix?k^vxTS=w zxc;PrW(btaDkiAWyMuQQwjMfjD03P&kFQqZv8s8^$rcEf&Mw~Tc6`-0R&Z9gg8_$Z z^Eo4sSEwkBo;vrvjF40u-eSlyl>vf|v$aKtzp=cUQY$ifW~|5s6AbedBj)gx48?#0 znjq`-y(MT{2}>wk+W`(I+A)4D>fn^~BK4u0Hey%c&QHJ2!|C-xjSYvDeBl<>sB|+% zw^oVvf_TJO&uIyyR|v!!6jdc^_3jU_ywGhoEsy|5FJ4mvX-_Gip6O^S8&4w2BVIM( znX2u2X|$oLD|%gSWqQbRmOsVGx{_1`H0_DyrI?dHICF3tRep@! zOBsjm*?b)+VpgYo_#)N$`a5zQRGcypu4-oPG)ACSh?t^gQ{hSp`dGI$XYhTz-&@|z z)<*jm-g)NU8_En6{J>`mUqr6yo#YQj$(5-SE=l9As}&ho60obQ`?gGr65%4OdkhbV zYHSoG4$gHdf-^|`9_)SRYs~2K%W52X#;?<^E%>9T&nAU^sUH7v5(DL%BeLw$=piI} z8P}va$*f*j#AVZkkf_}yiT4{j7=U&LjHIz#&=iIPD84uI_Dx55x~dJH#3q>5Y+8@I zVFJK}L$eWYE&9G^nfh7pZ|e@&S zUs<@9J2bcVHT&G|`R*@w{r3|eeGbUxV;*vlhS_$Z*U_NUCB9HPQR_J3izZe^b!@)6 z?gntbA(^5LV*||A`@?DyrhwNsBnkL6;L|sxkMPKV%@`5`L?R4`9z%Kv?+%QPAsNGN z9wOQ-ylt*0LhyO;ts$E-*rls^Q`KwKbl+dQB3;XkAMiepKpz$T(KJL-tLCPLCv{3I zJnL7cCu#F#2Cb&XzQtMX=-D@v7bVI_U4>f&o>aX3ftAA56bX=5)uFo$nj#?dW@{L(9t7ok|$~B;n!MqeW9zLSh|ZJrn1! z1U>w!;AxJPvT2RQ1Dk>$>}knK35I3p6}>`vdUc^$h8r{wlar}>cNC88>Om%U=&@k@CScTQMF0&1;Wm7a&H3OY|ZO`G}hrf`kTkoIU zKW`=>r&iY@m;OSN0-mC=dR-VWoFJquIihY!YW*s9N_tTcm|OKhC$@a7XtE1uH8l(0 zhV$EN9-@dBmXndM!n^B#&@m2{UB1bO?XvFcA?F7&dDIBWZ4m0Aq(fs|+dNe?CsoT> zHn5RB2?<74<~sF=^yfWUYok6cqOuq&y?cH5Ohz{FTtH^IMW*NCX~!3OuF)UZ#Xp?x ze`Vlo9rU74{b&^w)o6pGfASy^efR$Xk~fL%sy0DBYg zoiqP4DnmG(zFF?1gZ07J&p~}3Dtx!6pX2Ufix8M8Ur|;10a2vKI+B^tI5=17;^8vo zGu+1;7UYh&Hr99poF}bs-6Pt3M-whBiCA!y*_jbJNTf<=-ry2dcFMq?bD*!qD$w9* zIvOgZ`N-yV?^1o?xvZFbQYeRNO$Vd#QbX03HU&^k49gJOvGU~3Oacm;GVPfOmSy|B z)#x7zIG89EwI5Xp8)QeOD!LT>bbvpI{T|=X_x9ey{)VcbF~bL==>_*23~FSqvn0 zE-bZLSm3s_nlvbH_2ic(n1{k5q~ef)RAgoCZ+ku~7xYX-@R?b^+>_3)ha|9LIi@g({NzlJG?VTtlO5kpXGN9@nm+!x zM7t4f{4y?#@a@VyEgO&5*}K75YTHGL!rz)#Mj}L?Rqme5U+#Bc2%I&*C_RwaCM^z* zYltWuat^_G+PgI)mk#~{w5=DVZlo^B>&_*tk3$561wuIxZytMJS-LBmifruI*PG)O zrOOu880jv0H*Ho4oC(afE^T|XCkROjS^pFwx)(5faj{b1Yqrsq?lUYEQFDK$6{2aR zfjqkPx~G<>d@gf`|HZ@(><6a($H>Vy?Nkq62a{k z$llo1JCd<<5*DjSnP`5DiXZaMP)jHN` z3wF5Biml%dF|+V8U1ShnIip)sS<);IkLoTK$CkJs6PK=?YTDT3{cCCNYC^xo)MOqu z8|xlLeq?%83Gbg*b+0id3oXKS!0i`qhS=aSUz{B<;d6X~KzMtMjNh+xWd7fqZ)X%Od0W<-L?4_qV!E5O@}c z$(`~5fd|pjs|QnA(!!dEtR?7fRI(|sL8e(z>=0u)4*|{Il1MUbemd(PgKHVo_YjC{ z0h5LXJFRp&{cNN-wxI4!-G_1)f$xiH@FPBy$_ARyavxO|WcglZ2i7q>sPs_NnPM@D z_bUF>6Hs)YP;NB!hso>r&ClVYgVlGv=oK71+}cwuSJB332ol2!Vl4?+x5b&F>1P zNjn)SxmjEU^u?-#t=*>vtJHIm*?QVTkWbwx_OwE=AKuk+9A1(na3}O=eTD1r8ebY9 zZ_>(jRsM>Tua&<2Hdx~R3{h;mW=xZ>-5!>{u(DW@(HIla&j3xf?{B~67e9irn3~Da z4$o4mTG(GKU*lgc{J@g*B)C_7>c@=PK(JG3B(0)Ub1KZNtE?}w&8Aov5ci?QWA9O! z&QfO4x@0d3Q_W7j)_NhEic-0K$MN`&5uR4hv>c6xF6u#F;hWk`1iYi8F->$$1??Iw zY}?`l>gG`1?b!Jchhl!nR)lYXmGd=Je=yscLV=83jLeGjo@(OJMMo#*7naEauVQ|- zTRg{_@4w%7wJ*G1gI_kyG(uz?H^hM`v6k_rgvwiPDIQ z=STvnW+-P|l#)Ij;m3W?0O_Xmr|o9}n+zTl!b3Zoslr55+XGXtRaC(!XHoUSSGe<9{k>uu8^%^EWBNB^tiwwMqf9iWbb~m0C zOqO7p)ikm&Da-ws;;ZvEMZ|K~eP#Ms+{}Hk=FB~jojZ-ztcXugTml;8utQ0D(-ElaflR3M{i}+fw-rlaE}WXW zh!S%cT$qx@h6n%1YG=Cn)o^lCi22IKkEZw7U&jy6P6*Vt+E=%@Sx;c&SRpl&#T)sG zzmSW_Z|WHF_-Kjcv(J{~YT#6${RkE}@Cb$D_6S7~5MTP8I`F@Vuh#q>Uq$;rh_9mk z@8YXHA+Y~P@zt6Cim!hE9bcvUKZ&nSuzckMZxdwYx$Z%gVZ<_Al9U!9-2 z$ek{Q|A|CKPi&Z6Q8>gUK{XDsgrJWLa#N*}qWUzSCI#`*t7r&KzfZ7io4?mk)TNLa zNtWGCnxC~SrvgY*Q|$8%3KDM0=GVkcdi?IqgI+zf_jL*3$Vg{t&<_C~3jE2GmY1b2 zTj*KB^2TfWEE#0 z9&scmNhMF!y;iLsB5|G1cON#0vdubx?^nV*d3}3=f>dHRoV_0e}z{yZl3cx;HjK(!#%~M?IQD)h@pkS{osDrwoVrrCXa*h z!71L%9d7GvjX!TrbUxnGzl8ZJ`iFh=uSWK`eEw2@b*HmvKkPxpv=2@w*>5~%>!eJ4 z#@41@;RYeK?hvBuUNe2)U;pkjzfQj;Rq-Pp>#TP51S=HjrsWX2b-%Q|#HU;9iW+Mx zKkE8VEC?F~PO@|y#ZKDeqYF4Q?*YRrNNR|gVM;Lo?J5#Ej2<~ZbFi)4dLiX}-8}A6 zG*HNQeLi8jHI1Lj!L!Z&J`0tamdXB`drHXG%z4xqv?Rs~s7sT9Qm?JTNNv4p!w+_U z9Br+ip*i1%cfjb53W-V@zfX@M=XnP}Cu>>0#;Cc&9_S{Q!x5FO!@AunLd%{S*Y2o( zVl!ZX_w*3P_KGFVD*}Vs*53HF_bWISS6{+;xY_0|!j9@M*my;rxPkA~cHuG~R2AS> z;~V1Q5k6AJbvJ&6vFFi0z4+46cxUA7KAhHG*@zs?hv^QHXzG7|CuT%$NG@i#^;j-e zWz*PRUolV*ZH*)VW|*rQLsHnyB=wTCsn7Iecp4u%=`e8o?J#fos(Rk zKp}}(uyB<1Io_E6RLFf_*-|~uh@gj}ERN53?qN0}SM)B+#_kK_f08`5iY-KLPP7>O z&|PaUXc&&X->xEBp*Zn6e_x(EPqyUK5~1j?%ypCJYX@KW-nu{7HT_bBG1{2>(r&!A zGZS_!=f>K_JrL3^Qv6(TaK3|DO(Y2$ z9MP~reucgeOrRzBD+je^bS&Tg=Ax7A{6bsV!i~VZKp#KgtLW1{5V z!^s^481==68hv0lK8{aOA(+kRD4cy3V}+R4&AgvZOOpCs=)xR<40DT*sd%VCDtK6* z7?=&0k_{?Y!iNf_Rtmw!v1X*}AFb@_p4tvcxJ|Quw+vJjTbTdZ=wexJ?<6<9?0g8L6i_*W z{2FFE;b23S=WBB^f=U**b{o9e=V-w8FICMgpD%xZjq53;J!wv|??0{Cs5Cpdk8L*j zS?}|%vYUaqfKuq%J?*|ljHnx}{n9$)PVGsgPnLA01rrlBTg#rk#?WK`!%DXJ-nLYU z*BPyfpTBE)^b}4APO>i+QTVPr(!E#<$jftQ2>HaOG=0H78}&}WXZBL?C$q;@yNCPr zY3<&4<~3Y(w0Ei*e~Q$kz5T@k;vP)NRAWl?mlUB++kfR$jm+`!31Gs(S@Yb@@vTiH zG?>c_Ki+leWB3N15AiInqgT1FeF0&IZk`EV7x!PCE2P?V4CPr0lu~_Prhe?#Hh3~i z8L7GOcpP>l`XjlQKfoqJPi^$(d-8E|Ar8Ca1noIlEUcs|fTa)>|ACX225PvzQ9#(mt6*9$a2`SN|MasN`O3 z9GvsE-iQ~;7bzgIu?y+l{SL>FWg(e#`ZLZaDiyJPZ_I)}FlBSSev6*(3CpK?{?@s< z@2Co5>7RLH-{fyq_Ej6JudKMw>Nq$T_AHnonNJpN9P8t=EJkaHXf(0Q(4PL3Zzp$K zD-Sx&>ir>snI*)jVgxckeC`pqT31peh9P2T*C2b9nG9wc zmT>^Dquwz~fzY9*A(3?v18Yu+d~9C2uEL>{X>wRS$?J(;E5TF|m&nNz9XIZEn0tq8 z#k!qvT1Ec)wklR5y>!py0>t#Ys$JSJR&p6+KrV{h3D9X!2fupskhBAd_AZwx9w)!ysbW3w9oU_ z+$493ZY6Wk0>0gLIYN53`;}%aK8#(AqA>ul)E>Mf<=ubBnPF4+6Ad~ctrARoL8KfZ zR6^)3cKM$60_7K)ARB9eLlsi**}MJa97BEr?L~@b8uqv!c2GD)ZH|P=6r}U5cxE@$ z$O+SS1|_`{EF(+ZI$OS(G>>-S12xcggGK&tjL}6o21h9ZwdSlrcHTZd_h7tABMK~7 zZ}R6JA=CxHg{d)&xHzFGcew0*T_MCHstIRlQIM3JX=_IIW*|YdY#er}(s(691|Ryq z!BiqefDlegm7HERj|>aHq%y5Sp1VfkV>Zt2C4BeZj>E4ps*+G&2v%eL>KG9Q+j7wn z&jSuxgaFd#$M38%Kfd*CJJiN|u|gN4qSm@lcB5WRFI4xH&6QHO zOjTo8C@8Y&2T9;jA=8bUugjIb5tDBWm_yFj6%_He8}VnmDxaY#MGP!OnZa^&N0i!C z5O-eZe9DeDX{>rYzb9R_SE6*ink|CmReoUt*Jm=)jG`x%hDAwbRN`y$>p__rt}2FU zC@1YrYctZ&ww)2ZGS92n|UnseE3TtZAvL<-0EB_1+=L@-*M+6 zp|TK|Tv@dk$u2IE!{1xWIjTLR%rbfH|7E6yvgcQ80HC;s#0Zmqr4d#+1@{XBORALx z6YGK~lb5wWmANy0F6-g`$a0-u=iaAk;qY(Y$$FCpMUlaqFnC6udR=XA)7+Ac8XC@G znv&(c8CAlVYwG$ESy8gy9ov5s36K>OWjrA0kjrn)sa`zKyz&<0=B2@?x=H?4L_#5V z+<%#^=S)_rHlx6k_f2SL_fgEz1J3T0mcr!EnQ~5oA86Rt^U3;32BpFgl!Me4lFJg1kHMVA359+KZAa#2mKYTXZXZ}?B?lMtd zq`;|Qk4jSy{Ca!|2NgA8nyrXtJBLWBViD=nzEo=?56t%gqF&1s$goA$^_Rn~7%rUq zzt+a&m1cQk3mdr<%tyX5dSm^-!bdr$r@lhjtV&~O{_@4>DVd*dS9r;DG*zV}DmcxG zPaaM<42^2O_NHmAN7aM@3N% zjhk9{GUP-)uqKU9YE+>-{}mD!;hxvxgCWM&q8-81x0&0MIx15^=Z@>t_829zap_{P zq|=j6wzyN$lk91`^OWT|l`V5`&}3UNjeADqJgVyeBqBF1eftvdKLBrKDyK~S2o>to z7Ne7<4*q~BAG0DHff|G_?yoe>f=o7;mLQu3Cw1!iG6o_>c~1QynzZH!ZoO}D0$oH` zZt!Oxu8f|=h7%U25_hsWZ2PD6cIOq`{@IVV`%NoF`^E4@Mn*0sk9?dcd*UxpQh6QA zDr11zI5Y=ZT{*IrRJ^4iSZAVGLa9n;&;vL@^d9A3_LDpDR#J3;g{TK;1hIEwN=?+IEeFG{|;es`Zo!`dDGYd7x&%eo7 z_@MNC?&2Gg_bailGX*Ufg*?{(tJ67ay4MrhdL)BXp}i) z#N<>qs8OkS-D@@>2E$|BZH3oiP}a{rqI!EiA@@zJ}u6 ztoDABA+8k{BEM}q^JTCjJH`%nwMP<%X__=kh^(RE3k)LfKy2 z3^JMh6Qng8hW(?LLx~~vN#3Eo$cl`Pu2}1Vp7Q743G-HL6=93|1_6{@+)_+8BX&m^ zX~}(i>wycnYfYcLkiS2WH1Q|S*=Zc&FN<@-d;v%PQui00_};Rr+fkWvd8y<+_*TZD zkfRS6L?75>X?Y8v74??viek@=RcMm+W4xK;6RVoal9OpEZ7M_mDE)xn3ld!ZQM%E?T(VhKyQ9*+N|;TazA$1 zJiDNYT)^YGK8%ODPpIU_ca}%X3-??@#$oR^%^MrP?)WTy0JjyPRrXTZ!vmFdq1cAx zFRh=xm`^nJ5s4%ME-X(wuKDu(-q36NS2{NZFi^@IuOIVe(pN5rr+*HMI*x22O7Jqy zNn$x&rHGMWP`x*tW8$`a3749?w;AZWzb^kiU3rXNA{;^^0z{u85yBi6+#?s`3M4)S zGvnpY%Od)6=#naS?;2`8P2{wcNOqfc=M&ybMDg+~2x7 zIw3Du*_7Ga-q|wK>2}^SL6mv9C={evZKO^j3a80;_R&`tR}1_Q0`JLz?)9gUVJk`h zJ(1+`<2N#Xgl+yvZb~?A(^yc%DvK6tZth?? z5}i8F-H9k}#~jeBUrlF&!#aj1& zmQ@Cx259|%$SQ;VNh|wTR$1HsDyxk3|9w_jBbc3Yd)>rcguXFvM(y@ER1l6^4OaI> zF7vx#mr>ZhHTW50JmW4@-k3Nki?Q!Q^e@u_^DB;dWm&=7?rjomU#;TE7T&5#Up_KQ zBh={=w3uM;HJo)>7^aA?EyJ8DZXK;{+S!V4=3ZFLRL^TvZAKj!9_UIi9jB0cVMIs8 zJ1KH|-Q=xZyr}tQ?(KP~sr7vk*eZ2m`tP(dl>9}+)Sr4_R$0((RvD$HHJDX4WBB5; zvggGfrszcBQW34~Yv#E-q_svQNpYi_Tc40&(%zjVp7peRk0xVv(qwzAmzoEPSR!gTeILs7UN{Qo`^ zMI2lrm3F>86XiZ{xb)Tj*Oe21@9ek+ymF!ePrbB3eMuH**fGBuj*PRh;0x5t7K{btSoS-*Weo8LpX8yeetBqky z6udOvuf}?Hs;1`BNxrL-%bAIN59*fLCPj6RG_+z}G6QDF3>*m)-Lz?D?89yPnLzjl zILRr&tgz3;j;%aZZ1thz@7h~)_)wsv6q0g=4cw*H;>q|fvZHRg-EeG~`gq%~2;k#N zb&bvfyeSH{rtTNl5=HE%cs|!DJN_-0tl|c7M!OV_3pOD%9ck6^LQPTsk{x zH4u|AIM;l?>~oZ;JR@S;BjF%}oz-l~=jr(J~ere4uOG-$piJ>E|R-j!1p|0ceRfx_6WK~^T zJ)AI*EEY2noW`t#R7-+d!OMaI1d{6|+BVucQr>HCky|$sFUt$n5ac(~)btvwlU8Dc zr|e+e1Xe$t+QWiXTR5Il8L|kekKyF@zJUJ;_wiZNqnMBFk!dTRB;a>G1P;#7zErpl zN)D+1k=T?mL9OnA{a`Ry?V_b|_}o|n)9IPfTN2YI(sd=RRiQ2a)ws-8P=bmeOI|WE z-r-biS=Y=hYnrVK0GINUp2(uu6YG>l*Ua5^*g2X=y{*fjEa#i@gZQ_~{391b=q{dQ z2)yex<-=;}W&;8y!aHusG%no4ym^DUUH{}H zw^i-kBek9Z)Dp6JN!DjIk*4fuv12!<=jHkS=~2DC@dj8f&xw@;D1wcZPFMG5$yc8A zX2S@Qxj8>Mp(c?h;0soN2`_ThvNDSkj<{Ccsrbft>`RB-teLyCx!B~-N~2{|&dPa7 zzb~XKndouzPGP3RpMbKL^3*z4qXMxJ%v8;oxu~0PGU+e=HMc zOLIqidrJokOABzJyo`}hN8rNfJoiQW%BaETfoJ{!i<0z$-j)2R!v3tS#xg~Owjph^ zNV66#gCG>!-S5mtz2H0Ax|7S5)6Hb@e)8*bTX&An<6gmOgJn_-Wg+HeJBHi8aJ?B+ z63dMu>*&J^J|j|O!7$PW+Fpe6I=`2KE8Pp;|=3Qogsl}g_)ejo+fC~x_6p~gwZm^n6|}1@(Z`N6YGLK z?&EkxdwDs)Rn3;Lzy2vlVde5F3&>osqiecQj9A7|JR+(2rO?74yAr}1X?B3;8jIFh zNiLeaLrQg>e8Z9kb8lMd9TcOyXP0Td!YC?gW)awzhj3~`;42w(hZU@ zJa+;Glp2QDuf%3hu}B+Foy5dM+I!r(f?A?+Lz(xmEYs5FYPN_c+1;d#jEd@U`s0SH zyuIh|>U%9cU4l8MFhn}wY7|cNj2$DeIG;+^1b((^Gx6_1;8qBZh0X=VVZ6i$l!7~- zB%UjIc+|@1%ftGnCLvmy*3Kz|&UPJ3oOL7^8rBFy>N;O0A@8EF>DsQh`5suygx<|L z+QxbI#V6!NzN3!Z6)Im{72G$pTD{;oHKYomN8?8M5^Q1K$NkR~UrAZMnLMQCkdf{q zmC8_9a0)mK>0o>qcmGwn=sNnM9n+!fo~ITkM-p{)C1timwFWGhKuE893;jPsf_oda z8q8+3?Exp-8X_E=O59Q!({HPc`o}5*zVJ{|Se%&SEGI^&#|>zWXK0S#DG@9-CbOvT zIj{=%@Y@%C(U)QI2+O`{ir;_5iZ&xF{Os*XBg5lY({p-G==&1B*C&=Ydn?zvQ@hO4 zoFuO~Z32nD1PxK7T79*#Rp-p^&LO>O2qed*Jx%gQSe@(_B4OGHv_8S`?BM91dJ~PM z1v?{Nm&<7=91509Rq1wPL|e`#A3(u=dvHG`_~W+KdFo-wL%Im-D*I;bU%7?G8{<$_o@HxB}wCD_Zvh^)?aL-X|zOo4!-B(u46U-vEZJRjPpmsevoy&Me zY>Z*bT||YvqDq@Efu)<*d-38CUy@95sST|7aFXd;bpJ)iP~lK0o<_BzM|4l$N>-0) zW@diFSgaM&57Tlg8w9Rq;#%@nZLCNmT$J5|h8oL(&6R4Q96F|IhcV0kT;rljq}QdQ z-IlF2GppR?drSoSk@uk@Ehp~peKlPA-Wl?+j9eOS5>&YA=IXw7Ac?o z)Vb{WH5xy8t&|{wD{1Cyj)o0{&Yy7hE?o~#Udaq1$X++a^MnMnrxQI=5(QR2$Y|M}AN%USOM2GD9T}fxekLg!NY5qq$R_~7M~y*LRA<%`#byx^FSA2x zzfB=j+|%qqtM%UN`MJvt8bX*QY)_}&-k9Xo8fJ#MLg6K13zX{Yjf$y3 zVn*p?~g^JB4hANr(8N;6-fEo&sG$DZrSTA zX{(D3`4Kbr+UZrBnxnTZulS;l!_&mw`$uFlN?98OZc7T7DM7=A&)lo&h}<>F%?9W( zm#Sno-Ip3I-S|(f*<-juF1S9FLpsc2`3Jek4Jw(0kbQl0W?j1#2ptfXCDLmfBINFfB9Hx`u(L~X4~8q>!jT* zG;3d6lE}pU3-YT5*80qXn9d|RUFT>YaFdWBNXP@5EV~^l9xoWy4CjumYXit zCM5iBjxWD2q{Dg~hl3)r1rj?lvnTO|vhc1n%fIwZzZQJ^J~OEv8%FAodXV*=X7V+! zn*nj?`;mDrA)=Fq!e+Z^DRQ{64NvC-epF56D$qG|CfAa4(pj52VlBs^oTzgL_|5L6 zpRtVYxy)WyO+_{1NNcHcqb6+0|s@$=bd+rVQjvs1RKRbKK7<~MQHo!<92mpeBj`}xa`)zsS5 z2`1xrHrgh4#wn^GJKK&{+Trh6xxt`lqzaDoHNl-&E7oiv%BACvc(9+O@aleV{e2VY5_(iFL zcRib@JiL!UGvLbVE}yufB9#ecLb}T07Th z?jBd%dxJo&Iu-61IjQK4eEP(N4po=C$)-3nB&kbm`6WGnvI+xnR-AnOvxNkL56a<$ zPxyLJ!8i2e=I~0U2G~LP%cY{%{ML_N2`8c2(5q>aVk7HhplhTh+}~I*@tR&Vf6CCq zzGm#?rA2Esd9=;Krh)ARJn~A|R;p82l5rHY+KY5<-z)3$Th44JUhhYi;iXjE!ZnO? z6#wL~6>st&%ala?ehx#$sC1TB+-IGGzDt9Ube)0#xXb7A#5%B1+?UFt7o{p8G$%)P zo~_!C3$gsUTsq_>4U;Xe*NM3Xwm8)h7`3pN9gee>=jipeQ@x(sY>vi@yx>|#cf5A$Nzm0IeRo6X3|gj5@_Pg|%=8O{ zC>u`pZgk1PA);8p_2jR3zi3Z343a%g@wU<;OPjsXb?2e`f)&rozp4@EIE`j&aNE=h z4R5)sFsPZqBHinv?okhY_NkD&xAI!LJW5N91~shV;T5tRnwDxVFXu>g;40IgWR>ls zU5rI8pLQW^RMqp?8Ly;-EA1DtC?uU#Iw_c&M{H4e7}KLsFIw08EnMgdye)KtxjcDX zy_+?LUem7nC*$>Hu2jDLVqMCjUSzT9y@H1R%t?(S-quWXM#+$;8Ca7_B56erpLS}dBiWz(J&D!QE;^*j(U#}Q71}>h%sMI}R&_XlK z73{nL#Jky&acp=5_qNC~1;2%l4>(CWTc9h}Z#+1~e|4?@fco>2LPZK0lwr}-MzR+sucjAs?a(z>O#0;)9-T(9vRl~W3Rrk6cA2KS48}iG(P(=75edIa zM#Arc)Zi`5TFSOyY!$VNl@ z_Fs6Ousxr1vT9}-_^$9SSWQ8D7g1R`+_dSTbOAF(62}dX;{(cBE~w89>*3GSE}in$ zn&_)2xsD(Dn$?4A=DQ3Y^u#X{7T##3tQm@8?r=hTmB*=Yi}K&`)ly51-b){depBDC zPm7W56$Mj3R&{EeH`7}~aUsazGP94<{`@sq1Ta1e{3t&#&xD2F`%}>C1-Hs43-3*) zuBRUDPEL<)KX1Kn^b2He2qdu{@{xH^{Y?}GvXq#z%N@(=b7Ucw@!mcbNgzw zF@%oKmLQWPUpFihFVS!fw6K#EbT23?)~@6Wj)Hq&E5gxG@;%8OizXsjHo5+|k1t>C z{P@yjTg6Ad8M^#lhuvEqy-*-Kdn08?^Ili32`*Dn@w6>H2}5|gkH?b2`;J0BEk=$O zLe9#YpAq6CVL$d;(7;Q|ODSv)R<%gQ!=uhkLNEQR+1%J`zNfXcD9t$tc{{2#Fkp5P zA_K!$uq356&s~p|nGA7n_1$Uq)$t5P#a4UOooBn!iwbLqtY8aBqhy-(V=$OveG1Wm?0tRSdrXzr zch0blB)GW-`2s2Ac`o=R?Ktjw(0eoNTY^wi)u8nT}=KbP3VYko|V;5pf4t<5WTiznmOG|fcq2a?@5 zPdaL9B@TyTHe1k%`{Ruo){ zRG|x?9b@JGeVzpO@1L9i6U?|JL^fcS9f}fHjEM%Aa6nn$6M-cTCryu|?0A-8w=SK&;xS%W$LZROeN4TIo5X-y2Ik}-ikcK~hW5W3J~ys#Nr(h_dpUAFysd-3+4eUBayqUfCCuff%3zn0bh8boN*?y z7yyenh|uH(5iAP75plk9=m2vH$gR2MrYQdACh|c=Amlo~tBHHAg$^hbL2=^vv~fUH z-TmYQQ0v}8`QkjaF@QxrC=SIFOSB7Ja9`>}2i=!{Kt%wo>p4GI zm+aF!Zt4@V-`u!O>wlI%W^?=4h@y7N@7e-X)+bO|l7AJe>+rh(phN&F03mj|CD`ID z9moJSL2zJ_y?!g9ITAT;&w~I+zvcD5{KKR4#RkxYK%Ps)Z(eH{3E+K8pTGJSjROb< zfHU|?2yE+%sDBBP-xh=e*b9Tq=P`ef9m3!=*p2;73&&ssNg^QVp$G_?kNeGJjs4AJ zfnNorM8RgZhM~oY#8LhpSb#|s1hyo`Eyc?M!v>%vaLedP0U2z-f+&=P;-sU~q8)rM zJ_OHQW&aw4=G5QiW2RF8En;BvS2AyDfJhuF4xz~gvK~S?flzTM9fj5uuTC1)y%b!3u@`YFE_Yop7cUl$>H( zoqYHSI0BDQ|Hqmgxq~4;1fw4aUh-J_;3WJBPQt&Jw)D5(u(+r(RG=mp>?L>UR*w^S z%^8^#4o>W^iuWgPp*E2E#k+R4%0Ln0u9q+Xd1A%=WGGM#2=2B7=!DTb82wJ(nYGLBL6L`W8j{?}pfF;*S{apk%WZ=yo4hg^|3%v)S zkGkXd%R&_(eQ)oGR#qfz;93?ef-L4A98)u!Kw`-~MI=-phk_ zXf@>y{ktnssqnY}sRCGtQ^p;}NdYPf3Csj&6`>-4XcjzZKVE^e6G;(D1|JR3C_)V> z4kg=S6G6=d;laU4|J6OR!dp3ZpsNs`1ej3-i^VOwRqk#FkfjVxY7=GXJ@TD`W+!t{hj^e4wf=%x0GY~A z7`y;LqXN~SFgYrDS`E&gB2W`bf8oGL7g!uS@JR)#2uYc^>-Ymzs3zoW_Kqk~1y>JE z;qg5MaF)V@ZIb`10IKCXSo1PG6%fo0POLUJ+0_xSQPR|KaLRvS`&aLiI_2E}+0$V_f^WWR$#N{2<=?6SMaG?&x zC6}xBJOq180xpEVd%Sn^2a1^R3PK4uX@H|Ij|ePjfjh<`A_NT};sRTE|31ED9nt@JfOYfIO>8$$S~Xy>$e0L82DYDi5^r8Qp9>kD6>Hbfh|2ykdyO{Gr|cW2CVc! z=YkuE(TBQ2{P^!4Pzit?pLYZY#Z3tEPZd!J-2obfKuOSavp^z6?l^3s5G)|&Jt%@G z@s~)E_#Ghc5$H*jNZt|AhEOO#Y6$MSs?vWr4~jMtb(vG!v8jFx$1W?ehmm{o^!#b@$3K9v^BjufSNIsjUv4{ z({BTuK;__;^Y_Z`H~a&`1THj|{V{|DP&EO^!o>U!2MUy!K*=aZ z-J|Bx!Fe+eHcDmamK7cJ+(Xmn_FNCR+H>-$38X%{i7b& zJ3_+^#Dp7xm5gS z2E&8+zkAA3c-J{f3$UkJAMc31j}SVbzycJ^xwn#a4GJcLp2Xjke5?YptiVd{SA&(T zd4cL+umn|xQh&#GvILbt*!YJ)1$HdK)rr}D$1${mvXawM$QLkzvtt(jzYT3LkZA?( zI8qnYu{Gcr;Dht>?`C5S-IgN&s9Hlw$dTO+EkV==&<_9IMyk;}RIN3*3(b!KSKRZizbAwFpcl`riK7ASt;AnyX6o@W18U+xx>2 zhde#KBdoxh;6DSI&!MgmY6yVq0xp)}=TLM&-4+z-LHP%#(H1mR)>!}G@Y;bk&l&q4 zoa|f94dFjHIQF1PF{ZfVys(GzLsqHo2xSK-2C!leZuy5ae>fZz*4S1BFTqi2LV<&m z`Ky0g_wQh}_YuI|+X2-2^QFhs55UnhBKhyFmW%xk%jXE?r*L`Ufa(vf@F(D~>HbyZ z2=5(?lMmtktubYRd=|Ll2s(lDtU~aPz!5?q20l4~HQE`9N92J;>4HW5y`uER@36iv zpr}BzI0E!;<9&zRPJ62^LQq}ef7PuIdRDi?4GM@t7UljBsKDV1C^f~(I%6CKSkoRj z7LtDn%BkF8GgJ@=00(EV(XDECoE~SWJp5w-#|3H!;WfGC@d6bt;G4*a?JdCxsM;YA z0-Ua3N9G!6TNA)`!GjCt@8Stv@34+;P|#0v1*K8E|G~L&1-Pe4}fBK zs49fJ@{VBffHG4IiiZtsf=eC-+KPvN$>dkx!BRb-5|G3CJ3_nx0SBP)1V`(%;SUEH z@biRHP`o$6Gd}^x85LZ=f4dGG?f=2n?s!5`;ZdEcw*{C%#XJJ8y};vw{wHK>v*5d+ zD=5$RS2LQv0=VAbpqF`rJscOj4i^EX)W8=1y=-^J?qHnb2)KY`8aQ&cmPrpIz~XGc zB>=kUe|~ZTf+z2={ytDyh%4v}-j)v%h`^N(lpO-h-?o+mFz^L+^m*l$UkFu^;)-)}mZ|5sVp8WYtKg@Lfg_*3yZ&RMY& zJ>HziiB^e7Pvu0|E)WLfDpJ9E{BiKkm57ZFo&}t_>s#38f+9}bEQaa>GSQRK3(H%) zp>_`(Q|$>|r5t-F6XAA4CiHK8@RL^vup3~@>PQ=3u3$~Z$e5CclKZX)RGrqms^+jc zScj~h70Z#R4|>KG?Fe$X+h-;F_RX_LYkL}T_q`O7Wyk~&e7 zGdfj0-d{gOi}tW65YZ$=|;ikYOHQM#Rx5L2jU4;yWaue`l=B-CAmmd#SVz@m#% zrT!F~jqG?#Nc-rgfCXcynW=*LUQu9l#2O zawOln!7ew0Z_?#-JwhR^brU_>9A@+_bv@14!F~XpTu2*|}xd(^k5SuPUdqcu?otZi(ivvlw zk4+ZlzHQ5D8xQ^?SUzR!LyeyVSRWcFX$_2O!Ts%(LlIZ%4BAokQXuKSV{06yhEie? z7Dvv!CnCTvhpglX(KhByo6Z5|B80oraEVxDe7dB@JPI!<3OTNNCigIs+R9)m!;4|% zAI;`ON-@&r`|~)_U5xjBY>6Z&h*p-c0EdKSlvBb!b?{v-eNLr``&o$nBg!se!P5UC zC9V|R>C}F>RbMO@(z8v}k!L9eu8|+xa7xyo6;ujf>Ss3We-gl!)`*QQb7wvK8D91~ zx<5!|U0-ie3Jl`dP2rW%&R|g*vcw|S^o>1NWBExxLAdi9>m=$gc<)U zU`(t=h1SzAwS5!a#tY*tOfRGL$Te++ZZ|lrw;C3$ocPmU{W}~MhC_hlbjhfk!2+y$ z?fPUV$DXc%{aMe>(Dq2$Jq~N_f=ItZa1!eo1X}C?`m2V$OIe5T?vyX%^i$HWmrHzd zhy@Dn&n*!$s+L6xDTs&d+!$c4OBMe`cuSoW;AKGk}Hl>k(T|h zTtbw;SHZ#7UFF)vsKQq=*k;dfcp-bsB<+^gVW!Z5Uv+eFw_}n%I!QXoSk*3KMGrY= zvzM_p!m*)v7%ePhdXshcsWwrl6l`ix3ef#pj4~(TFY>4~p$@%f-R`LEwJ#Z$A#eUE zt79W+SsjYc87Q+U{y&7l`O~3>bsLtpXI{9dl@F9#OXnpyn+J0_&h>1RNwx1t)&6UG z8!fN}$wVXSnOO*R=cSYFnNjWxN*98su9vlIx7bu6~;iPY1s|CF`BVQ*h9}j>4lkK*b@o%caXGL1PFGF_VBW;5T z5~hr0G-)WCO{qtqX{1@ECeXTJ%tflgEExPOwT2&s4y|vfnxn`wY9?5oT`{sDG_L^~ ug)~C%>;Mb@gozo58X=}9h*#<|208Jcjm*(?ru|I&ahY~@>%!nhcK-u6_ZndU delta 118732 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�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%0AQY)6V&(JhtJY`V_D_|_`(gn}z2 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

    r6^twI$aeamBBW>0`XyK4 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

    DWKwv;8FdBBvaF@M*YG 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 Zg$kyX>A zY)WN-cGxzZ3pzY4lv|KD+M!Au1I**UswxqtI8;kjOC9{58u!>vEQCNHsk6%L_taK& zPUo(?IC)?_1arJ}D!3~Tcd)o`;fLiGb%a_IWJeHJE0?=*`p9gucJG#ye!qk`oED^H zpiQVaDo0;@cLI`idv3D7`9q(Pg@B2RFXDro^cMYkM+TEwOUZp0Q-BS8s$rwr`e{n5p}4~OT%G4M z^n!^((3oyua-nxQFcp@S3&qWyn8uT@Sg!FK_+KND*c#eOv#J|;g{*#G+ zvh&mJ`S10fms*~V8_o6Kl-wCizYB50Z8A4faYmBOG*om%oUL?rn5P$+A;+R96iFyL zV$QF9T?dDh;X45K3jeqASz25?uXtL7iL@V;LV-t*qe zCYmIK1gjlx7scsrJaeUPFSXx6HBZ`VoT{u$68U>5bhkerNhqlD#_Y6>@`Jf6xI4zV zgK8Z^QZm(nTHkuFc*0_Tx}EjpU+dVWkDMn(|JA9fj3Cx>a_Rc195{4Mf3}O)QN|BO zI_ckUup8_2mRLhKw3GtM<~e}_cHu?F9vI0&r4A(VyeHJV1FaNvQwrCx@2Uvcx?`g+ zZhcln+r9xEOHUn6@}jvWrn|Q9r%d;}JoJ}y;u>tge#bBI1RKlVDV+#IQw&qXFCp-&9JkY8`+4azB3U86 zvK-eLXy|(Axz`Zs(Gbi~U$^GiBx)#6wH2ol0Fb7ukg|z!PPpJ5IrA2VZ4AkI@gOfw zQ@!3y$8XJ!3_)eroDl=~3t!rV?0|`yN8afKV6wnGY2_7D*l~y(1zE4x1Jnh=<3gh0 zseqYUsxBlz@`O=wKQ8R(4iWr*xy4+>wz?4X_8x7YBx2zIR$LKFxaYIT7i0V++b8qJ11mX z3}L{cUtV+P0h#OFVueM#7go#Q@*p-P1daVdS#~Z4nKe)kK(CliH&+=Zo8_bT9*{46 zgo6M>hK0W1qC=f7DwP^jFH&e|b1W_P5a4)s#Fo&w9ksScl(d@jFmtWPMYdLe3a1!P z)XL(s>kFn6c>LPXaUpwW_%Z(d1-3*65?`%c08dteno(KS7*TH&9I3o1GfJwjXTSL}iWpKsUf_*ITC9)Mj3dE)5YUhhmXuo<1;91<&LX7>>^pV;LYICF0oVm>1eLd27To1^iskrAT zuUtl^z{By6$^DG3;a%J@N+-rvTEE0~v`Ptc3Yy_cNvUE@bBU+hP;k!e^$no9A*%+5 z8ldLnFMt3Lg&>>+eM_0S!n||n&?Wr*7B+-+fk>ehG}q-95W_$i#97Qi)n6%`2XNcO zQJqlrG>S>;40FK0&Y;tq&mQrIH;mtd4(@zDk6@r+6bqZt>on~!njc2z{oE<|O;b~u zxV5%y(RvDFf7IrpPR5a5tV1#D@&V>IYIHZ6CN~q}Cxb$@i-0su36rIKxB1a(GJvSzhLI}R-oL=P~ z-T=NA{}ot&){5=b@dcIxF|`r3Ex@a7vH?#Hb(|S!#KIf&B`0SBWFGHY>s#yF(Nil( z6B)J4e78FIWk2<9tD=jK$#xRIMz9slGxQD7>leIJ@bi_9_to>Ycjng5E3{tE zTKe&;33$SFl>5BRkDyXvbtx;{9DDH21T zT}bMwz+?&~@bH=nFGxpW0P(9K`EYHE(qN@5N9Kt?$dW|F#1#2jz<$oWDwj#8!g!Kx z2A5gb*kI~)dB8X(29bF5i>yvdrEn-v))0!_UXFIVz05#^7EEX{Ql;|~O!&my6BRB< z=fsBs#NB?N7Sq2lxD$V+B!k8ccNWi!AiaZX745Uq8RPo>iUk^hI|xPe zO|^v;+KxF6kokC!p1%2imE@X?BH`n;YkRn)wHl_tH;pn8J2Z-vup9yB($UN-NJ!c+ooT^kp~N) zk&)jhzlHJ+^+wY?LB~qk4eJsj04oMps9{5Z=BO{Id(P@s7#EMB{O1GJ`CY`BgW$q_ z?(J9ziO*1%kOQPa&d||xhiibO(A@{vx2~Q_;}Xavvg_R|8X*lGs;(MySed?X>BccT zaH2YAtL(rgg)e+cN{XOjL^S38d-wAjpp!4RLj*h0669O>syW{(T;-`%b~Bj_q4u>= zIX{IcL!z1J@}*;1*CH9OLR%2D z^583R+OBCxP|FIq#!Pl11x_wm`f93kU&%1VcysaMlBgy2$lO53b4ox@huK^_5-y_% zxt3S&%=3W-hl{x*Nbs5gcz$6uZH0ULc9E|RjnY+PpXjGAZz)4;YIY1h7%lkn;t_Z{ zga8M}JBSoZ+1sx^VEbAk)Ioq>wT0f-+2-XqoZHEyz*KrfseDo+8n_Wkgcv0?dc0*IHE?ksru(8zr#RJG_hSPo90Wc)4zefj4~_I&iI$&#&26456%U*%~}laAC3G>wcacj0EA>4nhb#Qh2jMF5AW{*=_Zdw|@nXRp}AbmjVJOxPU|2Ab;ty9nlf+of&xjiw-vu*uj4 zl50|uMJOJ`aO!D57I6rcK@f2hIeArrxWZfDoBMHjT|<(wvKlIg2Zwj!jHx&78VIqc zQbJ_G^&zKBh)LB|t=Vau-F3PSu>f33bD+O;{Wl&-_s)tY$w1%oyyDT%@_ij5@pmFJ z3CaJ4rh{QT(_bthT@auqpo0;Q_QDD=2CP0~TN90*E4a1%@maYdZEiST^xau{CMRZi z28l7pn9AY|>%(S>dy$zTqC^EZ1(h}#y>aQlSa^*rh+59$p6C%vh=6!dWysY_qfGzC zBXp`DH6%)?raWV74%Xy#wtb;*6M)n8+JTQ0X`_&y*at*In_P`CnsgW`{;1H+_bO4{ zLM>1_8(yFcG8WfT0UBpv-*qucqD9qLzdvU8V1hsE1bf55_M;s0;IHcJd8GX5YUKR- z$W+6JbBF`M!Mwbu1ali`?!GWwI|@^At_p@Ri{E6#x!FP^ryF@{?Kp~cI$9_^X2t`R z^k69jR(3n+M*+2x46=EEg_Baeg(D?p6w4b);LuTSJZ`iqYtWKY#(QvXK#fFVzCd6O z)K7)0XPC%XHU5Rh#%*!0DWJBwOdNm@R4G|j5lpajo7&n`jc>J+tt7Q|d@?n1D+VB5 z^6|yrL8>wv87g)kk&6u%_6wdQ76HFWreX=FzRE(~_R%>#C)l;1#d7JO91h;`1O>8|6Z%L?2|$@_jZY{dwgk#G{wWV2HN z1zFU-F5>nQ3*LeP+bC<{$iyA&hLD&ssemljAsYI2q?5pGhcGscZIaD6&cV=p`(n0* zwfF|mIc;5J;uZ10#^Um;%Y9t2jXohUW`Ahu+$zaNXbtzA3mPdeU6V_ z#~SriA7_%vz3ZfZ3X}eXit`RDt>AY$^wF8LfG)G|Q%>7^F$af7yV=$Hm+%&{tM)h= zp9llbHsTECaVBK~5P~zw-0&U+Lcis_IS=jrO>>T*r^$hTGxSQ68ee$ubJjK(nL4=D z6GKjCF7C4Mfb~T|uzgHSi7+f6N2#8YJE!p)`pWq|pC|nHY39qu&d~Sb#>>pkh$~Gc z7+uo9TRzmL0aGLx#H-9-m_R>8UMo@iNc_ZWSW$rJRFI&WEf zb1C<)fhMs=V)U3I90|`~{K!V9e$n3!sHC*6093fq?^3j=gZs+f4*@auMSREfhco89 zairf|xsUr|7W<$N6WsMnV&p~6)F8C9>GuT>c`3RF;-$Ga#`I3VRPk2&&&P9%!8S^! zMRU=x+olwK@ZzONn%^pK6)~%*SP9jx6AB&5)Uv8q&)?{NFN)lK zEFMm8)ErRM3a8E;(xgyaU$MddGWVD{**x0aUD5%9-MH-$|fERCWX4H0P7 z!60>$|6q@k#P)kZ6x09#Cq)CAHS6~1b$Kye==wX=H%P);gDxvoA8pKVP`pnp&Ug8B za~SJ81&8r!Wr>~CCvBG{tUh3!KXGL1*BvxI;(k33*?;Lm7@~SZPhjMRr(hqW$CYoA z@yk5m;qP46bQ}xNXIibIgvUZ#J)ea;!q@?1W@>xB3Q_~dr)z_*iqex(Lp zA?OOV;B)nlNVo=U$==MA?(kj9zJDTPFO87#et~EWb@+kB@`4TT^26X_1;&aD6mqb) z9tFN{F~DiS`(e*>C}a(-5}FNk5G1gVK)$hNTlwJ(Y2P?Wq8Mx@apr_=myr7@d11~? z`eWEfDT}>4reP984-v@p#N&TJqOb{Rzo2OSj_9}c+bIbNdeE1lM@WpZ3J~|d=D%6; z!;O9KBjAZXF`pcfF;9I^mB}K+^A>uqesQ`mzj^nglCQ-Ka}NFd>H#NyuA94MMutj( zAKch!wV?sihIS}29M}mR7L`-r%vv2hpk~GRyFm;30xiRdSZ+5y0=BhtP&m@)uc;Ec zN^$o5C!-nX?)6n~UdaO6`FE+Re}-@wc+8t2e}{2+OU=_hZ2dMHJGZEP%vrWX^6!W0 zKE9oRvLa~lC$9WuZ42A?&lYj7a`p-^;@KP3gJ82cEblJG!~2>vUR8%%I$25dIYg89C$0DjpwVtBh-7_RDQ7QAJePj$E9 zFH^+H!49Jhr-*zn> z`-?fiDPHkpp+BGCMUCrV-h0f2*goE%g$AlNyhpqZdCY2)KrMhSvk7H$V_!ATrCFHK*pR7U?2Et4 zPqQuCccGD8>|7a;F(vb@ZYrI`U{CvV#|WO~Mx60@Dm#pwu91uGk(i^$ICp1cdOz7) zwTs%uy{vW^Dr2m8au>-~=F|k^6=1p3;WUK!&$r6<%z*uuNa3pJf*7qQ5}1vq6qocR zfHBXv#!{$FzUQbRNisR&V>i&)*`C+Y6jQ6Vc#JIRq_sNY1)Mo%m!GO~_A2tF*6gbp zSNqqy&DA%=Nr6_qo+|6&ONYS-_xtVqz!&VqoNwgEy$`1t8&s{zTz=P zE&6uC$WG${X}6)W=&RnTgM?R%5dTVzt$Ex4XDn)YeKwIwNQ^13sprYhFY-qU;rQ?IP0V6*e)o>A~9;g0;eFid`)H%U~lgUeLSNoXV@2Ll0Jh;*WK02QkNyhAC3c)cN zD%4M7&%3V2mLe8?EbwFH!N*02g z^2BIEI+tcHBkeCc>VuW@%X>sPzowU5akdaTzemWR_Y==OtXkuMjdBDaN?B{5#G#w1 z)R7ixi1d2LoABBj{hBJCAjVqK3%btZVR@9L%B!qkeQd#3e-o0uu*J|R>cfdSXHLwWdn4w~{NF!U#M-%@ z%r|w5fUv?M65(fT*pOgZfWbT7Ow7`%zyn#`RQz??Tr0-p+bU>fn?_+>$j^>`lZm^w1h5}g3kE?OZl8~5hm2GtOQ(kb2qt4pf&3e82E zf$!|w{{GJIP9Oe7fe)-~C>lp7RrE++G(MV*F#=Wp()~N{Lgtn<&re)JpJUlc)Rd&) zpQ_{x6u8o_mPlOb*|?V^ zGAxp+3DD7})b<$`r@qbH_L<`3TozSoGGEc>sPf+G^pakQ}gr=jMvkSp5hq^$EJEpTBS0W zl#{F3vg{DrSrrQJ&t{aq^waSr@5JUXrer{`93DRfazt+cCLKxaUY@PN%FsOC)%N2^ zVj5mRR0w6r%)!LCgB?LP#1y0_n{B=B2YUdvm`~svHq+vk%4RC;y;){Vb1Ymb?Dk{vAao2|TwI?oj?*`}j^knUqxDNy<5uQb1r?3! zVRwFyb(}`aKXrCfTP3|VIwFO7JHA?1H}Lm3(VD8VsM;0E#r8Q!TXp^Kh$@u}Wmewj zuse$^${h97V%kNx*v(MY!7#(PTCLb)MH;CvD)72(C0(>(w zgLYVfInD?^JdWQXTCUnk7OK~x<572{6B!!6OyxG8b#`YXX-L36dB|fyU6pDp_(v~2 zZUI9^Z2=T&&%blYe7 z!rbNE9TD6^HBBKa80kT;?Y&n$gR#CXmwqR8Id>Z3Rm(F+Id|5P$63s-J}#|FCT$yT z^}9N0`J#yBK!;EFk={R%8fu4BQb9UA<#52Pyz<+?;M*(Jz$9HvhI@>n*Ffz`k{S&@ zRzW$9Z}+6^ZHcS8^rMp)YhlUXHG0H!cnm<68(cLegLBVbB23#|_-9-phEP72m}a4C zaTq2h_lTQ4=a-X2?v8?wg`bU`yV5-6d_HzPqk25Kg;7r`V?PqUo{-fxcXwAG7{IVr zpT#GXGlr^goVxu#;0X=if8YuH|3*Af{s*3n{?Fpc{Xg-9)A~Q*iR(Y{1nu8=;`RK0 zhbL732~WoVg(vqvc!JOR|1O@;K>r(0!v4p2g8C0US$2(U1dY~QVX;R&rZNpO*|?u$ zY4Ry?fN@77Co#D+tv`e(r~(z~w{b)m=GC2Tj;$f_-oOQLXC|Z)nqr0#`b@|W#~(lb zQ|@sHIJ}4oL7MyG6FW~wTqQ0G#xi)!yfgsXb^O3fmmYlHzz^Co9*(^LEs1|()LMzy zGs3BDTx)3~Mn*ZwMLZ}6rDpt1AE5c<^P4)d9G_f-yI3aWh?Igt>ZH$Lx9>TskFhgA znG~)|1(j_eXD<3`k9j}=eBL>CCoNdMSkd=4lEUJ+;~8l<%uY;jS_g$dU5~^_=J-w< zD_NVWh7G8PwPD$18r_{IV<+^sq{DBu*Gr@3M|C8=eKKGdMyH89dFNoEG)(UM3TRoJl?OcMQ@%znrwJ=HZj3t}WL84zta~&^4r|x%7x2z! zU9#{pk7Nbq%lrQeo=E@yi6@o+`|#wDsl|(a;U0}1WIAW6LwdM3Avbu=F{SLay#`z- z<^zz{q$&M_?IS27M0_nwgRe{DXti7F-*^J~A9%v?&GAj~U+_fvZu7j8hyK6e$*zFs zRW$w&o>XW215Ysjr||^68j8Mo8U6pn6T$z$lhOYHo={)^3r|4**YHI7A9%7{xKZOI z1qTOQp)%teRaY|zk70)0W~KlR703+oN4txS)kX&kP_GdadYDwlqmGmuTst?2;nhtDWkc~4wN3gCqmd)AN;OAq zEEgwFVr5e=Q&kYl7eai2dIXY$Z6(_g%!2eD1eJuJzzEHYx-A0&Bq)JOcNz7hvt)1@ z+Mno!NyKhhye~O<0NsO6h%k^mMGO=M!4&mR0D1!fpSpOpf9rEn!$!9liVr&%`S=84L=vqO&= z-+g5_jI!lk(SF>*ygf4924`bW=+nf*owTIH>&Q{4U^`c>%j?DfeV`&R3np-Gzhxxf zfzmqWKE>Im8$~{&?nTnX3hlCC+KxFc^Qqskv?`g*D^5KLxMdYMWXtcKcUUJXXf@27 z+8K4!S16ZC#!+hKUmcN7Aic1{(YdRaIcWDf{M#l?E=1AM7>gs=>usMMZ7B#(oYtS8 zgrWF!G_g2-t7Nro_1BrZNOPRszTGOTi4{(O?SosMT|y8O(19w-u=?Z}b7n8CQ@w)9 z(^m?1EaTaOM}dVgi~7XluiiIb-T+(K)0;$5gG_$jM9%9nO#|fa8e~^v$PgSLg(jOu#Onz|TEXzrH;P!nrds{-(iNCXddXByv zV&<6&FLB7Fdd&k#RIiCNIe-ee4~=P#)&hqX6PFd8?2u#PLl}x^I=qg=T#pVxk0AFv zkR)sv1p3y`{VR^AMiZi@<0US}+jivlQ4H1P&&=|fqV`XA`-R1Oc`}+$L?Gc)i4v%| zcaDYa8gbei*!=n~YW!v7l#>@ZHLv@+%aZ;$uj%A}ZR0Pb42MezBLF7@o15MHO9bR( zWO(`&rYU?z?D(>-#6s!$z^Kf1J@+y$!r@+v#rq~!$Bt(g?o+}K{y~hG|K&LI=q03$ zQB<9!;I|Ae;>BQ_zxDvQT={ySJD!2iZOumZ;OVB8ay8oc^~Koiu2gzQzA%T<8ff33 zTI!*OQM9!BJ01DuW^q_*6G#TA&}Wc;(N!fMSn*-^tw3?T*$`_4J;zUF>*P1a{Xi!g ze0^~M-1(7f+L5ye9S!eEd)Nx}Hg@5wVan2qN}!?WV7N$iTHYGZCl+*usO{LubZ{i- z&H)w(Lat+P$ej3gI{z?HXeu3HaJpUoL)~SI>Ain6x{3CYY@n@`PgnxGNY`#i5Rp`X7``+h(Nm_V`08%CCz@wTF4<3Jatjl(rJ0q{J+Mjh_pSh#NrMLqP zGe#Im;ST6TVTybd9U~@&0oMZ+(Hpq5Yet-Yh{_6?%VZsD6N?IhxRs|&(?}#ve8VHQ zDI(V*iYlW%Vz2X4Ww*0dSvAR?B$FlwU#3 z{&CzlMdhb2s3ZqG#KN&@rxQztqOEwf$LUN3chmy@goEQvG~min+S+zQ&F*!>_5K>9 zKmcbG@q>$eazzF1&{fxVs@b3Ep-7$MouN3(I3sACSS8xYg$;XBrAh|Yg-Kygv4@!NaL#! z2VYJ3$q1=~3CG53bgj&xurf#DLjY7NTv+UjIeQV`P*X-|x}GX6yt02d+J7MiD3JH^ z&e4n~KN;-LcO8_510RS8juVE6Su0vRgHx4jY!rfOsZ2Y>J&D@K%2C$}hh?3jqDY91 zOQtG+aaFxtm-&sCmf+;DpC&k);u9BB&J@Ff$k%@MS8VF17igbZT94s|&8poz_PZr9T6+@sx9M4p8f5earzV8P@f@x08(m8U@phsIA{s|!8`zR6X(yL!_i z=|~56tn8KJh<6;b=CG{I8XG9he4-PT22I=7Slj(0uqe62itpwC^(+8?Q?jrpB@in_M`1?WfTlaf7k0Y>QN`5eA4b*C~el(Q2D&#_NqiA+( zt%!)=Z)N?x){ErWQXpskuJ(mL?&~|yJ&tiNz0wZgRupT5LzWF@w;0MOjo6k8_Kq~_ ztux?Jr2cR<<{(?Fqel<&!4XW#%PzV2hPjU-C&o>JdWAnv@v9zSs?MOd@a|ts>CX%a zmuJpH9$5Kq=zRoNT~e5t!DHo+b&Z;xK0WTzj$Zf)PBmd2;}0eLCEin!tb8yv(upBl zj3hJnI;Hc%QA0$u=Ps6UIj?MZ@xlg|vMaf?GV&%u70cM%yI(5Ul**zTmH#!y0u~P5}MVz34+Tr?~%L;0gYJ!V^In7owI>uB2TvPzqnEO0KW! zZG0-Q&3UixZNnF`ljqa-&m8x;>u>uR+&=RYGy~xm)>EmPb;vKw$M@^Dd9QB};m6z1 zXr5lBTk4$Nd}&`gRs{dyp&k8MT2nZdL_}yxLVT6bZGxHVnI1{|M@kS4S?!;sXJun{a7d42xmH(28jqWP+RQ6zh zVtldeLH(@)JJ8ne^*s(a>S^J?IT_%02z>jrti0#gCPKv0e}R)P14O0TjeN10)6D`PBVF`T zAH3&-Y@jrz7z#C%2woUz9}fSXh9e%ds##!oQf2)8mx@sTXBF`nUc+k4hS$RTmx_>b z{7Xg7rjy{Yv84W`BAEYD5&eItNbuH=iX;p4XZ{xzN&Tma2>o{z34~;BX-|QKEks~; zQEJN%au9xLL?Z$Qtg|qVu=31f)B-A`TLt@Qg=`xKbZ!!}PP|>o(pSMSKSG&N;GQlJKR3%Y)Q(T2|~gR@WUMQeJp>|YW>`p~~$tuGSF!@?E` zf$j&ymZ-<&(rxlY{WF9i$1kYMl+&37p?);!*9YV38SGvO>n59ih=N$cR9foAtOzwc zH}Dpe3eE}rVx&{3&7{n>aHTG)#zlwuL`)a6*w=+9I!6qw)Perf>+-A&5mYrq)Rr7q z|G0xNdCJxGB@|ykVo-KLA@gElrZYeoT|=CUnzvut!)2A>Ouphh+%HQn(tZbVDk)rDh|v?VSiA{rE9uYr%GhMCSmI>^aPsJ(5YPrh0_g$zxze5WAJ z$Ff5&a9hYBbHq_GQS!TS7gtnN>6aADF@>e!hC~WoeOk(1M$92IC;eMQXrG3!Y)pu!%`c+z5zWe)6xE%S!> zsIgAJyTWGHHD+nt1U*slHO1R-V}j=kc`oQCKN{vdnGiE0rlUuRaHO`?JLl+Vt9X58+eUX8z!PHP)+X^UK?GMRmK2+=|$w+jv>34d8~ z-R?D;F{hdCb!6ZGJA5>Ln&#J!fBb51oi#j+EsfH!|EGV*n~+e=hyM77f&Mzy;g5gh zj{f*ZwN%EVVsi42e`s{GDuCYo_{Zlz{X^~_{sDO95c$bo!to@7wr_#74X3dB{1gdB zB1#}?`=$aXBWw)Dh?f^9Jz1S*zVGo90|v0plyV(cr{r(M_5SWF^=2^cp87gkz@4H` zDy{Mr+N(y(kWnDDEYVFUNLzmgI?&Gf%uT2LC30Q#%b#aW%{CxdvvT+w^uMx4#p{X& zP6rS`3ltmx&Hn^@{KwG9zo$hmIwAG3hhu5ql!Y`pF>3f^?5bdY%juG^FQIEv%#I$# zHqe0t9jFk1g#(h6j}_hJQsrDp{9TCEd%)TEj*)zkTA~d(WF`eAp;PCdcP(VWJOSl%;5+aO~G< zT|{_QoKl#nO$&1jdT32LZ%y8>R$y4~SAP*L7NjhVyUs4@sV#&*aVI&_S-WdX(S*CU znwZN)Q-_y(yjybr8Gh~aA>DLo{Y~~bRnnG5g+BOXsHGi5Rg#~{GWghT#$DxnG$?pG zZ=qOzf9L>`A9Pt2CfFq}5mv6(CeqbTPIL5{C*p0aR6l_Z;N#}5v5>FFK85{eYdM+M zbU&!4mGzTG>Yhj=luV&Ub5}3=V5FgW8BtyQs>lYELK6>*^&Xg<-?o){c;B|d?47z8 z`RkQa+Sf)w5`9oQJX4g(%u|~N$tEHB!+QSQl&PCO<$imRIWv7BU>AU@%Ggv!LHVX_ zcQMaRUV`i>hjdp)Gc!?sC30b1Rg-c!(Kpg}$(5}deLa8Nj$UhV;lp?`X@2m~4fb3% zQLEibL27tVx>V@VLT}32QmSvH!XaJyZ>Ggqq};WfJH#{%x^jGw{4aM}nz@rn6kz~f2Bm9gc$^0XG;D$0Hda%+OJnrUcEqAi~@Nm?6Gpu}WZR-4GBN(RZUZKc<*HK6b7G1E*G zE;)p4zF!{Y>x$59h^_Mit*bZqgqa#65r3iuiBy{C&TQ}COJG?qpXzNMEt)iBOoyMA zK*}OzGXk?%S)5Fbtxkl0t0e_hSRK0?1k7MpO7CZLm3g#|fLhbW%=fG}7uRFt`{zYPVz~6CFfS%~Q4?c; zraC~RgC(@XmRm7x9k&E_I)$4uPSN9GM?gUtPB*~AA}qd1H}IhHhc zM`&QxMH8A^^wyXS8Ijegg+pybqiB`1zody-= zmU<*Tcb2uA1OqOT=#wy%+B8B1%p@gg%)NYRi}&=KIe3%ft9hQx8%3`!3)VDBo8Zv> zrs=L$*_cP4lEg?pH?v;4)WwJ1RK6He!^*E8lJdj?k!9hfi1))T)H?-*>3K3C0|*L& z@p+;i`A(7n$Cip!Ehn{t(26cBV>C|G-tN_pm&=vb-!pGd(U#WVH|tBymD^vpUgPTp zyj0GP^%Y#yQ}>4kvo}i_QEe&N85vW5ttJ>m^!E$0sAS@@M=rY z{yDE6iuKGGDZdsEs5D=WoZZV?KWZf@!dU& z1}oCY0`BzOba{ETvn0!A(}#XNNCT5VPB2+(tU&w~P_h@q)j*jCLYdL8f0#}GAWDiO z6KANoK>eJvx=@QuIU9i+%d!d237SNiZ zG&n-&a{6d7kBB+XEfV%E--8H$KjPA%15O8Om@)W5(bo25{^9{z?K2pDk_sQ&Liuv+ zO;H!)XN#62PJzx!W@ZI-*o9qf%A$W}X1JYgE9ZH7<~AD(=aH&nCmr~@M~8mY)#}vh z_5E!2*UkEUJ{+FSZx$yKbPM){>+vDeDvG#XXjZuPhcX{~ova<2wfKSZxU$1_4L+mae zu6%S)|GD;u&+>kMVPPH|ZY~d}myeU+eD5w!#!i<^ZUubDuAaw7S2JygdOoLXvip;0 zLLyS1lU+p2(5tOO$bO0a(twZvv8enF9FU9o>suXe7CST5{qBc1T_+DSqnEE=7b7DW z^Ly>3gtCv&0{zF=V)Yt5v-fov^A7H+O#V%cJYvDwPqpC}QK`?a+@-g?BjrW?W5Tz( zMw6A9I)X*AG|)lC(O?g(8W8ooEk-yE^*vK=n6jBciZaCht@6ZC&LyVJ-ig!fbN0c_ zDc$wjO#)FocVyo4u*Q}{L!(~A{+)lS`cspRRga@UpX#&}lwTxS38BSt#2~`odUovd zurZKKLqQ=4^PY3PJ@DLUz}*f^T!ZENWu_2;wqw8nYx-~pusb2S)|Qa42hc2VoQMEK8Eu4Z%y@9y(y~Hlb?k;(J$1I z)ewZ@Jgexj*;80QEmiZML{R`emZ^&D1T2?yvncO$gz5K~O4C!8If zxT~w^-Hi?F$71eETg~YE3ysE2Z{yi;gR;i}6nAdzl2ZNiyJ+)@b#vn=-mTP*kFO+v zr`&WTdwR^p?*o1r${N3J*x(j*TgdKOgiYYkGbEo|SlqbB5|%>|_`b^WtTvvG+alm@ z4UcyyaUAZ4!*mR^t`nBrKkT{tr5i;w-Xab4`T|TD`IqVZwO2Hh7pT}cCIlmd0jen+ z{S}j7D@)Tu3$J~Z%3-KnqQJ0#cSIP_?TA-1pcD~d0uAp%FX3 z?M0@>Q7kU2&0Y5W5`?ami!1n=+N-y=il(eX+4hQDCtwds>DT?nM7%!3Rd{VvE*?oqcji1Uig zUijxScAnnr0*fpVxrY|-dp#SBtobC`XVcg4@2-yL4J9oE6mY0$+_hsk8~7vmR-zH1Ams$srw2+l?+krAxW9hi4E zuOAf}6ZZX-blo8mamT+5{;Ef{$|=F}TfWR&$Hvbi6DmaA4louo;^(P*P2AUEx=wOI2Wf zgl|VnBYv~g2@r4>160qWY;-@}l3>hDgfbGK?RHRS<^o*z7cVN)M-K}PLs1uTk}TI_ zgQQLr;*^EfpvDi;=|{-;b5dW!uh11tWq)jdi*7SqgTRh&JVOjt$}n4ZK+YWpPYj;~ zc-Q@irf0WPjamrZ5GrKad)Xn3LF7|9b0%>P8R|p!9*OWf+0xR*tLj@Q&$F^3 zJOF6kcD!}qTHPX}otTh^>uJHK9Lg~0E&%Y2v@Z?&l)?C9(!f66jl6Y2 z?38F=mxt3>*tD8+V6bNXbSzxsn%QAz(VOI)(tOGlb(2BQ(ty4kRRU<#Kf1YBsmWJ<|ip`QW;E7l}h6 z;OW9AzL|8CCiPLhoIkFX|L*4MXsEIW z2g(Wy0}O#QyBht0E@_)%?BIcwAoHWHPL z;DYR$V+Bt}mI@%4Y*{QX5A$L2wVk%&#LJ1sePlZ7I`ipNr(fm*DXDd(c7pHNNOH@c z`QW-KeCd7sA(@MR{4-83>mu`uq%|BfxVn-j!pDg5O=)Gnny3gQ=#r? zFxLU{X(<>ik62}}HfeF-HIPtlk-iAI)VG8iS@HSicYph}YZ6OOh&>rgf0f~RKZVNI z0!zaw-hziQ&si|cH`f-#XBdlKba6sbGM?;+VJ6=MDc)N6oh4ygfKlvBs!jE=arZYB z#6%r%(1k>@vhkosJZ{R~viHm9wb%3d_V+FPv-4&+!~NdZ_4mW@_SciM_sc&1VmPA5 z?c?>=&9%1o=ezqGXvvq?`y>9>O}qE^eD>9+XeU6==hZpS=aux&=RZGb{%*E#nw#(Q z_}AZB(HiI_f*rxpzXplgK`zHTvxmS`r^EI*-|^C0mbLfKw>R-Wbrn9oqTiT$DuFG< zOyq`JtGN&}{!9IL zX~G$NeKj9ta(R|(yiOf9^wjs=(-greW|Z;$t#-fibu6bzX-VnY6&=h;dx689Cez}N zq`ls7XSLBQXE!}dY?|FWEz6Vj>-mB#V6hH`uT1RFDu)i5hj%>PUVejcy=*i^Qng z4#B*gSih^aofP&+3g85dZNR3T_o_by!sf{dSp4?GO;G!ag9pAm64c$j1HTo%-WPK4 z^ZMXo0F$-!ILjOKLtIiw@@1%N>dS{}?Fjsl;g&s5whhP%h5vB$-RJ=&e&_D;G->&O zO4t0pE-m3-jmrETp(>0FsrqE3>9^&dbAq@Mo-GuA*y2(Gf<9|sN!qt(fsgrHTjBm3 z{XYN0Z$)S+y@-42>mu)+w?j~#qhfO>PIcbFm!*8y<~=lbAogTtOVWvx;Za|90Gr6J zt$pi&N&&7I8YTT>(F3CQ$#>!sel7jdn!OEkC42OC2-*dZoeeswvDS!25k z+DT)(1o)Sj2 z$US*-Ox0M!Pl}{6-aBMB^ z2x!agB`IR{gDZ&GAm;M#FT0zQ+1>MH>94y4onx@RQI`R}6ZEm;4!#}YP~pEB@VYMc zRPeql4Iw5-wq1i3V5b?&O*ZES3?03xI&~ z*YGoi2Y7_U5WwV0L;ANOq~(%}1j0XM8N2$X4)WDldW+&xJ?ht}tCIiKr2VPf7I}ga ztm1a!CXx9)lee0}4%{cMuP3R@V`6SLKIT>xY)O0WFu==0%6)*46cd<6TnPdAKw}^J zD-Uel?jqAKJ&dP|YC;a^x-18QbHpl(F4KW@;VFyVWOYk|P0MRO@FUyuj*U#vVuXU2%4kghN(u`x%# zd`FD9b3bN$;w2)VSqOWhFWFGhF+qT`PlB@qqCxJ67e18_C~~tmEodQcxYx3DJmPzd$?;q{(y#_Ds|$hVL^fN79fBafu!;~h77_jFdEXXab8c6|Kg zL70rR&@7H$jyfoR>GNW&huhG3I?9CG5~o$$3Ik=I#>D4&HU`DQY*h2ixlHwN|&H;ld##;<)@C{6LVKXcic`o@Z=#+bv+_-O;8`Z ze%flHC>w)nD99`yA$%m}5%F}17}=oo_0r^whm@|gZ|<=DTj5M+R?JB{u-lE$(*T(!JY zyC}Oj87cEwqP-8?Jt@xi#|!^n2GmsTubF6dVY*$8dx8AvLTFK-61CSzkn?sq_=(|_ zrY<>DlC>yG=IfBq5Ue!bfea0dbK-QSbS1riel(Pm2`XR$fYHXZ7P_F52aJeaz#Ak) zF+Jrv&qTA|VR12qo>)cAM?={brSVL(NBSio47Y*M+}`_@fp}KWfF^jW)(%9B-(Lt!6AEu_SM`Jt~o zw$pwuCdH3NIcIpEz#a=bb-y;RTY2p`rQ^G#PfmA4#>Z}6t&r8Qods`UdsQ?AWwVkW z}k;}!vfMqT*R zBc7nYPesT{{Tlfh+<=J67TQ35W8ypOMdv5_&0i05ZV$7ic&&X4oBZUAZ)@u9$Kf7R z({eXl^_im>w`tw&x|E!2xO{6R5bwx{>$Rre-t8N&a+@5uy!UdF;K8+%L=eH8DWcH{a`=iU*aBT+fq(7xe`#xvA^!Zj=28~k%^3LQl}dGL5}Px~>$17_-o-+^;AYz^l!L}nicDLgyRL=Kq^ zWd^rj{$$8C8DCY4Llv-cOAIR-!I#eV$alPF0yj-{#V?0QJ$j&+G}Ui2T3b19Hmzkt zEWq|auLS6SzaQpAV+ zQ&I@70Co+EhI76Pi&oYNK-dpBH22Zw6;l-6a<@=d zQ734=z>&b#$4IrlG@TC8{ZFQJaHH`~)Y3S4 zKTHQh_YMDVw0tYtV&|D*%oiMu)S@RiW`f!ppHXrITDhK&9(?OAN+*^8xCcBEXtjo6RSiWN7w9=prAaibKiXJ>srwGk6Ys znnj$I$f>V-FdezvW4`xi)$Z-$Xtx`(tLez>6M_QzD+5Q)y*W!`7p&3#t|H2q;c+&Z zG|bZvtzA(M2vah*Ce!}cV5i|?-FB49St{xG##TlS&1fQ8K(yX7m-@ggzYS36UJsW9 zC{t^ml^lHu$_3t;$$>wWh#X2_Y!oc5^cIBVJD`jV8;~v(F5Vt>g={DBR7dq{8~7f? zukM$E?GbX9jyK3OV$Sm&cng7I9SC)>mk2IVq_J2_Qjc*mQ=pk?hbECHv@t4@IlmbYW^ILE1gk;tHFpn)2Pku7K(mug^Dox#K) zk&XmrYdmv9Xt8xO)P+DYLhpDZzM26vW3fVucVj`?vPZDVVVMbH^#y3i2nvM3aO= z_^#v_y;@`6v5Dla7x^0~Y*Hc0xAo2jbQ|4F=LBS_R+S@HT9t!TOQPCcmp@XbAaG=O z*6zxa#Ca8uz4cMlJ+#No8S)Ph`w_4Ri_7qbdCH8kqTxKsyT$L$>l>6k%3!>oQaw>T z=I@RGQ^l_dmp-0vFikA_ztT9();;O6SoX(C^YJc5HdG|l>~Sb>uApWtLpk0Jp^BOR}eIC#k<@*^X@DCmNV6OALl=(%hi_=;mwC|J1 zm>_NzBO&;s_i-+SE4MFPw*yqE;JiH6Dx z)a6Rko9dqio(q^eKKReLECp8Z6R@f1)qJ$4Dc85APTXXtITc}7*?MDj&G1s*kG5VnDNmhmajesP`ghWRqxBO&@!i6@AF9eCcY#5bHKghBKuO4lpZ+FF|t;Z7DstF93JSL{i@1& zJEGJ`F$w5Z)q&E%BU*TdHi8+pR*7c9Z=L%Q1i+2k2=@&h<>FZqArh;_JERJ}; z`Es5{m!5~Wx4AC8U6*gPddmkTJW;1gi_^CX`rF&P9QKlq>QX%?))Z*yc^*r2v1X%q zD(w!@J9_;6Ss)LK%vN0>W&J+>u2(1?-oUSG239?Lxu;)^crfPk>t3afYYYMckvEMR z0)->M3%w3atfA)FsOF^E+1U>D-&C~dp=tpIWLQwwpvM4-<_=mo-R7eI05 znH7F}Vi&mc=KEqbo~v49kk3MVK{(9a#6w~*;`mmw0#WvCdi1HSw>OB%tov=du_>Yv z1qpB$#oR71`(UuYyZP^?yJ15AAG z8TDk^)y@qJDi3^@e}0N_nu zsmDqISbcu!X>5%M3o*(iN1TtBru!_4cDr8`UycnKl40yFV5QqD$#R6zr*J6(J`m&8 zT}qs0qh-rd71@^NXQh_d*j>{KaMg&x)EO41uR{D#4uI)~td%<2oso68CzYkH=59>_ z%Ti=yfUX#In%aX%GtNxwM--(?78$fC0u+V5pWG8=e%_mHh#iYsuQduMUl*_u`b8F9AA^pN z)JWaohyWB6*BSWKxcr(Ibp5_ad!q-)p#%aHE$Gtl&_y7LPdlzM=Cd~2wJMp#Mp&86 zkIVE(cm}33>>z4{njx7QuWg@lVKrNQ7AJhU*0FZVKPOxRr;1tY0~_Ec36RSMgjD4C zlZL-diw3M4lfX)Ha^#s<%mS`hcE(2_2+~L^;jJ%ypOAjNTV-F^3+DU8+Rz!BRu#(9I%=#W2;Dx*IHxD75HRNpZwPC;3DpZ z*0~W!r*chvj`pM3e%t_Tz+NNROS*A6k7&+F&UvOY@y2#Jk@fF`M5mp@ay4nH+OXDG z=d6F&I<01hWk+pZ>ZqoLo2ZGyY!{qeH9PXa73(A=^O<3lsYavp9#t9{?eR8>nd2j8grmmEb_0$R!@jAk((v*Mztj@||BbZB0L zhxE=TA^tH#z3OI8h>;oZU7Jz-^4fl_<}6f2hrZJ(V&hymDPZ60I#X4vE|}MW{)#3N zh%Rhfcbs^XiSKxzq7E7<6i^jsS}yqdQ4m<~lLim-bW0ERlZgp(OCPVY!dTUjc}m-0 z#q^-G?%5?!FzD# z{^7&|Ppm-t2m8svk%t30vm2v=xf;ePXB;u;kDQcjJKvM zFrRx91m|qPk|V7dERWs+`JZT+v2yUtkFgECG@ZX+PQ$Uzf2|v_hfEbpQNUDpgYf-M zQ%5w^%1XqfL03^yxyCm%h=qJI75@UJJ{tp0XK$pM8wSlXq1TG07 z*EN=+o6s*5Mwh*<1Ev)*h(rs8MbNdUN`Y1?y*oWb9ZnVd&$K!!=hN%(m@0%4Ro$I5PKAK7 zCCgsM3y1t1YH9{rke840I0_FT6^BDOI;)sDWe@JYN9M&=9TXdGH*#N&+_igJ_3Xnf zb}4Fh7;Xm|M!S6)i0MiFED(zvrfJEE*x-a~Rf{X~6?wF*MCye5aiV}Vvr->E&@?3Y z5@7z@+k)C(kOyosgj6$YUPt*JGfsUn_-iA+8i^S~GNSy1BJxkZA#wxH>Snj;z@?lv z-k(d?s)bP9G-x80&c3iNpuu=pPAM-Ze1JZRKw7I=im0v!S_Ry-3mHYu<2HTGaFve?yB+&hb}5EBOVnE)%soiaViAiDOilXIxvRE#$<#)1Rc7LwATy zKFV%YcyXBFv=*%a+K3JktA*eF<~O7ZlkvKr1Y(Q|>n}Fk+09nlgcohg<7BE|`W}&>e%uZq()XLtKIulJwaH#{K5j~74tpltMr5s0!`XFgXRpy5PL4TT zhBse1lXbt>*`uw$Xb2zE38Y8&Ge*D5?Pc2P{>_O(fXOP&6ga({DII58-VpoBO{@$BX7KwRaz%;ZO)L;P^qZol0f zoNmA{mMsWdOXG6Sej8(??xhi5rATTchWfQn@qR`x8NeCstj-bgUKE?Owqx#TOpCr& z&Ai`U>C*^R_G0w$OraHQi3?_ygfE_h8Owrd9gS&cg5}yX-(>a%n^2e>+{d8c@=iMe z+FQ00N)Pt-AnUNbE_Oe5I__pn&xglpo{$2RQbz|oPhyToMZIXC7(U%#Uw%U^Uh-dy zignmDEJvHtwTHDJNE6)4Sd+~C@ezYdZ_2U{R5TVX?mUR?HPSH;aK!&2xMG))ZE zfRXXY{<;!VSRlG`T(ia>iL&&j;LG_8-b5_B?2^rS1v^q+sV!pZR zu#aiKo*8=8feCNPBX%xekwKoK7NuOI#!5IJ*cB>mOzB1&fLZnH$lJ?)#dGZ0^n!#f z^fVh_ko>83P`KG7?=iez`twzacS zHCbLwQ{81p`59C^TA~qXy-R*QP~BH|rUu z&9L_FXEB9T$MmZ!e?;~P=z{GN)FP2K(lpskd!>xm_|&j)I5WQs`1XOyjtIZ^sQp*a zab%1zOvPpYs+{7YadpyhL@poYlhJa5@dK!fw&-#u$A-mPg-T8n^Mts3M6F^v; z-JDJFSv4-05Wv#xn$v4oDQ=N9<`EfBJ(KWAjW_T{*ESBE?SNL{Kc8dTOKqy*Foh&f zDK8VerM!xGOnH%HyAyhL0{?(F#@A`%It(yzA$>+DFBuC-Kzpp@?}LF}zgH3b+#(3% zC-pT^MB9db>lS!q?0fj7-`YdX?>!2`EfkvUdHdD}gh^QCA>ejyE;+E?Jv9S%EGz-L ze%oZLPe%OVPjOe-&!*W!s05|o;gRm#>t*-vb#MCp{xBP4>U}pcLD)pYCaQTU?W2c+ zag3FroQ9P@+2Sg(yMdH{-pD+aKN+x5P=HM_ry;dSvKV?>! zHpvqw3)so&@x4<9m?5EGdNY*Xw5D%XLCIp^9}!iE&75b0j%|%eIBAwPW;F!|r6(^o~VU=_{79KGXt5}Re5oV0=<_#o(dmgWUKj820yOiNHCCkpQp$SD^=(&Lfdi&sH z4xb)AJA8ih!}Ax94=q0gcbz=>t#F0k>2`nWeXM&KHh;C86n`;n;F}^yDQd38X~68+ zd8;!4-hI$fqU*;mp1~KCyHA@l;6ZSTnhRZ-UL;cS$zwEGTQ-Sg77s8#JU@5_&^g)q zH>ur>BT-X?>Z2FWk4$smmaebPs)@M}RJw1j+%Y9fO93L5fsmdz?OI$`TCbL|>{t(Y z>T!%hkLb3eOVC_L43viSRiyET1VQW$mO3}!Jr!ik^9NWr@gT1#?P&@7{ybuX6O902 z1{QUa%|_y!{lE4hO z&Z+XJodp+Nx9PlQ^Fq9PI3~@XT&yXEyVUbf3%9GuRVzM^z33o&y1&G6^94@}>pcth z-QYE6>9T)5e3&5Fo($<6sU`^@Di6OoPYM)M>*_`t%Us@Azl|e1U@kw^uZTP#bB~nM zN(A(wWTS1&!F7nawupkX9jMn{1`B4dSoaNRgh(UNnmFG%MEuT4%)54*Ta1IF(2~j( zCPfoW=2ac}xptc}tA2w?IyfB;NuYSc<4VD|H(o8>jhx<5(veZ1-q4%X5E=0*4-r|u(iX~K>g{Axxv>k(8GXm_OX zXW8Uu_!?>+Ww~`~pmj8Cpz?sH>@F(DVbgBCUURpsmrSr{@h`ZF+OV27EC?97X$h?N_UIL^3nWQH+915>tdO)S z%{xfLuY2TF`tw9DD^JI#`TQ1#ic+Plajrs_!bFC(%VP8f;11h_5U<0N72gZk>|=pU zz1$ken|&UroFocG-DSV|jfSwnH&qcdnUmGp`8#t+<4_ycwo8a^?_s>&>IUy(B~Qk& zVnH4`H#4BxT43Bfo1AF*Xb4<^3}AU3aX4u0q zx_;44)~AKaL$LZ!#~icE_>^Qn+)QW7`jTdv=r1U>)au3UxYWHp%lh^`F0|Q~yGGLW zuA&`B<_q1#fS2uPmlSzOnK44{!$?Yob$|Q2{{8#?dx9{*J zwJe7S$M-M^XfwOL#)2mKXIc+*yy0>}JZF2;c6NWoI#D`?EIgo+Y7r}1xPKIkKrHG& zCr`%CJD5bK`9RCz!2xB`wVdlLsan)Ro{&2Bs26>qb4k$?I^sNX(}fq0Qrl5_*)e~8 z+Ma3~7X%q>CW~@rpohAS&7oG~xV6gQ`$211)`FtSdxINk?pN%zn_9BnD%*AYIvss3B_rkEwbNlDq0pHR{IHGA0sfzo?Q>!| zCi2pU*yVGu_GUI6@2slH6OI+$*xI_1xb(YIoo&$1(mqC(b^E@TvdvD@^NP5Mv%gz% zhEohvP_YB4a!FV02)*3%y+5##^883-yR<2{ep7rH*csbi7Dssel?^($AB7ye=dnuj8q(%YFBWb$ zS%+-}ooO)1tP>@lH9Bg?SrAd#u}0N*b|}L97^u}yK{@Dul4oGslk>&y`gLix5on}7 z&8`A1J8X6SYl}nqI35(*&xf^y< zro9B~a6C=12eNXnKZS|+an*81kFYpe)TFo$b zddAudWOO;(2I?fS8Ii?B3aJyt_PfiJH6RkifA1YTV4O!9gzL{pjHo z9hvbSt3g2R&qm6E^4dqZco&k9<1x*iNWJe5d?O5(AY@#imTqkv!q@ zf@$@*!l8uc*V&*RRYn##J{GCs^pv6{n0r&XYM=~=^lt72n*&2^dz5P$9cgT`$Xdm= z$f$JD(ZF%oqgz2Afu|3tBO&3uBx@2D(g=Aehk0o_lijMr_G7@O*)Uz+E->U50iN|~HW+wakA zRe`=Qx|-MJ8J2a}b2%YC?F5~6c%%7&yWc0CTjZOmyefkt^)Lmm)HZvu;e4#~iw$`m@;zKSuRv|al;&L0IC_I)*I58Dg{t47~ zF@4(v9QW_(C{6=ZN=xD4j+c%Co9t0^#HTwGa#cw9i>_w|q8Nma2mlMVq>J}DQnDRPr_osP>P-pgi6U!Y*e7U4_g*H7SowqgwdMY1w*G>AN&fWw|Y^XE`W*&J4SBRn+v9o`prFfK1J}uP7~{_O8@U%+B}#S4^khCBwtr`y`uq7NhTY z#u!?|1l!K}axgv@VI=ENCrPB+m)~qT7?W2+)1ueY&vmtm^$A?%Vg%Ewd?%Qb8sDG;jFU{Svb+)(eLmMGQ78f!m;gppo{#og8x{ zrr=4cZU2EiF4&nJ4z5-??B>OPElY?7NBgaj)aPbfKNf#j2_PAI1VIO(pdkiK4?h;N zts3NN|EIxwgui+}58wYTOW_BayIp+@clJ7D`J0-aPCp!fpKt&7z3o5!uzhOKqwHmf z8ke4YrFjs$*5lFTX~Oy0d*ALZKZN<;eLuRq8G5(Z#&{#{GEc_VVWu3no?X7J?Y$l2 zTsijC8~lN)U^w3CLMoEua=Zuf3pX$#%qip_8UCAlGz{1CD#-rq8|JZi#<-Z2S74!{ z5((uw`ZO=HH&~4tG7|EP>wzVT+u5)`6yFNygrqBJDQ*5uw=u%PIBIe1w{U5n!-fNI zIJyvdRIp9+wX46{3CeEqDt*>HrGeQw?*H5I;B==Can{UWZ3@)?T2_mkOEJyg^yB&b zhctL*-urU`>qnh^akBLVQo=7J=-f`vJW0$>bxtC$c*ko&;A{!oy8-}~`yZI0!N~+a za?dtAG%T2Mn)6OzVoFFP`%Vq%n|C6^jur_-SVu8}6Hq%hqDH}%6pr`pZ`e6VBZm<- zW&^x^*mHq5Q=4rDdU$}MO+uXDnH-x&r=Ip%fNJOJ2}+=I_B?`^idZ!3Np665mxdg@ zCAbUdQ99JeOP^1RSAq?~06lU#d6k?pWXk_}K5whHQPYgx zoh*33Jul$NikfyA_t#v;%99FfsuvP~t6Z4Os<70+S@pKC{%tNJ99lOm9Kd_#s>Ir= z?a+wnfYuJ!#oL;*n=M!yX~{-Q5&MII5YUir29pcvh|rI2j7T4`1MUJcz$Y0|moCN% z#5KibS;$AuV>Dq+<-4JK9{_SW-}R0Dw4f-2N-xU#{Hn>#!R@y?kKG$Zty@l39c`Wf zG!=rHgTo*={?WxoY5V74w(M6?XeH&R#jq8>w1W05ww)7Wkx+LxDR#YJJyL8^<~{hY zOj6wGyh%rHa`<5)V|T(gE^6v(YNL~uAD||UVUy+Wgey+N+8aH5&>Djsf`?Jx`3HG} z`UScPI8Vl#LB_F>%^*>%W(zDzOx&!6=5pNqRIn(?ZBGJ5$yVq1d&8KS7v`dU zcz36Jr!lMOCJt9oS(R1Aj4DuiRV}tiav2fMoWKun3jj;r%&8)#l zgkS{08SUz-^qg;E7o97w$m0o;UOB#lp&1>m>Q0{E2x#Z?l`Oa!SofU|tplUdhK9~D zN%PY|B+|Gtnw(s+n%yLfQQ38|72m#L22VLSf5bNUq=x091jr~hU5PcqwzqNpv?rf?oR8$)lDf>?81A8ytuIfuHo1^z7~GE+a#>$) zkE(oPTEK$LrCeOi7T3uIT7?D0m0;1Fj;H^?sU6=tHEV!sM{w=Y;&DG1RpCwd^H2rf z�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

    mZ|4 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 yGrs2IQ- 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%0AR|rBX_K;T5310R%GNhgW5L%$ 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

    crH+`Nz@6cD>k6h=9Z+MVq zvX@(Di-66jrmeAW7n)T;%eV604Mc+%XFnQQhG4;Iir`boEBnyqfvSio+%&)fu{Q7Miurr#ELTK3H&6@R%Fn#I-* zXUf+%hqdg2;Xrcif^iva9l&aEcU*mSyaY}d?Z$57khtYQ=4Vp43oZhw;%jIc?%iY} z`eXMga+IVv0f59bds#2dhu5?QNn3{bh;f$IS1UQO&b!N!l3oJM24&H5whixxq!k=h zhOq}dZhlrRjm!adZHoG2r$G-?l;FV^19Q2qFj)v#zvsTP^udh$?f0m3$(FR=mZw;@ zWdC+-G#sF9Rx?S_b>J$!bCo_yO}OfYi~aVSKI_4V1IpX!oyrY9mNUYk^1)2>N%!xs z_QM3UFFZ++Xz7f&J|h@Ph5*)ww)H^%I=;7}fJErm)P9Ot67mqjDiTw{qvwHWWcegp zX44%A@sLBN%yCrg>%B(HAR1cS*>tW{iHY7=G?dN)p%5@yxyv=-G0rGJ=A<{t3Kurh zgT|f!VC$fX1 zFE(_)aZq|fa}j#?gCu72Cs4Uf>+Ra=?iz3!Tx%N0t}q*g)64Qq*>DE>Tkea}zKol^ z@g%)B@FQMOZDi{47=)88uE>>gJPI8X$>BF-#*~*cEh)`T^EjMVS%$LC7KGo11487L zz<1Z~DxZaoNQ-A%h#fz2`j6JZ6K&Ot0WB2K>&fGox<#S!<3_hJ&8Wtd;$*8F2aX4- z+ZrOVq31+Y_S(L%*hvJIL`Zi>`^C0~-(FRPahMQT6g%AvnsZsFnU?d*OE z6dEttHEAu!Ux_2rzx>&n!H(hOX~S?qwfl9TQwmsAY9s3-=4TsguqpW%@Y-TD71!Fb@P|a zBLh32*0FYu(>uC@2=a|CF|K-o^OVGzESQ$Ev(q~{slVLmMv|dReo8P2aId=?43v;ju-`3rv-la4Sd%baT38n zmPn)kM;wEEeTLj7V!+Ol2^e&9ic1JHO;+>6+<*hS=z0!DcbIH6dE!IvMw&Fy-$u6r znw|rA1nEP-RCMT&9^Zfn0H8O39~to_H*@W=KnuL2cG^L2j(I4Rw?*q#SH&Z~+*bph zbsz1yoqV8T6%+^2bvG;MUo`p}#;aXABBw1ciALKrSG!kz#6E%2YtwzgY@DBUqbLdf zC)%kytGBA5)?M=!g%kXEV)YmBlT4GVBP+e&H|MBuEl1>3Ad54*B1m8pr!@vSHt#Jk zZ<}msGyAZ{b~S&z?iowRd8tc`4t*f>@eg$Yf41Y9YhJQFw#iEzEwH{2=Cu@1?SPJ{5QYJRCWuUEhzX{rL@`& zD%Z=LDH7dCvgH21v#%Uvo4Rxfu5_;=I?9WW%euNEbDiIK%_{V3~Av?nQ}Idx3SQA*Cqh6!oqd7|vcxZUFoEr35P_ z9vw~>^XtU(zs{@WEb;use9V1&!N!vnPFi_pcRC8Zi8hdVjQjo4Cxey zQxQR{@L|Zfanf#9;f?HtAOZR`!{q3+v#txUTaQeV>37rpJw? z3p)iq1eDReUaUR?FGdt@V<;^9noD27RmINW4aY)~Q=X;n`JTkhI&TkQG{l4aqs|ma zk+>f1n53F1u^jre8{o0j2I7lqT#4%(I-3#Tzz{547X z@1#3IBU>xR9JFn$YXdWZgb9xG-q}gktVslR;?yawlYkfmbvCM$+(?fui_sgwB<$}J zJyiZ{31Q~vr7QGj3*O4k^;9G9%f}O9i=+PeVgF00g8J~w(}&&9T@c%4hPpz#iA)hR z1a6Y>3yt^xVIOteTb+Os%dtUUsYD}^Tw>2zhlAoTS`pJiv4t^#&xmNVlSj{W5bAnD zOXPkQ&l5KmshV{hwbUR#gHo+%iAPv*9gZ=~M?q)Bv|i5nMK!gB%Bh+QcgA7E7~T<0+rNP&$wGJwqkr#% zQH~kY)$^+*7F@I*d|bv3ySOa!v1v-$UE5Ha*sJ+dT#0RW5iI#uw-A20-ceoYGbTvhi7r*5 z+#8=}qOS)rvQgbiR8qYz%xuSI6?p5^a`EtisTHzEQNB5fW`;vtc%^40ZO3xzzJ>Gi zuA(Y#1F!XV23HT~*w7g?R0~Tc-r;@i<_A$nkVWV!cLCu1)srbPqQrdF1y_(W7d_SP zW-;sx(w2Z&RgC*yUIX4k80NKIhJX@P8&rnb@k*QCF3HbrWs%aEh&1BRKEsYvfD@XnK+gb~^D1y6@XH?C z3+3EJ)uPTpq9<(6s0;8G1SG*6+Sp_S%hSr@@T#*EX5~$%@(BdlR+#Bi!r!G$tHb$a zFa_$l^S{duBr6r%RJ3Bbq9kzzT@;jXU?pw0I-C|+JJR>8A#+38CQXCTqH}L0rCuqE zdo?ETX?M+SurTGMLBH5;1P+mR3;Geo^1YV;W=SAE3!_?lcQ zh#&Up_*#+zvC%fQG{xFjS{@}sxD!okeYKE_2|gT2c{&k1)jT#I~vVrJXt%F6{ zwR?y5qL=o_YcKK^{fBG2xvtN7dQ)i;r7E|m=M@|A)ZP0r2~zq5zPgXm-(JNcS-f12 z96=!jj!Lt}E(vg``Op%ju!;pPKTE1tET&ka0B~iK%n)a|r1Lz_r!{OLUT_dOQgar! zlEs5FQX4_ZC?FK`XM@>O6m;2*fh>I0VEoQg5LKs zKO`7Vzk34N`E|y4GXdE`N+2l7djiHYxG%CYP8X(D_0%EaMr`q&3MUUl%7 ze;@ePyNKRU{K|q{W3;Z`lI4bI?S`Is=B}r7Dde`V178g4Y~WM8WTvtDO*zw1won*0 zv&o&Iq#b5F9TQuj_Xx>gA6l%3AdXt34|hv41FssgPc}eKdor!fequtizca0pAiz|* z62%wb^!Y|Fz_O{}_^P-#{Am`~g2r~5;z>haQl>*T*KQ5y9!Y-tW1RT5owp}h$lZU3 zRzWIR9Ck(KKAL;&k5NurM@a+F><11QIgPG^puS0KHIq0qD~KM#0G~Y8|av z-)qvWuQtXd)G58}j-6504=;d$$v3~O@n04%;;aUUb3}K_=@iP1`Acu0L+hChvBzE( z%~F%40Bxi@u$FgxQfBEe+s}O+QgX$%Y1*0bj&8%JZY?O>780l^@io=@XMBd-RM$7u z%7WtIZdQ71H>K)pkx9wdmpv2mFpX`H!2wHX+kz3S8|Ome+=bPB^XuBC%fWJQhWC&Z zIX1NfgfLI)id|em(Kq}vq|P1osX`5AiJwxv@R<>1!5%gIv!vA>y8h5;ZJph)Pn1!l zKWRg0c2pNs2OiVIf~+eECU_PtehNoYHk3sf0Yjkw7W30~h8d+nZ!3=|Md6=^pv5{b ze?m5r3)Tg45oiCPgrzjJBm{9r4?}E`MZ!s`T*RDH3S*|VDAcCDV*_Vt7`^RnB7vA_ z2|9w3%2{nDZ|1U=1BIo4?ese|1M_3Oc1x!l$hI|1&hvLN>ZvjU{t`AxVUGyKC9^o? zCYfe7U!~+OrvxfKcjOk+#{yLKKMdw{PPYD>jyVTKgU(>CzE4XBa74**k{FWODtXN6 z4BLi*GeRD&O!pJcZAxqMCQIc|pdeQ?F};)FL>QksYOb1L2lKdDFS$7n(%~xT|7~q@ zMi$mpNOdo8wA*`u7HvJ$1v*S2GtkzLYuDBr*w-skk~T#$(6~ z-PV(|YU>GOI>>>yy))IY74moxQ(ftj$qfA<2YENfglc}ZUSH7Ceb1OY(6u9j@}p0t zB#VZ(su}j~d--v5vNa4Nb^L&eh^ra|j*^};Zk#%tvuC}rOj*~{iz*LCvjfO{)R;CU zl9p>sjqrb7zj)p!@?4%@2W(yh1Lp@cryA>b-HF3MCjJ?(cdnzKmNaTWzb?PKY{}BhJm*) zdug(_?~$nU9+AtX4g%59B@JJhQPl@dH#iTYMqJRA=PHUgbM)%q`Ri|9yn1%{>W71u zPX=Zb8#eOy!&k4Lym)T62(kg=HrN;U!9jNym)07i0)lt;8bl#rSFn%APhKDV<>}#L zFtsDA@Q;I6&&`kf_~Y=^s~4}Zo_$ziJG~em8vkn(wKPP@8DfNpSJV>K+s=*?SGBt>6XtCY`Ys`aV@X_97YhhlWj5A0@(0b z`7F>w1yv?_RskWh=~jFiK^6(=k7-R0bN&{oJY{;ISjp549P&@L;3?NBRdHlqtp(B? z5N;^Vfo9uPhN(5Wij)xC6)q}!=)n*&Ryj4h>em;zsclf~TP`lqfMNC^uII#XEf?Yx zBAJ7Faq6Jqab_+&>g*;v9j>uNay{2kcfpMKRs(j`NI0D!ixJNB81wv2(Oz+ilOEE= zGBDHO`O{lo!_6?tgOpm$d%c>QVIta(_tHm6Au+Ft*(4tsNechDtR`U38NPp?_51zo z=4MDjAscp({*pjIAW;DWD@YZ-o`LUj;U)6wWxyRr_AEXc`{~1mF8gzud1vSSdq}a+ zIsV@K^Zw@at1kS!x!Ez@Q2Z(8Rdzi&1&nk@JC0G7n8-P*M`F;Jx5zf?N|ru?c();% zvN5Q|3u8${vbgBVIBF6qLDKruY9?PJo1Je_8Z&04f{4y-mWqDSD@8Omgooj?V z(H7X$%BUe>cb0OR9Uo5t-jnjbivzQS=eUB?Q$#IVE%zW=aXolm(|ym3LH3V>C)vTP zCkNT@`(O9}z5j;{a_!gbKj^YbgTy<|Iw+>Pxp&o=?kV*EF*pE*E%smJ0^8zW8L9adcJ^{7M#XO%~x+j#nEccoj46k6P<>&HDjW)wHzLX-+Em~m*v?thD1soCI2X;${?*h zPn4jrcmo{`8N;jG5RgfiC(L4|^0>9)!ccWPbmVc{IkxZ|hmpq@zNj<$wjX}x788GI zRbixJ^m};X=NuPLK{SHd`KwuZ=@5AOK_6CH(h4K4ZGx^rP#(jE?5MQk*cqsr(3MVi z=`9}fu2qY^O2=*nSb`IUoiSt&&c1YACu7${Un!$_(Oi(m%iAubuldL)HPidoSw3_el@fq ztXcDlxyT~Y^;{k*uZpOsi#%B0$HIfyYXz~McOP`yQ)IRDq6lC&m9m5rV1RDYEggQ^ z72ff5jklS%&%L!yRuf2~iCxEtvI^31InCNSLw&ul!Ss*5_r*v7C zOFaJa^ebQq4Zri1aM5iRhq@RoK~UU*^D$bWf_+kgPH?i#qcpn;kE;v|He_`^Eu|3H z6k=TqS{gl~dY-V=0oMLygyi&aZi;JoC1tZh``qylT_~@+4nx zNL_=ZH+~+r9V2w?boyT!nPcbf4)q*hB7OKUy=(aL_&!P#ZAec&dn>Blih4X6wX$Uf z;L+}eDkUS@yfcCr509piV&0jkoO+OQky|y@Ay8^xNpojNyXW*204crCUO6yq+6T*K zhllU34sp3r01;Q4jo?w%f1|;kP_E_&N9Hy)!uGgM6V81!DpvGkkR2i49e@j;kt54| zkVU{P7hd40(+YLS&5U&(@WXM~=Ar2}+z6>}#?5*e6K&LP@+5a12SK`Fo-HR~v9*6n zP%v>vhM}Pojgd9<48wSMRUJEEv{j9f0*T?hp?T`HH@2(?(k=1O)@Nbep=0!Dm*Nvi zmYan6)OA~bTaL%Y^c7YCp{bo+zeI0hSg9 z^P_{KCof!=zFG13_0c~~%V1dD=Eh^LqUAW%52#YhoaPJi4f2-sRkSqy6}(J-rIxAN z<7$JZ4a?P^y;RzZ;OiI$`a?{Z9!$`kiF8qSSK*JtR{&fGB`4>TwstJ><6kyQ1`;a8A&Fj%LC;A>#hTV1no#q zhPzpP>ahf-4KpNtS8)Dl5lT%L979aKTxUa^*f4SaxYE;fT*9tnF)4c(vBQ|qP^3PD z2b?b_=kR^G_@Z{5)En4TLRdDS$?m3~f>vUYmy_BSUW%^1TXy)+_9!U)q2(A@QI2BO zL`@c5d#fZm9vp-)>T$q-^aV}9U*A3g%nQXoD%$2v<#lQ*z4X!VdZL+|4|h9|qHuaX z_7Tq~q%e*s{)`mnvW>bl5ElN%Rx>hGg&x_OFt;Eh!Ikjyk`bEz(5sL4xk!j%WIsLO z2%xtK;b{BxR)k}%4nGOuh&bP0j&MX%>7`Hf=O7%&7~P6y;Fp_{jFLY}Q4D++5e)i5 z(+hm^G33HAgDWY8;u}AjP~g1(2h#}$i%m#G!&fQl;7iM!ca^3KkyfLXEGW_Tmm>&j z620h*ehw<2#GOW3kWePxmT{o?+%y#kikXSla$MH4Ne(9I z${;rEM5MM^sULEHI>f|rod%^~q-60z9qa}+ejVBnRMdt|fkcLdX25E%1~%>6K#SdE zRR=XpIDa2Q8s;t8QG(f@SED6bXKy!msngy-W#zRHT3uBBldZz@4N1*{9YZ{i5P&QG z;i;JXrQ($qHlcISz2)p(P^<4K@-Z-2X+5H_2Cg}a5zX{Qe#)zr{-IjW;0q5rQX;>9 z|2p;(eMteHdz3=EJimq!VPw>)`<4P+<_~{6{HIgH44|OIHAhK z*v1f=azWn3>?}PmMg;}}!@S(yVP*u(elYAqkDLc^=-k1f1MKOtdWZI7ahAbp6I$%s z%(*p1wq$=Xi=`y9kht@WOQM+BOjKxlCd;-hpF!#IFsHUp$J0Q-?hp{>)f0g3^bL6h zmtgRwe<{sHF_t`{I!>(aXV1_84e}=SR%KAt8H)MgW|=;~1f9*QlI`W^_@Kg+4&Xls z)Xnf8G#-biW7-R@ZD99#T$s~D(MXtZ3Jb@dez+89m5_vXPiBcuhG{<96)H5LK zC7~1FKc0tvu11lJe8ZT!_4N(j;P0QjxSdmGz%-)ETRMxzYAOq1wm0Ou*2IB)60#e` zNF^?VuBze}39!~VzggPweE2_229L|U-hn`cQDu13AX4#8w0O8oRys@ga*cB*PoRq9 z{h~u)EMrsIZn&XDQmZ**5)at#_Zgie*;fE4ZFjio?&<)J z)Df1`22@&}IR{9*FgR~3Rd|3z+J<k4PMwdD0N2CZ9 zPoER=tem~NOU2LnrdF2^S?iy1B+Esig0=ep?g@V!$KR2`n3Hai-FP zxnGt2)_}EW_&SC#B6eCjD>fsO6^q@mzGE7(unwZ_j@a4Z+XhOG^-ezq4JbOa~nFEpe!yZVL>KJ z3vB+$cLRI9<$ln&-j1m5TK7bl@0TE~aj+2;x5Bh{@30U8hDMmF=e5$%Sa10pJD3^n z8HlQp-(HtjC8RSo9SkWC1!YtpVtRQ=?2R=vY`#Gwlwdb-?b(MSnnD0M)OBDpj_j}4m-#sxyw_x{j_hlzY0hHE`9FCIgHx}V?5Jmr73A$;Bc)Fx<(zma@JiLnxe+FR2U%v#$ z4sTR+^+*l$ifR>kjk$i&ysb)o&;5Q{Rd1Fvc=(dlb-lKvD~X!+ggK0BW+xCey@gT= zE6;4_65;5U%SAbhGp~%(~H{dCGZ5R+_(mX zxrnzoF`F%u{Nq~=H8*sl^B%_;Eyz)<$G?u2GpwWGJp;82J<3opHy!o!@fh%dR@?E( zMR#`tYZoHNW7hjr^9P&<4+dq@OAMkMR26D}Wuz8l;0aP+|f6tX%&duoIu6QS-v+B=P)Nzi!H`fIUp&Op?QQnrIwOyyW-p&yeg74u{a8C#&$ zlgE_&#Bk7%_!7S6E+VUIC`cooL_T7|&p~w7*a3$J|rQ*Z8qH zlI(}}QY}+E^Sb3*4_++~nwc|89~J33conMhxHiUkKE-%HGejxY3nnIiUGNt&hpWl|KY%l zC#EAIgSTP&Ld}XBh$d{LoF<&q$PCF|CKSFWRq9VA_o2^6zt2{EnBAn!YF*9i@VUmZ*6W|tC3cl&Yf}7k-M-vsn%Upm&YvnCz15Z|7J|JMZxR~DDOu< zJ6$lcmsmN#fa*?wQ?Gc$~u^I{K2P7ptnvMlCxuR`E;uN;> z7lf?o_6mWywfK<6ZGD{P=7=uo_8Nt_b!E+_TBk2v(HZay%HtcsbEoL%7d9d8USn!s zY=_9{>Xg|!Ikf-42uL2{DC4kSDM|)R^io4FbM7WSbzW-mc>1Z19j@ciCa(lMxRlEj z5-;YEi=B$$)_t>`H9DC<;kB_eKwOkk93yis7D6h9{p=B)&E=F}jA+X#IpBcx`NfT2 zyyGB~<~SXwh352-M8iPAzGW zrU2S9U*3UDW(-HjTY*&BJa(H}5C$SUWSE(`GspY@YP807r(lbhX?4{{uwnRILqBwEufYjH}@8uTc?s;hb~;$QHDGvTFs~4ZB^9=b$La z(?oW(oP*;pdMaZKioI{vhNC%%b`edG^jOsZLy!CYz6aJGr1B<6J!}P3HZZI~_cXm| zTM62x=c)}V;SI%FM?+!I^^ib7I7>?GCB^6kXbX@roYG}AmU_-)m^nU%;q|$lHD#={4Vto6HqFiKDKV4mSxMQ?6%cqtT))nb2DkRqdWG|_+=_pl zZ1u%&&pM2jSoOVFuy-fau$)=oN?mJ-rt4?l)k}=VgQ+cnMWs4Okl&T7sDi5{&xLH5 zXXr^wUZC9Jv@+;?CFvUtu;F{%*e)1JNNw8H=hxIih4z`n$Z~0H`_3FE2w0Vy%X2wY zaQ~*7+gz|c2KDg0+tlNet@Eln**eW`hTgP>{9>rQCyK9ZAiCc}8V7tm#Xo zR{TuK6;lP?Bw<0Yu#OhhY$n2<>`}M*VmUrm)+a;$#0{KqbCF*l$uI}D2A9Wk15}$4 z+wBJThu=-AGlL1bk(@nD>I^a`CVG^Xu9pyPSy|-c%t2OPQr7WNHA6Q787j?W!s^U1 zmtyrQgQ&K;>H0`M?}g!)aX$?Z{RRUGpe%EKAqoG%TT$2|f~pYT^o)NcjD#I% zPIFIN5xeSgX<0#Izin%QdW_D8glp;{)w~2Q4xXZ5TP~Ux^Vqa}Ta3Rk?GoFt?$i^# zG)x>yryn zA5;vayAdU<1BDtsVPwpDDhEf0k_ zW`#XtD;Mz4t2$z2H*w1yUry{3aIi=6ZsvRVoh<&hu|&!B@yyfaQ_%DzQ|2_AwMMrufYX&QagAE!5dH!aGL0jRaP`TC*%a3y}+pa^ig_mZn zlftt?Xc0rpvCHYaxBw8%J?O@~N;Q4(H!EHm3C!$|?~y3dC7FC#qi8~?N8 zzmfYcn!))}>)0o|pI`7cMK_igUlnjk zUAXw!*ahEpy)Y=xU=6Q#RfrS=iarYirEVIe!$(X8ue0OhL-a8|J*8^&))PSDC1O4L z;|ldto~YR4>Q+TItPPZALq*ojo)r0beVYb2ANY>K%0%}DyFjFeJNUSN!XTB7LUY)WFGj)(nHyp;IY*-OUL$RF0@CLuRI`- z3{((EFCp||P@Y*t#D}M^AL|`!KIw~wN!@67*n@Sw-pU$J5~V*#I}!IX=M!rO;qPps z1T`E4gD0xX57>g0Pu@W=7nrp0m@3^G8HMB)xAHqW;$WIg9J9|4%vESTmt2q%TF3Up zdj~5mYwZ+!J$sj)x%E+#CYB~VmwQl-S&-r8?)$h2*H-o`2|_D((`hMJ>W?SsS4R-3 zmknPN|#OYO;aEd=8ehJcGd@ikTD7NY-jaEE` zu@@|mo(kXnh!a)9(%f5C)p$b1w!9)J|W$<1_bB) z1;sU~u+eJ6JvKrN4&Yn!A@Cr2L)+>Brqh!wryvn;zcsu{svMw!@1jDnm(}-YkhAP9 zxtqD*4iBBYsdiF|Q}%W615c91A+1B-C@0uF?Eky@q!ZHlbQy9NLS;WllmTxn`kfBH zv*F$(tLqP%!sa3nCF3HYRWG?*ZxCqU$9sudb$OLxYFkbV_@76Iubv+~MW0X*auLQ9 zqVekR>A}&HzaReamxI@b*kE2jA;`DIHUwpdtzI4+ee1UZ_J~^@{N?qFr{5h>H--RJ zljTBsIC%c(+ZV6s&2)5$>eKbM-(lnd7%xFqc251`ZgA94@boCEb?Qeid07n6IC{wN z(OJsfz#Ip+Yn#7fIIP+HfT6Nx^S_uai1G}2Mb(+XQW=^OE5XRQ#FYK#Zf^c_ngl=7 z!FzDWVbF7XuwV{xL6`I5oKc~?x_~G3T&k#p@DQ{inx>oSfxS>R9vtz#=QDeD3di`i zF9+ciIu`I`Fg%sYvvs*i$`${pz%`0y$X$Bp2m5`B-O2d?n)(1v(*8$}0A~+JkPZB} znagR#E@kgOvP(SVrvu@%Z~RihC_E#!OXPjaA?T*xaus41)5ED%b*f?h4l=|g;(DS) z;ZA?$-?M90+qG%;NQC1TmRGhUiZW)1Z`?!wH?hO)(V~j(nkV4wrz96k+UR?!s`=3W zy?%dg*`$77XVtW}n@tO}qBjKWqHMnq4D$SmHaV57TzmVV-Ag~<{8ZNOn@Z4fjMo~4 z<*+YRr&Ry`n7$L`=NLAU#)@IVr5({7?d;{Zi+iwS zc0~`;F7Cln)fGKRyJUbutHX+Co#zdB!J@Pa(=~VS^!mj)I7wQum>AN5CYRPz58t~# z8>4&ae{}$}_mv`k!E@ImCXfj_#4o}3age!L60Ha(iL!O@+Y-p1ZA|^k{e3DH`yd3= zZi#4r*hbPm zd}yYFe%`2MMtO<7U03lZ8~_&s-{T;~4?Tafw- zoJYj4x4XOcC?ZrejUq?<<3{o1jHaQ4KEPT2M8kp5 zv1&L_xvoE4v!&5-79ny+ha~du7XP$GJ~t?ee%ze+3O&*aFFF_UhgOg*90Nue@lcI7 z_KWjaCjOk$EZCR_BXVeMQS7PXSinfL4+H>=ek490)0F${nS0t$=@-6%w7vMP5p&D} z8-QnzsK;e@2U;aW=K95AHrUxIe#)mW{c6yCcyh91 z{%_}^8$-cABEGYdPz=eo;2SD-&Z}zYET3zm1K{V$*3QY+AX4x9Cw^CT)bBTU)o<>~ zI{~`Ce>1(sJ^fqDq>$+8F5>wxSG#gDaQc(Zbh7yYWh2~jl2-CG@p*OEcFOV7XJ~Ku zK2V0IfaBex!1hLCm#SD0eaMA3-X|OpJIXYKmlq#+MQTt313IDwm@-lD1jjIps)G6i zJdnBNJswcqh2lA<-XetT??igsJ5IV48szi#w_lH^oS~R-j3jmoT$>&G*!8yHoW18h zG0s^*t_kOyq_-i?c^`gGoD-e<&xLbVroH`oJniVO7Uw(;YtcmLZ238`+n{j z>qgjkfC46d4Ptu7j{1qVwzjU^+KeJQd0tJ%#r%`el}$2;r|rPp@>P+KuYWbBU^D`= z?-lww;LbdI^7{3Y=YRd-;OPTA#D z=v8I-%k>fBP;hiy$Ww_qd1^0-`|)Wv`0e=!$TxBR7%#Uw%6lELR(6T><1FHgdhi|R z^-rag_a+@zJ4%gebNfdFJ$5QBr-)Ms5Cx2i{3Ss;mX-kdP#^Xc(hLIfcdXAaR@X8U z)CKtDAcIpG*4qQ}j1@b&p51_Qu{?HX{^3=Cm!OtVFbgqPm zDBq$SOAP>rL(~Nhh|&q#SZ)|q!bPyw0!Z!s#Aw(9`_oWIXXM#DTh3=yjdj7WGfC!R zmRBw3qr#O=vw1l}aI9GDA!TsL$JBAS1K{LafPc@*zD4!WhyXwnZifNPhgjFbrd^lv z2)Ekx5D;Pi0VMo+#(=nKHPxAknWODn=@iV8wz|)3{Z@Z3LZg5M)h&zz zK22&g5wxo8)AX*}|FJ4T#eQ-E*8iVNq0iVkfFz7ySIPnfy^5s?IR#(a?<+BV#idrr z^F@`(#nb<)@wA2Qe*cnD%4rrT8X%ibjdq$Ce9^hR=_+OTyGap&F?*ETG8fcT>y zd7r1qnC6hQEjT_WS^=^>366e*p^B-RNvm@S8?LHaw&FFszDyS3mJ@)=V1>@U^$+G967 zroz8#Z+ow5ZptsIt+}|RD%Lc7aAxM^STw9%3$CGWI7i$JnC5b-%Yj!J6w0fa^B!GJ zt4VbMNiQLxR&6+zc~MN^GA-t{Vl_VVEe<6rR^Q+rZmfTM`;?pPe~gr=x?u!$P4kKF z!iV4i0Dq9W;~A!@!uq#HSjMT(m&Lly0GjN`9pFtNx$m^)Fc!{3kqCR(SKDid@34ZJA@s4Za5JmNvVo4sC%cBThsilDl7wRj{P-ue_q-@ zbI7l1e_bLau|LnNYN38|A#3+7lonSbKqe{sqrAFM4S~UyR%J068v^6HU0z+~^J~=r z;yv-_>26TI0wd18gFD@-vpg=@1t>REBi#8?6*(O+t5K`Z9FT3`dHB|>zIR1dxgiB64-W=;7QLwdRlK5Y7pEZ!~^sdZ`~PjT|sQ}CTgxQ z@1^Z<-e;n<3myU?-RJzM4}@Mut;+McIkEBMs|)olkkY6LQ{3n| zUKsnsp80Yyww)|4Rl`$H9{`b+HPvq^$6g@Ca67yEzBJo-G95Zy(^hvKC)44{$xuSTKNJ3 zWfAc1DM%!Oc}@HobE*@bvCVkG6NBHk8W8hW7-$i7T%td@c3MoZSHw}>Zhe?ra7wIo z>0FdMlDc|cjH)Zsb_^+j%=p8A1s$<}f<^M23rdX!JpgOT}?fA9JhedQ-SGuvIvG0GMK zxo{mpohmN`@KwR&3XqEM0=T?qj|L$^^+JN3-v3Op-V^2zA%() z#LH{Jc^@crVLPMT%jX%FiOkT#i7ykWGc+o(%Z(525B_h+RqiLO>3Ruds8D%X}*~^+h8w>UO*7 z8d!*uogiC;+*R<-0)hubM$nB%gG_BMZRby+KcZdJNm&6D_hUbA98pRR+J;{@G!)(w z#7?ax6gP4&{DzoXC=|2DUmK3aP_pg&IzmG-^F__>^)kODPh@B?%CwfLfa0)wlOd+T zU}h~U4bM$;0@x7G1}jgOJ@x^5(3apnjh6E$@If=M*7s#O?=PySK$2k8PB)HR@<^)} z3S)~pS}M8oJqAU5d3UGB<@|iYe6t&MuITjY&JVW#U%zur z9J38Qb-6}b;vLw|ZG>aQA4Hns^=?Vh3?f7Qjro7`*KJhFJeGH^dWoJr-@&ws$m|hJ zaZTNj<~-C|f8Nk`VHObcWeUFRz?U_}nQjw+J~FTzyF3JkQqVqmkoRd&FQ7R+pE#U0 zC`y8@+sN_AVuboCj&={?*&+S<@@n7~7Q}al0pN|{-ci32LmtMKw~x1C#5l;kEtFli zJ-vma)@n`UdnT|AUO26KuoO4!d94hcSplUf@%|{MSRku99}IgL=_$-HQFnfzq#Jfm zeRnYJ{n9eX-S^n%O@H`n4G3rBv=lJX2GMm5zfQG*S2$dc68h@wK0V63PB}r90jZ_} zr)SpN2nwBnZ3Ha5l(&~AiRD327#uIbV3FJWdbRbi#U$+H3ah%aV|7)KBwCelu`;Iv z*KCvE_X4<)+Qz@XDXu{+G6C^^=lFXJYu&jh3CnyFyd%OaYj9t;F}O#5J`KSU&fmu& zEwDCr^1$G@RDO5gt4RW8-lV;I?B|hx&&_HxzTjTUtG%gsq+C!QwT}a)#4>~~@TfGD zs*z|bI_K~FFqBo%*G*iV_4?Ax6MHv>YN~X0BaE{+s@@b+tgns}`R@6XM=u^9{_vL< z&kT~?N5KB$+b2hduU{TKI>eukUpzYc=gY$%Uc5Yf?mhVX!PD>jCXb%Jcuh}^4*u#s zfFJJF!O_vHAD$mPQ@>nKM~DA;#D6?{36aFl|B63fKYI1#CB1ol^v|c%_|c1J&kmm- z@!!uMKRJ5x;`zZ-n$nY3hmRl-8GjwV_-5lAeh?*u&>~3DJ!Zj&I~JGl+1+%M@1`Z> zMK$oJv4q2GAHA>k4QE2h*pJVuD-kA7H=fErz&>5i%%2-g#i5IyiPn;AJ{5C&!7wjo zW{gedqH(opHa#eD_R&*AkJnqx4UzqmgX+9m?Hpg^F z)0^i7#dWSqtau=gf>e9|wKSLb!$J1N$<`ML*e`B{kC60tqdhh^(5E|{N5$0);zFkv z8%{!QzfU)n*C^R+G!43SKj9RB)7xwYaM^#l2|PlJ=Vm})E~AAwQKug>tEpt#-f(7? z=V_ZAcm5GqOgS&mb7!;rML4kLxt$e8HUiptj4rw(JEfAz_{0{F?3r2R zi=t7Wib5?Mz21?rwyuuZ@hFgC_L}`0kxe3j7x;qu}d(?k!A440-** zRj97Fi+Yrs-nO^7y4!nqTZ3z1q24TupZB>**r@sSkhuTfNBV zi*2Z19S`N^4I@Q!2mXi`fBNOa&ci(eY6AL~G0;CeIQ~96{cyM2jk^&JM>g`o|6^eA z|LlJNfG{-R@4NW--Tm%Poq)^J7cc&H@a^HjV{b|i%!uKD$dtZ5I(S91?;M-uEoizY zC+B7XJNpj|kGZ!gD8=Dw+bJDW1Dl0DWt=s8{N*0}r~8GO#TRDE-Od;3`96N}-CyF* zPPSn7TlnG0R{G2Dp8v;pFOCi$hu=o)-umLf{%P>gJoz%}_R-^mqk|v*a`@LLa#~JK zj`5-SH{JN~x!RZ0(+HP{zx)B(`uk^ggB0=IhEJqtJPzGXQ)A#B8@fkze)@y3^JG)Y z-VlTz+}Yj+02^2UT5O9K=QbTxb56GnW_4%}`ml4S58=o5_I?a$;y4+~+uI$Sc-J(I zTUrj#?Fnx2DSTo6!B3*h=`o2$-L>z~#3pK_^}b_U?9`Ujgf&X;bL5ufIlg)J zMd`(?dlHn7y@{5BH>it1X>yh|ocwH3`~*et$Q^bLffJB^(_DmD_dL6(s&V!%zoy#p zhKF28#q)QUrGf05qJUJH@WD7gD<{yG=S1`+UisyJ7acMs446sj4!ld(vtmgRpgr*; zfM5K5SLX@^Q$?LmVNePI5tGEESfGictd=!$2?J&v_N4QE%`8XQ{3$vHNfAQt1K28d z9I~?@Fm#fQvVG4ZEJ*7@Ge{-mg?fNbo*P6Da@SsiZ~m8L*b}fmp#qPcprG@LOtLTn zU)(E4U>^GxBbXa&W$%X1yhYDI^H+8a-2823ZEpP4(*}&(yl=cGR(6i9ZqYkk7Aw0a zY2`Nk!*#K`d-Qx*v-ifrcluZl#E1qC(3eoZZ7KouIaR|3I)TTj_R>(N9hA&mms85J zHjd}%+hT)hAPoVcL#~NvoF193z)QJ2&(10+I0jVIFifL`GMm1msI_{r#1g8IL#KcV zm?ccAYSvfNZUo7+%8IzMPwMSs;Dkv+sG$M;U<;UK%`M?SgRUlx5)EQFuvK(|e?PB2ev zK%RsaWtud(et;}bb%(`c0x(N-4_@415*gKn9*L=HHwC(6Wf)bs2H7ofN{{ z?^+(T`^olpf?Ox&{aon6OGxy3K)$dHtYarlXXB+SXvjMs(~S15|6~wXfI1T3KQ(-E zr+d>20H3)Ipzq~XfhQQQ2D%QY{U_fa3nSBs)qpXEPv!T(D#<$S3O70DiAGX%mwM6; zBUIJP4#u%g5;UI(c5-cLHY*%NZ0p@-&-5?J#V0|O&7D{eoCXnm)VY+c^*I;q9&7c2 z_yTa8gHHV01Y;&aN+`|yd%NbJ2ies8^VL_~F!u5oOL6twI(md-a7mm>@5kk7lzar& zq*6h0^2t3aTxMugK%fW)_!26I9g9W4UG3PyyOd!GiQNWCODZ%fmny4Iy_3j-Y!OFX z4TIZt;ciBn$8N+pQXBRBCX9NJvrWu|hx8$QgOCY?6rW831fOBuj=BZ4u$y;HeMWOm zxQ@jIBtDA7aKYryLDf^mf^pqgD%i2lUKEhf8Vw(H)@ns-LheUMO%%9Gnk!OAfk#7) zHH%9qEt8GQb4<9&3IOx(6&NtQU`)rQS`iaCR3yIqFR)Rl@U8z*E-pJKTMzu8W$1?6 zG4Xmpv+`({heXzxLJ@@ar?waeS;WE-$X|c+0jxndMKagx!lrYV zF4Ly=PTQj!6NOLxVz)_=s)=8$PmO3{DiY3tc(?8IgocfB`RMsW@l)?fKY1)e+`UXfZA~Sa_Uu!%2SqBtnlj0(uWRMPlgh|jD<3D<%_!qqZC4V)>rr_|rQ zlw;&tmlR%VShVxmYyvphqHq1V z7^FArz`s@Dlg3N+(`}5lW&G?{Y{y65V zLU)m-Z(WPj=Ms*RMm~9+9QZ$vnuq+)qlUq(U&?ylrmz?-zKFRG)%&u?8&mfCY$M5 z3qLo6#NFi<0J5$%JPq4i;93|!!{iQ1uc(i)^ZIQu)u{(Y_- z+A5h3-Hti2xppTlD8nv8|&xDG{4rAO#W^EvOcZTgJ~9i_8wTD&e)= z?uKmF$Z5y<|Ey}azYyJSiZ59eH><|7p6epI5jTJTbT^^lHft(n z^^OULAX^(}c27CgOTwSsbR`5TPIa=?h62)8fC8{5lOWCZuO)TK=PG5^l5)gml(99m zL@B&Rni0QWuRt1bxhlEYih(?zIK-OAhu<80_w)#=21CtbOwA^)ii6XyJTldq=fsX1 z^tdwDiK+=U1;_H@71(ZOo#usfCA}Ms42Qzc(qL0*t&ajW5_D1^M@})K(+k_GPId2MI*8ITNuFT-xhC2= zQ#;X{aBgwgHrk?RWKQYmxWZo6x??(R*%~`W7{`wR$pn^O>Wm%CoU!AQ+xD_3y={<% z05c4@1O!BUDN#puY#~wKoDLJ)vq6_T4yrrDc4+F#P@fN?Vg0iW-~w7OsYhxs%iz>< zk^|=f$rEc#8l-YI=rU*hem}W!+u6y9?4J2+C>%hL0_EejfXdc|bLElk=D_f4)K4?R zy`)bztD$DI#zl!Kf4(eCJh(YU0gd(YTnNT|s@iOJ$%<7m2!)xB-e+M(piD9mWnpTe z?53ApmD4Bm{yzLnH9AeCTKbqoO+R~uxR@A-CLb>Oo^^DPefn3rpZ~w5`?1gynh9Pp z9h>;3yHVC4=X4R?+P1@9)=U7RxC0N(h3n(|WyplOZrvM815yLIBe$E%H{_)k%52)> zI1f-3IMM$9It@@$4(2EU^RHG)!cP7J@;W?&QVx4wZU@r>GZf)_l}MS)7C)f%0ELt< zm}HYd!oK)Iw4?{$9lcP^^W~!AFAkpnQ@@yAyDHJiB11R}Pv~ObIkI8fwk_nF3YZJ4oL=kzC#5YI$aV zAcS#}GUt!Vqp5b%_2<`VvK+QlHujvu(p9FDHKxf^->)=ncRj2utXa|%~5^SJKBQ;E7hMZYp4DOd1RZi$c(8j4B;j{s-euu$<|O8 zo+J$y04q1U5i~C)f`n3pBhK5dz8I>scIX<;+o`xqce&cApVSJ4M71n1SXML_KhJjX z^%w0h*&2Sa-b6K79;BOS0zC-zv0Q(E)5PxWHT9i6)Ffu0NKEq@hyEH_NR&n5k)X_( zD1auHYyAO{9S{_^h?(3JX_a*#yZj6pODGkktzs%Cx$eVdNhk3a3-|1<5=;Ms7IYh_ zG&;w-A20UB>1`>O?6D=?YWI3-TYGX>XhTzDo>?d4Im+`3%XjHyv%CIFiyo~dp%qr> z3R=ngteaN7oNRqJ9Tz0UjFxlpAVwt)OUG21^O1^akiGg}kgSmENK6algIK@TIr>h)Sk~ z(zfKVORNQAPYTX@xEuH89ng?n-V2@G60CEOrMg*;)iUauaw^%*5&^$A>uNwq@k;1c z)>uv)Y7tMbA#S#QQ_fh!SuaFM3#SGgL{Tv^om?xGg_*H|>Ebd+gCph>hO%AfTx{FH zBonMR+jDUN?I0=_=m(7&C`1?lhf7U8*IXxp?hnQyJ$nHv7Z8xNi=a4hd*J()CXGfNa5MOMCv&` z!~38@QG}ybs)&_4gkrW_D<~Pd$dZ16+$j8RSM1cnT=|L}C1Ay6Wo&3(s0;C=q=s@Z zEFBWZ6-tK5Rr_M4Fla5GYR2CGSU9?tk2Q1ee~c_(+l*z8cU{%HWN_}NdRxrNErB># zDXIwI7RnXoLRh;{3yTg^s)dVJkZ56^se&yHJ`TTXucSs%GBYrElCU>df_V2}ROW*(xx@d3gz`x147stse0#~4xoq_rK&PLtXH_D%elr&g4 zAhi1iZRq^x)g|{8;cK`Sc@<^X(wTc@#(UY{iQojPdN2rluA}SalT~VCf`PA!mU((l zy~~%{QNd0lLzSa94}uk*Y=LyonqDhx@9##}oB6gw9E#UNccX5#D$y_xSUPT#&kZ|u zV++1>%sv(fMVrGN3`(_?;Z9O2a+xyGT()tyijoaQO$c zUzo8qPzy0m?6=TtK1&a^)A0(8hv}eBHQH;S?%JR560-F0r8yfLp zFxA~;jQV@2joZ_aBZbfolALc`rWrLHe~2g%B|hMnPfJYPs+*EWjCbC^9E1KLK9TqE z%gOLgD;CJwqFqEU8(>!On;X!y47K!;3JUYS} zfCRMbnEa-TXg)P z+k(2AITea+sS4R+(RD~m1541Ky$|D1Eu&(q*1P)b;6^5E(h`32UHj1_*&0!f|lpasq-{7M)iWNHGy z97{*1-4^{}sA9rHa8WG8MF%?RCcaQk{_=_S^N+vr_;&*ZrLLJYInShtdRl)IOjxO` z8|oCl&(Q10U8eAvx=HE9omfAe_WEQUT*O0Umi&7+*VeFINt5oqtg|bwPVFh8Z_)tq zw!?>rm0dW!kkUx0qtLv1*GQ+=ZC;OHV%WMxyiz>$EkZFqQeKLLq#ZuPzm5w!{T zl?#?FimTb;n*XLO61Q<_p$@J43N8da7QYekX)lZL3GOTzgfrLkS+{1qC!|feq?80&9U?%suj}MvE)A^1pGAlZPBChXlYR2<#^i3^!bftuL zu_RZJU?zPN8{b*C=}d`Z+!@_^x9Lmv;xilaHZkGhT(^0Px7o@boAcC$$EU?Z+z<(3 zmskUUEP%yFqeWVhVdqr%#201S(IVX$ZKLyd#gBP;!*wvEb&i-?0Nq{a&7NyAbjtBY zj6tR0nL(S3LCM`BCgI%(QtZ;xe=5=XoluIKsotgIotx+xNJ z4Y#*Xlgp(64}>tYOrO_Gjrx)Jl@;K1QdF^&(fiUL%Q$2Jr3=7;DhXEd^Vt)vMJlT5xo;LCZu9mjb|K3s; z(>6Z(=C!3ZH`;m6l?@IV=3Z3(We}8Q5^7399?S?b{zPs;w0B8=AfA(slIq30x#wTO z6br8nP9XN2g5FQI-V|r~8C;L7HXE526ZIR=V_q9>ogO%%FLcmnF1dS`IZ=%l%u*Iqvc7e|xUKg6A>F9NdoAaDIRUSU-1d_-d z=A+9_$J}BrNo;B8^G}AWSzetL^Hku-9n+kv0_cO#O=f7&HI;c-dDOv?Qf|o(+x+x} z{>{`FUylR@l@eyAz&Tor0ilsaEExxy3N|^n-nC=ZC!6b7;{e|L;&3|tsBC(lC@>ex zMFD1i_ORTOt#6N>Jx#3^jOF>DzCju+r( zvbf_VE!{L{XKW7D?8XP=HudL zJK0QVYcc26ECMkyqnOS)aVwk`<(h$nGzRahSurifztV%x*D)u;3XV&*vx6R;@>;Cf zX9b92wE7^d)5vsh-LaFC9QDNQq{9v-;3+wGaX4JX@LlAiH(igitV6T7x5fy5eM#D4 z<~Azx8OONb0NbYjo|A*Wc(8N#J*`9nsc!baz@mwQe{dCmVW)sZx9D`6LlR{pJNmJg zi=Y~bd$ppfw1WlWf<;hZJoCxB{JK_HYJ}A}aOH%gFi*A@LzbE4%w~7gDV?G8^B5M6 zMkMe^UMRB&8yB-nKy>mf#(+~b7v%+P`ZGkrU~svZTnDFTUS3@C%z9E{vH@F4JYA|& zBe($cf}Q8D`!E^n)A4?@EK~8w@d7YdfLQuDH}a1Lcn;J{aD)I~=?9Z?A1r+jc9s(( zvrQ{DnLD5oVj7YWEQnE!hlR`0QSkl~o)`UGf1&mW5t&LIAs)A^UsctDA=&A+)Y?%o zT|xYzP`82Xtws61yz-6(sHYNb;c?IBohQqyX`&^)@Y+`A=Z1hL+R_WJZC(Di8lMlj za0g#y_t!`aC71tqQ%g8f#00>PsmSt+e!57|ij5@y9yp{Z9dKU&(YoPah^85xjy*DV zdt!-WH!QJ*ULr}P2Epu1i-1&y`<5h@8?j2gTUAio%miz0;MY*Cc6|=&abd1c%)Xx* z650?Xk?>jGVN(s)H_PpMG zPrcos27*~GZG$bzfHeZq-YL+izzn3a=3$!(R(#CdKGBR~sC)aX?bx=DbW6WS>sY-> zP9y9U6Z)828zoOrx*BF;V#t1H=j24-vUA}o`3Muz)v01WHW{)`!g4#28jH;bLbbcn zQ(|?43QF;8qy-YU36MI_hor2hUo5gW)9T$c;N4sul?~GsJ3X9oOD{>CtdP)+Cby`4 zrM%wz?y>LW;+}uxv_!Bpf)btrKSg&U!ERaqt+;+?vs5_TtJ31#P<1YT^;ZD~kmGrAKQy<4D#LUbES_8v~O+1jiE#@_mVQd5% zA|o(%_+VJ>pdZ&ZH9Qk4?(e?mK5m8@;j9C?&yKQV&%4Wf@$Mpav^v?6Zl9KK0UqY^ zpN{kSI12r)AVyl=#oYj-=eOBybq5-nOVBc|!v=-MYjZh)4_B)CS|`onf3Pe+$R7AZ~Jspqj5jbSJWvuiL zx%*xQxml0jhe8IEYI;#nZA(aS>Ms*@eCNyg;A?KDBK_sh=08Gc75h<#$mH|H z%BvZni`gV8S)0G@HTBnxDr&%I&|Gl6)6MoR;`bjvd42Ggr-zRN|BYA|JNynQtKW8-bM`=nEkKzqcLNa(*Ga zf(nMf6^NcX2q|;LT*BOka7Y1}D#+1(k&mt|iTa`~1?zA)qz=8O5AHmE@#yHEFAp<# zxgUR{o}7NBYCqFOHx4$=$Fs!$q9|Xv?5LW7xIm>waJ%X ztnf8k%bxHl&c|oe()$@Dma|zgS6=lH62ZUMP|$DE%_ey+RCgOMA6%a}t;8pd{2Kn_($JJl$QD@0&78N(X4!-b@D)-xTQXu^~Na|?1$s> zFjK_q@K;IZqSDE(-j08ae)AivGQ42&#*kY{;cQD?a#J0tEL36X2_?!>w9Z-KVrtG7 zIJcOyhvpm2`B!D}6`!l#ZEe7x=Yj}Cz?=i{Dd5BYRNwAg788R+J9uhUb>}s12(Nc@ zLwLW@NVM@Cp^>BYj^Mq5AvX)i2{Oe zs;ahL+9-?m%NqaX+S6{n53}Q;&_cH1*+L5DE~j!4gJBOforvs|?g5Q~C0&ifZF6;( zi<@CL5L4VRhIeQgMN(Y+e5#Mz83HAC+$m%eQRH4+HVQo9M?nb2$NBuaIaz=E6?1yV zeq}f}`KZU;w5P;REGy97)5E9h>F_57mFkp8d+V8JEz8H>LsacoI~OHkppNLi1`U%xXFt88dFv*JTBu=S|63sJZ4zRt2WWPc>Va2p z>O}x<=OBt+uGYO6;}-BgQUm~pg4|{t{9f)xSpCy|@9_CXBVzX6Nh0hw9t#(cuUlP1>3m<%wP(_9OuWNIwU~muXex8|bpfmee zeHm`C*EeTit8LPxPp;SJGu1k(UYYgvd>?xpS}bzKp(E$MC}oB&hNr5nd0r5{D=o9L!g$E9D*(l?_Yyg#h?Ys zQYkT5FBVE{hETZNTP*eonU$$9#mI0j<|>yKel(}BivR>#COoPO&Iqa&=Phk(8$%hj zEP4T)AS8bsnk#bH+L#Z7ncL;{3>eGdcK87lUd*pu%gM~};O0=y%TYdY<(z9A&0NSs zU}dSd8oKM5Lu?q;VIN<(JT>Og4?`D+db+OkOU%PhR}*9wcE0cQzv>S9oNVY5NXML4 ztsz!h+FWpcC|`Qo{V3PXwJYbvb@J@3mAZ~qJ9VLYE$wr6&+I1RxqPo!P5u%-uu*F^WzL`Y}UlY&yqyNb*|B-ehOXau|a}8=XGqwI&*>zh7$#ZLf#aMe62)tk+8>EegRRk3s)}3OzrW};|v}a zd9*bw#*wN4k5PC1d8W|7vOeu-V4JN#gXZx`TjI^XIaSJPY-*v~t5IsDZRayqpV+8i z`O9K{RW24mR)x*u^=|DcgY~#EDe&LQDO2%BFPf-i!{hp!(UK7V|` zFM$s=LRil4Z;~llA5jmU9Q+2#Ou1qEJR-}(^RUdi;V>rSFd{G-=&_wm>sW3Llni!i z&ac_6)dO1CJE|Y7?L$0=UC(va;Q7%!pVqX-M=*-{BjvWeaLrui?hlrc?t0CIu~v@$ z>ib4de@Vgz{=>Lp?vCpYdyf60MB{HpJax|6Pg<*57k<7d&C$pheKPPDyQt=+iZ5;) z-TIxC0SCZesHOGm>Z&k|HT8ZSW^UpS;>x`C*gfJe%~(B|^}>-@^ye6(BVeAAW|nNiZA3q$G`PmkP;aNS?ZiSJicdPOK7kr(ho*7X$iQPbO2TU;cU8I@fBDvcuG-C7J42yA_r_% zP(#B^{?&3y_6e2!-|%=dNV8wf;CR#(6tk$&M;x<;px(lpu}dCu#8R-4Zoyaw6TLFW zpqx!0Rm)Y0vOINCxeP{LXN6o{lD_0*>%n-uA0J(x+&nO(e7X;*j;CX z9R3HFKqB5IgkTG!LMx#aM3!f~FF6_vVy3MWHEa%qH!bm&-GDQIgps&KUgGbYVXJn; zamSvLq(K7klqLk()R;O^Ijq9hi$oG8!p_FIkxe_28!dOaED{!E2uRU9wKMTfCOa%% zTc%jNP9iOUJwQM~Q9QOCbuF5f{i076YTS}>fr-H8#Z~pz^n}73d~PmRZIfo*L%o1o zNXG7aClqs-f*R#Fzscn9zFJfouV6uYO_B>jHrZDQSLsVB%1J3sqE^d|zR7V%WJn!& zp}lH&q|txTrD$X2a#X~qkzxeb!fI0OoG1cPfU!?9&q;w9_bhpIXU#k``-q8YgKS$~ zo4u@o)iJ06JwIgbNGL3Q+l|vyVEHQ9>fMxn%v~7NqwqfXZIEd%Qou!(!=g}oxhMP! z!oj`v(+kk%uR8>M(nfx{6j?}r*O|Ab&VH6I~`W-7& zT1mJQ_IlcBlSbK)Vh5qg8={vCS651H4u&dJ zBH8fO?7aL5{=KS}EW?*zR4k`jePks0|Ai$)k%rkMDjSK1KDl&>SVE?HHyACZn5#yL zDW<|NKLKE*=JNzD9NHJbV#dH}=xo$>#40qWAdE?mRX_;|0QQ+jxY>t>p?%GvBws7t&lZGmHQ)x_vBkF__%>t7`4 z(~>0I@6SSzpySU#ia<@aLTveHS_CbWD~pJgcz1G|=m(fH;;nXg@e6_d&!kEmY(}*B z#rz0z!`{xY+6#UkP8aj*pV``KJDlbQdGpEtsY>6ad1<8fdWYX`g93l;0+(x;OJiMB zqI9qa><&h@4+5wGg~C#&2D`lGG!x;*$pEQK`HC}T%dj${*Ka5r^9U5}kG@0oKa7lN zXyl(MYQyiHvYjLs77nAc7V#+I+`8FA85z8VI`_NT0A)ISNWxsWx^Hj>3vl}FgnQ5( zFg*;RDaJuB7l$h{0a8CbgJdSxonY%?Fx=KSDWN|prAk!5G|G{qta_0(&nsv_jbiH} zNUf~<8`|7Z36OS!R8d^8QEF|AH8}*67hLAWU8{{R7b))-aNq>13dEyXWU%7*uq8E~ z`yTUrLOdHJ`5ZPluQ+R|09HcePPPtsnFJy+y$|RmN6|4TP80V0u;bITVVjPSlyqKC zv1O~IYgCWZfLYQ^9G6hp#0d7z;YE+sk5&^P z8jA~SfA}Rzs3Z_CGOTLzPO7JPi(5!~IfMpS3WgHmZ{@0OHsK8=HnUu?+bnFX*WJiq z`hr3sQ5QE}LX{ABB$j_0sMr7?>v+Al=Vij&6jGnqVBKJ}ZjnnLI>Gd%Z+2NJnR=G) zXmP8|48G;+79zH@3&dAkC;r+rS*GIWjQ z(9xuGtP*;TDEGpP>BLHPHpga4oRj3mBwTTN*zaADYpjyp{nT=e`6{0w+ZMVD`e`Rn zIw?^y8G7v5@j8Bs9=oRbLms|+V~u|O;psX|+bb^Qc_6mJe{pU9;@W;euFZ4G2$7Sj zWp3>ImhL8Wbkm#PsG3gaJ!n!#&%=RrCXn#XZ%(NY-|+rQ68C%CJe6AjiIti_b$o&g zPakHYTYxmgLr5c1Vp3x3g}AO`!W!wuS5i8ey&`pf_p7*$$b~>_&Tm%dHBaygzovr3 z4XGj+uAUm#7JqGsg=xPqY~|Qw?u0e2i-&6kt6OSXZ&Li_Wb4q0Ly{*ZcV(;X(m%%T z76w+U^9S?os~L#~Q^geXj`)#|x?sELGq+R-f=nAS_t+n{Hc#ko2DA7%YPfpEW^Ccr zq{o*fj=QN+kg`)&Gy_T0ZlA-rg!k7&T|{}k5JQy}{P<0A-NO-1L009&)@C^nW7I)n zuDXx1gWrLdmfXix+gb;^dxy);Osyb#uW*q%(lXTS}S=ke>DXb?fsq+uZ52U8m zMHqoDdPNwMehm5qTJ#2_He-5d?3)&`r$n7af+u8WxpnQuU$dd{=e`4YXIkX1&tOtp z=YC1XMr|UCtbMnI7)F($odfNK9)|in`C>douSC_v4*U)b%8IX|ASN7zj>Gvv2XbH%EAPG^^Vb{QzEG zFnix8P5ni{gguDPa!H!l4qKd)~~cD@m{nU0~QuXJ&MxPN3iK=DI^& zqvLa^5kIA}4;YWh;s{V7O1$j1L{eRzUqkipBTSJ7|9wPH%P6~^ByY9}_9Pu#ZFXQp zGU)Ni*5!S&Ghcqq|NfT${T=`Nd;a$iCtEgMYmYN)y1U9OZ%U*GwMO%l9PkmEh#rAggU&~^C{hDFc z>G!*6p#o>piwd(PRhbQHDYC`83i>lNFh8pdZev|_(Da~%r!MA@S(026^J!tPVY41; zk9ku_Y#ABG{KB+m;u+W^S}t?*{q?uz3W3>uZnw+ffx*5SQ~587(dD$7R2SDaZqzg^ z3P|0bLoy<{7O*_%5^@^x?NFM{ruo+W>>rT61aq+vl*#|CE=>OWn}#E!47` z)Xgl5fXZ;(uF=v?qzf!cU2ISR#Tb9QBPgpTgRs%*mh;c8hvrw6bu2Olm+$-5v9ZZ zZ8;tnQ!oJ!FyzE+rw)^X%m*=T?LYqK^Mhwk9{q51_@6EbLQ~_{M+Zk?TNby?S%H8x zJO*+GdKSsE>W#-Pof-Ulv%6}z!)Gs#{+SqUTG>-(w&7iHw)8mqnzaCf>s~h7DGJ%g z#&FMg9DC|6*J~Q;8(A;orsXF7ly~dL-RD_{Zvbol1CTCRR%2Ga13zb*`%g6#;zU6FQy{p0hB0t0TILEVm z9uD`9M+bk!2ColaXxYrJ8D@-tg+@j+J1^$>8M=3rhSs3jLn_7?OkS}Xb(6T#!u?;q zN>-%g+gz__`5&F^+4KysgS0@7Qc4YmCfbOsl^+JV3HjTU0N#oOhD2~fGPofjj7mnV zVLDltBJMT^6@;RV*1-jy{>_kCO9y8ao$OHm_}U*TPRlI_{%&W zy(u7xx0{tY)|dGlN+nYP$&;e)ldAhUY=c*3;tnte^E{O2WY^|i~S9< zhNtEQj8sog>e$Ywr-tmg5qoM{E?+ne|K0N^|MA`7504HWeS7%B-wyw2Mt*&Lbyfk7 z3I0&q66v)~cLVX8^zG|!4_+NUUgukysz|fr!jMNJpIlXADho;&zcb1WEDf+olN%+g zd+`jY=_6<)bo4l!{^=llmd_qYk#isE_WArChZ7IJ;!?P2|85{QK#e*Y2_cW2I^CS8 z!2ARLlIP_V9l9|ACtT@q8!qnY7iHH!yk=F=dnpf;{E|{Wn;dyET z)>lz|NTi4t#lqQX%!Nml#vNcfeRB>YR|9iLHZyAF*iso|2|NRQX?v56hw7jv_n z#T+v#9zsedz&0fQX0z3ukPAbDxrdgrU1B;L= zeanjom?OW|HPWxPL~!3kgYXq;zO*T&dGPnLW-v)%hFGM(hN~pf;x#!wg-I&0g=X8t z)2&Vn2QxLmi7OHO&o3yMqSA?M`!=0qBHg~6(D$no=BKmp+Y*-QDsVTGz5yC8iPL1> z{$Hq~WfN)m%(6qIxRnapRxjzh1HEU;+Ef7SV@*(65f&AXa)u6b_BYjqu}c6=pKr;! z$K+CepHlb`v3Q-4Z573U+1(89qS9VIp+}qZi?Fc^=3|d&)|@I;)R|1nZRq(qSlu9A z0kZn3T+!GE#ih@xnW2E7jDv(zpb=9Sg7&e{$}^^>wy}Vt8#^k3VV`dh(;~bzVGu{s zmCQ+zS@7{gx-xeYz7|-u$>TP<8+u*PXb28BM=Y*XFPKFGA@<=zhdL0|vD=^r{SKjl zv*FHq*f}|s^fJGI`^{#XjF?l)d7|xsf>P6ZIY-UN9C#{_D(97vUrvMSFSFX{kfpVtVLc^`UZ4dgI+-A-)zMD&I8 zYT0`YS-UjIzIf!g@sPVlxcXfA7b~2=ZZxH7ufL$mv`n$Q6@eXx0@q*+YXh2izFZ)M zH54OqI#j!t+AE7*wL-6+ze}v*u}X_*A#L-fIiscjlnXgy1}@YeDW^8uHhIMNQ2^D@nP9Jhyn&jwX?#8?#sFGG)E~W z3H4!4g9NOIbqb-=VI?|m?e44?E=ihn{N<}QhC&7JE*NFV5e0_tHYDo&*V$8qD}bUq zcnHB1r{{^szP3(z!f9MRGCzU$c{#6U#e8wioa#YcSECZ7HG?QCOIko*W&ITM2upx@ zxrk~wOLH@%^{UFkQtrHxu)Co4Xqd5(=R3}>}D z3{%!ySA6_7b(KBy%S$dsxt4|Z2^hSl`Q*vtus!@g+#ZSVgaFI!6@DoS!0pyb&=UXD zvrn9QviIw)7oE1|KI38>-`@94xmV@%$+QHs!K-}w2Ci{%%|!z(_~z0dzm-3JCx852 z{`dp`kx#GjFGmmS0_|D`SHa`0ZYxCn+H1;2ZDb654EW$mIBw&?*k+l|j?D zkPkjt+cIgi^!#^JZOgz)X=51Bo@xUcluM^?n>1$x%78vK{Z5i@)&y}e^r{JAHipd4 z=HgN`Tz-4nIXM}3@9uPM5-xlhdR5Qzd0iMxptr~OPkY(@d)?-=WEM{%gEjW_EdPl& z)lV=X2<%p5{l;B7LTmxbN}Zt)@jsmPAHq~$0u4V?#ia*>=3ss*&@hFpec2`C6b5RH zbi*s+L(N7wR5_*Uhd7`pG>E-Pf%(3h@G8JJn>N|O7m>xcZG!06R$@IoYwB!E6Fzf% z;P@)xydt*E!Z34#fT|pW`Gy+)3}#f8cl-sB{m8>UuY{)G+UrO!JJ7uL12W_V_XG35 zK*C&vx~6o>-GN30vt2RbZEo)0CY%yg_~~#pPGWP?C-3G zgJdP-&wMxSJIe(Xv(?8mz)vL@=!t0ChkCC3i@&ou=OoFSSB#!B&SwxSHz^1>02m!~ zDzFeoYHJNsxYA7uwQ2tZoais+)NE^jJC13sdf?oPv|y*`P-Ehc6*(<YW#C9l4Q1@vH)v8IAMdedP~}kDLzb5q$(Sw&PuabnxM90 z3=A|c((r-zgV-XNN1yM!Y~O$XF;(P!b*hGEFB{6_m@oqWSlKMIs`T{=>lr;)3;61* zL|HQe9j2ZnFjRBHGa&ipFhxjoOs@b}`h-50zr%bdUw1u7Q?mzqxPN`#YOO(0j}5r6 z`EGjxB!m;{5fS&Ez|G*UIq0xQ(o&DQbLi1Hm<`_il4CCaF5VpeIf0^U?mB`&iKQ}^ zQlGxu(WkR-KpfasJpGdMzdh)w3i>qs7eS~yt46Gi^q z_m-wSNHR}r0^wZ&A+Sg{!FeGkroqQiuJo0UM#XFq8L~DfO_t~h2JL6};!8VDaf>$76<4iW?ev&W3!msAc%gY0uHEa4*)^A?Zvl^bUD zE-|A+uu6Av7tiV+8Aaji^=ObCx(Ra6+71LrY zTm<9|Ps=Pl5WndYjBml7u(*)vc2*%C%b zY9eo((59(8a_Uh9`aYGN?U6ROKz3AsL_@Sejp7W#EJ3B z`rD&tPbptU4;kxX4(FwQy||um9t|C2o8P~G&4$oaH0A9BD!+O0=)2bke|gG238%jC z^v1I=25nvVCsdUgEo;yt_MOYIGW0zz@#VN=uX1l{}Uk$(RAu#*QJ{}hh`--!&`J;8@od2PK&~ULIJ}JltVvu)mkx(`%1Qfj2>kb|XA#1gq6B z4(#XR8^&w0_E6*@%#DA9?&AOXYM$KlP${2FF6^C$$49*A)2Hc{pTnU!ErvU-3o@+zZc4S|?nlbUq_Zn3Bi#P63i z6||ZH=3~_>LkRO}ZFA`5hJjjwadQrtqR*;)KBm$U6}!Fz<}kI-Q_1)`2S?p7Q_>Nu zWvlZA)n-4Zd4RBP27?Mw=h?wgkjRho_^n90bW}ktc#c;o;ocbpEi%KNzbdXE-=PPk zesep0}A6eScV}6B$QVrLrdFY>K3t2SS~c-t^KY|`zAvOY5-;2@Iif5hZuJjUfd)e~ zt&jA;LPb7Hl`jdpl4}|rW8~gT)G7%aunI3K%Ld5U-%);jKLVyPg_oDlXEm>7_kMk5 zi`~>PQm88_z1D5d8TLLhmNN3P4{X*`5Ljj6Q}1;IVPVx# zbzxIZ0Z-Z3oQ^0vKHcx2Kx?>c@&|!4dkjihn9(WuFT=};yup0h`qe0(LHdM-577gn z81q{{9T(^6a*fC3oYKi)V~Wzkyj?{;A6@E}mqmGT*)%1>rY#7(wDjGH?b5G%Al<7+ zhB|t`7lr@ZTs@`#Wb6k)pKM*3z4JSLR}^pjUdyW@>I5Ec1Iy<3PYxd5qd8>l_nwT5 z9PZi>JS@zv@}C%BJlD)kGPASG?6k7Pd@?nW%+BCck3nX!#yy0;3A&kpHFNMpzPGO5 z8R6LLww!+csh88wGIjRM_EQc&n;2ShSxv^Y?vL$QLoqyWKx4t1>*qUj zYF@wCLG%xq1qI!i|GPke6v$C{O{gd#qkBTQpQclF`QOE-Jp}c9)O33pW_tG7Nz1!( zY{`nA!D(a_elndc7fr4=38PPg?~OH~p_c|#zJZ=sRcFKDn`(Z3Rx7}JrwCz@J+98i zy20huRX&FpqoJKCm0VMGGf#%r&6S;a&4A|V0|WyOum^lB{9%~bee>$%Wa{gCToSQi zqI>JRD(a9t9A?8@!o6UmOXIvomMcAj zzq7>VItV1NSc!}|5Wzd0X5LWT)Cz><_z0?cr?Cj6=Wdu}(S3A_dZq5;emNaYmIlo_ zcA>XR)VNMsJ0?!5M;Y6U63Ooq)l!qZgq?PD`C^QRefyi= zxTfITYi0xB4l2CFel@AA4R;a9m^s0nfSt70J&OW3 z%*3Bl&eRBL(7Oh|jffDJM8jNNiImpX*Dmy2Py0?q`}H(GYe*rIz(P@bMl~2DjUHO~ zCeUS=OfPWQ;u{zt-%a=g;_Q!;?=gs=0yv6?${!Y_vB*vzt(c7p`oFPv|>sZD&+`XNpm_ zjJXIn&rO^dHeQPg!dOK`%pB`kF@gvxCEMMaMmstL(v1G#zfc9W2S=Q zd&W~`mLw=}s}9g8D@UcFAM_`eB(s3y${+c$_{vp2v*~6~GRG!)mS8x9U1b zl!sllKMh?F+hZ5M#z!7cvhlE~5C|c!ukc-+4dJ6<7}tS&H7JB36Sr>gq|01w^n#Uv@?mXP!VJsZIeAeGILOc+|@E+ zAgr?uqZ_0pYpB{6Bwl~$yB2x6c`n&Y{>I|78kP)GwIro_SfG#(D*{R-U{8ChkUvSY zn=LcX${Kv<@sjv?3qrdRgF^CDi9tj7GGr*g!zQAEp11tb^~_w!6J(?*F2EqyL=xpt zWB^Yu6AJdsI%@{%Q*xkNQxId$H2Kh6_~&=Y*r92r@GF|c?B9_`fl}s8E5>^pqlv3{k*b8R+IcmbQJpT2LQ~478j>%JjcsEhzW-z+EHI zPn*YmGN_cJM}uI2?mBsbE}8xlZNuA+N?s6Evq@(~j3E@(Ntzr5UvE(6hy$)iL2+dd z6Ej1chX*J>!7DBfaw#kzF31S5G;vT3jlJo2=*1qkLTdV#>nCG1pME*+b|t{yPiN#| z1F`t-yB-bM-Cel{dYXK;X;K}sJTVP0^oV*~Ie!W$!vdG zIMHS*1=YIH3Um#bTo>($PF`W}HJ2(Y!OY+;JnVs7%H2Jl%0LohQ5!vD+^U1Kn+z;^ zTN3lI$KOa5l(POiz0qk%xUo)Zb?;-4k3oogDSt;=pkd1yu~{u??xbtw6Krm>CK^aB zx}SRL$zzkW(pczrQkPLeiN*@Cy=>i!NsD54=ySS6+ecbAbqF;cEi#2)AL?$WSOD13MI zRd0TixRW5KvMAH$)JHoS0KQctXc(iBJ3mc?RC|=uYxMKX%&f{O)W4mZvxl~k z1?(f6NG25sf9OkMWIv!=*Jc9mrrVH6(8cv!*ksqUc?DGW=L>%Vmp6lOPOeD_GG5^h z$Lm>j6pLk|S6Tg=^USwtV{V$p|hAxacA#PMkq7hek-f_Y?e zh&J;(yvatFIV6HE=Jjwx$EVwu99lya_Zi}K;u<_af*uzWsM6?sj5aD!qk51EH7z6$ zGDf{B&W%WSxhB#3%tY<;kO^2OaND>}GIT*M3RFrhIj`Qy$?)E;Ip=$3Qs9sas-b+* z&z@J)?f)+3l@v$;jR9xIH+yLwlJTq-cR=*7s35sE*=JLkFRmaQ30;Awl!}2v&cKYi zgyj98m>)a3#B~MC7w4d-&zFnp3J5r=#^%MO!n~IK41zu}6(A4*NRbQTIiyb(DreRg zPq$pKX%~GMO{=qc^{xhc4P-BU$#86|nH$Xwgj0m9PgM9A|G3D@>CZ<$B@cnq z4mmGipOo%=Nrrhtdd86d9MUxHhgE#FBRplE>#iS8s=F7IbNw?ryjaW*|7%&kO?x4W zCK{S;Lu|;~&>`7%KxCc=+9d3i3&jg+xx@knKS03~&RH5Z`Azft$aR{Zb5(cX_W6nP zqy99LrZPt1v{f1g8P^LZ4HEB)KN&`y^JUoaK2%QH!AfH%@RYmn$=0)c0>s4}zN;i% z0t8+&1Amx`1PFf*Px+11klIb^bMT6=b8^|LT@USrBK&^%JYsLD(!X(*Y8J}){g^H+ zFIhE`j8%1kx$wNb^qPy#Ln#Mrf%NI?dzY9R*Sc^+R`K(UK7u#JlyV$uJz6jnR%nMm z_Om~Jeed4AHFK`Zc7rj4B8sydcT92*gAZFdE-(POWTW?4;Zb7g11YjshypsY6Khj& zICOlBK7()#%6vSu#JdS-zP*mp_}RE-KC?6>0PRmX`kCB=Y_}C~9C`)R>`pNAC=ZOc z6@IQS@3I%5%F;SAD$S=0K)x{7#zOefukU4-)pA~E9o$sEb(jNeqoGtFerp&&luf+3 zNSzQUU1`aj6D9;!9?jHQGAE?D1RrwxQgaSU&i#Mv{pofaN0I=HzDkL$u>cDICHM3O zN>o!M<>pvhi&VRNNZKd@MY1dag+>9QXo}~25AprHk8q#rKFQ5kGBa|i0zfU6d)#xz zA}aUH$jI2^ZnN>IdvsKOy#fCL>ZsBAy4ifRo-fG8CkQc|NjyoMOCM0tH^(j=ute^@ zfDy1s##fC>^NT3l#jz?-KtZ3EEWPOovz&yEWWjBdV4IVG^K^5rS!u#3mfs<1>RGzB7Kq~;FMtsrGZ|xzJ z`cxwsd`K#%!Y&B{bvT+vNNx#7=qxPZNW`|gsV}4h8lzeLq%HRkuMMw-N(`7fQ_pK+3A(^( zO;)^aRxN}Ukq!opu}Jy8SkB`*u(`;73H1I8g=wkJ*jw$jt;6Dq;5f{crW4_uElmaY zQL@V%B!__!4~eC_n{;+Sk=fF((A=2xM!qMD=q%~wgPzM)YBT&|jHX7;I{~kYz9@=MPlucvD(L}Ki;g;TkHo@)2jDuCAXJ#g{t_rTj(Z5&R3A9dr?#0qT6;y2 zUjT^GnVWPDNP$$LP=$2{G@s6wPL`@x)s}X6H&u-euclH^26f2J0b~<81z%}U0k@ZU zW-09ui==)*d+MdMPF0}EfuYc#AR7SZKP`r33`SW*hxPy|dc*J&ZoP>=zKUfF3n>Gi2uoL_z`>NLPYaRRmp=oLo4u)zIBlvaVDn=~FH}MBtqH(x<)9_L&VtQ# z+~STAAE~clW+Nt}>9bkLM!;lXg#^&qq&DkgCfXZcbn3 zXhhowehS>>-bgFX)Y}8%T@T(&`d+;XI49n?KY>n2?Kip}9#hfhez*f->@j7&r-y5tRCvZdlL348nd& z5NdtukPHI-LTGuUqgo~d>Zu^fg0`hew?N5b3U#AFlx<(S5g0ZMQ3UHQp2Y^RaF1%l zF`UHESXa?`$bYyIdMry4nnvlRcZ8`-AhHklLtKp1Y@=WbgrwpmqumC-SDi6d!y(|i z(oamC4d&xPikdbvJL3^z*Ame~k@G$`zsXv`0x(?cL?ONzr)oA~?B_G^=?g(fFD5>w zPFfk`>|Z=PDBfh_r+GPReTHD-pE~|3I5);4t)?d>raFIB3{k{Jt}|=kP@RrVNIv+D zuH7c`opxyAUqe-Sluk`NJ~zPU8jMeL5`Wacj4)c#sY( z=^A`zFzB2H24vQdGZRS&I`s)(w)WavulBZJKhOX~K)b*EEv2Aw#c6VAx`oloh8x7O%cfMKwoo@3ZwrQHglTKO$a0#E!&WmZigHxx|alkwh ztPX8wXS5T&W_4FRa8(jk=d{`Z_@fX2;B@g3s@ZAI#?t$xotSi_^O$6&F6y~zo6QvorTz}&nzt7^Sv8DZr8vG;k|Sj~ zghJM?uE<^fnj_HF;tf|^Ka7dy4a)PB1h~tN3||J!yP2T=vpwLSz!2Se)0w;SpYUuvvB)yp}b6%#PHsCqTOG#k)Q_EJN1hg9!| z!}$2I9_{;LTx+~{TJI_+P@8Evh`ODFyqwM_Xb);rn!y!DA2AczZU!uxLcr5;kksrY z@*Y5ogQExq9>C@DjWMWq_?}610Ta zOIA;()AZ7-?bf}DH-uYN)9yHMe-L-{|Hz6zasC%i92U8>vD_?GxngwlRitE0RMe7G zG7rmFUnL(eL5v+=p&zo+fHaBu*_<=_oMa|Gg)gMj(!qzWN|`^qP9JbKdHG#-3E|PT z|2EfLL2*X34@(uJHpP+fzGkA=8h2Y!ukf=$FyTD#{fj6OB3F^ zwb}`_`aw>4HopW-*z-b6XuB9ue5B8(kbjoWvceV-H# zP!t7B-UI{Dan8WW6eHA8(!Rc3i}~6lPYwhL)ASUsvwD(|98vdkZx=meRo{xZQ$OzC zV`=6fgN)ZGT1H)PF%xsi#|b)cq*Jw7Al>|onme&niBNs;a#3oSiHW>IL7x7aqNT*P z5Lqd^6EL28E0+WP8_@n>cpJC-A%Bg}dQ*1H4#1Q?gVq?J`wtQXM~a+Cis7IlUdtDh zye;C&NLSD|Uj)l)_Dh7ny<*l3R6OmjNQ4Dg+G7C(`q+DpAw1uViwi%S8x8IUX zF>>JYA^sL&`VZmHW3XCu0r)+7eW6&()t5W{tuzw>9S_}Ub!?F{nEhO-n)d}54pHbu z%r|Gl0t+!AdQYXds*O(IiY`ni5%at>2VN!12ZjZd<%Ln||Kxw>{x_bFhSDd ztW7^+{6#U%&vNx7-wa2LB`*-gqK?rq`h)rg(bY*DJ$wK?V7^G5fpO4lCBgk}h8a^} z$U{>RLO6*C^VRZ4A#whK6^PZ?0YlP$2K4Z9iVG~&6Ex01{sh^Q^dUhvK>Xoc$Y%S? zq$?IP`nZOrxqRkNp-mQ5VhDzQfhvQ#VyBb}hYG4lqjeNt0s#~o5ZcAKKqi>dUR##9 zi>Kw&2-}r@_6BxvyT^KY6NP{tr{#SkYwk zR}e$B?q=`pe1>Zck_|PGy1ePwjlyZ1Iy(OWZcZ6QA12$znu}%PJ0ha1_li2q2gjie z`;?Wn7?p|ov7yGaCbt<6D@j>8xJspSR5q-%rC;P5)ur&Ls6ya`AtxC)G?=J>c8&?C z6;P;w;tvJx?J_;hW|u73;0(MJ!6EJt^(bP=zN}vqx(-B*m^OSrCw;Vt(ICQNwWCuu zR2XSTBcOy+RAXSSUP}!3v;r+zIiVgCP?OD<5oa+ftX%cZZ0szg5c|UKc79u`UjuGi{jAr2d0^B_N2|~G$WBEL{-3y zo5D4#&WcGohI!49a~$O}M6gy#4+@wbMau2@n%jN+%wcm$c&a)(JIkgzA848=>h+{Z zrvp;z!mR}Q^TC^w!R9Ui{DXD)vr|9mt&$#u5rn&#;y-L00+$9h0gC}oy5 zOAHH*)9dgoK?G{AbjP_QgB3-h&_qYHP96#dpZezX1YdoXI3J8>BIs35E{)9*`1(JX z4>unSbHyCa9lu6SYN@KJlSh#yc39WbWb?Er)PGM>wl)g3L{EJwB_}m;)tp-L2!^1} zgswMrh8iZ7Er{@@JXpVdWoPVK5}6Gg)~Y&f8Ux;!&$o~(fX#`FG+Q%wgyrG0Mn zfqTAG7y~CT4Mk@w%Ng9O)m;vYq1;X9M=L&K1{as(n<;_vlE9lpW+H zS$rNZGLPRID`?O5XO~OIg#WCj@xR$$|7L$3U2z2NrLr)xu$o25!KxPXabo>DA?fYW ztkE@8;12iDwax7yZ`rD@o2obK43*gPv2kY|B-{J@9n677S6$J@dpkOza+yKu&lz`8 zo@a{PlfxVfcWWo(La^->iIu>2WHK+$6_xuMqJ1NMtrLxEV{Y0RH?N$UHH3%d-YM}8 zjoBq0dm|iU!3;ycO!CSEpG=p3Z@L*oYWX4@{+HnX4IHrXfc{WpL%^2qt{A7eOv^x( zcf}fzSQHNdFX|NR32f1kG)PC`DY-mqyvDiERnOPn87FcMuQM9$VpSh*&kTbNFK`Nu z;YFZU5$iHOpMM(5y+&#U*w*LwnvCGT!Nd_`txef-s6DuMz!ex4@Nk_Q$n zK!Yx9kAA+I05{2_`u9BVzfoj0X4xq!kYEdn#u>T6pdvfTAQLI*D)R9lf13~Hs3#4g zdWR_6kDa|3W(StmhqVzE1|U~9BJ6;^?`}rehQ+3~Gx3V36OYzV;61%GcsyX|{jImq zl1o0P>EVI}p_S{i8@E0zqQ@^}wPP6`$MIL4qHy{>nmM;1bOVNLW)}T$R4$4t<#dym zus0RCULdqX*X@cDSVGII#CFKp3sX!U0MBrS0boejii>f4zx+Tb1CA;frfrv5>f$CM zpckk&Sn3_-13wL&4cZOO9gMa>wZv0>Wy2deZ0{8-4S%;Tl`?Xvb^3eqeMc zGH9MqjAvU3To3%Hml( zp(~E!j_OR}OuoZoKNF6l84EJ1`+>TGEF=cb%-v`ulsF8!Y|%AuR(O``g;EAwh9}z~&qZzZ3Qo}#I=ffJ&3DqncpB--oGp+v%sQ)#2T3-X%r1RTcQ<8{mwQ_otHEAB4p2md*QHn1o$RZZVwf$}O)UU&KOY79 zG}sO55+zYAYM%xH(xVw9*zq54^u8S8(fa|E!JtuzDDjN|gQ5!7eg9YZf zEj^LtwiM6zV{Ryc`Qq$T$kq*F-XYXOo$0Z(5FbN&cXc<;h{G+Pj4EeXGH4L9%Yh2ro!Z+B+eeha}DUxKp0zr?W@Q{5{HS{ybLc+#sfjGsK7Rgqvpfdr^DDO``u67H>g!BT42!@94M8Ke#ry$hZt(DaAKga7J$ z{pi0o-#<7ydZhkR|HZ#=GGP3*@z`s1W1?biqVbtsxYX$RtXhab-{&x&Fn9?^_Z1NQ`C}Pcm^EI7`g30PN7tY)VXSJ?tCKMzg#140DR5R4 zn)(kWZ@|PcN4>A$?{kPNqvI-#)TEKJV?$RHd=z{{%6>XAk(g3DkR=Tvaq$Q&VrPm2 zZvK+_p;t-HP!X-h3r9y(J14@XT)v4F##g+b{qtPyu6jUGT!O#g1#)xfq3t3Rb;kO2 z()OJ2qjRwP&x0SIzu4Jb(IZpM{Gyn?NvFkJ9V5Df6550Fd+=Xyf0F-F&-APx_<_=N z06TLEQqCIcAkQ1c%011;14b+*vlzi(`jcfP>^o6GHhft04lS7%T3Rsi9&=Loq%1&l ze9kfQO{5{uepf^ZSU!FpJ!V4Q!!j74zd1!vGAh7K_HuMW31Rx#goH%c7DL2aYvg=Z zX2Vl-0G^Nal{FPh&II32As=vx94U&(z3_cj&yP)4N!Z~W@WKdvV$X!HaJ+)1`EIq6 z^>u}ghKl@YL*N_r2)EH1;;-nWh8VF;u1{G-n6iQ2AYnqC+bEbupA zUrn=@bVg-|+Hvc@f+f?4Osd)mXjD!?%7(ucq{3MUFo0o1_ll8lyD`xt+BT0j_yB^o z#jQCd!mFJy1vW_``3L&sQLbTpB)HMKqzr=l-?hZKOml2wOmqe9PvZi`b+)T;K^R;J zN8ixGA`7-U12T2c$=+rChAW&1QymL|ikdCvH-!Yo_b|YhLmav3P4~u{{-M+-U(o{s zh6^PJ@Kldw0scIch6jKR{5a;tylgqCP0x!96cte zYsJ**P?V^X#9RW=mz{g=ie*ubd(w;F}R zUwP47mU{69nVQcCkb$7n#Z2K&890}d35a`y7MIjNgno`UV&L)AMqY6k)P{Y;@W474 zhQ;{-NmGJ25Z=9arW%pbDR3kWs+tNYP7Tq14AjWXZxtb4I4RPp={cr4Hn30` z^TQsTt4Nl@e{Pu%{B+X!U^#5)287}X#kZl+Gphg4#zZ>0nx#R$t)c!4|8TejwbT(u zI~Rd?`YzzwhiSqVi=1?MyjH|<*HJ13DYDH<es*N20&DLamUcxosGeN4!7P#_M*>QV4Y8_D#^2(h^ zK3ING&=PB=ZAfWg4UGDOYL@O{70Pg;TRFKV?M8ZUfwnZ{zP+aam&09rKmyM@1}%h{ z2=BCvg8J#Q5yn?EJ9d(ze|8kPQtF|2ior$5_Os>4)3}AwcA10@oYhh_-dF~0zc%V( z^h~0RZVC%yE-V)T>qMhE1RihK>nXMra^$C9gw?GWD?wrD)dJg6q~ha z;+9Jg$8rC3nz)ag%_J~$gP`Sube0CV?TX^JUz;U|G1EVMbnR14n;YPCE`3EiPhs8_ znb(m8`dR!@En}iCwudWa)eoC5N_Xr{pk#OM0g3~I*ZF2+-zb-hAgnbCbIAok2@^uI zbG6#B8|HU;Q90k;0rkCp4i@sj!6k#;_{VF3ZCqUkgBm!sh2 zqJKVnT48nYZZt$IgY_R8ox9C$=kD$GjpbqixMPAVM#~$Jztt+V6{&LyM}Zm-`9x}w z^RLq3-`kv(w9(EMeq=qiN72;L5;kv@{_8#1iZBv1-1`FUw>sT+Umvdw=%bS(WCQXE zpJr$CVLCOzmL%N(AzVc85en4YUhjU0?PZ3V6UH%&JN&n@9oOntT-BaG%Mtb(JShEPx zD_70d2KZhy{b;?nv^|eOU0xJna;ihZNfW?^)&%|mr#Og(3BG0W5&47qKGbH$NE!k_ zEfe4Pl#sNGohtU45qf05ai@9H#eVC~m)vTcIJa4_#XObOA|xxsv=0eez6@a`#`u9K zW1mq^V>7wVIaJ{kf&$v8BO)tL@4+x1zuD|j$Uyt*Hq>ZFKl-u_Jt8Buqu55Aq{dqnkocLvc@WC|A;rQ*m zJ|{3g&BrE-6i)=Ok)8<|6hVravdsFJVkSR5YbdknTS(e& zj9@17=>+0?vK``Qgm}9q3GyB+ROO~YOBs5*)_*umj*e!>caM&ykB*MUx7VB1z>UxT z(b_?{vDG;jmxSVvf`&f=Pw9@aNAW3kDYyxfC@t_&f^4)e$(raHY@|Y)&0jMMM&#W={L?`a5I?{aI9h^*0q2c{)f7t%Ov1b5iNC#r6Pg)D_J~>IS&N1R&}f zf8y&0vJZnKG|4%|b3|TjcYLO(-5&2S`Fa4d809lQPc^LNgZbR-Tj~~ zCXi{&@t>~DswRX-)ppoXXZaaiqi8Bc>wksDr;YX2`WcYB33&VlsRV`H9RUx;_ME%o zH&)Z3`Rqd;o2+SHoHnSPC6sH@s%6wx2j&nS&-f6Ky9DHsKFNfWg$7hmO4HO@2BLlf z@k{DN0m0)rRh-UAs($#2HJpGjAErfZK1}YZ7n4`!C2>>_r~VREoC%Cf;z1F_#K|{t z=Vh!J>hVRCTjRW?->mnS;v)9E56Sdyg^p5wRy-{(vgvkOX6)l* zQyMO9VD=d zvFnXdY4B@5DwlC2^RBv0XDU?29x~EMh@C4316V2N`0dq1NYvhBNhE?n7y$8Oi8EL8 zhWLUKQq@UAT{j4T4ncG-O*4-aZ>eflk*OOWOjj>KLz+1-tOEhpAM$ICf0}psBpr{l zDU=YaYYUi;76dy#kJ)etpJxO63Gm%X@vdu8wJs?}6T4@r2N9H5U9~Z5b^4xsI>4ftF6Aqk?_)=oM`Ox{qt0FI6rv%6> zC>rMGGX$iAPZWGl2MtZ%=4ULnQbbYu)|5=9#TlgLK1uNa^iNYhRSPP@xdRVNos}8d z>6wxl1quUw&xtr=fN@@j_D<(AqP#u=%kew~n@Oz#`;GJXjq~`Gt=LDIvbzGI<3`r$ zA6MtKXXytU0M$fuH@+!GD~4`vYanSA)Cja0<8>8k@{SDIvH7`N+KeL>ZGKg9rW*&` z(pnhsYl6+GB)03h0QP-bmAYQuE$%ar`sB^EG^x+NfGd&un#PB=E716Z0>eJz({iER z>$SRGIAUsnZ+>>ptO)3gAb?ux=**<6R?7q@#9*=b?V*03!yLhGSRRJTLuhoo5s|W! zyH{Q|M7!oE_JiYP$(j0m$j~bJ@MP2^O_(6cN_RsyxR*6}B#J+J5#8NNZf|ZHISF7@ z32&A|D&yGY05v!?qRYWc3nUiHLJIl23cv`GfEi=|NG`P~^NbfOwl%>CM^fw=?vA(# zcehRyNjWz6-BbGN@bUu}A(%LM8=pQ-9)=_1NO`E=(?N);!sXGNF0lbNudz?X9(H?3Qh3bpTU6Ww67qB@IlIwBUOnAOlYIMTgD{)%ixw)bB?FUI}^BI`FLOE37;n9&|Q?ViZwb@&=1sQLjwep#dbA=-l1>%(L7VNOV&IWdZ z$4Zm_^l~yQ&J>zE2Y0GISeZ^$4TUPuOv&E^GVKD(MQ9Ih;TRfnTByrg=8zkmU_hN- z`^4%8MXWBEAHS{nB;A_`9B~40t11~m`Yl)_7;gYX+ZVaOP`}!`vl4&#iCFZ8hb~D z)B>Egl;#iTG+Z{4Sv38!@az8-g^%IMU{EWJ-U(7)O#gxyhBCM>L%Bc?UGC|#DCqQ% zJm;0PFf1RkD`aDM3RbS*@rQV|ca^Vw`tsseZ{)qerz znFXFt;K=r;`62^5tvWkbWG_#ht_Ttma2J*$+SEv^C3^{v>GP#}nQ0(%GQ9|wsEc_HSJ7`u=>9Jwuc`g{!4Rs6~%S+$KyA3BrV6m|% z;j@T6FxC)CYD^;GXItJZ=buow68ZjRq(3!D{);0=oXbkc;`;;VwUt+G8Id)R>vnCyuKF z5+5Ch5XAL8W_>q%Oq6nbc4WjI6jLd>zasbU7bj|onXUVA z3bpycNd_yV$Yvcc1R?gLP>2&|ibN4sWU$opwjem5T8vuKf|ymkU2(eg!2tOnd#i`| z`TVztj?B7fq6^triZs`xFK5;trAFu-7TbPIF&H4kn&Ee^{_&!VjgG&c@m7;!6Jt?| zT-YFT9>9HutW5K1dIr%J=d*JVpeh<1j-Oo8akdQU05<=lmP-psG^td9L&K znrHFD&M(l~hM3sse7)Wx*|ST0*#&$4CrbwO{uQR;*?)WXM70m&!+a8(j=eFO814V# zTSwQvw~N6}Pt8P5F3mJ4s_7`bGHSJv}cAf%Sntu6dd}5Z33R%8A^BHv~YO>R$hNOr^Pj0Br7e!50 zReTA8J(soSO0kkvUlb}CIu+r!tq$1;37k>v;rFU8u#=5(u?JNcz@KO=RgsdE<|UWt zpStLCVup`wGh#BCGDaX~Zwa3(@A60ERn>TQeWZbER7f`6ZP%{y@K~fP*ajS#xfU|I z45J2DBr~X0BgtV|pna8?)ne$QmK!_aXzi=l76<(UN7S z+jgwm-~IWUdw*Hj@A>8A9HNUY~B#t zdB|1RmXK;<-b%&KG@8af4l{HoUn9Gp-2X-$78|0oj4vSypJufM;dyZ3Wj+FhNe0QP z?v$Fyn0AinRLxQ8W(_yzb&%hh{@8t&^|wG-b-2V~EeDgM^bNY5OwfM=gVv$eM|FTY z5P2k6%h6?1Kk^pgf&fW`Gk%ybQZ)&>gIZFH&pC%18W3P~k+9nm7CdBUGB3})6vgJa zxlU~e#e;14ycj>$m~bT@Nv4}{KlG|TuLc~4rYNft*E;%ei$6b_C8WgVH@1hY^y5R; zb1=xs4*cb`m;izS@S|I}^Xu$7#NYaN8@E(cGbnc{mV=kT%+ z`O)dsnZUjt53{mN9O6`*ov~U)Kaaj%K$_s&hb_RkH>2>JGgRW+_P!bHQ`4x#7ZJJ# zjSG1V0H02I3dZUSN^eO%>n~`rQSWI1M5VVDyZyBHzp6QD;BAeVwx;V&;jiP2Xu)otJ34Ka%m8mh=2fzu0fVk zW@H6*eN+o*Q72mnTj@_46S2fK@{Uek!4*-793Y(d5*Hskov|LBp9#~n zqa6#Nq+ZvL&*tij!Dfq=QkqI)8I-rpcCz?zv;+`pA9Bu=HcKXs*^*;ifYTKjbJSLx zOkE%TxD)OYb{rNtEN|iCVigNVO_;V@XwM~jeu!P@c6sU87NwvQUV44S`(P9a(mKO0 zU_i^JD-5YL53jb;2_VD;Ei+zET>c;C zxInId7a}1vdQZ}PNamuLqn=g?I|s2%^t>Ui2@-&1mQE=y9146fmKx;!I9dx093t)) zexH@ZDrBsOnYfhd8jz>--6c*HN$S&YJ@5Fm)4g#l$781O^1(?17*K<|=ImIwR2}}o zQA#vidq(Q51zk5cmWn-r%Zxgt=zD5hQihcg=<5B`N!bx9M}8Ug$A=}KdX~*nvw#CD zVT5QT;^(dc4yQXvsN!~q&wGA)3G0WJ6{)Ih5PImH+T?*kid(FQI;niT)d!`0ev%K> z{XLjwS)^Th|Ni9?fu`N8ymUW|94 znx!fuxlG?=msPd{3(P-^Q6)e1kEt!%z=FMXgh=h&RTL@^9?fRuvb9|f#JACMMC5^? z8diM)q`VtO(gd%@4RXtL$ZFzNvt(3Ygr~@c?a**S#$Q9?Xk&IKzAKUYa@s-mQ{*mm zSl4BenmWDZ#8sqk)l)&?7f#t)rp73}${-yZ-f$MUc0CM5FM_)dB6>Uv%3=WMT}ryy zmSmAFkq1%O3M}{`p1%uGG}wC_$#Op%VLo4d8N}f-+Vv0CBLK-$z}q1{Nw#gW#*jjt z0xAy^NQ*6$m>8_tZRbvWuSh}8w%ZtFli7J2GX}I^-_d5HDTn}|6H-QF;9LP$M%^k! zKTfkTc6Xi+1{ph=q!Qt&E2%IZn2&H&EPL0$mm9sJ(c(-dt5yd}@?*$-G0V%-9IWk1 ze-2&KRXceeL0m~Mo#ts<0dqF&Em=^w1G22c22vXJVjbd(QLoY@5v`n7o%BQM@@^gLa z5k&O?y&()O*`>hSqcir0t{-MNTYk3wtFy43#6h_48ZzY}xxgj_g4{X+qk`GIZZ6R1 zS)%T9Bt$czcw%)PR_Es-6a*Q&IDipnQh{t>HqM?w9v@_>b~Gy$Vo;c}VZ!CxU6MR5 zq;dCXz|Qj*&v%7^GsF-QYXNqRRSqI>r7`0It$|6jsLkD3?&z$((-U!cP%6JsJF8c_ ze}BFAYIo=3&Fo{$YHNFYcYlBH@zdRpJTL$CteTfAE>j~%{ozRIt6&9^?tDV=_M3cS z4MBCTB9m`3Cg1iFS1u53#|O|hpcLa%yoDMqxRUNGr|jAayxy=4r1Qkb2 z%b_OE2v)s;S;IGh4KMQY2*&GQheW#h7*TZLjbb0dCB}&w_#(-UaajMseL9RRkzPn| zHBfla)}BK5l-Gb6^`4@k=@n2FdJ`vMl0&6}&{$Wl7H&t4w< z>&JuLe;(8sAG;zl5^WM;WYXrgk{&y1p(GWEc0|mP=S#m5y;Zh59e;w&HlX+kHvHBv zy5S$V+3vHcaG=g-NSRdeW1;^Y4==ehpe(fwL&%N3&C|qE>(IW;N4e^+?uf)azUd+9 z7tbXUPrca8kg-$?KjQOu9^S=#U6m0(=qB93fz4+<7Vf^;qgJBW4rK4dbBxg-puI_Z zTX%GF(iKeXN`417g+*^(y{JOaAHoxC21jkA^g`YlJoOcUrZ7LGj8aH4UMGLIDYXw! z7iS?Ef!4>(N2ApT08ugZ!HW56exX3QHu5@WN_3K^aQq*eFoiyF3KXz*!%QypHzy#W zd?TEFL}yt%!@rNkkR^vjEvh?b%3E!r*C}~_~vqw$su%nOx2QUPd6mKxC(6?HDqIUk37K5Q*qvpxG z27*v3Ve+CU?_KzLufuUQ>uX4X)&QvZe6TQ@zc%$4$eZpS67Y1tQyVn6?g_hSu&Q}z z#0y>=UES2mrBro)O!Z0L(1@T`9m5{S;MW^CFnH7|gHMaOVul){^b&l{=QDsLY;`(K z&!Dcs!Q@>}%Hw8ok(sdaW~~Z26Z+0OSqGnhiy|2+W()ENi>&BI0*b8x0!$a`%O&O4 zR;LC20x-p4dUl3+wM`cw86*hm82ryWqr38i(+c2Je+e3vch088eDe6R(djfXb?r$; z_Ja-7S$=cB>54|V`h$a3@|_VK8DJuHvHGLD9Gw)yO$1ZQ9MMe<*gdAtiN3oDx%H|N zyhPs-WO59*?^@7cQ);r*dkxRx!{q83_Sdb5YZO)rq*N(byJC$LWH=H%6Lv2ad@Phh z)&(5Vc`@O`p(;KmvwEkc3w2IyKu}os*wZHqFow!iJ}bMR!Uhz;PeTm?2;WlN*Q;om z(QnqH1aeOZ65YdW9bKa$W}YIw7uOLv!eDc!O{->=F}>rvO|vzPNTFoI)SF4#8livo zb%>@+b(AbGT!5B8hpWI658l`iA&ScNDYm>RbR5`PxFvNvK>aP)26qI}KW(@P?kGnH zBTZdLba%TH&2G>@LktCqp~=@qvKR=F){khosXH=wA|acx_dvr~+4oyB!Xiyf=@isE&k zuONZ7fsZdB#`n$gXk6K=>F6<}t>4gi1?jrNJ0r+rVVF0)4J|;jq6O<-G?N7=Ol@aQ z>EYNoT02~UN|*RD6SagZHhm*OBw^7yRnxwD;%Ymr%_-$w)5L8vmNSG*JJg&w4kD47 z4IaR?4Yqb*;y6y!me z6lA$vB=DN%$k|hWlJTvgPAyHN&H3dw>J=0Q=0P`_G^8oa^Bf_elRM*@bXLU3) z0+4L5Yi7uE)u3ZZ4|fjY49Q4WouSv6w^bNo1g&MsfNF{4b`?7;YYbuzh~;M z7ek=7EBoBVxuA)oHZ}b^p-`>qkX+%l69u`D6J~Qf|FJbnXf|{YW60|@%zsu$(fXKL z0TOi**#~GlO)u8X3}USt=m(lZP_cKaOwsm0f1jf;XbR_r$QTe32j569fP6~Rx8Lq%MgV+F)M9JOlTlcY=0B#o7h zInpBsqn}LxR3K}mv}Qzq6757p-X+PSN1Opsi#Q!e5$nBywfP^+iHO@oFJ^Rab}Sn4YbV6d31_^=BOkptkUS zg8FQ5j1fUxt(TE&STi+!X>8;V`>MYlPqTh;Hm<}Qjx#&$(>3PxiwM$1zuU`qW#k6p z>YrQ!m8-JNj~ zEwsYt2&9Tpv!;WBJ6zixmvfSh%mfc9Yuu-pdv;tjt+#w%4k`j9k_7A5>2!3cla57N z$)n`(IKiwLy4Mtg{V8&IiblZ=?1y9zP^9>VGKXu^RDB;eBfa~`55_RvBk7h`U}WeK zCd1u&yy^m}*PC&1F$M@RQqI+)#(epS?&MpuQUH(GgY*kW0I8KJ#!+L-aoucw=>a0E z<7YcbBFG;IB0wwwtqXTwAKR$o4v%4IdF4-gS zH#Hd9T)L9&AZSo&#lWBJd+9Q}*2^diD0E#BD)Yk<-fP-MB)SI)@VH<_UI_`>X5=kf z7<-|bbo8qPzNp$gC!M&LQeFozZpAW7JNxPECexnYR$f;n$2LS{qbag>U3nQI!nY(e zs0}F8N}Z*pD@Coy^s08v>W_Raq*W#fvT_k63LzZD7ADuAKXUd|!wzA{s8f7i{vE`R zOshR~It0fwAXtpx@M!Ik4crlPeAmh8wHF)3T@&_2(l#~RBEFUO@?pmy8e`xI*Y3$ph^}*<>37xin0aFY)cX?(3)l~4eJ#p zqFx{{NdSJziX4D?BC?PCsxBO>xsU-{%Ek|<`y5znBnT+OyTxQ+9fIO-5xpC%M$k|Z z-M&DEtqnTnW3e{Ti#ttu5DJ2CMYw>f`Lgg7tzC2`9nGtnOTdfYhz7~gM0A=Ur5EKZ zj5(8@GYzQb+7Ro5XgEGNEZ%XayZF+LbXTq7sg*QJF4$f`4Ot>cVpK#LWqQ`GuDFBb z8saJ}FZ^(Z@POE1U#sRo)6jBU|SdSsNNp;oSqi# zUu^f}-ibH)dSjt2Y3;UoNcwBkrh8g~=IGhIp-x|^=2ncG$F48auEP?ED zbzD%AX^F_7PLc&W5yyLkEmde^&|Z(ix7&(L=d26S+WZL?=sI6 z)$hGeT`g>Kloxq7{4b(Go zbbkVe-HK`{7_s^DpxKSev#yx6rLQn-~urh<_2CEE*2UIs4R-nbgU#s*@XI;CM0vtYkNfMT#gUSk?B+uL^ z^NvFM_jM3hRRO`Hst`}Fsu1_Os*raxDE1b`Nw%SIS`5DhlMKBU%8{ksE&c^6E}&NJ zmx*E?AV;A6g5r7zp(;M9uFvgHW;E;v;LgM#)1mz_%Z5%Sa9HmFg;o(3hnNujJO`vl zxxpbsVqgC{g@xXiKfd7~7ugA9%^Ex28R~p7^cHS>*A7YX$EBBp8MGzGY>6RTV#Jm+ zAh|9mUV(s*q16;9PHmn(+f82A2u^y@d#ufGq! zs@He;-|^2CwZDmfw)5yK4sJHR^nbetF)7NKIxuH<`hB;K`W-oL^|k86RZ;BFp@zvDBO8S;m+^|xc`)R&wyAmDG5R#>*R2vk236$U2?~QN z6x48TQqA~!hrKEqp?aS+TJ0taQEb&0<8>m)*qg1a5^RBwoVzYP5y#cB zgOFIew*2>X<&4SeD=h5cn?)7EHSoO-nz?vCD0W_euyMbto%brl$`=E-|58N9=Qkr( zhObB0Qj5`tq$|nC*sD@e0iT%IsPxzbCGlscwwiu`!Wrnd$ZHM{OxIAq!OIj|iF~Fi z%d0k`guF5?<^UbEe9Q19b3Z|_^<>e@6K;(221Sd-YZNW#cd5Fp8cm09RkVtDwY+kC zy(0J&-Z8m7(lE}Z``Uw$m%uS-A8*iGoD}caJ3AfZ+Oa!FYBjM@J>l16%ie{ywEIo31=P|F>{{TV<+1j zVyRlb0le#tmW*P{cJ107a}Dz~bWLFmjaa|7@1npLH*Bo;4$UF$Mjmr9zVU~=pZX)e zZ-;VYkIg!$1ou~eB*G29o1NBWxY1a|TdoUW$MHLD{ju?Sw!4pv9i>&kV>krRJ2r;9 zRO~}IeT~_{9!FfNZK4Q3Ke6~Z9=M0WYFCYBZ2~4nNP;j|cqEDe>Zpb+hOV+wl;+fa zK+aKlX8r2H0Jd7=(e><^6mv447360-lfkxa_zw(w0alS$2`DR2(Y#SN7z()kf$pHL znvB-a9H4H1JGK3js5aU^X#<440hrRKQ#Hydm}p=f)FEJ%`eE=9iw{FDB#z>lOgpV`Ei>C4 z9rfgz-2Cq$C^{DV0F+>_-&@`<-UjL~b?-V9jx!H2i$yuyqUgm5wqz0s;$)ju{?x{F zsqXgr217Ez$`R&R(Yu3J`Wia#ExnPB#f9ll@vxj0y_;Grwes!c{ePlabtAdI}5h?M}meq5! zLFnE$dp^K@#FbgQB11lsiIYoF%Ebq%Xh{CZibqeLd*}ew@kaH9j_i@UL%k^EX~DdM z-*67>b2)RaG14B?i&>p;FHRl-v!YNjS^Hdfd$l*%?Z&&hcyGm}4HtwM2C;6<4Lr$) z#rUiQV{ljsiPG0qU9s)g>ssLMURQiQ$b`{AmIxglhmPxdY!ZE|J;W^6LJu4-Cia56 z)$y65+6%FB_%xT!2pr$Vo_;}duZ@w>PF`r;4s)&S`K?2Bw0j9ju9}_dradh_p}-z2 zGU>7SrluXpD0;1=2NDYSm*f-h*J=8WIz#CMcLmm=Qw{H&kQ|?@S!8xk#0y_J0nL3z z=DOOm6Q#C%=)f@;I94RQdJD#{A-!s0w2}&|2GpvV)RSaeHz&!W-e?%}*6H+fWIR~p zQ&mAR{znFZ2}8detsP1@K9-NLjLo4#=9;Whr5{rzD-{NrwSj0n8D?#8FGdYm@>e8E zanIXSX?yZ)r zBJ;Yg^ByxJ)w=^ZmYP~vhI8q4O$K*{n-cQsws*8DN3u-Azt4 z>cLf&1rG6#O$7(R8nmF?%R4)s4bjkF`@mYh4tWhSR%8=56lGvItAY{faq64POj! ziQa=xQpZJ7F&gi^_<%QO!+2MI6gn)Q1r!*DOr$vC5N^=KId>C0X>v;6@L4u$;NlFS z8c=JR9@1WaRDB~rBvy{}(QvZwJ@avi*&A#kGA`t^5$qs1si{}(o_fdbH*bmgYL^Z- zfc0m3GM0HIu3ch{Zc#|4Id`gC8Fhhc>-*LXeGeCd!*aMz;yX=OIE8P6>d_b7%9>^T ziw%$Di-jf(LJ_WbO7dy<@7X=KqJMhP2pu)}Q#`J|204ZblPIkiMUF+()#TWaaDvmn zg0L$i`|>8&7-zv;C3KN(ghbs;c+Lnr9q7z;cQq9qmJMe}f&6U+yLo{(=7)l*bptdI zL>5K3`dAm;y8!1Y4`93IqiHN!HGgV^X zD2EmBXkf17c0q}mWA#zSzjSS>Dyp7kMWQYdc+3Q3gs@^(^eIJBMxz4()2Rvs9xFRF zskYo*yfNn}mSSv74v%lfR*vVRCnU0eD7Q$P4RJPc9rsoc8ls^mmAN6A;d$eJ*}NR1 zDR(1c)K=>4D^e#fP8$&az*k?Mcy)(qIoqqL|A{HNUxkNL_Ko-=?^CqmkVtbp#toqA zc>bDxhY&TnYJYD-{qw-|sJZ@ja$gnPy(_K@N^ZH@;k{$^RGD9SayPku-29j%w++Sd zi{5~^c))@1_$|OK@#=kyyYK}tvb401%FH@M_opCgKNsOz8EFn*R1#BcVu(xygtKYh zrvSI=h|#oIKD08cpOe+L#sGXlI$L149p(6d6wnaVj^pm7<4X$Hc~*$nb^KJSrWFa+ zSaq}!Q8z)WN38n}HA~3kL&e2v@w&KX3vK?St)F0a_gE0Th`#>C1-*8Hp0w94!xQ;p zL4_To?d@2c!!6eW(2!5Ir;n$e^Cf?&e7P z12VITZgGYp?mC8Z#E-gTNEV>~b~8V65;_G){6d`NV;$IEQR^ZfcCUyLIt}Q+A}V1!dM-<-R&7pw3>5N6BB5ngAYLk|Kmn| zk6(Ws^?g_!J$I>@cTj27SU)-{*PBbv-acF(VF_N~`jytPBudq(+p*HBhpV^f2h6>+ z)&Ae(6?Q6k(|_R&3s$8Ub+7%G_K&NqEJl}nhQ(EwoE9?_6=BK(-FL$#b9aasva;H& zA{P#WdwPt9J8TQCFjyUqK8)X!$}Tkiwz#{hvjCK$eb&FWhl@_|xGNtUzw?@>xs?pk z@|<%ts&}&NgBMZc8M=-ioW=VX`5PV-6LUOm~1fO0Ke%vvA2@K&h(cu{saqB$b34$dN^l zz469i_Z>>=IVLDV`~0!E3|Oj53P}4mNYu2Yv(xId2#aO{8*jC|&cLB?dk+-zP4%uf zDZPMP#By`(xwcC>Ws9G9Xj?cn3P}3xSfk z72ZjbZSkk0KXA>Bj!-a>&+6Tf>X=vV1WD z6B-t7(5L-uc#4OszJF62SDd2~K%ZUenu1-sSZj#{s@%oVT7j{@(8jjZ)9`*f@v@eX zrg(iX5T~g7Kzp>3K!r65{!V-bSqon;99gY+l1|GE$9K~aVEIRr&hR>&WFzwt2Dm9q z@HTONE&uqATcKD-XJ!9vQk_G1Ngz4G0Bj6#O_8j1a_bfdD0&B#at0Hv)qP=SMRNNJ z`nYakNP-8#otN?6?JG4wc-qvIvveTD9iN!RU;QQHbgcR#x-4;ID0{_Bu+l?wV~H|cRE$*s8S=*+ht|GesRrI z!?&5C6ZA=N(c65}%_;gV)`g~|xo|D;BGG&MQI@mh4CSK44z!~?5MPdW@s|UVlxh~k||;j33_+^$O!&MZa8hk z3*C(t;Co!xr&+(%RL7Hd_aQSXB{d^bL*rO!V8V1x*WT@Eae*$^bY*(1zNNQ10lh11 z1;qOTj^Stxu1gyW)hBovd(HTE2amm^+|;HYYOg-}_t@Qkq6nM=@HaY)>VhYvF({El zIxK3W53{k6j!rU*!7|n#t=qoTV;et%i+ngFaS$a@2dfO&TwD&TJqCkp&`JvRXiYD2 zjFE&%`@l9}nx*RG21_0l=X0jcd$p`pb@rxDBCe5Kk?He1Ew_fV1ElZa?`fVsO;0kn z<#{%oWK*|cKHlp06^hJH@?k!^JeX!#q|JJI|Nf=h5c!S#^b#}q;<)hNZTgx=5@~Ty z)_^6>!Tjy__Z;4(M!Iy9GD4W#|>vP zaGfG=KTHVq8DgWrI!i+^o7g93*^D2h^6}*Xz0{y|s|b05yQOvxd-H>xFbbfNNXD#y zyG?Ft4agSQLe`1Ita}X_6ku2!dplRg&!f)_6MvTW0~^-3}t4>)ch@l?{cNV|##}7G11fU_JN3jC6e|%TrHmdt?SvYlJ zMLP6YJQwJ!ZmoxQ%;Rv;5@QpPg1VSG<*iU`rP&Bm6+W)I5mK5-Aa}I3CGZ@wdKH*1 zS1dncx=0AY>qW05+`(2Lj`Sb5RZ}E>@<+Dvq59@iKU7K0`{c#EG|!U)#wnR-Gn z7ePV^2R`{@qOKSvd`=aeriesF*Dz6a$qM!OL)uP-+(xRxrOBs^6dhhUToRI(IxV!C zId#%kP^r#FuNFimiug{6(xbsf`Pn(gY8#jN0LgU>{GdB)%*#2BoI*IaiP|95)5Vn2 z7o~dqOiL_08&Xwx0OLF~snFpkBwl#Qi))zRrW<}sjSVnsH+7^9Us{3F=cf%;2IJR9 zDw7j#3ab|JWaFW#CmTESpKOQ-p=jw6Wfc+x%ix(-=57PTgB15?ABvl27 z4R^rV0-lbWFgjRhCER!IW4+}1ufSa6nwM{4{@=<63!>}$yQgQcXa^5roMYNY`g`@= z^q`WUak+gAh?`Hw%~$d7l{Cp8KOggaC!|f_~d@Sgv$Ia-#mVvt?K z+uIWTqMPBhn+=v71iQOIKgL1)tRR;=iux2{sE>k;X@Mr1}`TgU5w> zPr>f=4``;zC<%WT;wygoGUpYWJ!`m6&h+YrV6~( z2NqE4_?^!9F)hc^Q!y(e%Cfy1>`>{rhMWk9DQm@alTVQ{Q@i z;#OJ<$oI#WXvsv}fkFGeszSgUI_IPAEJ*SAq;_UOP7Pw0}H~<;Hp~4oeV;HRp#9Tw+9#s+A? z(q^}5rHj1afsV$NCNU_#N1KckO+I8;2Dn-%(x07g9*vW)g<8A8MYF6_d@x3CQ1o#= zBze1jX2>2FFZF)EfJ|%f-r$~fX6GH#UHPa}LOJk=?#_K>dePiUB6B>$c4WHmhjJSm zV$^1hsO68p|D1LTYPfFl+K5MZ(Pp)Z#4s}Nd}<|3Rem$Sn7;atfBKvV zYfBB^FQ&xnkTB2j$4eAzI?SYucbBX$rrD@a6?#~XY0lEYfDJHkptssq3jGW|FADo` z*SH$=?U6rWkObGHXYpudbiWv)VK)48Yqe>{F?O?q9AkbMoG}DQRq&B&l zMG}A_=v!6#Gl2$BqU0|n7PL`RUnGEvIJ5Lv5RVuI6xS$@cZjG5H0Mp7g^rSi_s{d; zpcmay2w$O3wBhL5R$?Dkn+g0HLF2#s~yBP?=Ssiz*oor&t| zOB)RA^ zuYP5uWB82zL9C?H4$Is6xQN+|_Q8^3@)wJA!P*|}9~J2VWyY25kt(Zc9UQA^8J;Q{ z*azE>R84IE(TffSl6BRmHiaScDq{3zzb1yNmQ{DM$u#SuiKD4HFyG=ek;sbFZu@sm z(JpXL;cXK2>0=wDaFNR1#_QU_hVx_RUJ53pf_uT0k>?32n{3E#<(CkB6kHW`(3+s( zMAvAuGe=!7FZ$%t-ItIZ_EgwvwY|BA8|lYCXupS->2$%OCRiiV$19evZ^0}9?*^S{ z34A-{Ds{aWA#7bgrczB$l?P?IiJcSN=f5ek*FjZu%g^a^Q2hYeFRwDQv$iT^Pu!VL zT%ZG%pgovR0;uCDJXJ)sxGX$__7FZh)$w(Cq9|;N!){y9vvaCTWTU-7fNb(X4Abm^ zQZ;rksBNt{4Q#~eU&w3FYsUH+dgNrwr^Wcp+tZ=?6mBWV=3ix})2uwVRY9Afju^i> zmD5SE{iAde-F;PeZxB{hyA#x;MKHD!)p>D@u$(4}mdPi>3^#?q6d6L>mMhTCFq}da z*~{}{>qJpHX@B;rkUKRl+9?;bLDlQEna_&JFuio^^GCO;n%5u)E;Ai&7o(ALlT@R= zEmnVHx!c}85bhhL+KM;Af2&lx`6O(h&L~&7%c)1 zoD)?|axQL@#bDb%S=#{ue|3Ah0M*U$#f~>+*L0`V7=oUAFD10W@8MhdykMwRcPI1T zAk|L8?$i`}trH;DjptO>wqhr@C0NVuZ&_IVIg0)J&O|p z2iZ_9@-gH~cffb1m`@OrpKyuW=G`oyus|{$qpDty^MB9PgEtt%TIOL&d?7~H6L`pquHd5Ui#c>v zE41hunT9MALW-^{&5*SW#oCnu3|T`FnF5i}87?usC|rYBA4Izk6i$4U{pR?Og(GDF!F!UZh1q+M5t2)Jn=8|Zps z1YOUO33R34z^h^QMv4o#j?4XbrHH_*K}3C5$_2a{5#GLAB^jt}>M--&I*~wi7kb;H z5`fBPns@J3@cmxH2*2K~;`S?>3Z}4I&E!`#54YK4>vcnyGw(VKyiE7)DP0#GJh&EVRiIIG%?^0<*!l0ogp_}WMt z9W>47V?|YmA?>=XtF0E}Kf5umRWxxq&#uR%+KN86+4Xr-Q8mh4cB5=*tkr2T^{PK9 zrm>0^P#xCOR&{yEuFGwTYL<8G3jWeoh_Z>@D0^ueh3sKBWGH2Imn-c0Jfx^<7{ab) z8M)YF0lN;T=+^NWzHW?7beqgH1uIxWt`TAHx;``LRYk_GD|kOH_gT5F%k#Ol^j))D zo-TK}wywk6ah;G+>v~L`sVEt=uH@plM!=GFJ?_oai?U$d7~{rGVw_huWYwJ7gx;7d z(-rvVB;Myf|hD$ig(-w<7kJOqwihW zOs6>`{!W{NI2_rbqGceEAXw>KB`N#pU}RGa=4HIyqTHHo?9}pEHE$5$YqrLh>Y-0@ zB=kC!Lq&-CqqU24Dm>^yDlMFgN2G-nV&qj=%cnvjHR`B~uzHN5h}RP2gu91q;f$Zt z`5-SSI_2AZkf}e9Iqv=nP092wW@cc5;2EW1MGIRR-B%S3O>dP zyNF<{uu>fNg!QC3Ol9dewWWWoE&WqnDVfVume#f<^BK4Fx-zam;+@Zm$SRnX$VK;g zt;ih?If*E+#wp3Ls`rwAxtr)ov;4~vh(-Jg?!zcczo=Dy>2IDRxQvVu$Sy1D$dim# z5Q52gjVi%pUF|>`Sy$PULDp5Z`x(}9Wr|hhM!e-$kYdHK@iHWcFH?;45?-EwNby99 z)itz~q`F2_q_|9VPmH)!ld65K7Zz66j!FoZsqRR%mS|AFHy?ql41|9-r95L|yReok zgNwXuo)j)#Lx|!26G`9-$y;>Hh`=pgPsrLTD;Q~8WsQ$TnO8{K>gyT_TfCYlU5ish zzMw2l6PuuMo(!D)}BOwE7^{$d^?`n5RI%R9UAQz?R^^ zLg7-_%}3(XD#c1SXX&IM$;C=;N_mTffJ&~QooiR2$&+&76-fHj-t()C4uk+op6fr%JMuO{(P)`hqzgLEn?>Mtg8(bpJz z=&u;@RB$=(!d($aCnhiUF{j4_X>Z?xg|4Hs(6ngo99Pm9g_Ryzg zBox7ZF`xD`AEZsjDN~sOf?}qxRzmUK@rRq=n66kfK-U49>&n_;WG<}yayUQpB6Cgf zQ!LT)G#!^9B<6e%R1cZh`iUrw=jO;^>$`&vuQrNlr2jB=HD@j zUcfhuPtryj7Him5FV!VSdLUyexPoW9?qz|!c&l88E(}DQ2_{Sjyab+U*SvoOz;!y976WI26lQKx#376eq^)_&_Ud5KW zSu{~E?=B{Ur<5u11bL;LjcKT(Xtc01UP6-1`lj0slvHmR#p7@{%S{bky=iz{dtd8nr% z3vp7aXv&rqrofrzLub~qnmL7sW*=qX3A=%>Ft`N8sc5KP&ay$%J10Cyi~>I^_`uwA z<*uAoo$x@;vYFj62y@|M1UJ-0Y~Hpfa|56w`yNF4aW_Bci0(=W-RNr*>qVYX&@W?2vyj}~RZ5^Y2?HT!glOxJv#mfPowiR&h& zV=+k`r(XsnGO%~+R_**mJRlQWsn0`IZIBr{KB9}moXxgI`n%xqN&Fk1xHb`FtSrX~(Vg=+VRE z@OY!PQfD$R&z(JSH(uiNi_yDJC;kWO_GY%hw=xXf$vw2Hn$%MN$wo4o_f9 z!?cbzXr&rOhTliG&sH}3n9Un7T0_wxvRkK&n zcnaG;Nh!>8KI7ifvQ7Bb>m~X$2t5Bp|0$a$jkFJ(Ji>Be2m(VPn2Lyo%jTy=<$8)S zv>33zySAMlRz8Q=r22LH2eX>mRKtC^V&A>cr__K(hE#h*XviU|Rc^ z<97pA&^D(fbqe~p3{Bl6|~N)se&5F*}rDs=*~v;3{PhPOjy=o{=EaC zyzN4~mC!H{Zdc8qA}ZYLQgt2(U>3+=07ybP%u1q|rKB-gFstPxFUv?)bvQKQWu`6n zXGCDbT#rryht(egD%Nctd}l&xzR4~XGSdYh&D4J(!sXd|fGqF$TP8EM~|517-g@!45sRH?Q?TS?>IRv7ha1A1F^q!>ZK|r2+ zSfsx6jq%y-t9)<`SsQP76#5!`%)@Y>mX*)LM+N?gn7G#AnV8j7oQiH5o{KKI(aB_9 zq?r#r6v6|I_;DmM{cqJl7-`t*+wWpLfAi_Fk8C~9xnkp~S-9=={YIP4Gxsq^sn~*r`Z%6P+t@HmI0tdtb>7gXe=_; zo9MlO9Fu&5n;N>oHVjSwyfy~8+BUSe8qIt4-HUG(ro zJhDNJdXqX?$7oFfW~E3K1&f@+DgnzL5NOSE6c4O)Vg_lK&Ve;X>7*Nh?1#zKb<;0! zbFK?o;_6x-g#KkUeDKTD++AH`9so78On1&0l!OV8vJ-}G|J&Yjmc~?p5EJq-__5eo zPx>$)9IGjq+(<&;9)~mTJpeN&*8yxmea{hSpTei753-a2M;KfR^2zB|+ObS5gT5AzfCcAl2&Kb6I}O<9231E|%$_s0%= zbPVjWY=X*h-G%w!zSA5J!9L3V|+v%uSWtdu3~LP+bycl2d005-47`)^{&6#dcObU#j9t#uYTNmxwqIX zONOfOQXP0lf+5=L(jg$!`bJ*n8%GyZ-`#JPuIGoScX5-6N`?yZ4w`6vQErJ1O!rnPxf#-4f?6ZR@Alj&GGFEG26mSnFvG z&U3fm+Ios8{0Diu6iucuXX6U%^k-!A+~Qvc^9h=ZIp5UomfAEL7%m&GYEAx zT!h;c?kTLZD}c|0c1*`L=;}9JiFcuP_Cf($_6%_BgM-aRs@@L}UYy{+P5iGTbvy}# zors_HfizCi(ji@1$@IMRXc=D$$m+Wi>@5t&$DTlO*XeXr7cFgA2LxTy7^uxH zWie75*d*)c3NZTV6gKo6v#y$Tl4`$11$U-6-{RC7Re_B#W-NzXVMr)DHtT8{%$Hvu z>wY2G*-1t_Fi1`=wX)Y*8Wc&P>XDR}^lQM)tM!mAlHujm;*Bwy-2(F!cTxX&MXSIw z>w0IHTzhK4WLgwpVa!hqq#&l*qD7_F;vKEQDifmU^O;_sO?Rt+adxiP$BCy|QW{3Dmf@Th785IHN*AO+xA zQ>BU$^57Z9BDoykI-ZBvzH^G&7+v{tQL2aVVcO3P(!%LqG)A1Y6;8MNes(4ryNsqRom zXFePq|E)=;2TI%>nSM3^3tLu_UZievXk2BCyP-82GrJ;cnOzVyuPaOkcl0(G$@Mscc~W>+AY8EAtTlAwyt)A9({!;yms>w0MhdxS6si zfQ?vK#I-!0H3ipxUO;AFHsl3Mp@`KlHYW?B4w!ac7IUOc#xpIWjoJP($%80FRWr#| z!K9O66R*bH^NjJj7L~| zK9L4&w)THQKswHk=1t(FYRyRbKDU1OFGpeImZ;y7s-AQTw z*Z0u`W{<>?T1(hNYRhaeoxT7|#8lY0B}nTbIm0fz1IJL(>_rDFmLN0{h*qY;^wi5R zUyt6id6Tun%PXe-7%a89JA-D>Q7j?pAr$QmTFD_%%i0$H7^ntsq)tYvi-w!roUhyv zW+GX6?pm6=vZ67CbfHO)IQ;e7S5)zO{eDl>g+2^k=4mz5C^S!)GW6rjTHfRk_^gR% z^iBfa!?d^3JyhS!MUR>Ho-h4cJMAivMf5r|!J>ur-g8umKO>K41qwCPBeA2rvWf?9 z%vVTgZ*8V--IH*uF`uA;cJnYFS=OYh%Wi`7G-*v7~g6sEZVT9Pboc{-q%Rrst$B*SEi z8H~xtV~jbrNhC97!*(PcR0osE@Dgx)Ur4RIh0%Bl1FC-qa|qu9P{(+{bclEnctp$` zP3&^ThM0v4N?I`GiVMLILBmT#xF?rr7Okek(5AUe2ed%s? z|NVQ9JXtJQNflQS;~_#$Bg$1s$GFP9#R&x_4x){~0)VR&>)CK>2|g2yy@9lIJo@yu zfxT})9&S{44hrRm=QMbD96!cAGY#wFXm$lXQe8Uk86>V&qz5>}fUJo81Qa96Vj>{g z`Bo*{={PCV(@b3)+d@Z@&^G@0C@X#M0hR&y?;32GpJyG7O1%9HEK7U1ZuN z7UbnCRrCZfOe3^>=S!~zT5=^;uvIxdk~6sTLSG$HgQ2uX?es;_v9>0F+Tkl7z<3)CwhD#fKcL{AK0H0L)xFTp9%nGv`X;(SnONd1jtUIQeytT2cZg5c$d zDnX#QXhdu>Nk-X>Gn)0?d8+xf)2tAR1VjH=v_Yhr9Yuql0g3zYVRA2GdSz$gUzQ=f zd7d;J4HCGbAl%7sLLD{_D#jTadI98Wp1jVv$S(TqC_aW98(ae4yrmD5SSt__P^()T z$@+Sdl|%Jj>F6?$rYlSS3hEynQU=Q*lO9B412ozOsGK6$wA)~J0UXu3>K9B(P73SQ z=DKD%GZU;i$`V}6-lF|#y8CW8f}hrmh(kI8$#_dWwa;*fTf&y4ECKIGr*cW&88cQr8InXex4^8CNmwhU zUk(EZ^S*u&fDC3g7 zyb=+ut&5XUAov!EP?06UY#z|4sR4sd~T?V=VGIIM> zyZ;KS2-p30p+P<_{^R-o>NB@nPPDKq32szJ5~)G?sd~^Rc#}1DUnl`K?*LF}iuP0- z@q9Xgw91O2nvWsApTg+kk*GXcJXN$hRxRN6;aU4HOKtQI)T~Qp?Yd^I!=Z39HnCjJ zvwWIpgB8WH8`gf6=kG>QJ#Gy1E}`j3SsmgXnS9HF_+%wZ>%1PyX}>E>lU7_6E6!OG z%gEMjo4RBwCRzVS}gMr8#&ncma8e(+`EH@Z1Y2-c)Pkj-tZ_s zDVh|Hk* z&qpWVr6Qwx2zteKQAf0RUQD8qy4G^O;{9Qo4b_%9+7tbH|32w;=VSProBj3n6;3y~ zo7}(dg`G(2E>LeQ**fMf<&Yjx(!zJvVyj`Fw6L2X=nJ+IyXm&rJ{Rsmv}(nI|AT23 zJ}e+s?2ddqiltd~ojol`g#}Er(pV>^RFAzfqDjNiU1<8AZBJvo&7oA+#a0WKG~KvR@yW{u6^od8B*S%Fal`#r3lUMLSbg)Pe0@ncL&#VtuBc;XwTl#+ zc!Jd7+TwYqPnV>#4VE6uAu!X67E5lTm%{e$BYw}jjO58Vg;08@AP9pKoyQFsvH+_B+;Ia^-ib2dhyC3$@$UwxI_in)PwI4@1vP+d2@D-dmf zLB^o+0$7i!A&|OoXjWE2C}xhYMVcHQy1oL($5s>W(6yD(UD5J}bO<(zt5CVaaQM8c zQtnG*ZYYwfq!xZL<}7sN8OO6a&!X`$7iq|N)Z&iwjyYr^0R+;>l4?dq}-X8EKW<(s!sCH6nJG?;%0cQ`~}!a9P*fT;kedZ-5Jq>~&7mwSF+3U?{uJ3n<| z1n8C!Y;isTQ*+N$4)C6?1W&u?Mb`Pp?yLR17tcN1wwM-I)VTC+oI@~o@JiET-M-?# zuJJY@FJa3nW^wJT!zJB)jOz0}ZrI8|T?RW(IaghY(#uszMr zvUd~EmZ^VKAu$^#V1!OZau5?qoKO)&6L0XhW=qbHT$Y^GoQ}oM>lL^))Q7rEmN=rN zjyV#EAC^WgkhmTlepM2X$*_LqLS1jF)jw#kNmkA z3sA|H;ooJfo^qBHv1_WtT@`N2R>;dSS}C+%n$)h&pddHuADZOjkH&hV^L4We|5=w- z%vczh<{s+E0wi%!^wlv25>RzFVro^jNIWO85YX+gFo&2(ufrJk>aKX4%*U%N+K7^* zgpk7=Dhz}#4n(OXY0$%m4x3#U0Z1>AA#Cv?V{1#xaz1iAa}vxahmlbc+s%jRlp)d= z*$1y64gCx&H);&@U7&rTL$=$9*Aej5jqHK(HMDG;TM>8yTSJ6u6=&6qUyT~5kzp!C zFe6PjJr4^oGNJeqzgaf~7CWlr1Q5VX1wMXW=phND0SVhK6)Ls?oym{47d5Ka{BlKv z>iF2~%R4B*TeJY<3DmoRAEW3eJ|Ii3!(nk#j@C4ucVyU$s2PWn5zmph5#hxLs%D~{ zlwkoS3ry)&w$M~0+*alpI=yOdg;<=baKVRw1?AD-KMSA}HGiE+p;E}D9 z6FRQh+@y*||f}AYIJ)llIWJPSRyaV8_Mkski#EWN1rFAVV5b`{_xQ`k}E<9Qam`)(# zGHrh&uz~RY5x_yzLK5fsM5mk3fL9QdLN+}3&K)uwrX@zSn4xin|@NYHKv)HzH32NNQzzaKJ z*?T{3PcG+E;xr>h<>u0u%tlWNh`b3i^Mmv0u^)L}aV{nby#AjI=jFLKNkpLTCSf(e z6(BArgIsOtIUf(fmn@|KB&TZH=LRkicIvlVoh3mS-eMGEL;nHj85h=5oXVhXyRgbO zbij+HPSk4?McC+^HZF{7S?JNh zE@qS#LnAt8mkiQ08&%=(X`)x?21|u+kcjZw@4-V;vG50B4kY&1UNElkWA{mdiZ}?B zvqPKvh2Ht$@KIa+V9e`fv$RH1aO)TUZ`lxXvxtZc)csl`CW`3zNh;vpGCgus9#nUJN#?2@5wzpXuGYzXX?lYcK$5 z7p~PzCyFzvN}FbeCs5x-VCbDz-(OMuRCAgp%590*TF{qYo+(Noothj9dbpW zI)>_sbk5JtAl9>=Kj-y$nw{l+NOFlsa-=AvVkTVYp$Bor0$5A8J2BIcOfn>TD0 z9JiF}JH@1^);kb4u57qUu_fk6P9;@}mld3qTpIv3N*IG(sDgQ*sm`-$#!lNKaOb2D zO=Vg1bBx=BKH90VJQzD2Qc|%joem*4v|5(x+1Kj55N41O~CPNmP3tFT8aL5fc%-fHF_MUhB;x|r{UN9 z*f_RIRklprA3l(NI>&5hKo(nEMLJCKUS9Gvy;DMa2VE|_Dcm$BpOu-+Be6Oap`~rQwlPOL zMx`k9=J zzV}~~vq3nc2E{?dza4!He|s8CiV{)mfk}XR!SG*2Nj(U==6env8>l4INyT^HWqma9 z7XkBBy^C`&v}-i9I+T{%$yDtIPey?`yamW)csX3mmTJ}K;e8jPPBOO8hr$k8#c#MN z;n3j^Yu)88?j5t|hf`CZldA53M#I~(7WD>N`vI{1v;^+zGS7xG1iP8P&DLl4+j-}% zYk+kzbP|F65`cm8yXn{{^y^BXtSCTM5Yl1YmNtC1DPVcI<$MA`_Nmm7#EGpPiXp3( zT`9J$5f9txQJ`baHM`s;_hMU9Ae^n4THeWgmTBbJa*Em7QfKOobiK}*V4V?mUOYRP zW@=`Cn~jDh9QX5LkZlhOkQ~U42E`~I``FA4(VdMo9s6mfZ$3XoL401xPSJ;dBlF=Bue+xT*HQ3k{08Bby-gcJjfybt6(QW0 zi2`q+#20L&x*(!Bsd!L4xri=pGyZe?ka$S6!>*@o8=PFk%*{*pAR06H@1rh(iF%pv zH*iF5JxA7If}mi@S6@-14sHgh%FX_Fwhj(n{rHcqr>}Rz?0Mzevwe&V^-67PK2|{1 zfM7ZK8T{#(JR~#sgCCuRr{%V0rM(*EXbtA5D4TDTQ1lz`+ZZvWjFyd_B3pgqCTY8F z$(~zb$E~2>W0@L7c5HWn)(~XvLO@IYcJS05L20iL$Q3)v5eBOoYL1(YeHhw6=+Uzs|ZBA zI9tlk$cr=MP~ZZ3l#LDp_Aqo1a<%zw`8Ub{=z zdki8Z^4-5kbKGo@Ho%rpu#38#2W*3Jp5?ZCfV1cnn2iEjhPMwXA1`dr%#wY;4nU0# zep4%ynZ@<$pcNQxf^Y}xi3nsRb)(lbB)u~Ws^D#Dh|%;km?6ED&(uMWvq0KR#KS|7 zSIg{BHb@{$hiBTN+N~rqj=H@I=W^{rF!@5MV;o#6n8J8wig44horH&-53X9_g${yV z5GE(~5x&u^+XcgL$Ze2mE(F!eYIg=x2u;jkK~Xepl+Dn55E)+e)4@u+V~dxU2T&TS z1~##R1DyK3*CrOls1?Gk4Y>|$HCMugQsb?Urb^EZdRNxYrb85!C~DJl34o*~>T5}W;8!k_ zM%Fp&BoF4p%?HDL^Ry`7pObX@U|oG;Pf67e1?nadJrgWs6j0JBfMWt{M=4xlX5b$6 zs}pvw1>U=@eoxN;TMHo_ zRTZ!ywmx4NbJ*75c)fU(8WwneAx?2#%u8__O-wzQScIF3IrGqwUl7?K;s?W!n$Y9p zGFX$n+zh^Oqoncn$-W%#sd_cY8t$wp z1|nRu!V|>T%%_>-*sb2q6t}mWf%Xty9SUR^#!0qBK-WkcHChR1g07Tyc`BjuB1i8x zE31$s2~e_DZ1MW}-u8=~-5(#nc-D1&E(r*w()L7+^+xzpdR-lCef#5!m%Goqp8A&8 z22zh@Xq<)PeE+w-gWdg?Tid(-NcN>uB-xBOV&|#Dni!QuV4-`*j!&U|4yleOUU!s> zW@Ji`bzq1x)3evf3d`Ktd$qfLu=kJMiv6@=8XRJUp0{5--`P9Zd+~hhX+_^cT6crq zpFP`seo)ynX_Hp%b?3$Q!M|Sa)&UsHN*f;pTnD@Vv{Mhtp1pj!b+GsR+wP}7{@oW( zf_0)~8n{R29@Y2$36Nq-(YE7s`ct{yFU}x(_1moNq0Fp*J_ZwsWRRWA;7#F&1H2Ye zkp6&y0>-QGZ5RV=VUZ!S{0AYSwKQTB>==j`DFhtwevKGM_Ij*Pw&bx|93G(i}RdOlq|6Hx;aayvk8OxN31pZJH3Z4hd@K;SS61>qD=PM^Wlf zzsB7<+EHhE834s6giMr{372Me)XvHvP`wW}W&)1cat^_;o9<^{;2GWMyxhl8Q;>t+ z66X`6I`eXyX)#q-w0!>_SJ+{y2K32Rsn!AD^SXILLV1u>Ks%&n72RTfbXaOHxi==W z46&)`88$Ns>8cYpqoy6esu#?L7_LBFD6kEkDDEboNwEenHyom$EB*{7jK)4Flu{dcZ$tg_K%)}2 zKS=VscPj-@RP`{oHjcHV;&POi`_@ESp=Rv))-$(}#I#1O=pD3t$Oo07v;#5h)3_uNY@7BN(SXC=dw6ImB1jxAkZyk*tFq zcGXU$XVI9GOCpG1uPe4C;DWWis{s%6c`BLzRm(+FP)e37Hia9fXQ|qm2Jb9OJ$0F5 zK5Ej_+W21}*(y-5rJp70&ZbZ;^Fh|mPEXZlW5y*t9V5ly7hm)UM+!EL8Rp?o7hnjf zfjdD!a~OGBABB7j^*aU?{HS1*HqW$l4z~si+v{q>=$c2=73^qZ^ApFMB)Brx%C_0L`y(98jz0H!q@b*<9d15#f> zgZ)K=$m4$MKv4{XX*lV!C9J&TApe zT8}Sx2rX;Y9>Qe~30v^{t&vHH2R2qv*U=g1_NEnMV0)v`aY^;q(a8wJat)$~ z>{{j9v*ZC<@NFXH_5e)yHnp+}WCLS(zM1w*H6_?bR{kU(f)LK5z0GU@^Di_hu-gF}A?2Knla1?mP32N8@^HAlJBcxqT1!x*xho{iwv zH`$2TUQA@re0(`d(esZnB%U|q&Y26Um2yUKOk2$}qdIz>_tqfl;J_n%l*PM@Lciw2b!_&^$$A}W+$!9qq-nYl*9d^QcQb8%A0uM4gCGjduUU-l?ERbU@~L(F(Jqc= zzTeqmSHEZs%;#BM`+vv^4VZ4T%AYG}>kiyX!qx!hI09G#`o0Nab?~UzL2Fyr=|Yh3 z7#Yzqr!j~V*XkH_9nJndFJ|tyYloRJ6O088ZPE6%671y|%`x9uQide`JY}+SR8?GS zM^lVlsABr}(Ic6xSjuiOK#%roo)sp&xp6irO^SL9R#YTE&C8hy@~&$cbc424ik&@I zy9-7eAk=dM^8sQnbg&tFf6Dc=O|=|gBJgBwQKRntx!yI)knteW!3;c;}I z0a&&7F_?h$>~+m+$uG2WCGHi>&eA@n#PVi9EaTO6%Um33=*AZB4Q|ev3l8@$M<>Ow zqo;6O7X?r)$-Ri;+2;1(wW3EquC@oOIuLDa!Tv2b zcV#yr3rKsZ5B0K+HGYZ+Ej;-cG;t+>R=-h-r=nrDOm2~U+*Q}Y2_1spe%=A*{GbVm?=FUmQgWTJAj8Wk1)o+oN}^x zEy}mH!E?`TNulD0M{6gkI-*4V4}RWJzwYQC>TmutN%S{xq2lKFzaM`1Au<1xKltwk zIh^Z17VN1@Zus7bW;d z^a9kw3ynKb0_(-jTz1GsSIjIE(W*;8Qx7rdxQc}?P(8Re&W&9_JMh(4Jg-`3*5nb_ zG7IhovO7O@gmr1c356a_0U_o`CcN9k0prw50?56w~`HPL7RC-lR}WB-A{1Zk!XITvzEJ zzgd2t&(75Ybgb@lG=8%1o(?Wi?^#X;KmZ#jQ$?RCq73^2ZHbu|h8~8MKz@m43`yv4 z9Hxm*QSbvs9%(%4Hja+UuQB|{`)(8dZbIUM=A+x|OUM|sc%dNGZULfB*iCJcj+P#5 zeZVf{e90X#fu9+{Zc>n91D#5i*nzRIaPSvVBT1^Scyv%JkK+fC7X9k_DpIWrEol$c|ezc?(b44086j^#N{M z#AarAKWgDgd-C*#bCMez{pjy{bPl|;ViFkpg1dXPfOv7vrB!!KP2FYq@;XN@CZc0# zEIAhkX1t$jF8q7JbfS)y8httD0{j3Pze_965D}*I{b#7GGRV-q1)QCCI{pCO_o^I7 z+w|_klVUs~%+&I+R;!NutViHoTo#?5?i?zzf4qZ`DQiBck& zu{@}ea(gEz*6p03`CcV~T%1H#tx0LF9NOL zo+$@|IW^oO7zHdmNYnm94pTV9be%{;(L>bhf9Sd}ZLECILPjJv0@7ntM1bR=1GkfE zlc6f;ao|T(>O{huNl=niBa)vuNL82^MPO?{9z#EY=67wIyFP9~12G>cIb+V`MsH3T4JoFVmc$_m@0==bN-GRirB z?EvFahEHVt(@kV>vn33of=H9t-UN~T#IZamPUFn6JV4ch8!(L4)=V5_^s<3HD)~oa zB_Vgnz*~=_nou}q_5!+nWw!T_CUt!6152+yuZY2$j@eyGTqaz8RB5--%Rqx4*l3jK z3{O6j2%+2`qZ72wUK!5@#y>U6>!slDfNsCcJ10>wn#j#ZFDR;kw2}Lw0>*?87}~)_ zjJyt8ba;;OS|E(_jg%~a`%WIhoy_}wG~--z7yMpLgaSB!_O*r(8tdDM!=cOrP)41|Q`I@I%Mvn4#>>HW5l z)$&7xNxMt~Hci=s;{kddkDZ@a1e&3EqadI}qO4pZ7~8_w+$MUquA}wULCCf(Cr!tE zYyz6kM6~#50QCponJBt%vP<=PyMa?T8ELUf_B-v6!CiJMGH1A*9Da9fLa%GY)o?Ov zROfQABUOiU|L`7SsdR|AwxQs4Kg~q|0958s6X$NcelTZr+^y_UaZG-pG9>sg={l!b zKU3V&;MW3K{p?GFtuR@@>d#4o@`uK$Yus9 z7Ra4$8Pd9c!WkO0Q4@{eb|H^;0P|?{PvinUQp8^%2EbPj_(^k#TnEcB1ObRI$ZJrU z)*ygVFBg}1Z3L;Uf5uT!U+(?(ye9#tQ z78NkY2A53};%zM;;?03M6PJk>mQzsD>d&&78yvM8$&3`a4;2|vkT3_0IQk5s!7Hcv z)3FC+AT=FcAg14zaZyN%r>}9q#l>LSk4@oqXS-Pd=;Rqoq=Lz!LIIi34_cdISB7~L zL04=zl7(vkW`In0UAn(fYi-tRv;D8|us6pyWWM``L^$j%_w5 zi5*ycl?`l1o<=6-^ecY-F|%#1^CnV%xZRM$H>cEvC-Z!${=m|X;vuYEJQ-YKhcsEr zIG()C(?n-NH)ph+f^j~jAcV|<6#ZFUjf-?TSckU>{=k?&3VPV5$cw0$;yBnHP7g)z zbg=6>IA%ruSp9DB8r#XMIaH>(zz|ePlSMt)nI4P@4S2K)=z|l_LAhwY^BfwubN~8PoJGE ziR;DLOx0WXHf2X9-ZZqk3I>2EyQQiP(Y(y|(oZkXXAo@O#Gs-><@;c;(PUb@1p|Ek z-cBz-UZ^F5(q2`+^RNQlOP^4iO`Cdn2yQC>V6&CqsizhobVqh~d@P@S?&%Sx+wv0x zEVvEGHYkYK;G~J&7o&XkfImXM0=-p7Yy7O)y(2o`-$6H3!>J-jAiDLm-}Q$?hi!2s zUF*C~r=uDfL8m#dX}_a?aXRViNPY;7Qc$`hUvJE#Nnh=I?L6Z_A0Mn==P)t$j+_jtdSJ1peh5{fAHIL%s!AZr)6J z@xg0&h&kFR%QYmf)mC8x7wK`8E^jpLDED(v%oGZ+D3pEw(*Cq4DI+y?rTscn(Ug-R32gCYgCeJjLnPsYygyQ35{gQ?&+n+~tlBkDL0>jbCyN6Xsnw!o5f) zf3wwToTgW~8K6QcL44?aa)H31 zOg(t7*tb>eOw*HkxP#z?YewRkcEGJm*SgWLBD)YK3#0`AA$X~~!k+llDXhE~mmI(% zxYC5uHto$crv;H7chmm4?q45(o70pBWE3geXbb}Xx^09fEG`CWbo2w|Y2~0!KIYkb zN-+9(2o6pi{qBMLnj#NkMVKp-N7LVqWk{EZvQG2^TV#7kt~X-Zwjgt>PG;%7AgVKF zsPWM+8@xbD4PCc+m=dF(4*T;VMnixHqK)=o{1&vyhhGLP$0ggB2W>0WzbOAJ8{U>! z84DN4H%2%8p5Lgt#(dYHydt0Nl`uPDS-c&$Y&ix2{KS>>ku&Yms^i?ZP*wCMX{tI; z5M!-$FnGWLhR|4p$@>z1XsrWqY+d9GtE=)59@k|^RhM&f+|V^Y>;yQg2xDf*do-Ff zGl^*UQNL>PRT?iA%JyR(=0GM#pAUm}0JtV0t%IAGorMbxQXPlU(NU0^k2>?|&~xUQ zO)mrTUwUq878|>DJaF`Onh(6|fdh?MMl|h^DUEvZn9`^tk10j>o%ioW-Y3h6L^2zo zJo*uZ+dBgVj=IbHwn0~VvDsi#*FtH|`z<=ht?anx@OnB7-!FX{e$&1Qu*H8x1pbwP zL0ROnqh|bmJxj;)bl4ENqWBFmmnCEZLr`83g6jY`T94M@q-%9oQl@XU7`=R?1?hq; zbgduUw^PD3vnDtR_PJ>^eH_?Lq})}mmtG3}YQ`T}@hJKsro^(L{c(%A@n)w~^VI9# zhxdNN@7Cm0)7wC4s+%1!S#EeL21;ws!;o=}n<7m1@4pM$5f9q7+;^GZboo)f6Y_yG zkCRi|eJ3MzKjJ|O9Dju|Z9ui>6%X!x2 z>nQ26rrXAQ(cPyq-cAtC&YdtUqXFR{VGxI$(NhaZ9|x+{?VtBE1w`|aK@6o&a*|u^ ze1vWtk#pA9yv2ckq;s&D1&C;zl<7u96zh|Xfwc5Xz0w}C0=|gF08(P5+XJ|(V{SA? zxR_B#KVCSI=h(2J<-VQWSFc{YY6>T&$OHpm{k&8Be(Tlq>KO)Pnk9YXlh6!=IDbPW zCDrt>0}BD6OUKJl5KPb~4?p7+3 zU*2EQV6&n@q&|^CI0XH<%plxov$B!XhQHm@d%|KX9Vtf(t~MMUZ-vsP_-Z$y^clejb+l%x9sjR z8`O#^8b3hOSf^@~fuZX%#2by{9&hH}j$a@CAIR}|l6G3`D+n6wC4x78(%yI25k!IB zcUoVpr+A+E^bF&d>(BK`<&(WJl9gzOi=($F+o*7wNtQ{mPImdNij?I#XL(Hdix<-* zW@m(D(k1if2xFpX^HPl47zRW z1H3%V$1|e>6k(-k|6)odUAfIK4{DVlJ6fPr(u&);I`o+02pVaQzeesMTymLFHfh>R zFCzvSY;oROXy>S1o#bD1%lJGXwu(B-Sw=_gCyFW6f+jVGY@>A2_iNoVHq=LLJd^B^ zw|FLgjP0@azL4y#JUm*9ye#Mw>b*!_e*+JRc0;u4gtnVHkmcb_C&+z>KV@+YmCAA- ztHv`2EW1z4B@~tEVNI2O(xk>bp+4LGl7{O%ug} zytAI9U?N85!zNLS&cJTsD8q@d<*pBe;l8S53Zx# zHzvo2m{c>qKt?=uE4#w9Fbep8L`5RCK#||Ii7e`e>&B0~89w2^a5G$So08aE6|<3~$cF-ht&LcTy+X3?>srPyI$!rX?B_e7Q@ zZ|)St8;$bLu`SCH3H|j(naDev67EscRIVY*s2(zW9xh99J4&|IZ=i++D#m8Yha%Ctr5nzRU~EPpFOj1lVgfqMqCcyoYi6q#C`P z-%_z+!$cK24OIyT?cmRxtXpFVNCp%J-3fmKx+4e^wc)<(df%OEFH)*w^aJa~>?Q(t z;!?SETJQFi>l$rHi|cMs1QUsTCOYG~7tbqx9dn1SJ>$?t2~U`w8hgCz68v>m3ChyY2;Y6rlCb6|cy^?+HWg%uDz z6E~JTbOD1%=RwxVU7IMbefMF~``zs;u5sN9@3ZMZk=Y_u!WxP>+z6abuO03c>w#Ns z=cghEtkqGCVgvD^Qx`!dSiLb9(|neJ^-C-{+EC$}q1CiN$V|0O`a{54n59u5rO4gO z#{)WDh@z~ft{yo>**9<;2;~=QyoWj;a$h}PI(MW_R}1+?61chlzyJ6Dt9tC>U;mGD zjXAO{(1|qr+gKB&>lS3qCMB&_+J& zCz*+0PLdc^%Y<4U7u+Sd>9P39r5Z%ESPo3!1xr=*8WnhP%5_3=D&+Xd;(kH8>7z9= zAwOE{#<^t5)oB5Mq#uC<(oY}Gof~muw~7ZZKSKAU)LJwMYQ*eFCMBjbWJ>^HTuN6v zkuf6D`guH8bw2Ji>axAYj!&EDR4Bas>+IcG!EGSkEy$HvO4Sjkmf4I(A2h&G$_=E2 zHPlm}mGt1Kr`SPb*R!*?zxDX(?oQJeFhjTd*_2y(rb@Nh>&bzaE}KqXt8bd*d?8dJ zicu{G>_@?H)Zs2Mfe|n$$xDZZq*sw1KeDTrh=!%f8?jJ@0TwR5gu_G!!e%6mjz(Xf zbBlS*kG;npuJDZA{YR~3DX@jdAveRkm-I2N*H|uvctzX+ZKPX62} z#;b;OITKE;gOQRYMTheQk5e+eg7~+@XnE2wcgGM9Qt}&t`fBn;A~^x^SJL4{dI>SN z)Z}=ehLa98KeZhyvT|I^Ftj94w@u98=H-YS--)GG4cIgxjg#(vb9kMn=e{iJk$ zI#m~GP`|@V9SsLDNLheT5tn!ZGGj0yP_PQ8fRUbBA}=WVJ7NmpQw~&y7H@MS=N%Ly zl*~X_0Uf)EOmXe{z(d_?+@^R=}aBs^S1PFenX@1IU>Wr2{9l3Djax zEJPb|U?Oj}(@RA84l&Af*4fBh@zfNd{WdS=B?F&3_h~jN-rC@A+H|3uA<)d=8E|i= z*_`+9oe4Ns(>v{kq|#hu0#*B_94tK7tpbL74r(lD5 z3czRghx38D7J5?NroemB8K~o(Wz^DT`WH7pS6MsS81Qx?g{ye)(XT+h8x^vQ-Vd;aL}Kpf4jYhmJ^H9!Q_xDIDVfqytN7#hi* zz{MD66xBa{xV?x~ExJ45b{F0#U7#gzw zA2u!hB&uKt^nvMAJ3(|i@UxlM*%!#H&8qm7ifu58l> zH@XcW(wY$d6_(VMl#0E@tJ~3EdufzpXjSv31~FJSKE`dw?TB4>EHH+)a!SkN zfT_6p*q^*bMxMREs=7!Acu`Ap+>8bwuv?9qC_Hr<{l>?;+<``vI7>H;U+P1xtUEM8 z6^!=p*gb64HJaPo^eD`d`#RQoK?vdLCj~FP4o~;WNkPO^7OTf83Qy&g6GE%4~ zUQvZ>M7xY<_Xe^6A8~zzH*i)uro7BOEHj^KiMWGK?8ipH&j@I# za9j6Q>_(=D9oWMC$Ee()QwVE6eKouH{_2y6we=O~=quwkZ+ItFp+TpBQ>0im%Z}#( z(HrI077=OD2`|)nH^^t|nQds?req5nSc8r*bQQqak_~b(>caJmFaVyBZG!?x_jVux zdQRac)$Ss&-?@E-R&IANW*~$erbIywRUcud8d33uH0t$mMdF76S~6rfTix22DS?Gv z%a4x}1jVt)hg5W5N|2l&K8}tRD&k~V1}f%&Ot^MA=VGeMR{DPZHX1xQji^4nAfB@- zx4>}Jalcpj5O{vBRMf7VB{!bNnoXVf-0c6Z8yKgUV;QbP9SaN6l>yx z==Q4?fkGb>7GQ6z9!Rh(!Tc{6`#2rLm|?@yY}P*~^}uYJ0@Seh4LbsiQeKv`Y_uR8 zD`E3}T(xseG*WjyUR79R)$JN`)H=e02LCb|DwCZ-+sU`Ib54J;s!vil{Y%xt#BFxx za7qF^-)*AesiPJ`fTA^`}1;!{ugyiHKhnZ}Tjrt+hE73rkY z>7>)Mvg$HR+Dc*oXwwW$7tNIPGypk5UGu1yb9K`iLA@%viTkbX%*V|^pP|irq3TT` zO1PrWX`7y?z4(z(g{2y(pBG%&-BOS(uH;Ueed}W0=thO<0LQH5NfI`s<#1S39V1HbtnOI%M;*AcFyW1`$elsOF`N$P z<@t81(4|j@f;77@ihH^X0gcQMKr@FP+#`|1w|5XW5+5PcZgP0Ec0L;o+d3w77Zfd+ za~tycSSJsi_QkaLgDtJ6qxRJ@M=4FfQXc6~Z)@qORy+z!1>qE>%*MrZgc4Vsgl6Rw z6IAza;Ex$;uuc-CNITG3Mp>1AWeRD{+S=c0)-MgB-qOrD$xS#^tw-@lLL z!676l{M2g0=|85}a~zJJRm;Z11%_}+wDV0QO@IaYilqqN;!~{T)=k%-iPV?Ve3Yu! zee30(h(qpzT3t7`xs^>6S@X!PO5B+q%B3z2X~R4sOFBe5Jv~Ye zRWS(6I4|9CqFycYs|AgZ!;mlB`k^MB!K@8zB?5%ii1<@j_(9Z-a$ybqcozuA(bZf6 zm{dgt3Xr`Gle|Em9=ww*kmm5vV*~Luv-VARVz_=>HZ^;_C^vh@56Pd>fb!-E>Y|E zkCs`ji*pTnd8kPYn4L#qC{&AI!D%!f4>cJp_(D1a$gM329ca|Fjs3E3xa=EMX3)0N zFCnOh9w``f>lMm=VOyLoO|)spYzt4rFhM~~96usX7!N0mhI4MtKn7X1ESmuqoRCpl zI~teYUY#%O)!Dxs_q~_LX75?9N%YZKy^|;sU%i_+w*K%neY6QK`@k&K^JjQl#5_L! zlTy2g&-|>!(i8mlntU0r30_O zFT$>+c+8P`azh%zHD)nELR0h?BXP2nt@}aryotHJ&8F$NRBz5G8|>>zumH^zIn+SY z%WZ=qMKbLt`J%B)d+GRDGhk4I4hGr`#{SiSLjBh^F%ScE+*r)Ny9dAULi=fCJb3XBORuh?-O2~1GyG}wk~~0$h+o~Y z$pgbHQ%V0;oK^hd{lX^|Ihh+A%xFHG3txsG^7D?3H^^?hWMK`{?IV8Rrusi)eRbSDc`emz!+L?lx{=#e|Zbm+HlxQigNe z0$DHa8uj5NOE7vJP;mFaPD&N)BeU=1G#No4S60k;;tiQ*9blj+!Le~(W{@o!y*i2l zL$g6VAh0?a0e%68MX;m9keV9C&~^%Y!=)YYM%~t-(J<<;P$h^ zt$^4nioweY_bUe0<;a_xgX#gtjm<*7I5K+bllj?MD3*33;VmFQb@bbcXv-YRHv%M;p?rT8v}F*cxRz|GI$etB ze52E)rl0zBVJIDU8Yr#$nA(w3u8gVut2t#SUiiwVyz}B2Mk&784OR_5%L(gQ)}1j1 zY>u3;AF%n?c8P5q>M9(qXAwPMo-@W~xXBq)`_FR9Jk^>rX8G3VIOTGcW7df^sU@f7 ze4yvF*=XpTocfbahT)_pzVfo&Q?z5_2i9Y;-|Z_;Zg~Ay^GU}>=bs!CJ!xpAfGMF5 z*G(HP-Hpx2)r8>h@ue4@U(9jsz}8DnF1s=`v#tsbn$$*ZYd@VuhfrGwR@FdNxzSsD z3Sih*uGehFqlj~dq^kMqD<@yIENhBr*)?lIEsnbq>87l@ZE4TYSSSH!#AcXph?@pE zgybY>)oP^cUUib7NT74MjCQ*%7g2v0h$eKr-J>JO$>2Aw>{n!_wONl3kDJx;uCvoq z4#whI2#|qrJofc=Xju&A?T!WcRfOzyS}Zdqa1O@Q2s%2MGbg{T6BoPZ$M>1Y9P~3dV2dFMdS+dSZ^whr(70VTkPWck@iGi;Gb?BIJf|6{m=f3=NbTi1E^mB zpaM{G9(4&$G3>Ash49P55Id91!M5A+z|dLU2uLvcK;j@seKy>g_W!N6ywcQK_AVVw zhMDuR*X#XM+7p#Rc)EiCBgUTJ(X}0|jV{}Gj4UA8(9$0f`HEg9h! zJ3ttT2AQ!cgzYMjR43E}|M{L4KXOtF_CiMFQ~9z-w_m%}ar}ZM^H_M+S&tlpC#hVj zNOrNg@qssyom|*KV-UrJzumbomC1kJZ8L5=E@~#f>0j;5ipL#Nb*3NdLT$pF%yoo5VbdB8^tiD2DD(>CgIBfrW=5na_? z?O!#eQ;BcMzV^$)xeKu^PWm_c=9i>zgkAQ>rg5sU&lgYH{C3HHBWr%a3sn@*?>Ve+vWS^Yw6 zVaJc$s=qt=8b3KY9b}Vf*2gsBJN8e3WLpX41FuE{$Hy3*AWH|H(<7}ALTmvdROs|9 zn}r~_LTCugeUL(Qdl20Y*ozGMF?ors^tfM4Aws?%eT!jUNMgmvusl1onsM)$dn!FV z1de13LTjFzy$a^4WwSINQlRs4ex_h(7KEDj7{d@&R*sfi%jSt>RV^+H^GlL#ez#xoAt<#@AvWu@YA9`6aR@5It$J0LUB{vEQ(E^q{pLWqN1-J zEzkOq8cQPk@KBXi)#jdYk+*@c$DCxkHpJ1lS?q$;?aV&LbRcXFF<@mlC4~tn!~=r< z&ArjiVzY|k2@{Ai!rrEn$?y`B=GB>~Na^dc@iVK4kQ$Y>3``Xl{Z_e^R(Lu6cC3qz zHR@Jyv(Tv04gaPm8646R2p#HeNFO4Jc9QL3rY>)C3J4fKDdeqQoHAx~@_EjYp2QZV zn>wYLs9)*`(~QuRHVT6w|ZC{hiFu%4lC_`D~b;sI4Bk-Fm_r0JF- zgV3BfrBIir*wlYGLENd%hJmE@WJ}S(Fp&iRE5x9u$tZo3wNnW9E~0nczoNggHqn|^kaL;iit@j2-Xcb~mH_?J4oJ9qS#{g+$YyYMA3pLX}R zw_f76BlSP?`PJ^XyZ`+0V0ZuE$Hz~%o`3h_)4k_VYyF3#qw?7K>*>=Uw_iPd0=15grjL#k*qy2W zUr*Lgi=u^pb;O_YZ~hY5Exi>lw+{69ov)9M*5AV)xN+t%cz^D!-$9UHPj)c;GxAVK zOinKo1*ucY0+xU$S&O+XMKeb-Mjx$Vs$IoAC`f~R-3QNJ{`lSQzkb~N_W6rfc*u}m zvrSFzz%>gpPh(JWxFeWjhJ?fWm!p$nnB01(Ixt~$?l8OtV^Hmm!t)JhxF!N8t=(zh z_TXfqAO@g8`S4l^+Gb;9S}-1m(b+hgFYpxN#?CI?`d8TCx@kMskfZ+l^2b+O&%Z^; zZXDig|9sqR^S=NKw!y*cSI>WZvh{Qys!}!)jH$~fx1U0YvY#_jbif+|7e7^(`D{K+ zr{Wl~IwW`KrzN;MPBX$_IWp5=FPV|^AeD>vS5Kzov0mXY4|zB>A^Za}y9`svZK-xA zTxbhEH_#Qag}Aq+a4Iba+%wesH{Diewl!Fr z$C%p?Xgk7%i1m)fO?@)pU6jA0Fj~L+!(a3+_Q6vWxA1Y=f3vU1!*jKlCHxCMBAW!< zRQHPf3a)JhfvEXQr&LFnHSV<%c0y?DKmIHErm5p5uP2*88L^2iT=E1HTX3dF?5oA~ zattIud94RV4l$WeCy;lXQ*NIY!(nj&kF=0(=pMkD7xL)Zyq}oIo?TJ(pp-hbm|k}D z1l6mBK?^R_36=^>iejB8B5Eg^Kp6)ln4OmxV{1Cjz<4;H$ys1)z-_t*eWKP@xkR*~ zXpvz)20$seIc2&sPSKFwn=@m=`Y+T2dR|=6_>-&;bAD4oo^&GZhVbXN`K(EcyVHZk z^zQf*a;AfoR2?-fcT!w{J+(I(W3~y3O^1U_4T|$qTcBvjehT;;#I{8_E5WRLnkKzd z1u%+2=wUuG>=6HVSEI4)>JQM!`eD4o9PqNj0>owy((bdMp*tcer6!X$JOOS@5b zdYw*BJn#5wzS@V3JJ3%8|L`T`RO*jkJTspTUhKT+nqMyvIuyN=!=C+|O^fzLJ^)%w zp^CH*=`cQ}{(-v}U}Rp@@8 zS9Q8&*EDM*WZL69I%;`kebwhI`N97@P*^Vo2s|4nxBWsz0_4R2Ztp0Jb-G zQ@soB5i}k(O(cs{hte^V;D(Jyx1e*yYdrEU%bmj?){pOaw?$C`1Kc_QLY{z_!j@aX z38Zn7DK-%IvoNpvImL2N+y!Z}GEw zQ_^;Mp59-F|3JCz_eRsQSb5#W$aj9YQ-P1{^%bYhV^Xel7$CNXjI`GMGk~*Mzf*PM zc3nqnUw^H3gh(9nR!a3^5knCywqFwfMZIA+0ER6~!Y21t?YqblIAWjalWyb5P(M}A&#wzibqxbA#? zr%cY%w*V37zJ*6RfZ5|Ie0|3P#1CK7`{MqCU}E~eL(968JW%iB9r(+IA;sx;u;F_1 zkq=LRA7|(~CeNGVqiAv4xG;x*XZ?=g3L5lkovVqvD^V~}W+YKLT62ML&A#d&jD+F& zMN-SS(@N3-R!#x-wSQXp&MDYZoCZ>rdaoLf9v=SigW?bwGK@?|FYy)4ZVLNyrC)uT z2CP5>ac{ks@Ii?SJ55IUU@**dJDsZqZjwT5x0~x7;17{1Zt6-5A}`g;hw*s6>3s7| z=e}3!F&@Sg4~WGSZV}H*uS-DQx1dr2?N|wvEUn=@Q-=nGsP55ewbci$=1}q9G71hd zAt^+_VM>n~9?>uX29b7si4ol~5gpOmK}kPS)pBs)1EdNJ-&FCV(M{1Ydddt0*^nf+ z`d}1)J55d$hvauvIQt73rrE<&?>Mq^!xX(n8Q{!i_WGjqIHpG+Sr9NgmV2gHQIO>H zwBxl#0{tQ{GiUgb;+1e;nF*U=;z%0lBvUxn>jm11@vx#8=}~e=-S;2f(|y0=orRc0 zOM;J_kbkP>Jf{d(7=^+EL10|wBcr`P9pfq*zZa*_)z27OHaOU4c2VFMa79ZO1wpnR zNST?QV|2Z;1OgFaO#=i1CcVg*C!>8sqXJa`A*`~bcV}H;lb%DOue+F3;S2u$Uftd^ ziBSJn@lGx52PjC0k&rqsnW-pvJKzlO00M(pUo(R{B}#-%27#ddI2A)~gKQiwCCL|{ zM|{8)E$c3(@uRxCz}B=t4}cgReF)C$G8(u~j!w-K>j`@TwDTk&ii? z37l%ypW~I#)O1NVCv^!Mr@I8XPP~(F8sXa?fBjRK*NH=XrSO}|-pM~Nu^t*@sBy-! zTi7K1I_YbG$4gS~_2awEukXY+#oH4AIzYw0g9m#+7Aj(=XJ!Vla7hL{ImUwPI6eOE zoBQ3cj+XccXvxR@;e0@dK&PfxhcL*dmK`OEtaI0YvdL>aLDPm&Hh>J~0B!@tl?}X0 z^c*9>X__%Z{&N6eYHA3X9}M{Q9Vt>WKIeDr&cRNnC;g7vYhcIE3h(os1U{E<@(D${ zfu37}W>B#8vv_HURnXHn*9KhS2^42jK;`vUqw|OzAgR=LO1XA;{ zhM9+I{YHqbF{#>R;N9qYeSN3t5l55z3MrW`A}@diR9y=kHb4}h@K`oUey{fngdHG| zu#610a_|TQSVU?f*TNEE0#f)NWY>4EVwkF(YIO zNOO|bLfoO=(GjMq(*OY^KJKHwjmXB3Ld7^T{;6p_Bf11u{5G@U_^~Nagw>Xb z0j;P6uZk9X-tM^#E#ZJt7Mua}cgNxc(^fqXw~6<<-R$|?j!(%*XjiC`m^KvC@B?J@ z8bpM+1PDFR>it$=1n;veSWrmthdW*O)B4wUtbBp?!00?`Ygv-k<0l!_uKOdYD;Vhp zKRYN>?c3!3HHd%j_WZ8XuLa4L-l;20J?!!WkR!G~rbl2f+^z7G1YvT_3Or*vga&d} zXQ(cQB%1MBf&2*nfEQIUb||=E&5Bm;DKag4hn8>Zu-HJNkEYEHu+Y|;akkmJ;)`f( zGr%(G6?6fX4n~+kGl9s+7B;}d#Kg|DqaJdjW7-!?TFj9yHB6aSMiI%u6&rddA&%bL zmS$OSO!#6bLoPVHcWf#h-aqb~C>B*uy4f_6B?nXSZH-JA6#SIfdrZy|R?TnMuT3Dp zWLoXh?z@Ret8^#Vq-i%SZaT(UdAYBR>)3b;Bj%IAjrjskKN;cOG4=yn$;mJszX6qW zW*~E15WYma2v9aF;87GRQu7X4CvBcdY-dcE&}8l<0tkApSkn>8d7Lm*s~7AnA2U$un?=9I*%`_OTLL!WPjh3?z?C{s zbEH2+$;6+&DARqTD+T>2N~e6)&5+j)oD$-|Wi3JnoT*LEQA`97g_wo0oU-g}p)*19 zD|57VOL4VCzhKME5gl%5#1fqEEv{e$6hJQT-c!M36wyRV)>lWdxn=I>`M0!iE>RbyVmYgP-aH{$J?hc~>@w%xKG0#*K zC>`7lsMuc554eoZ&6u4}i;Laqw1C9nHV(wLy72Z+U?rRYd^hgt?iFLyd(JoPyv37C zhcEHhpg4eTY_IsFN=$s-G~mu_<~HU%?V)%LLq~|+GpBJ-NT*uo-hBh#o#ffxuUyWvOaA%3V<_*BzzI`>l z4!3;G-|;oO;mAT)?6^oh;n5UgIfS&3U#T!pHqY!iJ!A20!Q`0Yx2&j!MH!kJ3ZF~= zHH^H3yt@PzAeCUW+>+n7>AS7Or70*6^h92w$)R~o)b2pe&1-XjWD|^f(v~ndZsBmv zBl$x9NH%;Alfz^AH8L4X08*9cjKYsjuj711ekt-y?PsAicBfH8(A&yzrVFa-5!1my zQ$2>*(j$Y4;rHM0nb>z$kW`0uOOJ(`+ucv`OGl*E?=5|8y6x1IPy}orY7Om%cd~Pm zB&((QeYSNH6v8bU$qp7Iitkqg3r+3;smFm@IhY5od5I5=p$2ru`Z@5r^JE!2?V zS-7(i#8YCuNDS_Y(&w59mXvO!Lf7Myz=nTU!BWG_;HBKUrjW(#TQ6s{H~9&$Hcgqu z|Fq3kQmm%V{?`gcsy1M`Kw_^!$DXlRdjMqKMH0{<-0$2o8LF4Pf5|&t3H;J~Pt|jF z%Jyac_ul?#>{Y>gn*Y|yG);y=^?TiW-0)uaKL2&!e7oPh&yCvrKlOR3zuIDM_jqoA z_x->2zuSAMXZ}yo=DujN_r$GfTVoqNL#)v?36|dE6H@{$ObH++r)2L*mqZylR}$Xm z*WR|ZlYe$e4Nu9Y&eO>x8wZz+Q$JlpoNBU8rq{QxDFUNm%u9PTEwl78n;}Qpb0^V5 zpMJb@JvIU$IR#n|5zAuwAaaGXJX!Nt6DsTKKrNI~1YVmYVX4XaCDx5t{DtClnH+Q{ zW#AOpDh+Vr9i#%YNFQfN6s9jYA<01Gccpr)1u*_-Fuy{iZ_0aN|C@tXcz;Qbl zf^W`yr}iyf9sahR!mkiE5JTAsyYGa+1$r$cDH-rWi0$<#AiFlM?DTK9^Onm-ds~qB zrPqv|njU&GeM@L`I*Y$6F?cdi1J+5BcVL;KyMKxh2XB?qBX)^ibeInzpWdh3X(fhv zKr@|*sGtrhpbMR;nAMwV4I!PgMqtkLy$891uA;|HI%&x_&GKo6k`B@Qk28JMYWGW$ zPqSpHCVGpRib8u;Y$1S4XSC45$n)a}xpT|w5Dx_^ug{8g&{K%dhj*ahj^dtY1^gE^ z8ppZ2bmK>DHXBMHB#`_F1q9)?3zYfgv9m z8OCv;H)9RRI2+SJ!(Dmjry?Koij%wKh-pBLPSgBy57q6*gC}oi*sQXocp~2J(7VLO zeQ1*d0u=`?-L0T%9S;GL2G1CBO^UKagGY>q+Sax|`i(h_OeHB!Jf9;`-c$wT5JqE98=g($`Kqe058kO6AZTh^2t!95d&|0EyI9Lrm6BEr1zE$otK zp;5o-NGuQ9RDQMJU`s!8iaaU!cXP7{D7&Zv3TN2I8oEJSZ+o^3(gE|3zJ-)jiS<(tN%<*$mV*y~(stXrb&G z(^1yMK)zFj_D|G91Ws0XnON1sO?>BSR$nmU;!2%t{1!QI`?EtFI0<*Y-+Qikc12m~ zS`+nNVj4NrCSBy?-+yz5rI`$LYK>V5S<4j?X#?7t7Q;3YNZsUUtvEeBT1&{D(`pD` z79}c!6*r42@gJ<=(jzh_MA!w(QD~^#`d=IWz5nF+?)u!Vij3-P zs`Y4KXX==Pp)J_D5ei3yQD%PT0^Zq13r*Cj!~Y(%olnNEfcqe>Rn;IJGITI7we3E< z+WmI#pFi&H!^ZEt_g zyvCUsKaF>zAsLr7%4xrA1v2CL=p>t(tbD_FMDv=Di?`9RI$D{ydQw!uWG z5xM_Nm@?XxL#%jA;b@v0jK9tNFwGDi69~E+CYmsRY{KF)Bxos+@I^XB{r?&bS6<{` z17U&(qFs4Dvw8kd?D|dDOYvs<+z_?yhqcUTT#qqyeRtRX8u2ESv&&&-po*g|BFw-a zn1fy(1+cZ8{t`mcFu)zn_}krwN$X23d3{ zl3YGOXh8kFw>CWp6g61~VwzE=%Ze6M7_`yw?zM{Fs%Frf3o6Fc&90M1us=Z?q-DEAg~HR`mB%?Q-M_CHt$z}U2PO-)(v!McTRTi0SZs=MJ5 zllpFU1@eCwySy7Fs*tZ{zWm_A&YENqUkE*P%lD6l%yf=*=*j zPjyZF5qY6jd)-uPaBVmRmj#Nl__6>hh>(o}$1Xn!xTyqf;uG!@FWPnlp;B=2FPQu$ zoP1tfJk7^%Op^Ky{dIpn8l}_ANI^D47EP91JJE4c!j{2^5B)J&!R8IZgJm8~ z9f`{fV$U@>Nx{flA@kk+r?78*U8lowwrulnG2&Z_Aw|%x5iE7)<5?>~c`kfQN)!Ua zSIy5BW9mwad9ign*`hxbMV-$|^z5ME9cp4ub?OW1)0rhq+mdM{3yQHTtE-(1=Tn6S ze#h>*DP*V>F;28EH^8?ADSY)HhJ__Z69p(?FY0 z`0KjtX%I2np3N`@ARpPlD#Y=nL822chgwE@QYr|a@mD${xCHA2_^{m~5Uv~a53Lv4 zxJRZNJA$I6X$DR^H07c;_$SUokHC>q(YS?FEqB`&V;jxxehjxpeFnVx2|OO_4cS`5H>QROIDB5&AJmY6uLIh2AI$Hb7JVmxzobqBTxtd0FgMyN z`Rtp>!?bJe`;LXzv5D-C2bI&XnYeAX&;Z3NdU8l1#^h`^bQwd{LvKP@j&ZQyXH7V8f)->*_s)8f)aKocayxyIX5Uhv!&T!N_X#WSQ3sWbx)H8 z6tnHhtzcSQ>ytL8fNRz;np{V5#>}}FOh%kype735spl_mq|G^l$dYVWQ4TWAI4yQb zzIw6NBv<4&o4U|p-9=BbIeIOR&q|0=R(Gvw`W1JY;Uxk@dMP^ARje)5$d)l+ZY7%(8rB(+YHCja__r$qh!Z)O<;44 z)SLUF5|iZWBOy_}oM}0GO1Oa87WJya>0NgqkE#DM_kRLHA7#kGrUghcMoZbSznadb(^PsNR zZ{7Q#CtLAOFx%9i(JiT`N2nn77^zWXbuZ9bm>0I0+)LopL65bDNQ5vxbMa17G)~;G zFk!neN3Z9v&z`ElNn3`)yfQ7GL^A?!W;g44*OmPK&0A%+rWpq_HOGx6!K&(C zkEd}TKnViwsbYZ!onF)9z^!CazssRK(Y)S|x{&Q)mZ!r9{xiNAJ-|^mJ${q){zgDv&NqBV4c6vkYy zDxshK9z#Roj&0QS<6b}RtEG~~YFl2cWUgRL)` zqZ@PYC5-``5o|GcfSWJ}(hj0!ChD10KLGvlW2!Ny`r^@f&(KO?OotD_9n`bg#cDW& zK~HOlO?!c8g#mU+z%VbHxC;$QjPe7J)3ebq$Y1R_Mv10hr};ZDD%>>)yPMqe3%?h5 z+7@3oiCmXlB)~V!DFWy2?in%(H|I@x-CGKC@LHG08K3+{LuRWFRHfqASpfmqElKh* zm7Vkkx zt{y!mql>lj_3F<0?KTgY-&JiC@Op}25b;Vui~Q|~etqIg_j=v6j3LbIIynpkLC1o3 zKnrKcwnkL8UHn-lUIhuZ(PFcNaH&C1qqhsDJzX0~g z|Hj+mf2MSV@|%E-G@Mg6I?=CuQzTPntdZ<8TF%^CdcrL+%a)#6peu!JYF0~XF!ae~ zqC-OmyR8KooIUF~`~zvZbuXU$;z`)MB7HFbB6+{+Aagp+dNl3PStec#%3k#*yHvwQ zwy)_ON#b`c`c`iFGj@C6aLIE41cAZg>_90sS%M&Mw?cZ7a<*F!V?AkMn_ zE9QjIQD!lk2KpagFUUG2O$9_-$6Nq%bM2ibJ<9noE-0qoxX?&aN0GDn%TVw!E)}`k zNp{#G%Xlu4B)5b#Xfwyqz{xM?=dgT@k(v}e&8ARVtj5V(G4Ji1g5z=xF|=PIa=dwY z&g?vJ#QwaTsS_9$XJ;6vJ{=Ar9)VnyUMRk^dUeo%jj<^;oKZ4(DdT+UrC4?pgu@dy z6t0sf5IzjD{xF?pZuV87F$&LH)o7X{kz}=EGx5AyHZL5Ut`Du6PjGtjjaxZl3w;%j56wRXTcXuzZ+O-gcwQq7!fjGg4A zIz`C#Lftww^#CW?DTZ`Hx*s4MQtfrjsy^>79!Eu0`YP$n(iW*AK4HXp+**VEFW0(< zYX_<-W_%vc6hhTm6SHR^?@}KISvDE*-?Q`#UN`j@=H*iV?$6Y5seieHXX@1*s-Mr* zzd(Xw$>;p>P zLZL8gTmv-DPje!M)yMRww>W>2?y5i4d$eOSEkU#5O*ZCvV&33=pdZu^I$@S)QcFxu z?6l6yZMFC_T8|?ERlm>Ea&L6DHJriJu=1;Hn7vJLleOZg)KjP3+f_&!2R~DIO#Puv zj`g3HT3@Cr-Yp<0*-rC9^x4zxl`nI*dwY9H5Y;SFCx4zrj z`mVLBDys(D_jl;yi><8}t!!&66LsJ(sPmV{_BVAG)|qkV`u7v~&lc78y46FUZ;PQ# zW2%Fzzykb<|M~mY*59GsAM7YQVia#;W`R60?D6}pt?y}9o^5SC^A`jIh|2CF&6q#) zpmy%qD^{d!##-FemccGS$%IS#TU-6eM)G{^>S#2a(Z9B~{zcQrad8dU`1RJ-YpP<` zh4su4?oja?HNiIw7`C@aBXMYM73l3xyJFwHb?ALxe=K&$?jr6n{-mj3cku(ot+O-m z57g_}LXlmAY3KGZiI4Y3HK9NHcZB-YE#L0=gW10n0yhoAUtp%{K2L{}##fQN}4*}t51PUJc*bj1Ghwj9Uu`?3SbJvO!6<-Fti`uE?W z%Q;gWojvxC*%|oVwtt!Jao`^7iobs>T0`&faroGjKZ#-xuQP8S^ql`7k(`Gu@YZ4z z+p8Xayc=EiUA64H{wXpL#7^wrs{X$pGtheog36-j>0w8Aq+K5cVZ}oARy_81+=DcO za7mZnx4^L1mMB%rvkjN zqB#f&ecm*5Xa6f2>l;4sK+}ILf*WEd>L9|m5;)@vbB^h)M2vQ-_63L?y!#Gu$?|X$ zUMWUS)z8I3^d=8T+&u^F%;cQncsx9;ciSF9^MTJ6;GCV)c(*N(LF^@y$TRk2dqbPc z7Td(9K6bm&l;858xJfkt=WNnckQDS@!B0f>bey)!1u(hX;kb*pcK*W4nTA^N!hU!j6CfyN)P@<(+0d90{avisAPwQD+IvZ#b9j%BNF6HSV8f zo{>?iV+&?G)oi23AUG)K50Cv_vvo%5zax9hvmHBeA3|*-k8ZQK%ptGtZ+rBvn7v!u zJ7jKW|D#J@Mwx%_c{L-^(oLN$DDJyBZwuua+mk)DMcD2&L-QNlvMoEEJ?a7{itzMz z_>Zphm&c;m*{m%ZW{bw(K7qa4BI0w8EA#BO4Xs|$me#VPKfYix6zJ;<6rDU1^>-Ck z-6oKF0snDliu^ov59`LiUc0#58~kS)9CqvF3j?ni^po4YTF1R|r9TAU!0`4M%yz!w?PLncOjZKfs@rLKJ!gNWj~8yLzS_3Y+xVvLGsfTYH$*M& z?PL5i_8&FrXDn-?7(q zmsaqM;Sebmd2x67hBJW9AM?k1kHyzFkNtVGJm^EA{9k4%y3PIgf&7bU1NT6H8VhUl z8ehnYr#G$lcYYUQknq!EeJr~;!}()#>VJAH_FW$nZtQ;K!2T7Eusz!rJ*fYT9=nxb zYJd*)dGafR{a)^H$KN2f-!stSt?cjKU4|;(nI{w1`0j}y)}50Q7?!r-8GLhoZW)Hb ze*0T1|JJRu>;7bMhXtq9-S}s?H&}9}Cq3F0^)K|-Z{*kApqD>9p_2dBFz<{S|GFEX zy+7f$>#8;nTSLm&er@QHkmYiF=A+ldvYru=$=<8)sE2JAZgv?My?J?k{rvIzB9OfQ*ofJd==GWC zRTH}38FalZHqth;UFq)et$slVvuiL!xY+UT7d)*O7Q#(mdtx5C;DzWlKwPXCMI83R zuq1tpKQ?~*-+!QKhN5YI&$Kxa>*~DkftUtZ^F8?*Tj7O7p;~XGXp(;gFVbHmg4D7m z%aZcL<}nHTEr(pZ&ouYn;n_!x&I`l0?ir-_og`HR#>YvS4&FWn4E-;GjJIX+{|ZX| znJhRE1!voCiAQz42BA}|8?~eVpub)azf9ERjwjDBC@>=O@ToSwrl1cfx5cih6C3V` zN&H=wh#6z&rr=eSR>T4$x}vk9vm(v2iqyedj0n#5NApOf_koBC&!1XZWxnGc$DelGLy&-hKmXI@Nd|cmo?)@HBly4h}*=YOhF&#X!*W0IXO9I|gT_lTe zUW!spY<(-pF6T=9FM#m7gDoM){0`-9f{@=0lmV})lkYu}TVG7>P1|*iEK7VYnR)#@ zzwoh{k%tCdW^f(V4qVzUf0k^ZWwZ6Y!b$(#K>fFZHMUi(0!z!3Sx{)1?(gD6?o1N7 zw!?q9f=pd|xa}{fpK!riM9Rd@%?QfDBE@a!#(}^vD|=tEpW9Xz1y+4m}ZCC zhdoz%9%IztD*umR4C9ZEp31$)#?)aiLcpKz`jbE|aEVF0Sz!_v^^^ERuoE@Vw>xm* z>V@d_HIJP7-?ok7E^^5Us|1CiN?O z?!vA3WiKZ8S#H$bEwK(q_WpOn*9l1iq7ybF@T5UnBw#DfSS94#qPv6F5R7R@%zhf5 zRWI>X+BQ|!ANy4cUG>7NdM?FLdYLcX3qIQQWgiY2*(OflJFOaeB6eLDvn&LV`uwqr zpT2WVs)7@U$h>dfyYR7}e=8q*>;#OE?nz)XuO{iOJ&Em> z!PftS1n6r|?P=+`Cow&bxlsdS@MFLIP20*5Q~Lx&B4>}I?B;h?VY#PidQv`0Zwm)A z{IqTCy!cjr?-V~aI^^%oJDA$H$yEHqV?o#NF~)u7D*m2|D$kho|GQuT%~lo5?eR0$ za^pM3x!O)db8AwCV^L`F*wv)O>b#M4z8wgdb_^6#?;#HQ`97+Q*_Gr4{-^JlMZ68@ zi@vraw43M%xU{U|@8UT7{4Fy!Znp7HQd?NxINa;|+wPK{MW0T)3H_Q)@Q^ayZd6t6 zXaZ9bw<1J)w}^bqtrr+k(ilIAK>`Df5O{ znq~5s*8d_-U%he-&$f&@a4(!U?btu-@geNkKdLrt51-H77>i{eXU)XydFs-~(DmP5 zXg@2(F>ec`N-UO(UWtK@i;z85Ns5CFhN5z9xc4syVQ&w2jhqvqchBIRe;O_Q7MT)1 zlk7m>Wk4;unz3Wyx2v?%mO`Xe{cg+Cp;!Z`$DdD7^SzOF$OGK78$a@-NQ#mD7ZZ)X z@MTa_A|9baOIUt-?9y9yL&)lgj+Y;2Q){|w#3c9{es4hL50AxFwcuiTBKyr+D8>mw zZBJsUpKX#PS+M&%T^83)Q7YO3vg12T0|~?$8jSt@)By@W3o%Yj$`@cS^##}x*x*|u zP^#cMe*d^)65rt#re+f3U=pc0Y^TRbwK1IT`^5`9-#K2Q!cxaS?FtJ;obYRDXgWpo z7+oWpz`gdF9ZxL&cQjW3>@j-mO3R0joske5D%5~PnX&g2H|cxW4GYa2=a-* z+IC?M88E9}*w*q3)8?$te7fv~c87?}%u4)gj?6i{{r`V^Z?+t_v2_i;%YQ3JP!vT` z?C+|O03jHHVYpN-mpVE+D2n1dilQh+^t(3!Wab_-fhv-+&-r{VPME5yL?XvMti4u^ zuKC=rfySiTO@_BRvu=F5x)cxOA z7pVGS5MGCcT>XmnHcX2!{q$_{uW;dxfzq@yv^}Ulu)V3Zqgry@5+KmL+ zMGz2!%>)|<5OWexd1(+sL=joJY**Zle>`L*JSWeFJ*7Zj<`PwWb6OBY#ig4Ib@DqtJMnFrtQEOCz3D})bBANO`F zs8?dE&SFby8*9Lpo(R&J>kRGf_W!zFSVLnI^tbl*EvCCcD`x6SQBZhqlNm5m3D72+ z#Z_f_J1)O7+*0r=rkW-J+^W6+AAZCb~0Q?<`&Y&r6)G$-T zxafVu-43gt0}8xQJZ~A0`V=jcYT9PM`ew5&Y;m|s&*0VFwUhfBzl&qsC(539k;L19 zIZD-v%BlM8JP^#S6$C!}N9 zAkZF3JM=zfOQpXf;m3Jbnr*rwY}b`_Tz}T~B1JB)+dw(uE$|yCbqN&`sv_s8-K%u; z5x@_9GNV;WnpNeF$;u}jZxZ#CV{4NHkWaA@8u-pfv>|gb%)irBX&0q$00ALn3Sr@E z=+OKdI$S_eEEJwAC`9YK~>MH$D+&R5S^4gnXU6GLe;UWopOe|-ULhB1IwX^RbCC*nRL z|*BPI*g>{K%0s%?i(c4Ydk$<&g-}CKG ze>~82#G;q^K)C_QL|3D*R`OK~2Ma-m_qg@>H@>RetZRva!g65cDwH)RXsn8-58MG> z@~D{vfF7n}#^m6gE4qI-JSK-lXiV^K&S^b$hAD>Z0SB)pgPIfnX@>0KjGMyt+!_D| z(A59?aONK}CU7dpUxc*W(WMxp9V)2S=iw)B(_dbtxXJD%AFhc5jnyGI8TG?tyrYw` zO(Da2J+hj=nRA)1WFGg;uGVdgIBP4r#;k&H>K4~DRh zk}rs7fYf#1>`eD>`?gd>5)CY0tPczcrJzb-Nq<{xJ7M*#z6ezy)TjkP`P$P98gYzrEj z@42WJyif~qM6I~k7PV`zV@Po;Y!7GATU(SE_#*k`NChj5D6B%Zw~g)PdLqrbG$cuT zYfx)@!>wuM2cfK>Z56I1&AAN(p3aSbvVFWwJ`sm(TaUbua-xcMvO+a3)N)UFaRXT- zwic@vzq8a(lmhGKoxRI#uPF*!{NBVZdTg;&6ocs4r}8yUEh%pVUHdrwiIFiU{Qhm_MvH)%RZ2oTF{!md40C4 zgW`OR+4doWH=5Fx@tVeN)ftO>z&5MpWri4KCKPyE(WBubN4G+Ic?9h*_Bcs(RkWn7 zQU)44iW6gpYS*Jy8^sg=^Wfo}M%0d{q7L05j%ISg<~Pg!<5zw zTqU$PU_J4b6;pUQsQXD!a*m)Z8GL^|@yR9BHUIIK@y!&JtdW863o?a0#V`psH;kPJ zh13aGT7{xDl{BAx4Tag^TNxG=Tva5xHt}dso{+`ZHDLB(o>wl27!NHpp;EA%?$!yu z_gcb#TqrDMHO<^MlqP_X12hOLmf^|za~O_){ceHYw8P?cW8$mw&2MnSxLSAg->v=H zS@eGfYVgej{hrM(e36gUa?MoHW~#Bxl+k9&pWK@|+DtvRnI_sy^Yp#>V@@a%svt!I zGUQ@*M1V?#l9|?%n5QY-?^9l^FYV%9eFTHj#I0`L^Y9C!=rlM_JxAzk=m%T9xo23HF8Gb1 zbqzQo0ahUyin~PNpPZq0a>n16Fi)j6JB&?$G$jusJ=})FMV`HP0affM6)gyEXLO%6 z_|q>O>PnbzKY63SJ=N~&DY~oSzq_nZ7m)vgPKiD3 zmJKwpZ((~M(eLL={Qk@*f)8KzvJVb|0u(_J8!~1A+z9=?f`RQvq47(&>`Tl;9vaf)bpf6h)=LX|&3@(qV#8)^M;N4Wa@Mswb5# zCFIx|(0br;>Ox9i6G3EOh+xwvap^`{BfY{KOKdE> z@%4)Hj*1I5i~{z+^bx60)2t>FYJ%K%JCu(UT96JjEKTx}qqE%+R3ZXz*+xsj* z13_d^6af|_wngByplChy0W9QjGaeqRs8+gz#BI{z4lB_0YzYmnYMNX8o^9z}&4KU5t77|#Cuz`)Q9YlQvr2kDK6RYr?4gH zemhlD^%6wpZW6b#UnHVfim9ubXr$YnU`Iyaz9C3J%EitTHA(=gxJo@=qE?E7^>+2p z_*JG^PCM$`ySwl^H-lttZ@{tF9?U9^qi6l*ig@x7@S`nY z74?c*{6YLUyEN#>PMfXfRrZbVF~dJ9sfFzw8)KcJ0R3DG(9cnP9R9nrg*qqbQ$P{H z2iT#!ef}5>gVqd^veeq4@#9!SNAZRz!1`%k?01?yn1{0mvv7WYR&aTPg;iwn(ajty zp2;eq`-DP0G0kA^BUn&r(H3}O(3!JSCQ4Pr`+-7?3>RYHE+7iRq9-oqWgB{jM|}DF zQcZuO-wqae_zUd8ExSnY%-IsgVBJ{j|SKo!@vK}DbiArM+K3T~G&;92rR&b=rdDZ-%Z z+7jH5GW&j)Fv@~Z9sgyb8uCQ+VUNd7B(3>%s_+36T&zJlF&l}(6oA!sH6oEbfTW~B zluTohtpa!tEJNbxWeLcjug^m__j$%=h80>Cip5}MVP%gGQ-lm=QjgFNcI6hHMu;PW zGllU%5A{$AQsCjELGo@l+$Xh1482L%*1FT#cC|pOhGoX|vVBQ)&h*N6twI5#hy8+F zyD24bg>ri$7WT<6T8hed^KRTi?+pC@RuQ@}V3Szs#6U6RH3nCEZR6g?FR&9h>Gy9i zGMoE4Z^SKT0P z(&UJ6?0AP(=PR4od_-S?fCibYKYJN!#sgj06xNB9UXK>foXp0E~NHgOmF1ejC}PGU7PjR8e+U~Q-MO%>)G%?ju|TK zO*qe?8V)w~X`seq*ahiv5uL}ebEGZoeY&s-vR*(MwUa*}mwS)1yKopyRTP|ubowy4 zM`nG7L%FvH8#+*AhiSsO>j_8XSFIX}Y!#OfxP_bv`L1zo;U02|hM3ClrQr_{)WTAt zsEb{>>#vFM@ffU#7IfgPPIZd+G)-?1(hDsh*7ze>-aD7xQmv^f4}HclF1}&3?!LGN z3A_7GKA{ha;SbvI4Rc5}E=VK?^g5wh8!(IA9(j1BZz)xiTL60^#9MceWyxypT94>^ zH+zU$b`vKfX5B}$8p(JmW4wL}dq9l;Aa^8L%7~OSq+#R3FB5NYA;Pb&kj@!2TZp+D zrB9WkAJ>`A@pp!@!Gr`f3o#~q@h{1a(H%YuXP!a(g1dYb3Y2z+hn+EbVyxq>LU79! zr(kHjEUTfBh1?Sg>Ffh76Q_$lU;?0w07C9@PgrP6_WLg3oI(d)f9DN%TSWzCpwSye z{gB?uG-J7y(sTsYHLEd;X6oQj$*$BB9mH<!Rk4xz!T4+=SVCIS!{$%4 z7r#sV3A+%sY2dvvKnKn&-6&UJi@^~PK_E6D5@~&(sBddo5yab;>tQ;d;M+nxERQlA z6$%)n`sJ)=E21I8Y*qdo0IX#6B3iNVC$bm;8KQxKTo$0@jENM~uagQB5#G)mJp*=* zOXFRl#y44bQm8|oLFt{kSqN9uC^?In5^!dPO;W7BcfL$-9S7oPFOuH<;Ive3S3DR` z--4mEy7fBzF{>S^JL+P8m2^o2vDjPS5TVBH4?ZN@c9)J>_~3Q}y*j+LHLW=iqKGPg z#u7q5(qFy;;TJIK#E1khvG9;a4C;EKDU!>|S)I+x(JU;_`bAJ|JvHGOAzLjl1f^f8 zKA7AdWGsB2=~RKosTvt3qkyS91IIL4VRfJwy87f*Cxi;1ST!0|>9?L8k_2YYvq!9& zSLT=RX314^lc80^n3A&S!~;;Qj@M@aFp07aSG=M_&St-f@Kp=`tTdbERC_T%QwJDv zB^j9dazQMu1@pKC@^1Pn5h}dd*Q;Aj5$K9*4RmYIg~DP(nTp}w)ix8GA|hjYZw8tMBXilNZ-$zN z>mo1@b~y#tO4Y?O;}5YyYDNj*uvHsGWL9lKTkEYDF8e~0W9FB)$&yFRR)_?-tQo10 zH^@JG%n8axU7GM=0L}q)S9{I2=){bxf^6_GK0Nb;*DkUM+pENbtgI6!#Lq+Q4WzgM zoxA;<1rnMYh9cRfu9+?uVj*(F42QEBiOeJ(IVoj>84Dax zlBY|n?jeO~`-4_NcCD9pkUAeJhotRT`IH=^L>n5EVDf(>rX5U%JT&)hajPc8(Y3$t zw-kgx^WG@ZDIhe6u&|8sEu$#a+t;{q)_k9>Zulix+u{?qbt-yz!6+Xgjhn)Q7Bxxi$1Wz7PU5oy|y-Myo@&9-K|Wtgh7+Q zB9LsH+P!j_@h%)BN*`dY*pPx|IHPM8n%j@IW|J3z*6vJnd{~W;R*&=<#bYCkj%3lm z8=k;2xy)4Jn3BTTwS!$_T9NRtOM^}xg0uY8Kd#Yf!~Rkh3LHFtaFxr3FxlC_J8NGy z^ASaz1BKnckJ*ke+b5)YNn`gb702W8Bg+Ido@DHB{8%>gVfC@ITrP8a_3d@Gy70E@ z!-OI~FAxE0hKw|(8dV56Mi7aaDmr?b-e#NC0B$-;#xjJo=G1nAA~8J(j#7a1ivhzI ziTL6iF(zl74=JlpPSfSX6U%V{XiN#E3ZjpSZT|zPu8VFA160>rfU?*y;0@SBuU>|V zNkVO*LifcPQTuxM;=-lypo}0}s*GSXCtu+A3%kHS43Y5#e%~(s4%Yh_HL$xx0~cOb z=@|0_9VAcO#`{&v1?-;OecvAjj{e~r950tUs~#_sDPt{FlI~p|3lYZL>gSm|R~Nli zUeJG2i{03>+{;}M29f|vRznJ-PSa~#B8^XgvoxorYPD8ri|oWHc47M+@`ESSS=vJp zb96Flod>vUjd_1-U5ESobzFZXmTj5-mP_{6is|Wm9s#p&JCXFlGUgD-&GUfD9wXMAN!}2JQ&5=pQc1(@@J4BHBf_~=Md`LcpM%_t zjVciq$h)jX=n73#9R#B41yi5YNPN26SSRtxPKS7ks?q#BISHcVUg(96PnqsLLX!qK1Ph*zSgW=Ne0Oj8!Oxm=iAhOu(0O2HOKrW5XG!oor(kwZ)4!r%${Ql zj^C!vhsO~YzE#EBGS}&_Zks44YQ@@qXsUf3eMdH-RU(+BKes5E8Q&E#CA#}mZ4iFU z5CNc0k~3_wMoC5q{sX|~{Klvk6a*q+CZQQIlQx_R%dzm8P$d4|FAW!>s>tQ(!s>w# z{Z=++L3duxZg(f;l8U^?uXYuxh0&a zAk;a3QJ&I$@T<>9m2AkVA=>csR1`yZtz_q^%BJH>Z?Pl}W1b^?Nz@d})>3q7$|}q* z04>-la5fqqsMZ}c(ZnET!k5O=cK7pw)2&NQ%lo81;aL^4qW+qAV4EG;sW%x}CJ!pZ zb;Hxwh`_>tI5ijPs}#Tx)i*@+fFQ`_elZVF;M1bApC*9Lp&eDZVS;K~3g*K-Ys(mg^pN1^D(?tfB%Ii>(#7CQz09Sek{C0gzFVt9S|KrVMtb45_g+N~pC_r*ToLoQ=y&4Fr)mzb@zvB&z zN=zb9biqg*AdA}FAgHJ$@Z_Og<>*5Z3T~Ty{)_ zNx7#$xu=b5jUvvL<+p_Fac;+MPJI(%o2|&9&BVABffxOHs-pR5&5{eSyWbd2J||Bi zVjpxy6u`=I+c{+p{R!suAojz&$n4yw*J!E+;5CUtk=H@Q#o0u4f3#)-uvvlNjw3UbYq{US>3Ye9Hfc$!%Z-EsxrfZw`JmHkl%#BlpJ zzfUNjp1sj;R61gp$tXM1bLc$wRp_<;g6yf6zV!1VsVSZKE{(!;bQFl+`(|gU4i)Iz z1%~=mx{5DN*d$B!JHzqWr>GSv{7U0#h_fwBaisK+SUK&q}20rd^BAS$LT05 zk%`7@4}sGlXr`2%Rs9@e*E?d6i1OgPmxQ6N(4_$IuGZ|iCbSqjY4?$OB;t_KEg`UJ zCEnqX-30}=fP>a&Y4u@9Qi9dW!YY|^r>4DynV>=GX-%-*U^AqJ`bF$Qw9aoJZ1AU& zncJl?rfJB;9z5+c1+FNr7rV;>&p0>SJuSP{mJ>?nQQJ|L3*O-S=PZHRQJ>)|M;8R4 z*KRF~@8H{>;zTan1-rpJf@x&tl)ns23Aa;%iKoq>?zSO{Z_wT2mAcDR+`&tjQhP_L z{RBI{o${$~)QwFdIuRMrUHj;RBwPjnB17o0`wv$>jL#vy00=`WHkBBCYvF}CNYAt= z4+|{ZW(s3_p^%ABDGzipJivEiZ_SDH$fo%l-W2D~3ksMv!mTP)--^)u#fM-GGsXka z2`YTsNC!&rdNm$dWHa?v>1l>8cge0)he~p4{w4($0<;b|(`ELoqy38nYohLVMw`7| zw4~|w09D)*3{21s#){c!j*U39bN?z?KpVSI?9&iXX1bD^$EHCa-BZS;(=G6`x8&7&-%c%Jq;Q?y;}{ZS&ogD`xb?Yv(OApy`x|I zBYG@gi4<~cN5iRL6?2w9#CLym7Zx%>uKu8a1twTTa=NZ7K z>@-J3qh-Xhm;sAR&o#mins{6(a&JWXA32?^YnhDkp(0OU#-WM%?@+7_j&lg85PiZ^dN#ga->19oFgBR5H9Wo zjLn%5GhB%{WQFD!ciY7kAb07~-a7Z_30ia%7%OC(oCUUMo7@v@#Uj0)xj;~WUINEl zX~3(0x0#RUbn?yptHbhZ>yut496&*BHg5=Crl@YbQ7m95idX|%KgLBfz*|5aq@*_V zy6HWC7Uj|op1DPnboFM0HbWYK6^c8lO8p6+}FTr^%zoMJK!}`=d3}4I~D}A*^kO7`omE!E+}g$pdMQEZXg@vJ3o1_7*^< zsBo`e$LlFqREJCm5m~i!{}@B84Ln5_aetD$fJMBvqozKzsEhW8jzta2Fp_Kb!;2EGyO=~V3iigZi7|d#AXU)3bwWE;Z7JWIKFW>91-oC_VcgZ zVtfnt;{A?VkwXUk%gFU9RL6k#1O81Sao0_hrcJE>3wH>9OT3lOAlm`5*PsMI+1Yg^ zz&0wrV@Yl1X2N+8T`Sd?zG=O+umv4eKh5oSW<$9s;6 ztM*wBb~3T22R+6Le{B7-AMP@EneZ}<%-gV8fTLsXKw6BCV7cUF_p>);%+AR>_q)Ii__ELdN8XO zD-4%*Jk7iCnGx1B9xm41p$E#yd!anwIP>#WMN^WYg0H7S!Md%vZw;Iu5Kw}x*`Tc{ zom_~&xH@YAU<*ZE@_Rwj0@OLcgCI*-h)L^~=z_`@V*EE3oEmYVETRsCt9;!B=G?@0 zL@=^5`u#>Q+n$d9aS{CS?(mOi!5`0te_RKDJb%nPKkCPO!#|z}e>}xM7FZJPdbSA% zNlmQPk9AR8D{yKH7e!($^w z^9Cg2g{FI<5Dxio{}KLj!M~jS(XXl)%ilMrYwk!uXC7M>)H>gATIc`p|4q#GpEmHb z-!X~iSjc`eMSN9&p6~wa;ivBxC=lM={+&4>DQc&PofZDOJ*&D4?JwlC&NOz{!0$&> z+y;I>w+F-@==b|g`cKD5)vy7tAq7Fa5-Vv4kSEh`au7n~NvwId|hAP*xsM{bj)TEwn>PWgBk3cu8A z&!wn2a}Z^I>^@PYPvB+(R4^mpsi?*>VL`;)I}y{Obq)(*Hw)!vS*JLDOvRfqM7&il zY=etA?w;{f{UsMGh8$7u^@=q3vkcK^U13x@JT8AdW>|2=r`%zeeuvcuNpG(Z&ig%v zRy@Qc+FB;!TjF6?hyyBj5^6}E0_@M4*M^l=K>+KA$gs4DZh`HTNs+fl(~X&^jPD}Y zIlVTVhyoMZ=dLDoAA`gCd-^s(6i%7T0H8l-(LdR5=g~j+=$}pW%e#bHnxCw0M!ysO zSeWd6@GUfOcW#5p%3!%Qt{&r47ok9)s#ATDX^1#jcq-h`{^x(i^|JFwZY&Y zS#N>lVvhBC2d!>D$ho4H$pnUahPYV`4xeeMf;AJCo3C{WYzG#~qPec(5wGklCUQnM zp%&PBCnd3l3s81AxeR!8Cf%9bJCPR&jrecb=rSNE5oGozrFWgst!J7BdZli*Y3Ob) zD2rc#mNi_cx~bU)XxT}k^*p;tM?Z2%5wKm`0jUQxREMd0Qoz2HgoLQ<@DV44nV<*9 z)mx>C#hre>b;}S-g9Vi(yF(vlfW22QxUmbdN;C>k4Z-I(gjx4`2+mHy5$>uxlbDca z#^XYBLU#`NY%v0EhHH%=rwE6ZWJX~GBP$BcV8nhIe|v|UHDB8BJ1l0eo!A!eK;fp7 zDXw`HEF3qs%+JY|^k-Z~nYqh7zEdH;1W2eV;L-0Rk->u0sX95Lh^Tx$nl$d;!FHQCm_79{Bk{o z^ho#1t3=_2RYV%5?rH&nIux_*J@bOsV#?6$Z8C_UG}!x-@4}ti@ohb2zvS%X3_dl! zEjjAY*4@~)l(i41jJxS<7QY~o;Z1zkfgfeMuu|D^h?g2u!OVVjcY^#-7-NYyIZY{J zQG>EX1?Bz+phSQd>OQ4$NTHO(Fgw~EE~x{M^XZ$qOp()1v#h{dl1QDOg*({^$z!ho ziZFawFfI4S!4)TuIaHC=N=}{Z34b#vgKIv;dR3e8Bpwi=_*=w;<`hVB=zw3L<`d(NLgfkxJsd^W@Z`6iI zO*eydffJ@&?{er1Ty=KX1y$NuEv`Inl!*3<3*4YxHg1Jm(z0%acZ1d_OZ+;v#0lj? zzr=r_n!)i)Tna1Q{Sy~BFn2@nIIy@k(&t>) zd=ztiy-4)f{9(pJOr=F0btPo`eFx=M*Tsvzkg=qG`NOM{gUggl_H8QI-gW_DKS}<`O|bS!`)kf%00uJ)Kgw0(OsE)ZiR_NdWB;;eT&%=?-hW`Z{iUB(~OeUYpy^u ze2?fA6p~blD2tP*ZticOxkm_S0p0WTY1=t6of7Y0Lob~^sch=O=zXH5=3AC-rVrRy zsp|H&kwBocgmRS7g*jn`mi?a#4bh`Fv=?n?Z+t_$(S~-z7@@9>07$4GAAu5jo4iM6 za!o3y)-!Y(cGtTPX&{#P0~aal?Y^0ekJ_6I3NHIaf5J6y>;^kxn`d`oa{hzOWatM( zR`3RYeNXJoRNd%%`qk)du-PPdm7Qaw&tfcG#>H9ZB|pl#G`~E%*SvMJs6BqseBl*} zwO99O|2|AGoAgu8qPT(F!l?y^So}7Z+AM4OU8!p+ThK$o>4m!M{lG2ui-h|7EPA+U zM)R-t0N;~DTA%4)7l5oF7Ge$1ldRgAWdp>If1k#gTuS z3qG72pC+YJrj=9r0?5CSm%mwR?q4LppTo#Z^NG6BM|5gI#opWmRX%6M=4)%I74kMg zmkQa$&k#PX0%XQ3W6aK;l^hX!9(gG~n& zx@yidn0fGBNUtLe=YR{5cHAs5lBs7RXJI^EjsP2q3<90I{L=6f+k+iF0w|hRBHJGJ zw1nM`NSzT>3;;2wwu8Iq--r&uz9PJS+W8ot>tOxJU8+JTG*?YPDDq7)Y>Z1~sbM28 z!-nmC$zg+Ohhfu7Z3Dx0(+ykdBAQc=HfVZ~qPZ~mBq3pfuL(jP07tas5kAMzAQ|MV zQ87;DLvEzN{2X(|12Ga5-oSQ;?I=C&O&d0W@Fmg8WPIlKK+;b^ixRODCCmNZD}lqm z+Ohr};&edv-kYx*299ou>imdeuTx*`&+wg97u+wYAPeJnW;*8{-iL~j;Yp-G8O3%p zSXkDv+4HBN{nAN$?)zA6_s?gE6@`3w$JZz;v7;VmjqjsyezWyN3lVmmDtJYfB)2$x zM1+u_3O!a1)sc`tC#WR1p=k^x!AY|cHwi)t=d_H=-xzrOm4UJh%`#}-)s_^9J@L?R zT%s%z7j#Kkm*!A`VC<1!-6OBKV`fi697L6-!6dKV?!eu(8#T%yKwP#&Mr^j0fCk zua)n8xj;4m0IBk-hfDS%4JPQ_Ozn$}+(O zf!>6pDMy&at;m$h#*UNKn4M}L{P@OWPMFD*Q0kQ-p@y4e46C?Pnnw@3HUk1p@cdd) z{H|5WI-#Iad(8iLDVjF4FbTDA^bJ8>?klW{L-U06e-BTY)!r_|N44$+10<3xriDT@ zKJ}e5h84qMK(FecXgS1Fh8ZTULguWE*cOwr;5x~WW&o2P*2;|9hutRqnz)j< zLX)S8=wQa^CeF=M{g@ExVFg3yM^>mri$wEE9v7p2v!GIkI6z~o-1bo9ymBHGGwv-_ zmd=<{n)pvYp;&w6`A;)CAQH-iYRVY6B&7^s)*5gH4^s@!)-=xHQS3l*B8Dt((o=uw zwi>P8^K{31o@0K-efS!OC^;cZrif8BPKdVn!@b$&4Eqil{Xg5{n^{Ilff@GV7;~gS zgs%~u`si;|%&nUVV%aVo@+;La4HiSrX=m;ds@7G6(TSzg9vRi8Vtkia3Hz<+Qqa>V zt#e=|)KxX~2>als^kq`Jr*=?E(;5*#rqw%gV*k5*O(~ddiV(?o6{XT9e6J$2>Wah* z8mU}QsMht2v#P^STH24)SJkrM(eaL==2&x8JcuVct)heO`KY{o3lkx-12(fRzE-@N zi|odbgWZvRFQ>LOc`Vng$a-W><-!5r++o_IlaR-Ew-b&-RM9wu?gcA>jnQA!BO4L% zlP9xRA55O!+SvER$~mgwcmKx<`euFl$<*Ay2qtWF$r-Y@nB-rD*EZQ(@DLIg{W#_! zU~HW9#vUWakRi(Bl#}6+szF-Im)&3%F0D!*RC7qA=+vmJxUer714vI~gV;_RQD3`H z>-2ME5oew}ohFemm^r2?@jEv-7=aI#{vg@v*90q;(XrQK#FjT~=NXtBza|z2K{Mi) z*`TT2V+FTAxpc-12jKc$^5FM-fiqOVtyWVl~i`ueLkzmln%st09o!d6&Z_FmT?6QCqN6q#3YF>6JtmFqf z0J1I4*0q72@2N~(iopVqMolALAjox*wr7X$^|cB2x@>!$LzNZ_&=Fan2D!zQ6MY>c z{WQ-1!X8ORjb+RHKjNg<6qh36CPZ`7ICw^#wX(tZ9Ipl-R{}1{hL+j zgve6Pay_HtOhC(mJ6=X$Zp`2Okp0j@aO8g6W7hw!$JAaMVo*6^=IvONy}V3$1_1mn z>I5LXFE$rl9?SJ=Yiy=ZXDGklv4`9p^Ey+ z-AujB>6Eg~c*H(Fi+}wf3r&1sNoKGZkk+4*RUcp-5mFD(2N5k(bJ0Z#4U-aCE{K>8 z1`!<%*_h~>2wJe%S7R$KDpJ>C^I$S;6b`l^(j{Cgs)b7oFmo~L*GyGVt~#z22&%j= zj|r;aodHqjeb8`aagof%h>R@(EMZ4h^jL<3IG0zg6o>^N9xzXt*!h{G$O3L%Rr0W* z$1USd(%^zMtf3KJH>Z+o$a=oZ_#HL#DZSVowV9|c^JwmtBB}`$DZ;e=w$8v_(c;R& zr+>&Dcb|-jjA`sixZ*}FkgKq6?;M5Tb6av|Xhh!E%eA?`T#Q>ob-^;8>5|M3hba#u zl7L*0gLyOIXd1uFef<3|CX$E(^Hg-{m$$4gWY$hjgHOka*QqZMk}$Wm$Ov8N8@NR< zL1a=)d8U^{rS@BohG0Iv@H%bwo=xaI8|6K(*n2i@XJ#Hs&R(L6b3zMyxW69)`n}St znLA4pMaj>_E)E}Qg(6Q3sw_rVp^mKUp_s@_>wHL}}vEmz1o$(>@XN%fte zPE&MUd`qAHx_~;_*lqCxF*&B=Zi|fE7H}eJq}4Kqw=JUo5I+Q^OCn*xBy$M8S?qYz zHA0}l@5XbD^0FhjM7Oiym~X#YUnKDyb)_N+15Cx+uqIEF{=iKG-obu%I}>EcX%d2l z?9rc}CtQ}Mq<_}*&m#I~9o3;}q6#;0v7B-lDV?eM+<@Q>@tLj|X=K)uutxah;I5Ox z3d`}!MR@HAJrKy%)Dlx!QVqgobdgYV{`KGzcjB`!%5j4;Sq3GxqmuL;s%9KVPx0FX*4& z*~h!|&$kH;+K}`=*qF^2-8ovC>RH|j?!L()ipv3y5E^vD-rgOWB~f)AHC*oBpCQ3c zy2UT@ZNo2eMks_djhNq7*`gPG!r)prN8mtUSdFSXtX*hzYkrUP=Ni-yRDKd^blqyDd974bBdH2708NcBWhRWOuD;L`vhRkyXhzt%bEt_rWGe_;sq$m9Z588Y)T^Xo?^e z?9JL^$X|vVD6a2e4?}D%RU5yMKNGH0iRsB%1NYqtFzqe2W+V{I5X%5(sv1RuQJW-# zi{!PowiEO!@NGucNXWu#R7uGI%5?PTWqW6$iQ|Trh=1?)Akwir&s6u7Rl?+?66Vep z1vS)8YwId}Y-m04T;KrM!VEg3BzmDRPc43t@u=hUIa^%}w~A@sq1}bFAiFUb-&?)i zK!5vF58!JRcO6MCq0jl}^eUc?IbiE{c?_Cz{l#^c#`Bs`MM>DqewWoaZ8}dzG#+jT z(CJ|gSbpOtlQ3UrPypmx2fP>I3m~5m8G60BIQB98lM1}cWIsboKd>B zOkQ6t+5oB`UpgD^4bSz{oBJB)QV;%CfVxJBL69LVI(8h2Ntc+4)+;`qB_c5ujAmD% z(lEG?S;318a~$i{=rLmx#oLqRvyI)*03}ocB+OPt=J9MHCZ&ytIvw-yG7iEggysU7`&Xr%>QQg7hZit8p@aov>B zX7E{eoKV@9Sy=UDN-2uE1|H7D`Xk)W7l|@#>o&l5&|l!)7rq%*j^~Avuk1ID5*ASC zzHycSLw3V(N8$^G_61Y}ON9s=6$X+vdYLfmk`=bnRd#1ThxEZ~qrt}TIGm~DfL~%? zdkNgck3?$%&&Kyen~vdc;BLGzT0d|bds-7{tmfKS;Rddfp;dFBzAFC4h58NDi+!yZ z==0a9_64+Pj?_hi--8HctQDr-@163Hor|f&6KFMO~|R0fx)WGpVW9BZCsaOYHjfmO&8IocXjp8 zL-RK`T}GRBnCMyrwnj8vMVsCim}ys?`ZIf-<2Wc&MARIqHd>x=H{ETSUSXm)dW!BS z(<)}WP}?5Kv>op7{K!1S$Lc!ZeCb`gstk2nk5ZN?MjnkX#`S3tlCvUwaFtZ@dyKq_>es_Hrlx)qWn z6#WT-dAhq9KenHU8bE5_+vv?%M3mK%mo*}CMaa@)5ce7$Pp$TuR~vA@9LhQ zPb857Qf(^fu$WVYe16?L)o?gW-PZ($0{`6Ncru$Vn4|W-%kened9LyBoUt9h=-yRXE@QW_{l^NK{TWao@}NA7p3-cq$)BG_e-1$y?VM=gczCBCnPqmW3pAbu z#H60|j*Y)a(;uH8;4-_zhE6(#=07A(izJyGu-s4BJIAY_-r&Ud!eM)_OLb}13Sie+-E!}#5t>fyxODLkp(AWdB6oNnT`mIkasAnL*5E`RMprmg zLe0F#89v}Io@TC|?1o%o7}lbr2nP%e>j7df)hku?Vd!CQ_tOc7GSrgN;9={4+!~{M zxEoFPfZ_ffyD|f}V)EsyXTY`+<_=?HX`T{D)P~k7+iXi6P$`vLpbrX$5DCoQg#t?k zQ_f87LRqNU5)qQLkp>YZhd_(0^+qrkGZ1rxYCSM?2{rT#&1iQ3(H#ndmhre8DXp?6 z+Ewa!^wJ>f(ay-yiZ8VQeC!fxrhedd0+koAR`&5HA4XMPOz{bOL44&*SvoP*o{fZF z90g)K&y;YZyw+&^V%0uvw5ZpKt!l-@jWlUmBew?~94Om%d;-Y+*7 zKiuAUZO~lg`dn;fIt8IE%a#;``C;}minQRWBkcBik(PX|^K>OTL#C+FwE0a!wyBH3 z)-hQPbPIJe4gbb|A;SbWJCurJ$)c|(r&=Uil+{CIzF3*LY*km+0d~~czcoT?e+Wyz z$b`yB-LV-{gVZgmULQraSn}eWM%_}DZVaFt->`Mk03ugF{9M5hOSh0S8#;fRP>N(x ztFAdaB#S4cBIc$b<%>5h=ML;*Yt!B`7`vDT7O7nON* zA)y8n$xVE`#v$jxgu%84lSR}ny;jOC=ZY$0dw~QQrCNqGX`FrEJM>-muv&VCI5PGe z)W~4SYo;jE6h7%u;r=gB{YF8n`HqSR5jmcH;5;sI(-?!-ecHxMkC@-*c)geSs`g+& z()&-|`%iu(UR9%AzyZae8PX~KnmB`3Q_h#W);*@!qS@skPKR@j^jKy^$P?7KdG19QFbUx<>D-Xz}YrRgXw zV|17y=L^-21;JBLgA~dw{W0+xjopB~P2oDmUgpD>PEzV+-ltr(oiGDgl}Nu9Kq^Bh zP_o}q2RY#)-|Q!D%Pi=l?!=>JI$syp2EdHaRh$v}ML&6kODOt{vYvYD^s7WAxRv#i z2~9t^?XYv+CZYZEBD7!3gj0Uvu=GP4L+W9q8h{bh0XmL^uV)ISz#1-;c5#pjTZWai z?A0(P&6XTHo?y3M4>M$Aw#%aPSDB@;jRB!;ZzjDaSTN2rZLe~;r)D(5Z^hYi$y&?DNIn;X>sD2qUGgHAE9$LSyz|8Nub-G;Qe?MPL$l-FEOsTYRpZ^4;6Ndk=9iApl;D%GhBWDyEhkhi_V zZwpIfS3LVSwc~Oz!7n~(3Y<2(wKq1qWi3B{6gu;-HPPOxe6;631?m8JuoYw4*Qb>Gm#1Hi_@b}UkVXCW?@{mg@4U|QM_lLbjR593Q_BDe;w2~7 zc(sWe>@$fJU-4jd#_s(>*=7y|p$cv+LTJ!-5<2|!p866Y6@~#hjCo76p)eLNf1}kX zs8Kn9_X~rGZHg$PzO*8^?6aV=YU3SM2z<4bXwkmZNBiEAv-DBXKDW~P5?z)koY8-S zpxvg4q7VjK%z`aeG;IzkR(E6IfE=n>m%cIt4UbbbYDoBA)TrTC^UFmHhq;z%^JM(l zvftSD4tYNiPW6jbjgZyt6MT>i4Nwt*B~W&6K@Ba2+W>lwo!5gkgB9RD8w93 z^vZ~j@kb|VX-%77A8XoJtbk(L9RF`LZS1k_OdF=4Fu`PdKhdCh9W-cO|7+0vT?S1i z4I1L(jtERV_};pKQeXq6Yns%*Gt=ZQWas3Qu*nrQb`DLn#jq8`i_0Hv1WmyRTGI59 zSUZ>=%?P^OL8_oD7(rRk2$BJh^+dq|?%GsA214u^wQmWL4ADd`BchjTRiHO2G_a{+ z#Mru4H8=a;XRT!&2jVIg)rI-xBzC!PWdktK{|yFJZYf;`jGW8djt-Exprv+$2ZiOZ zWC_MXNnf2CnqQgv7zUh)5A%7%D#^ZiM&Mf01KWw{$(}Gh+1qrvA`1&XzeF`(q;?t7>KDl_E z3WV%+Kv}zX3S2KbMZl#Iax?|aVG{Jm@*krw^Hdp*aWe&K~)v(|%R`IcP@3R4bd z|0%A$9}MQ~D6#Cjv_^&kJqg!wMMd3`1CtHGlno6by#?P7e9-b(`7ZYEkdTQ4WC7@L z#j9gW8$IhEHSuPO0%Yk2@&m{NCH)Y+8>}Cn`}0-R=ez2KFqELddirxqKgqc_w)FG( z=}JGJItU=hkdf0o>J1~(=hk>QYHx%rV7^#n{SGoCF8k()yO&k4NRnnAG(_@<$6%4!;kXTFuFd3Nxw0k13X*jqD@ z;U{=~c0}GVoc&CN?;z*F&G}aoJJMPng%#oT8hCOF{Pj!63)(aCJavcMN#Y%+$ST}E-dz6``4clgH!nQJmEorAOE!74 zjvtJ64d}*s!HC!wmC!Arkmt|_E${{^M zBQLO4xMIXS5c_X|q8tus59|EaEWOaLTnIB$5d3;Qy+R`6+k7x4sdeIq?gKpx(~)Q4 z>3{$^xG@E#!4e;Y{F`76vw4ORX3KVHp3EnS3wFn)wpUctW^&%}}nMO2DR;2>VB}=o^4#)LsEtXRljHu2Zga_ zZ9~aL_LOP{EKN~*xoqNK-0Y0;FmQ=GKenI0v>{^bTTMy<&zq9Wjs;i8ZcDqUXZ8hm zeE~};p#ZLA71@gkaWdlKu=nV1p@?JVB3FNU-!8sN?~?83d{O z*5)Y`IxL^2obuzL#sM(|s@G3Rx9bYNv}{4IQW;>=$i>r@S>!N&SOct|Lop(!*%OV3 z#u|YuykzhUYq%rDq-PuovRGaWEtbQarqcSvf95$67Ci1%>f>{XhuCRy%#j7)h6}T> zf~|s#oGGCoE%w-*nA~W}LL|h*I>-_5 z6SUt*F8n&-nN)c#);xoyv)Q&+EFAQTIB5`rF#)sE=a#;NX%2pfbfBX-*i*iJqI?^{ zYib{9*H?+fc_!Wg-1O*G3&kj?&`s8PWP6ez_70z^aHo>ZvFpjZ;JU`0l49Z4Lm8KD zo)8;dE)p(x39{I}K11*gqCMU+dkvP^Ws0^zWdXPX7|-u?dFHV~IfLYCVAh z4d9`(XQ(H5ROoC(1puLYV+u8EkE;M!1@_l^lld=icS02UGLgUW?wJ$$BlZdgFf;A* z(u)7=D;dRx`i!R;-y1cHtGlb=MWVXK!JttqeVI{4;s1c%j@i?f=7}~n@I-OE&;3uq z`vAo*)G-FpFabHC?NOi~@SYalyD=!N1)FitR(;JGj4>O1*u+EI8ja^76yFX8uj2vo z=@UoJmk)+()&_+F{v|2B@rbMLA78n{;jOB24{=`e%$CrIa4y4eGkV)y#oyf$(RT=!Fy3w&**Ba@ z=`m1)r|9>E^J}k?fQFFe;V`3vi+%EZk4Vtp>v0zn8xYy*T|0GI1ZB-C!ZaIJ2CUZ- zl~ok#zL0F5#L)EN=%Am6B3fQ$eSxfC2w-cZJk-JK_itb^-S4R6CU{2cj#(?m7h86N zf%DzlO}+e`t23*{^AUuy#XHz4JJe8MTGld6?kyXe@BeCO!hdeh0q-C@xT*NxEXQxe-g(9B zoz17Wck&p%*-d(_<|zX~(6!YZB5c9-Hp-uxjiQ@7n zMhpjKqU23v;InX;9q&^pX`zMC}{gwTFl8=%#RV`8xMkO)#&rg9tVDQn3 zWn~y3l~^If_jrOlz1>j(=D?=Q5Y(c?ZAdYxC#rCU)SQ2DN)@mDg*2o-1v|09`+-*~ z7&QjMtUOqNXzeBVlh+B;d1f0q^SDwz8K{kbLSy?pSPnj$+JgcLp6k|vyLD&KKY|UT>`akfjProY zy<&B)b|--@R^pi`c$$}9e7Kfg3sb*zvbk?kF3B~QD=Mei<1|=$x?Cr`cJKF;haO}n z)^-L)wf7wkOgElNvHx1SilQP4Gn|bz8Bejvc#!>9QUtMDY%GRlZ_n|ID5F*OSd;3c3OtX+iD&=-EWWajPh(0pd*>% zS=A}way-9nKGCc}$5IYem+PXB-Hqa>nGS)waS7^05-famivi$6h=CQEJjfgk@@~)0bgiWj0YO&RHeO0on6+ z!hB_WKK7`Yw@D^m+pV`sKZK}@-cxxyu=Oqyn~*GFIV?ieqo_i$hv~ok^MA*l*n5^OvHR#9A;#e`J3?mK zCmpE0`}k$TabQP@*c^w?w>j1m%D+hYQg1T^lCP<-Hd$KtiQo@+%%LcUdYU3GNJg9? z3mrBEfvU~fmI^ak-{=JKO9$#Pz#}(E=n?>d0Yl~{Rb}tXu7Vap0<#dRJGV)GUrEwc|eg#sEry`zNThayiD#G=%U>ySNs|mrOLE<=h-&S&EdTM zMOHj-)Vr7UW1A=i2o|7ogUO8^|^jYK)#SV>Bj>-N`G!?B%#mAJN)fmgzDN zCm_DM!>8wW%T-j^%$0tW3YY17cJHo6cDZ3dyy^)w;GBudfqkmg-17Owl5q5(u0v}%+xfY_SmLy}1FE{X)_QJA&SteII9 z`aniu*A@LJCl+Rbn?0RjGqr}zsyU`D1Jbz40>w!qLVel8+xOAv zHmB7EQeN`|RorcvZ$+-w^Mo^QX+Bg=4XANVlL$0Hqb=xc%~chB$&L^l>C~DYo8z*2d9G(6P`8m?0p8sXHY@_qpK8n%kex zaE){$fvpEgu!bcWNjx<}4WV^Qm=PhP2qzPMCBYQcF8hMM($prq8XN%j#_R+|B9|zT zk#2A|x;DxN2TnI-2R)pY?fdpYz_e@205C7vLZem_-?DTk*)7GS)Gsg8b!2R_-S&iN6=g3gZ{L!$LEa?Lh zt{|K6aHBgV+aTMv$$&;-2QJXU?lIOw3%eOy*fY9}nxTbl|I>6S@l{Axe;AErb+NRm z0p;z|Ub{EmRKqV<`#mz~Pn}y0v_Ar50w)Qj_XX9TgsWC*w4_s_ON4R-^s24w3dkYW zZ7nwrEE)af=}m9hc;omWgCdO`s!rU6ET#ymQ`pM2sUrNlC6XP;XYru!S4fyOQ-zel zQU$sbNk@N;(=!ekEvP7g+Fs_rjL3?x?!$$HkV3Z@Dg%c0YfeRslz*1MK@RU zbKM&VjAWsZf@NW5%c3I$c4C|HI=P3!&k!YW_#5@QOxdpfqOnNAaRoji$q0qX%#_wHGjwcxenKq^3>ZkHVmp*{Dh zl4PNhRn;Bh5C3DKyE{}piU=sfiO&Qr0w?~Rp@CsrU>Gmnf%)UQ(v3oIRrsV4RNi~D zi%Ba6L*9^esp*N|pck!tOp6Lv2~37gtE?%QlSqh`ojpwv1H!-a^v|BBarDv;&$23U z?opmV!&>Fr!h?V3*EtRZs5`J7)H&KOcq{Z*ifO4{u;m$?YASi(%USwQ zKG0#&g8U^H_hOTWGgh|D5>H+!UzWD7(=|T+nB24bov1X$&&kvDQNPbl8HPjLQkY4= zUBjgW2K%sW(FSeye31y8UKk0`y@oBFyfURNJ|!!h&E#W z{|$akNL0M!u6-mlB;|g~-8iKp3fBQs$Ne^FKvhwpM>UcB}z$rzH*W5;f7#8Gvh z4Om}rBEnn}ql8En&X7{EV2B{uRdVp+=eG&>{k9jc6MAqQ3ld)Fn|(Lwn378LMjcZ1 zfVLy`9Rdx<|J;$fU?bHNJ3i+~^-<~TI!wvdmdgX#n9bRxxTea#)mSK+)w{_aOjOAj0VP1cs*6)W2ff$r<6H*u1jVG# zzOaX_VB60rhdQ*d4+n0rFolr^yMd;G!+bMS0Mr%FQ&+87MuRAtyfyvB2la!}DT;^U zD$Aq-NcmfDBp!~+1dxcEvpbot&^Snwz&}Cpc1Z`Zh6F&@2fg!u15LJuKNyy|X4Mhu zMt}kc_+llM4s?;{04>R@^p_v0j?1{;QLm>TEkHOE5Dr%264+;`yi!u>m$>8$8vm#% zSNqBOwHJqyltd84Fq45Sj|8)8D2tcQ{T}J#ojzmy0@#$8&i%QDF=>fS7h!P%JCC!7LD@>|-W)Mb!!*wCn|@av}Fo zU=r~ubE0)!3X;u<7wq9~VaCzuy@vJ6i!q((m-k_R3bFrd%{gE@?c#rCLLS}od=6z& zO8R(`COyQ*7?k~6h=NQc#WAj(c@3*l3xF4nI+1?q@t6|#`F1UbN&9UK8Z)h3^ zaZ9Yy^3w>LD3$5*hYe$wJ*C`v<8Lgpeg`?76UZ=uNpZjxW;$k3!E8?_x;-24` zK%Nlq*}!d7X~vh?772J+A&zQJ#CAULbQO>{%HwKX!X0nyZC;__At2&Us_Wf^eDYfH z$(3~8@Hn9)!lpJ(GfIat*9H8>+nrX0R1n)hIWBRJkk&}(8dVF*ZN+~UvShra{uUw@ z0i6q?gI9(Ea+(z3ok7pq>x|DFV%g95EQ=_lMOc?9jS{?KHSUK-&H9(9p2G@)2JK>xU<~OP<(ue2U|ok1)ism zee_U?9gf+PsB%VP_JF~23$IiZ$?ykYiA&9&yKK1`W9Mn%fo=liUTh?2#N6Jhurp0^ zBn#vR(kjKocOpWhKJG2-7?L#dl(r0Gvz?4=6)Gp}1oVk#DP6thlL&R)f2`yX)-f%V zR;>p)MnV0Vt>GO)D)ev$r5etl1Rm!ShA7dXpMT~w>-Y(L9oqN4zFVP#x{c65(f!(! zCM-~8O5Pd}SDBRpWC)mFN7u7`PeJ5I$`BrAqGIhm{rezZ4|kQ&zhAMx-?GYz7b*Sw zb+%f8+_$Fy+fVHhTm+yeipV*>qUXM5+xZZCO8(2fj-;iyNq-I^U#BOaPy=T@yJf;D zQ|z{r+-YU#=+1Gne5Uxqftvb_WC^AaWV-FK%3uPxfr-`---3MIT4D-aX{Vdp?ut|) zHh7Z>=j)vsK!WZ-HN)Kg+n#bh$y0+-s6sJT!%E7ED59(iAE(${Or984kCx*K5MdpsD`jMt7Yu$(ZgMs%-!9=P zmqS%lZ_-ZlF33t!b>*6H#2-CF4KyocEgjW-`@Kme>HJ`@u_ zj9|iHjauh$VL9(e4N6=bGq-SsiaR(C`tn;J6OVJn5=KzF=t-4P~MA4m={s|lU<9|GM}Zoii=`1M`u24*6X^g)@S#L(31Y_!&u(!HUiP3px*bfE6?cwvt=g zb7eQI-kW21$9;7uVJA84YR$)(RA6hnaxFvqZ1xlO+3aU*yU@n^Z+utnNx`P$Cl0KU zr&zzeyz{b`7c=di`rug0_@34~<*!HLz@&&Dg`$?%j1q$k>So23#-3+Ee2x%4uF^9OL}A zXXURW`BWbLx=nfXOW!crIWEA4tS4Cav6}x|qsW_zN{y)v0APwz0`A{1QQ%r64hgP@ zaD}p-$Pbev1BpO)6!_a4yPwX>*bT4e2!Euf=7$j>PdOY#n+y+yItI6i5VfQk!*ih5 zk~6_1@^Jviu2qz4C)C_Wc}e@ZQx%1iCJWNrX|M>Sdn4v#<2SA#q;g z9BsUAcMWc@iB|*b3AqsY)mq9gvbo#&^b)wi*)!Ndz?TcuvodqF8PCI}YFSaYT7is7 ztKd8~YM~J%7`0cv%>KJrQ@0W>c?OvSSFReu-AFX!Wva4GTp5Pw8ALPrPAE4hx;5W zLu$+k0~f$8&OB!ft6aIkNTO*d#ReWF~L{{3=beAU+>jvALuuc3mlCqlq zoAGi;2Tml_i(Gz9EPjXG4B5DwA-};og>c&t!<8i$*M_IKz^fAEsv4xD(gnpK7bk1+ znLD?U@%mpprC?sW& zC;?=~?tYdTEV_HDApt7pnfuoN;+0w2twg)(^eCjawB8w+YsJLF`DXO~{0*UZ=!ICD z0UJuLg6oLWu3`TKt<1y!^^n*DGmr|KYoxG&5C*0h2=U?yAc;l{P*BD;$rGmHF^$JL zjbpqAm9kP~npS4de$C)LZ}TX6=pv1iZL^PGFfh@#bT#nM%fD47WemMG*xg##0be%S z5!AC^;(ii8Cdkvbos34@kOude*49(}F7`p5_k*+tGpg8?vcnr|9y|05L{*`0hhn5ETGq}u z#F&5%V~RPDH7Lgk?PV1%+*@f>9Y@kxSv<{n zZ%ZlF)=av&5c7D7@wrNE<)+L%-0no{WiXEdD?)M6*BLQwrT<2QD>#Qom@z&?!+YJj!&FKc2j)BTq(HVCNyHpu zx+j<~OnluvZ7x(xgWATYV)#yc#p8it(E14?xCRTFjKL?=!`$9DfTAx@3d{8>XosUK z){eHw8uTmTBPs#|g)vAwNYMUY9JEh{`9oKAl*gIF!0&;$;XejcicfsV{*;v3VJe1Y zEm;XbiojZCfX3M!IiYP(aQ|`l(NbIp0qcqcRu&m+J&7m_9B*+tr$d{NCA~T7v6{69HiA5Cx9}ij z9=;Q2?yr5krKAk`U@nrb-^bzIjKsa64iT|6S#pWQL z)Cm`@rc5ST6ormM{3TW;vFU9IYPuCxHh9Ja7%a#`0;a~A84O%F7Lh8-B9ez#ak{sI zs`-dKKz@jwjXnFGjybi!b8|T=-r;Pln)6xG!q-IeDfvWuKA9_}IIu0m7>p4VO3wFC z7d>dXTR#2rX2%yZzF<{SBRb4re2S}S2K)}^G+Y69@p`5bdulM8w(|8&qWc>GnpAOd zz@}*MAyXl@E+-70{&^tls|(^_916-?IY`c^$pi}^ z4q+}jYk(ws*O$!e6!FmZ69_{Z>yUomp$eH#b*=w2AtnI6=|W7R#x*;|xQ)_Pr7ZgE zp5V~7wffSU=HPD=Re1-TzX%GiB|dMWwec~Sm^J{75;V9^9`O)SycJW$xJ-gnJYK~c z*JBd(Z_Wv8Q*z|TAGiv@9BW8^QOa$1xQe;)`GG)^;LAv-;4~d1&}NA$OuYkpLI#Jo z5~<7Bl|-8FaI)W}Vdm|^UMd+&681%RyP6t#8VMV)L*{bnL*^_G9Wp1+iL;%IAs8Kp zOebHQ^noSKM3=ko+^mk$%_T|~qzp2j40Im=wxpx%mhV|K#?ofKp5~lfjHCkz(RyTS5n2zfOHp?7TQbq(p#wKR z$7>CikPDAZF*{j-Taw^9FOm$Eg3C*IOVe)~DLgB|Z;gGz@`Sq3+8;Y#Nf zgE#4NLdpUtMo5$A+%>zBOjWlDM~9shQSexIGD9>msOdq7iW|RcOLavx9Xu{mKpAh` zQGbx~w^@k$d+TQrUFjZxKWa4(;3dD1fWAmmyy^XPVf--ForPpH*&JdtVORhLCWA<@ zPQ&5R@(`SG9-qJ;&FtNWuN#cF&hAqlA^_w7kd;Dq@BGv^2R zKPMb7ys%6{5F$tevZf#;I>zd}AImQHqC*xr5P`T&2C$@oh|+JJ?efNinc14o<6~82bwqC| zem%5lrv4bW0S*~6T3b4Xdh}Z;hWh3iVn&Qwr>C6%0ex=rkFF zl-RXTAtZ}XeJG>l>muOoSE7CO5jOR%B|Y7v&vVeS3g`FXu>PXOF8xh~k?J#h0AQRe zNs#3@#*{gwFN|cL3S0KUoQH{-tK1D^Sz|3Ff_cJBj@vJ9v(SEdf=o^qP3~QLkb=E7 z(Nn6=nshgH!WVib5Cng4)}kjc3Vbp6Su!?1vf7q3=R!S(Y{}z<`&`;7l6f^z#ewhq z`-HMT^BSs5l_itwzn~CLgr85M>vl7FLYRYFwW*99$4lfgq5h zQk2EaM(zz`c>^cNWwzQ50l}cdj1ueEmvM}>xw4BsFP(_I_uImDMsADKrMJb`aKh<7 z1N}oq-WNjXM-%kYaY8Z)bes3XE)N0WIcNILFr$rzW^e)USm=}j;5H(Z`UF0>jBpMV_Hz}GH*t}XH}9e!A8?Hku1T_Dr1b5x z7H(*{ml-wyRsdf;3CkhgQBR$uI7r2D^x+YShI8{Y8%45@t;uZY>!geF$c?gXR)Dma z&aysBhlw{gvnLB?{ktZWHTl9k>6*MvB;hVwFzc%<7+f^}Bj;$S92=+Ke@Zdsw?J%e zN(1zbrbtxzGIc$OR~#pN6?iMC$Nb0Kyoh!s1lOnr^kF*2act{Y-gC@S5n>;3dns2^ z3S=*7Wo_=%3bkNKV4O~j?Ftf=o+V>?R@35{ryfhpYCSlX8`;PnkBxh7nx{(6yAO^Mpz3f6 zA5%=Rt)}oTg_%<6yYUlJ`2Qxi{~KP0hL!u*IZd?pQF}b~PiR6tegaJ`&rs(({t>$@ z-HW{1k&!N{oLs0fNsQXgvIA1BPeFgw-Mg*J^(NC9X^6mc$%#q9S;rOMtJB&SD*b7Y z>#nrgBbeD&CB4`BF0Jd0pRzkvu ze~JTAFeDc}J~}`ueQg87wH_POYZ6&OfvU?}>{QgnkY(;8iXYs=7F-<(oFi8#JY0`x{<^i@d( zH#|fm{gmxrn~_5qt>tCV{IWwnpptADNTeuU2F{*tlO-hd!|ogd`5Ok#Oqq@HAA)|5fQ9?|A5k%w*-u~Pm^RQm!yED!^g_l?;PPkKt2!C!8PUn1U_SYPEM&-#Tq z_{%l%O8^GNx_T#mhb)=sFE_<6AxNPAt_`Rt#R61sp?~yMBKX7@C5f&Y9DvXVIn8cF zO#(RRLn=lPh1&~?7+t|>a<8LuU25bk0Tn1l$6rd2N@K?%$B=(=MX%vl-Rr-#STO<> z%x@z!v-%WETFs4AP0qpD7%OJF6bx3_l7+=RiY?R@uVUcn_!o04fzTw5eK8rmy#8q~ z#*Tr?Q;WE@QwdZA{J5bPJtHW@{EuYKBd;PwXoL75$t;va8;l<$G332TdYLXQ8{X5> zd>{`smNXqdw2PMj8BqSaQiq4*({bV)0C)!YQ_eBqt8~C-JD^2(qp|w)!prTE80lp; zhO^jXae9iVD#Tv9{L(FbEMKLYg-ZREnm$zI2($LeA2*|!pm!3S(!e?;GxeJZg%dg9 z4>~u_s)HuFs$5Mrs-2b{b?g=^><05YTGqj0 zEn-8Jda+hP70m$aPs5*mq?h_TdOm^V)sHcRfAkzTPdUfU6U{NJu?beMA{t9EqF>0}jFH-qOQUk3c|uxr4ic!` zdZ<1+pP+(kTKCasSmEEK1Gh20>e^94R{Uy(iDcKU;I-(N&`s#%dt?y>1}jz`zRF7) z1Zts}@CpnLa*UxJaBmkQYX}Lz3gKb>SFRH}X&BGawQ!QGP*ErZB?2N7(}oJsSgGm4 zm5h4Z@}gV#U*Y82*iq69-6vhmQ|@==PCuWew+Bf=q*SW8?ijatO;Ju7fU1($etD@U zb|AJ7VseD>|2V$;1UnEYI&ua@tT5a;9#CCIA`}%Dgg3a{k-k=bpN%n@OC0p<`t_s7 z7TAq8_qjB|No~2bz))^bm?Xn1?N2~=*=YH!FGB(CFB~%VkN@ro&B>8)x$_M5uR#vM zxBnSN^E_C4&`shjq)^Rl;B7(s;ToPXS}Z|juA$H+k@D|Q3#v9`G^9w z7I}xg#Z;*W&MUhzKTW(7M5N~|MaM^Az~Ar(O8>eHk6`(7npuZ!xC&y`r@aTX60 z80oQcGP2tU85v%|^uXu?iBg^(%czGp>;jvR)*SloDD_{ZC@QxQJNq<$W*>0L+xZz# z{FIqDv-@&Ld86PRlDKLY{JU7~yFKlvi%n?o{YfTw=R&d05P7@ita zmh|KPc_1=Z5g}_;#ccV2p1U(H3?_{)=;aJf^ptrnF<8ml^p{sDhLzNw`vL#k+lMK8 zo1nES%6iOY@yzVkPg2*DU5f)0fUFSZl3J1kxj5G5um%1a5}@n?`*A{G;0O3Y>VFDd zify29XgjV{8_A*!3T?hgkj8_W7T0orxfO0xbvI#3&Juba`&SgLciUf0}m9 zX!5Q?Wo0LGur-vVY|(eGQ^ng~8=Is&PM(3M?x6UYJaygz^po-mCgnI)nRZzA*p&$H z>*sY`gYqhI)P`EXH(UuY8NqZnB6++jz3j`xm1S^S>cL(8w>ItH+O)?IuSV=n7U=;q z)cCwUvnUPqph;A9(+pHd+4>8xB2J`8@4Z1s)XRVPy@5Gd$nF0*U|brUC)EYJnJLt{ zm{-1L3J%1zH2RFVA$XBM6|H6p>OjA^Ay{@%`6v-<`ncd)WNFC-YpqDI+TTj}{GoY# zWUTwNxK7Z=Bv5sg&=}xRXGpw6)$=*WVd6*VR#Esair~P-`zjSeRrYe+ zrJg;z3uf(IQ1RqazsV-b%HL5ikI%yR$(T9b=FvpXV_85M=uKmDfm6zzr(e0In*i#7 zd<~@cFs##O_~X{z_lLh{Hvk{K(3I6Dh$R_}V_(neY9ev_{!+BYs+x)fHo1(7pulf70 z`TIoXZzxp#kx%6f|^3Q=6E3A@@;NfDRHd(84EbCM>Lp(M@AA_=p4rN(8-8 zcY*&^-Vy6K5ODENrB=_0m951HW8A#Usyzf5e~GztJE~QHxIlW59a&mt@h)8svmoV> zDut)|+6>A`NGYMiRo*kEO|(9WgPZG9_{w5j%Bi6mT1)37MLYFtBI|&&Fq{Ca3R(-$ zzgV=oDNYo;zBBUrbZVFnr!aJ3ia+>(wpBxa5&S^2kqgT*HRFeJ(O%Jz8YCZlK_?J- z#-}k4ujs=yo1uF_Fhee+;w6E5D4^wPh3L!*L*&2mfY(>`u4eUONNn zg{4;jnAl7Lr`|moy8`1&8bR=L|Fa~r{!7i9DaLR!TjV}o$08~bn7}4tx7J1)!mSV` zQHg<8(CY#-MGi!OARpEjDQ7A*8r+rCy!vD%Y^13`Kv_bFN2+-_K!uaj_?BSCiB&dP zevdcjnE7T@3?yiEjLDLU@nltHu+l|bludsZKg`8zmt z6K4A{w~lQgrEC3Afr|%(eGubjBJ?@t=b0)H(M$dKpV{(&inEqh02ieBW<-t128=N0 zeIEFQOvz0E*#(O?c z2oLv*3t8Jhb&c{bjwfq;mG?gm6IxJiwGNA`*~qTeRO5FY9;p7ycgX-7?ATD|>hu_K zy^B|jJ>yke|Kc_K`nPwhv1|Nn+W5_uvaiCy9>12}n4ClRA@UTn(r=P*D66J8}_sEb>g{)my zv~Qi3eNU8SSP9RpqdLqPm!%dh$SeUD?K{)CP}J2qImq2lAqN42l-1W(V&*niBL~4g zc7JUC&TkNq0rYfL{>vN5Kp^FRM=-86h9b->O+Go7V)f)|odFWY`mMrUR&QB~GLWV;rGmMhBUnS3m;}K{Y{yIH82@92qG8J_`KJ z1d+36s37|qBo#XOCoRoJE=|3Hj4Z?LB}M2*6M#P%Aqnx7HO}Z<=aI$`;f!$?1%n<$ zfI^mcK8+prk_o@kT-d56mSgdQ1XQ-6Dln-kMx~-nq+Wh-`b>R6fb7_z@yEcLk%(Hh zCvR8e3yS+37k?YE z5HIdV$Xy->sXrkPGgaY*RAMany&{?0Pw_xIHOna#YA=-3@p?i_84ay#5{wZtZg}fY zwG!SEPK_=S2y)QbX{JigvtX;d(6^UmfPXjv;VfQ#+Wp=-5k_DmW=wcLy^_2 zjY~3$@MZVG1)OgvF)-`$QS7M;OJz8vvC%)q#70>zanGJqPye&IHxhyY;W&%Wii4@; zU@PSn8u|*WlmA2s<7VC=iKQGj6ICt_ti{+(vtej(2oqT`ZD6cKm0Re?oXcyn4>HA$ zC|k~3x7y#h;u=hOYZ}JjZ>I)4zYjGw5$j^yA!e zW5A;M^(Sdi=rx=BFgQ#KG_#j5x3_PzaV&lzcNox^?#AQh_$Y6WrCS4(On1p}jJ$XC z;l6H54U4f1q%1nEc^xt?dzp;X%3O^C(MLInv)ypMBUVwK;Y#cr(^Ea6?&iL|Zc&Ed zR2+W0o;oIW_^k;v_1rCbN^?XwllE+y8^>$A4`5k>E$6&)EpdOJF8f*l(~Z5>mIe}^ zDX(>!jEA7=^JbVD7dEm>d!-1y14-$Bmkokl&GWok}7zyLQ1AW6$q4U z;khFR$rWd3i^)T&Y7}tfNkQct^LVki15QCSR0xui#shF^ju4K@#x?vA?8po};4TTs zH(?e#)YE>*P>$t1Lski#iWx;xcY7d!u0A&^DGh8)rq*Uu2gPfl1GLoD*iUuN3qZ>2 zdIwfEK|@31u%4WFU?vb=y-QM1#89@LDMc1FlFMswj1dRE`h>Hy*xn?l@o(;5UnZy& z!bI{8onD*K*`o_TgWd05xyIinh*qD(p(_5tm4scL=IRhL3doWjnU#`cWJ;5j{0YRj z?d|TM?|Uo*kMNu_=5d#*EVf!7hxn^$p&~<(G9`MW;LA7O+jzu<8`!JFQZCXw=uI#r zArcMpg-;C%ptvpEgwYj{2!qv3GZ)@nswXI}Ms9)ZJf)!>6XGDL#ZfzS_vAYLB11<~ z&ZV)fuAa91jGS4(BU;vRzYul2@SJCwI&03j?8d(e2>{Bvz_FcYTR^)* zl&tbiiZ+m4y@43(8g*jLjtHtkH4!IKJCBg4LFoJkPUBQv zVc*7P|I%|ShKQ@Oj1!m2so+d*ZQhx8TXEPHZp)Wadtw9BqA<3g?Be*S2hG#;;Opu= znEk{aSk5xyqva7Ft$S3*fpNwoCzs1bPVmW06}Cotup~;NIoS-2Lt_Wbckce&Z~v>m zMA2S8NSN2~gh7$jf_0E01M5)<);TvqqfxIU%h^gJS^519Tf6CAL@aBxwPy;bPbsIf zUnJO$_>P^a1+}v2&5=#df=$~~TTR@trbkIVY3hL`U`&ouu)Z?1el_-A8 zhdW^*1S!ch<)xrKEv!Ram0W?QtNY%Sz79ZolPFYk^F2TypoHFFxYMrJdUE#D3~EmL zLx0b+6p;AQ+KxZ-7Zjp%oKSgaCJN1Jw}w6~>7P^jXBRurh(~BTl4c=hK{-LUQL-Du z0jMPE(J35uxi^E51ZxTR23<^I;+>;CN>g%!oue$`1!z%ksJTG^D~Fhm9|E!j zQN59<6$4Y8o#K*db~IcKYlF3`D*KNUnvBa7#eq@@v)L-pJ}ePvt3b@Ifo2>jbndSk z0L)Y&z)bhf-`JWiCMDS0DOyONCaOi4q?+gb8Z5mdtL z216#U$u`=vuR@a2@GeK_=0`NS@HSK@=R8pXxj2vk2dfOwkOh{8fRI-Py|gMmuEv%g;? z^zXBQ&o4~;Z}#}BB>M3;_VH`>_la4J72@lElzg=LA``i6H)7%FHj&FrQf3rEx(P_q zU9r&uY2C9o4CGjDaU@`7Lq`oyaj{&bd-|TP7^!jg5I}1kNT1{zMrG`gG&wiP7@i(T zO1g+-0A1UqWNwc)6po zZ!G8z3zU+(c7ys5d+nhTB>w6UsWtwS!BWK)GxwpKK#_mEK<~~H3;s1!K0#fpkKM{R zNoY~RxyHU!E&6jI7g8q=M^rZueY&7qfYSlb49*n+z|Ypweqk@{dGv!ocBFw@`-=2J z#LJ{Pg1rpv^L9?BIf2CRDR!rbY)QoxNKiH&Qa1pifpY;Uc%i{sN9k`0TMBH*X_s`b zJ4}Rka57r9U|Hhd;sndXbc3r}E69GpUXb|KZFlp{SPZ{62ih-vH5@IO>qeBtH27?+ zX!5H=d;CavlUD)5>@;HD*3`Uhk*?oT1U-10(B=wn@uOeu(LdRzZw>uBw=N?F?c~-v zF#ZZLT}9hPN}qkc!++l2`gs?G>VEdEC!zH!)BrxqGy@3DJhx9l0+16j-!EG+@#%S~ z)Z$eRL3v$tviTn#C(i@2kCZpUw$(_T7@1qujq_7+0zaniainy@5)eksGHWc^7DnNb zpuu{GP|-|yi99yNNIt(pA*;+MgfI%Cui&`O(6p8Kfu9r%TPX38rH`Uj#@3Gn#U77G zvioGgcgVptTy~(MY$2KVk!3N=?T##8?4SQhiA<$YfV_1!dYETUC`treN?u2sID>nX zD9>iGwf2jeGCn(o)cBFj(pm1b35i za4FatFeZ%Ah{|9X4hd|tWv@8F7dJ?{HxkTjPIXTms8?*D8WhbZ1GO&(3OmC#<2DFk zKgIA}$L?hB{R)#Y+p`lYm&m!bftMKpk+G_gyHTmGT|3rCiI)jq;G)NPrYl&h3NARS z95=ytaW2=a?ZX~AMh+5ZKTI$pFV-``x+vf69tA60c8LiSX^ABz*q-8s8tTJcWI+Z+ z|NU>+-D%wU&~P!2rVn;YKgb_pR6jG!ywW-1)80_*9eE3q?EL#$)Dw?b1AC7ezar!U zzcAYH6$-8xW2dyytLW$vV(L#EmNk~#62VIYL}2H*FxL2xa?w!>WF&&FS1cD+z0yM5 zDm#Y#tNrSCR~<5(@0bp2jab4Um;+{h0OIdBN}(QRX0rhl71f?{4bF8fQ1NAHPqdl? zX#??;%@lPJI4Gf2Fa$`CGoD_D4`lJX`nH%kd*CXciLxYooP(1OszGqXy9Vbxi#m0T zYSs*xEpu_iT0PW4GYtyNWn4ms#%H?2_>H|QfK#He#RzkLLC^gEk%Rv*_aUr38tXYv zcrN{f(Jd|FY)rfHU(cd{?!|w+Pyf6~qQ5?f|2qCB|M9YaPorJijedFHHTk3FQDj8? z$xXB)Uz2!GW>FBvEV^#yQN#xOvsM|t@=0VBm+_^v7aj6>{Ko_9vQ~#B(D{dsykMNg zmuZ-@_@swd$&W5kc%FXpx!a>>+KN%sKL(i(%vsU{EKdfR8dydb*Fsdl!HX8hj4SsO?;Wi;3 z{1toQ*p$RN4uJvk$tP67&9e;6d>5x zzz|J>nEq?-_SdDp{Z>YXKd6A?CmvqJ_=n=@ zS*HZgHbEvx-?mc@X}!pXS=?}0dc3lw5IoOnWlI~YJWXThkgl!lqaTIuiO1&JbN~i; z8V@eY6hhCg-R};@^C}4r6YP-;<-MUbS;NuOisOlyQIOA!j%oMjNk)(Z1H`eN;lA%_9~56YuWet9uBrckvwry>k!Al!x3H<<*Gtf;M)TD+$VEUMpls z*}w`Y`xVgd(#goPO5dW8LKaj`CB~Bvo@8(0l?87Z^8Xe4`v+5a++#ma2BH0-vrAkZ zj4Fz~>shKStcM0Sv^xQehN01Y;YRnw1V@)WFniqX*Ms`nS$(N8cHF1Sq1P-_3hq+| zQ@b_DVEyqAFR2i9lmM^5#-v5b4-_TX!VI_tvb6-|S>bF27$rwp} zi&mjjpd8?!h{{poPflJdSh1yAD1I@ksLCywrUL^~S)UYvR`4lA${`CO(OU(ijB;Yf+#(X=I9Q9<>J8ZeL{B9_hXDo20m&g(dW4Hc8J zV(g*SUU}h9_M>G4p(00IC5||8hchy22n~Wq1Qm9`h)fb(rQV>W1PPryn#l$iH`P+j`nQK zXwN{+H?zm5SjlW{%(~OG#(kVbD@$~yY;s{>SWs7s*QMg$@Y5bRiLa>KPv+D8`1T`6P7+@N(vU!D=CMJjTE-I6P*0;&#gh7w`ivl+D=#>>D+)X_fBdA?!+sQ4 z873q`%`FQ%1Hk7PEM13_AIkr0)icZPGJY#s{WFH_hGP#R2-3Dc&bSG*4}^%C4J0pw zJHwlZ8)%^`1-GD6&<0o4ZOBR}hM0=EF`3V6{o93S&UX6zauotk&Ve4qPl` zX-@)cS^mR31ACnz9Ro>Ae2>FHaFGM;Wh{h#Y6gBxXygj9-X3R}kkCb~5<*ieB%uz< zz)#$uW;Z{{^BaF{HtgDr7&7>>RCgpjX_U*eB(Bo>4%adPrxL(Hl0yRUVL8_P(3TJU z7}lPQjUAfNKUU@H{#|=Nb?p(at-q57*V^4q$V1ZaZ%A^%-0Q?MZ6Oe==cAz|s-1$B zEpl9@TKa^Ui}+TQkqe&8+Jb*`Um+T_E7)%C<7HRp%&ksQU_^M;S#R+(r;}_w`8men zjQ24%qVVIjCvY+@R*b4XyTKv?NcltwP>qB8#2Q>(VMG4d&R$EoVaa1k@%ozyV7 zR?>=io1eI1i>ss;f^)zD!|KZ?zZ@C%cP2SS`a15hgqcioR)Tx}MVy1&#pf_kjW%vAxfS&s z?+0}7^8L2s@3+!%RpB%(sGodXbtGk&XFD>IKmM5`8F@c|C54?P{D!apo;U2@Xl*P` zX3{gjK6LOqP$6IIcr;IAbCF;kzfYn$`N6kZa@x9&magqYo`D3MbhCJ zGa5t;oVznnc0S}AQUi2F+)wSBUlVxO~mOu{m7z%iZ zc=Am$=EuY}nA57kIYq?Z7;S_5IKZzw@Ibb(({zLx<6LSp=amZDcbBOZ>LpW@A6SmT z_S$+ClYmzNo>)an=7d*q(qp)!SCMZ&y;sp5BSi=)K$I@aL706%A{(oDD43ea!N5t1 z+^E^PU3%a&;G(k>{G&Y^tlSI_U}6`;a@9ot5xu{Ak#A{7t%?;O87(;wpacD$gf!mf z=$t%y27L4Q(~1eK5ftGyGpCr?-C@GRlU=AqgsohdVl*JhiM#?ibGBxTlO;!>}2VxY=E ze-&JWz+Oep{g(17a&?oKt`NrBOb4NSOx2X=yL=3bVwFw@0of*m#WX@PNB&LYm|HhY zhW>yn{+_3*EHU`JrnBC93=&L*<9C=-peHf~GxTItYxriwlYh8H9elD>Yud=ddM$+m z3AtDf6i>E?i?5sf#Np_y=mteWpt^G|%0Az7h#70<8*V1+s&Mh?=&-#&Mt72UNlVyk zgYtR$fB;(rviC_nX?yYdcljKxLo#l4WlEu0(S?cQKewihppET^rZ=o{q8QTF9b9ZT z_Ws6OVu$aXDYYQFPvDazV-;+i3vy6~T#(0wyjCt964a}NlX@xIs~hL z5vNkZ1fR7+5m5Ddg`&{g%PyBag(w1wlZVI8AKL^TZ$K%?*6z$eMPi&M*wBosG;yzt zHP-_+?Wk?QZ+vHizUK5*s{;an*rf5?El_QtHRH}B$*aqHOHQT*?|1s7{f5L25$N5e zwe&?uD(pPfh+KrNeVJ0mAezs#6p-%P+w0Rx))j=LcRR>VIgPRYK#iXJGdLLR1-8V9 z1bCP46OER{?U=H$!=;g9pRrKr?L4#~L=L1JPuS$v(59ZM9QYvh`Y{Z-^qC zg_kv^=a_A(h;U*Rs#a-@FHBo-C#sh#F@xvX$fqi&h~%hqX8WrEFJ%OX*S^2V-doZj z!{TOSRThY@#jIr%zlu$P3~vh__X5qqL?jU0nev^1l8&D~eUKjuh?@rKj-?NBEa+GX zL#aUlqnuhFz{wwwm%ca3Dfif<1pBwPw6FiKMSB*rPxojVgGea;?tg}h0c)(N_&emj z&@;65;LDo)qLW-+Qid#^DOvJ@y4d-Lg;1W|w=pAp8*?u*9J|y{r(8?PG9}l$EW@!S zG8~LzU>U&jQbD01{deKs}Y|{R?uIHG!HX;pdy3RC18{JgxqjnjYXAf z)rk*pdAdWz&>r{f3-avm##eqf%A;>J@bKk3@bLZjr&yZ>j?}sB%Yjv5rRNJ(H2h$* z7VJAYr5r370ZaE(2nj8G#WI<-P4m>w#`m3nW;lFU?@`+;3z~CYPsTt7;Wp5=j)c$M z;(o$4P|z|9HuI%A^EpYHYgAgNAwMUdP?u}UW#r&OQ23$En1KO8mKL3Lma=;h2sJV~ zAai8@50wNByq7yER!uC*>VHZK$z^$oAzKa&Dqt-nM!2IKa#N?~Mbj z09ngb$eMn$mNr6AGiBD`T7TqrC4LR4!&W?vO>y3%x&+GfdLTn(4S*xe#nx=RiF9B9 zs5cb2Zgr-Aq+Dw?a6?-RNoa{5KK&AZ^B?O;h#EtvZxYE+qnajdI+OVn3#;@n7weCK zq65r;OZXJ7nKvYIROk%rii@OZg`_GolFFG_DHxH!xqF|eMWGHJ@&iS#%@{Ne*p|#s zGo2*BcN0M-oNKzlXApbXPE?4@i5s^wHg2{OM*~qfI*)$qZP*xMpC5ji(jekmih_ta z4I=)tK41dPS!b{8ThiT!_dLqJcuQD$OC-dzU_v}pHV5?q3;XObVV|?a9+BH@Y zYN(13R-f8s>QhLtXdcv(no%vO$Zy)LhYjsA0lf#0@<-yMot`7T|8S!R7}>4SXMBKt zmuemDhqaFQ5C`?6g0BXXGNY4%Rpj=ViX4oGpa zj5~S8I~hAX@mTJ%u^fFgEpu8&Ut`rqV{Z`|?C8`+mwK!-!D)|d)aX!0w!*l6uoWG< z7snhxu~TL*EDX5JHb&!N*woz9U3bKHUC_RWbR~Flbp~JIp|!?ZKlf$7VD|g0@58@j zy~2DiE`P;x$Lk5tQ5CIsweZE%5Yuq}j4ichGD}70;N$Tof?D=~zDm?q9lrS}Q3ReI zTpV36w&>;q%|3Y|xw2}i7!~U#nhWv~yXeVh>;UIYLY1j|`KiZ{WQb}AMuioulJU4p zkzGk1MNi_IVXuuDyaYP5BcE1 zEBhq%m%SU)*o}N_zF5e|_-%_X2GWz;=st;!d2EKY{gt<~sJ`AldA&cEe>-?wNw;%k zrNQx8;x2v}(ZfHM@8Lh}*bE*M_?oSm;9l_1jBHx$Q;^R#zz@vg-da z<^XmU$ivp-cjhWDy^`q>>tM{hh+Rypnk>&@2F3ard-vc3#2yyeF|qSBGN&tD2a!v6 zMe}-9GbFaegEz9WxnN5fDZTEl_(=bQ=gxnDZQ4#LvW?DnzW7Yn)7eIHCN|7S`$w8p zcj>AY%Rk%l_%F91R=J~By@*%38-o|%ibg#ADcA5}8odc(=k_xmn6jU@MxVE~5IgJ) z_N%_dy(C{eD&(u7r^$vP-Noe%Ex$ItT^n`^#XiGJX3k>q>hC=3&N^McbCyBDiz)30DbXQ9wzhx2Lw#U6 zL_m=Z04Fchi7G1zv%ax>-1a5&yUbHxTW#tSe=h+8-)$G7Em)D1mlG(5B}Z<%Dmf7@?4-E)M4%?Kmu%pP3({XqkWKoBPY>?)9KQP66N8gw%Ol|Ws+-PgpH%S!J1 zhO0Sij6SoDBWz*M3SFDz7JX(yVluVY3r6LS+eXz$)DBN&G&k_22uH8Hj{cO4 zRZUkoiAY6?k>FiPyYf02s6qr914?nbgSrps_(C@~ESvnVl*ypuiRuND(Z1MBPHfvtDHds*|pFP<^Tp)Rvgx4a1wYuF1n!UqiF^db7}lQg8|UoZhy!`SQhfDka=GBhm#fV*G~uu?W*_|{RBF54{H{j z_@cF3XO;tM0D%937!Gg^NL2c9O68n@N%b#8wN;6e{tsHoggF$P_>FxH(>Y{kq$gSb zE`b8%!%U3r{?OPSB-nUaYIHArsUhM}N~uKToR2QDKV!ptjfa=$fqp{6+dOV~k4#Si zJ#u(Af=l;d!Av3ho8h3^2|7sg|6Qy1Mbh(!j~w26IlK;d9bUeBNbPf}!Tr{!>!~EV z?mWTZV&=`*@NT4W2f>c-{Bh%ZVS1H|k>k7FU6Qw{8(h$S1=jDjl?%=#gG(xbGb^){ zF*yoD_{tY#zQgw*ya0?eIa5H$Xt_y2i}ooE57pk(`H4d&ka!_E!lqf4-?-w zUNx@qAH+DTbiK4-<6oj}UlHDm$Fxl}eHTm_&eg%gO+DE5B_0%DokR!QajKljFx;hT zyOnJr3GH^bnGqkxra|q>(FnGCtF`+oVWLitZ1>Ek5D=Z`DIN(q#=(|1QIQPj^y119 zTBBAVkH2f2Xe3t5f9V}u2%eK-8gy!9sMT)R1eamv#3MnLnYrxkNM_yORH9(Lvm*DP ztj>{$>|$1+j8e7+31i^utz2U$4t9-Mu>8>7brlISbfS2I6(r*YK_)o6a9_&f6j5in z`rR7cLQ2vEDkQRQ!1Pdg%bBUXKxCn z*&nDPT@hdz>wEZ-a{=YisckH`gP;x;$|i)BrW69bF$%L31!l8`$Opyjdq9%?3~)08f1pb@8K5qoDtTiunQ7~@r8J##BfgwK#6iuIGGwKF?x^uW$GJQU?mnpIuc`ZqJ)SEflJ^0{d>daReU%6;J|?o+63jpW zjhCawhPdC`KA?Y-gd`cjvzycIliKoqXP4lG?32l8I%Sk>J4K2;73PR)`X%M6vJE0t zLZOw~ZxR&6ZIoF5uFlxHmY{C~HPOua&=pg$fLNrU(6SB#SXV?uu;L;z`l{*YV?7H> zN`%j>UCh~t$*S+$_i%} zSR7Le8>!LCDD29}SkNuwt?v0WOdtvZ|0*y2o2)14@KHK?f+;`AFU5OJDTM*}RO8>P zycQjS2^Uv-v60ZwBcl)Nr7A^ZxgD-OE_Ha#Y zdsVoc7*Ck>mBgy9N62JjDIiGde02x%x5Nv3;8k5h0x zhyF^IGWM)Pv&=18Q>vD}C)k-uRU4;U3vjiAgX@M6G%>BurL#-hgDT?;gp_QQ(0#z5 zNV<>v1SPTMn8DKc#P7%2MMwaOaF-w#uEHn56ldswTZd3V{i;$9lR#z>B*``XQQKg~ z9=puoQiieBoWR=2D_Os>p)vxRST@5WW%$0&)RAntiBqrdT_Zo6ggmMc;mW1q32K7& zs5p5_AX|NF1{ZqGkXYHF;RgyK!#USi(loM?tO){6oeP7{sKa<@)VzpBt^}|r2eo9E zP_I6QjW4(AW{U9fo<^E$lL8*d3iP5gcwKT#y6^8QYwjjhk6*Tja2hAuz_Q9F95nFFFpCz%{H@U^?b>TIAlb|MB8`f}cvl$oN?5R<6HuyFmb<7S zSXB#59GgWreku>{l5nWa6q8(qVqqJeIj zs7I<+fwoMDgPj-#<+4sizuF&-oo+n){SjKf8QnDvx5(T}cT@1DyIxKJ?|Yi@8*kqN z7iY`{6js8F9!HIE32Gk20sR_4;$;qm$?(?UfssDKY3U+iy6{YCd%5coggUj63o z)t8teaPVF|Ug2IHVurMd=@xqgn`;w;IBVDA&bM~)U1$Do8ufAj*8$8N?Q)PO__a-n zYgvHCCm(6PDCrNoS}1Z9NRA{xHYx36cT!Fn_qqtMvX_KRDZ`G(;!Zh>x#BC&)fzTL z%`E%Gx6sf4<(QEkWpHD}>r4Qxppu?s{u_k{6vVE`j@=UyZ6mtm3f)F_soxRTY1GJM z;T?XZA=c4|=t^|8V3`H!-mNDA$AnOFyS)C~hjMVpcbDZrnZZQFG!Ns?6Z^M~!1qJl z4N_zWyYtI0q*zq$)3~i+$ZRo zcVY}v`km{9TMG+{6bq3&Hx6(4(A75v;|sMws7%~vR6fE`P42>%RUuwx-RyC@4oi^W zg(gqho@!r&I2>lEMrNS<$vPIv1g>-&dmtx^J2W-xVqvX|gI<_pg6bCf&Yr-(qFRtz zJx+RIqRSn+cR)cCEh=Z7WWS+R<4$HAtH!2Gwt>rYW)2?!Poh>^L##H>lHNU~v)f4~ zqSrFUO4RNKp%`PhK8S%=dq9?Uer#kYqAMo@3nutSy+{z0%229uNWBr2UiQ?rY$?-j z^_tP$#+8{6bu}BLh?Mn2=;qBO3-m&I>`&zTcJEI(r1JpM)Ea!kiG1U>=Gz3>W&nE7 zrnJTJX5I`G?oLV7%z|ReU~o?T`VWJ=gBW^fzh!|qFr3ajWXM9GS2XmaFLMv1s@6xu z?HfO^=Jy`WipSM-?d(xJ<5P{JM1&k?91%hW^CL%u!2aq*P>*2$yT;EFkZ+hMqkETe z#U?Q7$iZ{RB%0vh`EGvsY9fzV6QWQIb1=7i;DCvwZyD`{5dsE|_KZj`KU`!k9`-Fm z<2;l3gggXnv2QxJ6Sv3vYt&8GBG%ayl2JTPlvl#%YU2$U==L{vqP{ffYXfHxfZ^$%S$!ew(owkf_y8ycC0nW)7&*$~l8Z9PIt#V*6Q zsc7js0;SU4(Qv{@XGX%=hw%IxINolzh5>AtoPVs5TOEmnkJ zd%q=?m5J8F3Bh@g;2D6uj^+Z{r$Y24HrqG(aQIK&`^&9VlUc?)sipOC_K;au;+nWP z9P3rm=iXj$ES9+4b}d4sP?9mu)qA+YW(-q%pYWVZsg#4axfI__e;EE0zvg`rE++_k%#+$90=jj6T znB^c)OLHlrN~+!{IazDE(P!vLby-t`anhCk?Lv9`Qz6+ClUqDb5Xp&Kixo1)B5zgP zN1&sM5iRt)2VbZ}l^QT3I)#nB$I`fn?sCB)(ht5K*KmFAF6BfZJTI`WjU}q_0ahp^ zLtB61zf=g-X&1Ge@Z+v*eG&3)j69pI1S#y}QY7BrLH~|8bA?`uJ5Cz)Fy$aiQo~en z_`K!|l^(XoV^O=7lms1vm&=_aLOl#tEmOLsL_9i534Wa8bA|o*R4{tvRQIp@Gi1*g z&`r%m2i{-+eP-jY-<*qhnDq4?`xEocV6>C0$m)LoD+jp(`wU4Zlqf(`6E#PRIns(O zbjV{HeJ_NjXC*1P{58cw+1icZo}$3?e9}9Z<7X7DD6A?mMdv6vhfK3si0wu{$NJg5 zP3(1*~<0dL|&3dL1vB(a)0G|ENdQ2UoLPhtnx9=*SKz{h-!-nCNj0Zix zY0ht_*{LWABtggm(ijo<2sSV|r2h&R1=iLv-c?+Kn@oXvKL?UwaB2B$Qcy($q-G zXNHxv`%RB&zh;!WgV25*Cp;rhPSG!HaZ?JhPXoWz#7C4_L7sBt_vIKi2essCQ@wLr4!ELFxNKaJd-U>X{au&fyU3BIPmlPXz&gNZ(a zIRWbzZdTcy9*te1k_qPg1VnT<074?xsiCn;ChAIt^4x@50RG2}r46-(G#BaI`^39b z2*69%yg0F{mLgz@O**b0ORQiZb1PALu2_aZRyl>6{wgfH6p`)S?XTDP74RUx{54av z8FVOpzJgU5kmA)0BSI&Nefv8SLD%%pGk;0%QBo}M?{%DJ>EV5al9^^U669n!!m3b$ z4-S|+qJ?#Q(n!o73n+H$;2sy8;e#Rnpr*`p%c>uN8-JQ+zp2r0I9Vhl?KV+}St)q3 zn4pX#!w7L=`(Y znMII<7d}wJ+T)krsT{e9LN1MRb;kEt=3RNokgzps9Hyah2opXgW7?gE+70tlj%v3K zwd-nILQ!bLKEah|G%iYQ>y4AW)pn!_DV;|y)hmG5h$iFGIFvUGKA_;`}6e9;# zuuUtvR2|-CE-f*$AreBcg*1i^__w*5b8HjAmBKY9`iVFNNv$}+GkoFBA6evcB@1#V z-beFU8kclyxX;oBMqDIu&Tn-Ec7Mtnu6mh{C(XrbY`$> zyfvEf2KUiSgqb2%#7wm!=uo0kmx>te-rv)T-R@G}liJ@bG7hD!l&6?>fKHHUKOdTQ zx60=TF1PX~E>6uT%s=yxV98c`MPfEtb+_wihN_2Hi{uPc=oPxQgshVv^OC`nqy~1< z{fU{8dC0HDkzh?!wrC9%-2ek(9zs`?0N;%<5Vh`xlg6k#w6egozV_dmRxZN0 z-57Oq@8d7^dw2`KV5RJCEqGjaQAT}t%bYO*M)iy6tMA3lpT}7s;Pm}Zjnsxl{<7nQ z!V2|}QaL`Pw1+goAevz@6(lP(66c8{fqDx8^G1SmUvrM0sjj||Of+!zaus|i$M zBSo4r;Ev2g)P7S-ZDK+5XhnA5ygdafpd+{YX+AY$Q6N2H`Xo^{^Pb<#bN_FJEg3U>WrPHns$G|{eJvQTXs z_mxZ|B2RdY0ALuPT0?f-F@&+p0~n<+F&SdamEpf_T+hb1s}2$t~ z24qYbJq0kt7Mg*uhFp-E-+qV>K5#uX6sG%eh0bMn@7>{*$}Ggjave^T+u6sfA@dopGDB zR5Nm!3vxV_5!`OIVx*xOrK{^e5-~%u#Q)~+mcvgU0yf9dr;MZ7BqbKYk&A3GOcOqU zWDxcy9g1-MaKC@46fF4>lth?zKyl4*1noyV0$>m8rK);%ZHm2ym0pa&uV ztdkhozpEdVl=wX6Ok&CfLLOYku1bH7!NC;}0zFRn7af9b8WJq%vg9T1c6-gdF>YV? zP7Nw-gSJ9&9Twiy&|=iNKs2KGqM@dY z?qWCoe&eZl_7f()2=vPgMGt;}bHHt~%^sc0XQBHW4YcA8BsiXJz(!SCSONj^vKNh} z4?E7dAp_?b;nlLNCg2C{QNWazV{o{u0_Z<71;Ie^8fG$3f-;P@h*VrVMv^^l^ftsE z@!{w!RE2nHsC=m)5oI&y)qj8y7K zE1(XX05gO$c*CLP6=Gbf=n@5^dtu4T=RQm^MVLov?c9qpa>DID_anjRX4WFb$-zzZ z)orC82C*E)YI|>Y!Y6>{s-Bpx6p_Sv53}X86NuycHu>chW6Bup^i8VP$seG*fofEX z@Xpu)^)k(06Vzn1Zy7S2A(W)CM7Su4Mm%w2;>KJDk^h3e!wPLH4WRC-zYcKNC8xF> zIK_JU#vEpPW2&E3;T=BnqGttV-s*`zvS8^7KCl8u*>4oKHdO+DQ?3wRbuK+{R%+iV zagjJl{v!>7T?Pyf_HjXB2>WvAk*FJes@cD?Gl;#{F5g4Gu5F&eGYV#lyCQ` z3Y;AmoH{q-Ya&Phb3_c`HW^_?G*Dj0A_u0Ekv3W(hlV*SHO$e-ZQa&rLzKLW$F&-85_qsXF{u7=J^5#q|5TI(8(dP%^hS9} zdvetVBZ@bYM-&1PON6oCRBg@NE?ohLP%v|Zhcjv^n_$@S-Ym~f&`xy&wc5Y;-C!x{ zDM}ld-)ZD=rlh1l|F@Na6=UK)B*1xNDCKER<(ulLFM4bcogsB(?LM1@VmS*e-^SP* zD-@WCeb1`L%me{dj-jRtdPB{9dT{FhtM+ZJzJnx`#{C3wzjGQFyW#+KlF2Iod!%xS zeOhXTi3_5p+^0=<7zb^$CLZGHV$*>jjv!m~SrTlJl-Q7%1Plp6?Vp8tkoQM%>P)m) zd*4Milv#*+rDa<(?x_dKNa~c}W7)sO9(!v>GnqJ2u&;>aO)pJnod9zopxSYlP)cD& zm~zH>p9=N;8~glS$})FvILlo3XUm%RO^d|dr7C(aAf+6kRmt0sSy*{(zcWd57F`L< zDc6QjQwan`v&R^-)>DNNprG)Pg@VSZLMvy@gnL4+ii3o8Wdl!QCGv%s%$~7mvM$%I z8q}b;3PC+uv5Qr(3^EmYxIA*7la6fNCAQpPZW9Er4G!FAwAQllWu2uxQL!qQJ7uSg ze+u2%1SWU8({|xKmV6-k>kC%>-@Rie1h2RkyBo&8NViaa5XHPqml0Gr>s#RUL$|I_ ze55O}eL-lFGMY#z+M7K`*uMVX-l0T`%O~U8sXJ>>y&z38F|4ORFfRKRd~$pPk>j7Y% z>6zq2Pomals*uXT`FoM5(#i}H%ygZ|jI=olHkFW|Wo3@~khJt+RY+?IV(PIL&QrA2 zBvR)0Ah90GL$LTzP5*=p)yxYJ8K&E?@J0IzoXWyD_K@g8-QOpGBdl@3$%NpMjpgjG zQKaCe3;_(kl^G?%$S8J9aQ#(2UxtJas;EMzp`gp0P;LNKrQv513u$ORE6l&!!+qrI zO%er{F~O59R(11(VFqfOLv~r!?Zcg{Yj{ER+f-7A~?)`}EpqoVD zPHaSi5kyLun<+Jp^}DCBI5~IhHwt67mhaL8#A)J*KR6aR-N+PqK3o))S;pJkFR%yC zvbM9=-k$Ay^hiJ@&8r{+bSie9`RA2+;Hl+s(JGxRNJ7Or*%2UA5#s7sKN4n`jg85tt2f~wvw*aPx zX1pjO$C^OArf4>^8tb{1Z)K#1iWkh6C-lkLr#8YxcE}BeIs$(mT@`eC))K}2`xQC( zQyVwXQvNrI>ejmFU4T=2heHh-y%MX}fpgn2ql@#s#9;!B30Bg4x}}dgw*K@TBZ633 z$F4=koRx|E-z}put_BvuE_0l2QXZp`EcwV%)fT~fby{gB*PgADixoRb#88|N4dRl{ zXjOybk*{g4Eu$%mOO`p)_JZYod&2g|G%YJvGwS)?J+A93wy!j;e5DsMxM?O{yU)SN z@VA=JULxTQI!_I{#xonMh2m1oIGd@dm;T{z5?FaBhQzn3TZ2|p(*asqSO+>gc6iX9 z)YGA8AP%f)rlP3%=o7unEU~QTbHZkss3=KR(;m27IPe31XHQyv*GV6mAQ--PJXo?P zN$!`49cjI#G`=oH${Ux;KVPfJ%+@(jWDLoIZ6UeWCT%u2`l1x}g;{od%)FZEUcb_*g+DV+t8Z89@3O`eJr$D~5{np_nHXjkN?Z zi|(U+rM!iLtvWZLW8@ZA$h@xM}K&XhAl!A*cD7{EjYXWfN0v{?2bi)B}6=ExU+4`}}eq!TqC zC=k3j91kIIxxyDbqd)qFpk)Y+lMpi+U9VV+;HJ5n5J=y9MVV|3%SlU#>zjn2<~aCA zhd{X9U2|>=nKD>ULOBB#r7%7Qi;3B#M2Zn~m_unw7l|60u8|z;!;=Ljgv=E=@hA9> zR;30ZTv@nuhqG2-{A=^%hO3mJd>f`#f9In%f1*XD6)Q2!(#%_+G@2yJ5H(hMdLs1h zg7!U%O$mQ5peApXkm(6aS?36zD!!zg$_4~CGXip6;RF!OqgwDOlvrnNozMm9dAI@T zKm`@I4aF5rrGAG4*cG18o|MCW?B|=Lc-TyF+!WI&1?|Zq%-bOoaE08%wgVH-m8H%(1dZsvn>}qjUsG*28=pA43}xCez>EHV?jKjx7*_;E60lX!CZh z$rt^@LFGvd!sP-|5e;cdMpEjJOwaK4( z5S=#b(+uM6&>+4B<~=~il}e@Ll=C$Ab#z*3bAgU|=_3baq?MOwWq<=TiUk@PdGQk> z3P%^P7gSU1vSQziL~UgoW|c)$siL7sT$=E90GGVbPMTw(M&nCoU@dJ=?{?7B@e3Y& z$kCYt)L?&tlmo zt0&~rK~%@2`)FUu&wfE3S$G-G^h!XDiuyWHBF~f1@QafYfKu|L`~fHBVWwW2on%1xg>ZwghFtQp!t8)x)sm2nUBpW2F2rFtc#gmNUwe*c+sU&W z(Zz%-*{^g!o8z5lKHC1>TTi;Ta?ugtqqweY84r*UaF|Ld{&2rLO`h>I92@ue8O4P0VuG8(Y

  1. 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%0DI_VXNSo?9F$Y`+vb6!}krPU8 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

    n{$D7FT3bVf_@t<*;TH#IYJ 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�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%0AlIu{J*W9#JUT~|Z>Ty} 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ℜqOya0O7!LOTg5Z+n9hB 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

  2. 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

    =@<+&5pttI1jh{8UcSPs=JLslrI8_7*M7N&y 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

    bto;x0q4U21 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

    u3IK;%uZ#GZtKdLAMB~1#4K>f*H=8XzJdJO_ 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 Q3jF|~w&2hOIOwnc111_Y2LJ#7 literal 0 HcmV?d00001 diff --git a/.yarn/cache/vite-npm-4.5.2-e430b2c117-9d1f84f703.zip b/.yarn/cache/vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip similarity index 68% rename from .yarn/cache/vite-npm-4.5.2-e430b2c117-9d1f84f703.zip rename to .yarn/cache/vite-npm-4.5.3-5cedc7cb8f-fd3f512ce4.zip index 3ba408d602d6b0e19df753a6089ab9e15710783a..c6bb0e4ef76c8c1f589795c5dd6c775e7b2ac822 100644 GIT binary patch delta 245789 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 z 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ǘJE=dE8lDe*9?JcH*9#E_|Pu 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

    6-J=ZZ#B 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 delta 245726 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 diff --git a/package.json b/package.json index bd198c07d7..1c9f861d63 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,11 @@ "bootstrap": "5.3.3", "bootstrap-icons": "1.11.3", "browser-fs-access": "0.35.0", - "caniuse-lite": "1.0.30001599", + "caniuse-lite": "1.0.30001603", "d3": "7.9.0", "file-saver": "2.0.5", "highcharts": "11.4.0", - "ical.js": "1.5.0", + "ical.js": "2.0.0", "jquery": "3.7.1", "js-cookie": "3.0.5", "list.js": "2.3.1", @@ -66,14 +66,14 @@ "eslint-plugin-n": "16.6.2", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "eslint-plugin-vue": "9.23.0", - "html-validate": "8.16.0", + "eslint-plugin-vue": "9.24.0", + "html-validate": "8.18.1", "jquery-migrate": "3.4.1", "parcel": "2.12.0", "pug": "3.0.2", "sass": "1.72.0", "seedrandom": "3.0.5", - "vite": "4.5.2" + "vite": "4.5.3" }, "targets": { "ietf": { diff --git a/yarn.lock b/yarn.lock index f964643251..5d2ff5f69c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2684,10 +2684,10 @@ browserlist@latest: languageName: node linkType: hard -"caniuse-lite@npm:1.0.30001599": - version: 1.0.30001599 - resolution: "caniuse-lite@npm:1.0.30001599" - checksum: d7e619e2e723547b7311ba0ca5134d9cd55df548e93dbedcf8a6e4ec74c7db91969c4272fb1ab2fd94cddeac6a8176ebf05853eb06689d5e76bb97d979a214b0 +"caniuse-lite@npm:1.0.30001603": + version: 1.0.30001603 + resolution: "caniuse-lite@npm:1.0.30001603" + checksum: e66e0d24b899c2ed3fdcc2dd44df29c4fc06d74fa8f43abe81fc7cff4a72b092d438e0fb5b7daeb252ee267519f32c6c7d229a15e7a4f4263afef6ea3832b661 languageName: node linkType: hard @@ -3985,11 +3985,12 @@ browserlist@latest: languageName: node linkType: hard -"eslint-plugin-vue@npm:9.23.0": - version: 9.23.0 - resolution: "eslint-plugin-vue@npm:9.23.0" +"eslint-plugin-vue@npm:9.24.0": + version: 9.24.0 + resolution: "eslint-plugin-vue@npm:9.24.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 + globals: ^13.24.0 natural-compare: ^1.4.0 nth-check: ^2.1.1 postcss-selector-parser: ^6.0.15 @@ -3998,7 +3999,7 @@ browserlist@latest: xml-name-validator: ^4.0.0 peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - checksum: acb3a4dd27a815be37b63fc735c88bf9bfd12a5147639635eb6e473c7fdf47f69a78693ffeb67581ffd11e0016c134bb56a667193b958a189cbfc2df3e93160b + checksum: 2309b919d8fced6210c11e09107f443990063c0392843909cf50fad682e820c48bf5cc28b82a1239c03fd7ceeb4239e1baa653370c4c76689ec5fb8a970cd303 languageName: node linkType: hard @@ -4714,9 +4715,9 @@ browserlist@latest: languageName: node linkType: hard -"html-validate@npm:8.16.0": - version: 8.16.0 - resolution: "html-validate@npm:8.16.0" +"html-validate@npm:8.18.1": + version: 8.18.1 + resolution: "html-validate@npm:8.18.1" dependencies: "@babel/code-frame": ^7.10.0 "@html-validate/stylish": ^4.1.0 @@ -4745,7 +4746,7 @@ browserlist@latest: optional: true bin: html-validate: bin/html-validate.js - checksum: 857b05ab87ae8b92d9d256dfc45def15275d6038bb7456afb00c6e23872acc4bc7bcc50be89ce82bad36f6c4026603106f57574f1058f3ae3f2e35fca0f34a15 + checksum: 53479bf75bcb6ad748a6543583de6a26bfb55d85c0ae793bd6619c0079795f482c01b4168a7dea2584219f31b8a05c3ea2a0d5ebfd639099caf623263d3ac536 languageName: node linkType: hard @@ -4848,10 +4849,10 @@ browserlist@latest: languageName: node linkType: hard -"ical.js@npm:1.5.0": - version: 1.5.0 - resolution: "ical.js@npm:1.5.0" - checksum: 51df7a01f462dc8a02b3c3c28acb288756071044c4a8b56ff5179995bb219e569e72cfedac6f4ab03dc643be34f5d88c09a7d79c4be6ba8a7623b7336eecb110 +"ical.js@npm:2.0.0": + version: 2.0.0 + resolution: "ical.js@npm:2.0.0" + checksum: e4a5cf06d264fd09fa30fd54ae78530c899ce605547c9ac68264c1b2302c1c4522956a19f265b33ffbb21ca500f7938f6c774f1abcd147ee6b90dd91c090719f languageName: node linkType: hard @@ -7042,7 +7043,7 @@ browserlist@latest: browser-fs-access: 0.35.0 browserlist: latest c8: 9.1.0 - caniuse-lite: 1.0.30001599 + caniuse-lite: 1.0.30001603 d3: 7.9.0 eslint: 8.57.0 eslint-config-standard: 17.1.0 @@ -7051,11 +7052,11 @@ browserlist@latest: eslint-plugin-n: 16.6.2 eslint-plugin-node: 11.1.0 eslint-plugin-promise: 6.1.1 - eslint-plugin-vue: 9.23.0 + eslint-plugin-vue: 9.24.0 file-saver: 2.0.5 highcharts: 11.4.0 - html-validate: 8.16.0 - ical.js: 1.5.0 + html-validate: 8.18.1 + ical.js: 2.0.0 jquery: 3.7.1 jquery-migrate: 3.4.1 js-cookie: 3.0.5 @@ -7081,7 +7082,7 @@ browserlist@latest: slugify: 1.6.6 sortablejs: 1.15.2 vanillajs-datepicker: 1.3.4 - vite: 4.5.2 + vite: 4.5.3 vue: 3.4.21 vue-router: 4.3.0 zxcvbn: 4.4.2 @@ -7876,9 +7877,9 @@ browserlist@latest: languageName: node linkType: hard -"vite@npm:4.5.2": - version: 4.5.2 - resolution: "vite@npm:4.5.2" +"vite@npm:4.5.3": + version: 4.5.3 + resolution: "vite@npm:4.5.3" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 @@ -7912,7 +7913,7 @@ browserlist@latest: optional: true bin: vite: bin/vite.js - checksum: 9d1f84f703c2660aced34deee7f309278ed368880f66e9570ac115c793d91f7fffb80ab19c602b3c8bc1341fe23437d86a3fcca2a9ef82f7ef0cdac5a40d0c86 + checksum: fd3f512ce48ca2a1fe60ad0376283b832de9272725fdbc65064ae9248f792de87b0f27a89573115e23e26784800daca329f8a9234d298ba6f60e808a9c63883c languageName: node linkType: hard From 864b19f21a52d1fd01ed9e79afbd8b3f794768c9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 4 Apr 2024 10:59:16 -0500 Subject: [PATCH 008/846] chore: refactor ballot search query (#7290) --- ietf/doc/views_doc.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index ab18cdd10a..a94af21e61 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1547,22 +1547,12 @@ def document_ballot_content(request, doc, ballot_id, editable=True): def document_ballot(request, name, ballot_id=None): doc = get_object_or_404(Document, name=name) - all_ballots = list(BallotDocEvent.objects.filter(doc=doc, type="created_ballot").order_by("time")) - ballot = None - if not ballot_id: - if all_ballots: - ballot = all_ballots[-1] - else: - raise Http404("Ballot not found for: %s" % name) - ballot_id = ballot.id + ballots = BallotDocEvent.objects.filter(doc=doc, type="created_ballot").order_by("time") + if ballot_id is not None: + ballot = ballots.filter(id=ballot_id).first() else: - ballot_id = int(ballot_id) - for b in all_ballots: - if b.id == ballot_id: - ballot = b - break - - if not ballot_id or not ballot: + ballot = ballots.last() + if not ballot: raise Http404("Ballot not found for: %s" % name) if ballot.ballot_type.slug == "irsg-approve": @@ -1572,14 +1562,13 @@ def document_ballot(request, name, ballot_id=None): top = render_document_top(request, doc, ballot_tab, name) - c = document_ballot_content(request, doc, ballot_id, editable=True) + c = document_ballot_content(request, doc, ballot.id, editable=True) request.session['ballot_edit_return_point'] = request.path_info return render(request, "doc/document_ballot.html", dict(doc=doc, top=top, ballot_content=c, - # ballot_type_slug=ballot.ballot_type.slug, )) def document_irsg_ballot(request, name, ballot_id=None): From 8d7e8d6830dd6f74ebab3c04331323e9d662ce63 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 5 Apr 2024 12:40:21 -0300 Subject: [PATCH 009/846] chore(deps): revert ical.js to 1.5.0 (#7293) * chore(deps): revert ical.js to 1.5.0 @fullcalendar/icalendar needs < 2.0.0 * chore(deps): Add ical.js to yarn cache --- .pnp.cjs | 12 ++++++------ ...ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip | Bin 0 -> 167938 bytes ...ical.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip | Bin 256005 -> 0 bytes package.json | 2 +- yarn.lock | 10 +++++----- 5 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 .yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip delete mode 100644 .yarn/cache/ical.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip diff --git a/.pnp.cjs b/.pnp.cjs index 82409e51c1..5fcce34d2f 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -68,7 +68,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.4.0"],\ ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1"],\ - ["ical.js", "npm:2.0.0"],\ + ["ical.js", "npm:1.5.0"],\ ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ @@ -626,7 +626,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fullcalendar/core", "npm:6.1.11"],\ ["@types/fullcalendar__core", null],\ ["@types/ical.js", null],\ - ["ical.js", "npm:2.0.0"]\ + ["ical.js", "npm:1.5.0"]\ ],\ "packagePeers": [\ "@fullcalendar/core",\ @@ -5996,10 +5996,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["ical.js", [\ - ["npm:2.0.0", {\ - "packageLocation": "./.yarn/cache/ical.js-npm-2.0.0-00c3a15280-e4a5cf06d2.zip/node_modules/ical.js/",\ + ["npm:1.5.0", {\ + "packageLocation": "./.yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip/node_modules/ical.js/",\ "packageDependencies": [\ - ["ical.js", "npm:2.0.0"]\ + ["ical.js", "npm:1.5.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -8352,7 +8352,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.4.0"],\ ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.18.1"],\ - ["ical.js", "npm:2.0.0"],\ + ["ical.js", "npm:1.5.0"],\ ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ diff --git a/.yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip b/.yarn/cache/ical.js-npm-1.5.0-5ba1c69420-51df7a01f4.zip new file mode 100644 index 0000000000000000000000000000000000000000..7aa64acf00dc717df4e7aa6e0a20a7f152309acc GIT binary patch literal 167938 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%0A8G3*N#6Dt#_Ey7kAJ@G2jnO%%# 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

    bto;x0q4U21 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

    u3IK;%uZ#GZtKdLAMB~1#4K>f*H=8XzJdJO_ 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 Q3jF|~w&2hOIOwnc111_Y2LJ#7 diff --git a/package.json b/package.json index 1c9f861d63..afcabd13ed 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "d3": "7.9.0", "file-saver": "2.0.5", "highcharts": "11.4.0", - "ical.js": "2.0.0", + "ical.js": "1.5.0", "jquery": "3.7.1", "js-cookie": "3.0.5", "list.js": "2.3.1", diff --git a/yarn.lock b/yarn.lock index 5d2ff5f69c..54768ac391 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4849,10 +4849,10 @@ browserlist@latest: languageName: node linkType: hard -"ical.js@npm:2.0.0": - version: 2.0.0 - resolution: "ical.js@npm:2.0.0" - checksum: e4a5cf06d264fd09fa30fd54ae78530c899ce605547c9ac68264c1b2302c1c4522956a19f265b33ffbb21ca500f7938f6c774f1abcd147ee6b90dd91c090719f +"ical.js@npm:1.5.0": + version: 1.5.0 + resolution: "ical.js@npm:1.5.0" + checksum: 51df7a01f462dc8a02b3c3c28acb288756071044c4a8b56ff5179995bb219e569e72cfedac6f4ab03dc643be34f5d88c09a7d79c4be6ba8a7623b7336eecb110 languageName: node linkType: hard @@ -7056,7 +7056,7 @@ browserlist@latest: file-saver: 2.0.5 highcharts: 11.4.0 html-validate: 8.18.1 - ical.js: 2.0.0 + ical.js: 1.5.0 jquery: 3.7.1 jquery-migrate: 3.4.1 js-cookie: 3.0.5 From 6b4a806e42f8c2809f18d36478e897a22907c9c4 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 5 Apr 2024 16:02:40 -0300 Subject: [PATCH 010/846] feat: API to list role-holder addresses (#7291) * feat: API to list role-holder addresses * test: Test new API endpoint * fix: role_holder_addresses gets own API token * refactor: Move role_holder_addresses to ietf.api.views * test: test for group.utils.role_holder_emails * test: Clean up test_role_holder_addresses * fix: Missed a change in urls.py * refactor: Remove old view * chore: Remove unused import * chore: Remove unused import --- ietf/api/tests.py | 22 +++++++++++++++++++++ ietf/api/urls.py | 2 ++ ietf/api/views.py | 17 +++++++++++++++- ietf/group/tests.py | 48 +++++++++++++++++++++++++++++++++++++++++++-- ietf/group/utils.py | 25 +++++++++++++++++++++++ 5 files changed, 111 insertions(+), 3 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 2310d71d75..26fcd04a85 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -991,6 +991,28 @@ def test_active_email_list(self): self.assertCountEqual(result.keys(), ["addresses"]) self.assertCountEqual(result["addresses"], Email.objects.filter(active=True).values_list("address", flat=True)) + @override_settings(APP_API_TOKENS={"ietf.api.views.role_holder_addresses": ["valid-token"]}) + def test_role_holder_addresses(self): + url = urlreverse("ietf.api.views.role_holder_addresses") + r = self.client.get(url, headers={}) + self.assertEqual(r.status_code, 403, "No api token, no access") + r = self.client.get(url, headers={"X-Api-Key": "not-valid-token"}) + self.assertEqual(r.status_code, 403, "Bad api token, no access") + r = self.client.post(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 405, "Bad method, no access") + + emails = EmailFactory.create_batch(5) + email_queryset = Email.objects.filter(pk__in=[e.pk for e in emails]) + with mock.patch("ietf.api.views.role_holder_emails", return_value=email_queryset): + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200, "Good api token and method, access") + content_dict = json.loads(r.content) + self.assertCountEqual(content_dict.keys(), ["addresses"]) + self.assertEqual( + content_dict["addresses"], + sorted(e.address for e in emails), + ) + class DirectAuthApiTests(TestCase): diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 1adc02a038..4fab831726 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -28,6 +28,8 @@ url(r'^export/personal-information/$', api_views.PersonalInformationExportView.as_view()), # Email alias information for groups url(r'^group/group-aliases/$', api_views.group_aliases), + # Email addresses belonging to role holders + url(r'^group/role-holder-addresses/$', api_views.role_holder_addresses), # Let IESG members set positions programmatically url(r'^iesg/position', views_ballot.api_set_position), # Let Meetecho set session video URLs diff --git a/ietf/api/views.py b/ietf/api/views.py index 744c6548ae..9621644395 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -29,7 +29,7 @@ from ietf.api.ietf_utils import is_valid_token, requires_api_token from ietf.api.serializer import JsonExportMixin from ietf.doc.utils import DraftAliasGenerator, fuzzy_find_documents -from ietf.group.utils import GroupAliasGenerator +from ietf.group.utils import GroupAliasGenerator, role_holder_emails from ietf.ietfauth.utils import role_required from ietf.ietfauth.views import send_account_creation_email from ietf.meeting.models import Meeting @@ -500,3 +500,18 @@ def active_email_list(request): } ) return HttpResponse(status=405) + + +@requires_api_token +def role_holder_addresses(request): + if request.method == "GET": + return JsonResponse( + { + "addresses": list( + role_holder_emails() + .order_by("address") + .values_list("address", flat=True) + ) + } + ) + return HttpResponse(status=405) diff --git a/ietf/group/tests.py b/ietf/group/tests.py index 8ae6a626b2..0d5cddf105 100644 --- a/ietf/group/tests.py +++ b/ietf/group/tests.py @@ -18,10 +18,16 @@ from ietf.doc.factories import DocumentFactory, WgDraftFactory, EditorialDraftFactory from ietf.doc.models import DocEvent, RelatedDocument, Document from ietf.group.models import Role, Group -from ietf.group.utils import get_group_role_emails, get_child_group_role_emails, get_group_ad_emails, GroupAliasGenerator +from ietf.group.utils import ( + get_group_role_emails, + get_child_group_role_emails, + get_group_ad_emails, + GroupAliasGenerator, + role_holder_emails, +) from ietf.group.factories import GroupFactory, RoleFactory from ietf.person.factories import PersonFactory, EmailFactory -from ietf.person.models import Person +from ietf.person.models import Email, Person from ietf.utils.test_utils import login_testing_unauthorized, TestCase class StreamTests(TestCase): @@ -240,3 +246,41 @@ def test_group_ad_emails(self): self.assertGreater(len(emails), 0) for item in emails: self.assertIn('@', item) + + def test_role_holder_emails(self): + # The test fixtures create a bunch of addresses that pollute this test's results - disable them + Email.objects.update(active=False) + + role_holders = [ + RoleFactory(name_id="member", group__type_id=gt).person + for gt in [ + "ag", + "area", + "dir", + "iab", + "ietf", + "irtf", + "nomcom", + "rg", + "team", + "wg", + "rag", + ] + ] + # Expect an additional active email to be included + EmailFactory( + person=role_holders[0], + active=True, + ) + # Do not expect an inactive email to be included + EmailFactory( + person=role_holders[1], + active=False, + ) + # Do not expect address on a role-holder for a different group type + RoleFactory(name_id="member", group__type_id="adhoc") # arbitrary type not in the of-interest list + + self.assertCountEqual( + role_holder_emails(), + Email.objects.filter(active=True, person__in=role_holders), + ) diff --git a/ietf/group/utils.py b/ietf/group/utils.py index 36917d3124..f9c2aa15bf 100644 --- a/ietf/group/utils.py +++ b/ietf/group/utils.py @@ -425,3 +425,28 @@ def __iter__(self): chair_emails = get_group_role_emails(group, ["chair", "delegate"]) if chair_emails: yield group.acronym + "-chairs", ["ietf"], list(chair_emails) + + +def role_holder_emails(): + """Get queryset of active Emails for group role holders""" + group_types_of_interest = [ + "ag", + "area", + "dir", + "iab", + "ietf", + "irtf", + "nomcom", + "rg", + "team", + "wg", + "rag", + ] + roles = Role.objects.filter( + group__state__slug="active", + group__type__in=group_types_of_interest, + ) + emails = Email.objects.filter(active=True).exclude( + address__startswith="unknown-email-" + ) + return emails.filter(person__role__in=roles).distinct() From 279fb8565a1fdd422769ebf7cc2177e6ffeb0112 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 5 Apr 2024 16:03:04 -0300 Subject: [PATCH 011/846] fix: Split up API tokens (#7294) --- ietf/api/tests.py | 4 ++-- ietf/api/views.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 26fcd04a85..25b6ac5b7f 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -901,7 +901,7 @@ def test_api_get_session_matherials_no_agenda_meeting_url(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) - @override_settings(APP_API_TOKENS={"ietf.api.views.email_aliases": ["valid-token"]}) + @override_settings(APP_API_TOKENS={"ietf.api.views.draft_aliases": ["valid-token"]}) @mock.patch("ietf.api.views.DraftAliasGenerator") def test_draft_aliases(self, mock): mock.return_value = (("alias1", ("a1", "a2")), ("alias2", ("a3", "a4"))) @@ -935,7 +935,7 @@ def test_draft_aliases(self, mock): 405, ) - @override_settings(APP_API_TOKENS={"ietf.api.views.email_aliases": ["valid-token"]}) + @override_settings(APP_API_TOKENS={"ietf.api.views.group_aliases": ["valid-token"]}) @mock.patch("ietf.api.views.GroupAliasGenerator") def test_group_aliases(self, mock): mock.return_value = (("alias1", ("ietf",), ("a1", "a2")), ("alias2", ("ietf", "iab"), ("a3", "a4"))) diff --git a/ietf/api/views.py b/ietf/api/views.py index 9621644395..e992db1196 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -452,7 +452,7 @@ def directauth(request): return HttpResponse(status=405) -@requires_api_token("ietf.api.views.email_aliases") +@requires_api_token @csrf_exempt def draft_aliases(request): if request.method == "GET": @@ -471,7 +471,7 @@ def draft_aliases(request): return HttpResponse(status=405) -@requires_api_token("ietf.api.views.email_aliases") +@requires_api_token @csrf_exempt def group_aliases(request): if request.method == "GET": From 2fb550ffcee6d76478cd929327acb4f3c262950f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 9 Apr 2024 13:21:35 -0300 Subject: [PATCH 012/846] feat: add room_id param to createRoom API (#7308) * feat: add room_id param to createRoom API * test: update tests_helpers.py --- ietf/meeting/helpers.py | 1 + ietf/meeting/tests_helpers.py | 25 ++++++++++++++----------- ietf/utils/meetecho.py | 6 +++++- ietf/utils/tests_meetecho.py | 9 ++++++--- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index c0e250cdc0..7f1c85990e 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -1099,6 +1099,7 @@ def create_interim_session_conferences(sessions): try: confs = meetecho_manager.create( group=session.group, + session_id=session.pk, description=str(session), start_time=ts.utc_start_time(), duration=ts.duration, diff --git a/ietf/meeting/tests_helpers.py b/ietf/meeting/tests_helpers.py index 9ce3c21cbc..b118b9f041 100644 --- a/ietf/meeting/tests_helpers.py +++ b/ietf/meeting/tests_helpers.py @@ -487,7 +487,7 @@ def test_create_interim_session_conferences(self, mock): mock.reset_mock() mock_conf_mgr.create.return_value = [ Conference( - manager=mock_conf_mgr, id=1, public_id='some-uuid', description='desc', + manager=mock_conf_mgr, id=int(sessions[0].pk), public_id='some-uuid', description='desc', start_time=timeslots[0].utc_start_time(), duration=timeslots[0].duration, url='fake-meetecho-url', deletion_token='please-delete-me', ), @@ -498,6 +498,7 @@ def test_create_interim_session_conferences(self, mock): mock_conf_mgr.create.call_args[1], { 'group': sessions[0].group, + 'session_id': sessions[0].id, 'description': str(sessions[0]), 'start_time': timeslots[0].utc_start_time(), 'duration': timeslots[0].duration, @@ -512,12 +513,12 @@ def test_create_interim_session_conferences(self, mock): mock.reset_mock() mock_conf_mgr.create.side_effect = [ [Conference( - manager=mock_conf_mgr, id=1, public_id='some-uuid', description='desc', + manager=mock_conf_mgr, id=int(sessions[0].pk), public_id='some-uuid', description='desc', start_time=timeslots[0].utc_start_time(), duration=timeslots[0].duration, url='different-fake-meetecho-url', deletion_token='please-delete-me', )], [Conference( - manager=mock_conf_mgr, id=2, public_id='another-uuid', description='desc', + manager=mock_conf_mgr, id=int(sessions[1].pk), public_id='another-uuid', description='desc', start_time=timeslots[1].utc_start_time(), duration=timeslots[1].duration, url='another-fake-meetecho-url', deletion_token='please-delete-me-too', )], @@ -528,16 +529,18 @@ def test_create_interim_session_conferences(self, mock): mock_conf_mgr.create.call_args_list, [ ({ - 'group': sessions[0].group, - 'description': str(sessions[0]), - 'start_time': timeslots[0].utc_start_time(), - 'duration': timeslots[0].duration, + 'group': sessions[0].group, + 'session_id': sessions[0].id, + 'description': str(sessions[0]), + 'start_time': timeslots[0].utc_start_time(), + 'duration': timeslots[0].duration, },), ({ - 'group': sessions[1].group, - 'description': str(sessions[1]), - 'start_time': timeslots[1].utc_start_time(), - 'duration': timeslots[1].duration, + 'group': sessions[1].group, + 'session_id': sessions[1].id, + 'description': str(sessions[1]), + 'start_time': timeslots[1].utc_start_time(), + 'duration': timeslots[1].duration, },), ] ) diff --git a/ietf/utils/meetecho.py b/ietf/utils/meetecho.py index e842ca0121..2f5f146766 100644 --- a/ietf/utils/meetecho.py +++ b/ietf/utils/meetecho.py @@ -115,6 +115,7 @@ def retrieve_wg_tokens(self, acronyms: Union[str, Sequence[str]]): def schedule_meeting( self, wg_token: str, + room_id: int, description: str, start_time: datetime.datetime, duration: datetime.timedelta, @@ -139,6 +140,7 @@ def schedule_meeting( } :param wg_token: token retrieved via retrieve_wg_tokens() + :param room_id: int id to identify the room (will be echoed as room.id) :param description: str describing the meeting :param start_time: starting time as a datetime :param duration: duration as a timedelta @@ -151,6 +153,7 @@ def schedule_meeting( "meeting/interim/createRoom", api_token=wg_token, json={ + "room_id": room_id, "description": description, "start_time": self._serialize_time(start_time), "duration": self._serialize_duration(duration), @@ -455,9 +458,10 @@ def fetch(self, group): response = self.api.fetch_meetings(self.wg_token(group)) return Conference.from_api_dict(self, response["rooms"]) - def create(self, group, description, start_time, duration, extrainfo=""): + def create(self, group, session_id, description, start_time, duration, extrainfo=""): response = self.api.schedule_meeting( wg_token=self.wg_token(group), + room_id=int(session_id), description=description, start_time=start_time, duration=duration, diff --git a/ietf/utils/tests_meetecho.py b/ietf/utils/tests_meetecho.py index 39f36969b4..1aef5894e2 100644 --- a/ietf/utils/tests_meetecho.py +++ b/ietf/utils/tests_meetecho.py @@ -82,7 +82,7 @@ def test_schedule_meeting(self): 'rooms': { '3d55bce0-535e-4ba8-bb8e-734911cf3c32': { 'room': { - 'id': 18, + 'id': 18, # should match room_id in api.schedule_meeting() below 'start_time': '2021-09-14 10:00:00', 'duration': 130, 'description': 'interim-2021-wgname-01', @@ -97,6 +97,7 @@ def test_schedule_meeting(self): api = MeetechoAPI(API_BASE, CLIENT_ID, CLIENT_SECRET) api_response = api.schedule_meeting( wg_token='my-token', + room_id=18, start_time=datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.timezone.utc), duration=datetime.timedelta(minutes=130), description='interim-2021-wgname-01', @@ -116,6 +117,7 @@ def test_schedule_meeting(self): self.assertEqual( request.json(), { + 'room_id': 18, 'duration': 130, 'start_time': '2021-09-14 10:00:00', 'extrainfo': 'message for staff', @@ -485,7 +487,7 @@ def test_create(self, mock_schedule, _): 'rooms': { 'session-1-uuid': { 'room': { - 'id': 1, + 'id': 1, # value should match session_id param to cm.create() below 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), 'duration': datetime.timedelta(minutes=45), 'description': 'some-description', @@ -496,7 +498,7 @@ def test_create(self, mock_schedule, _): }, } cm = ConferenceManager(settings.MEETECHO_API_CONFIG) - result = cm.create('group', 'desc', 'starttime', 'dur', 'extra') + result = cm.create('group', '1', 'desc', 'starttime', 'dur', 'extra') self.assertEqual( result, [Conference( @@ -515,6 +517,7 @@ def test_create(self, mock_schedule, _): kwargs, { 'wg_token': 'atoken', + 'room_id': 1, 'description': 'desc', 'start_time': 'starttime', 'duration': 'dur', From b9c6259f1f46c4c44f17ed63bdb3919455242c05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:02:48 -0400 Subject: [PATCH 013/846] chore(deps): bump codecov/codecov-action from 4.1.1 to 4.2.0 (#7301) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.1 to 4.2.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.1.1...v4.2.0) --- updated-dependencies: - dependency-name: codecov/codecov-action 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/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a27441408e..dbac84cda5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,7 +59,7 @@ jobs: path: geckodriver.log - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v4.1.1 + uses: codecov/codecov-action@v4.2.0 with: files: coverage.xml From 280481b92492e48043ba4df9c7d0ef8958f04ffd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:05:32 -0400 Subject: [PATCH 014/846] chore(deps): bump nanoid in /dev/deploy-to-container in the npm group (#7299) Bumps the npm group in /dev/deploy-to-container with 1 update: [nanoid](https://github.com/ai/nanoid). Updates `nanoid` from 5.0.6 to 5.0.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.0.6...5.0.7) --- updated-dependencies: - dependency-name: nanoid 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 | 14 +++++++------- dev/deploy-to-container/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index ed88c274fa..6e6bd88e9b 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "dockerode": "^4.0.2", "fs-extra": "^11.2.0", - "nanoid": "5.0.6", + "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", "tar": "^6.2.1", @@ -337,9 +337,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", "funding": [ { "type": "github", @@ -878,9 +878,9 @@ "optional": true }, "nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==" + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==" }, "nanoid-dictionary": { "version": "5.0.0-beta.1", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index 1b573ffd04..01c2cc3d7e 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -4,7 +4,7 @@ "dependencies": { "dockerode": "^4.0.2", "fs-extra": "^11.2.0", - "nanoid": "5.0.6", + "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", "tar": "^6.2.1", From b458d475a5825764444d6b07c925d9090ab5139d Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 16 Apr 2024 18:32:08 -0500 Subject: [PATCH 015/846] chore: remove dead (relies on svn) command (#7332) --- bin/check-copyright | 261 -------------------------------------------- 1 file changed, 261 deletions(-) delete mode 100755 bin/check-copyright diff --git a/bin/check-copyright b/bin/check-copyright deleted file mode 100755 index 13cbcd8582..0000000000 --- a/bin/check-copyright +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/env python3.7 -# -*- mode: python; coding: utf-8 -*- -# Copyright The IETF Trust 2019, All Rights Reserved -""" -NAME - $program - Check for current copyright notice in given files - -SYNOPSIS - $program [OPTIONS] ARGS - -DESCRIPTION - Given a list of files or filename wildcard patterns, check all for - an IETF Trust copyright notice with the current year. Optionally - generate a diff on standard out which can be used by 'patch'. - - An invocation similar to the following can be particularly useful with - a set of changed version-controlled files, as it will fix up the - Copyright statements of any python files with pending changes: - - $ check-copyright -p $(svn st | cut -c 9- | grep '\.py$' ) | patch -p0 - - -%(options)s - -AUTHOR - Written by Henrik Levkowetz, - -COPYRIGHT - Copyright 2019 the IETF Trust - - This program is free software; you can redistribute it and/or modify - it under the terms of the Simplified BSD license as published by the - Open Source Initiative at http://opensource.org/licenses/BSD-2-Clause. - -""" - - -import datetime -import os -import sys -import time - -path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -if not path in sys.path: - sys.path.insert(0, path) - -import getopt -import re -import pytz -import tzparse -import debug - -version = "1.0.0" -program = os.path.basename(sys.argv[0]) -progdir = os.path.dirname(sys.argv[0]) - -debug.debug = True - -# ---------------------------------------------------------------------- -# Parse options - -options = "" -for line in re.findall("\n +(if|elif) +opt in \[(.+)\]:\s+#(.+)\n", open(sys.argv[0]).read()): - if not options: - options += "OPTIONS\n" - options += " %-16s %s\n" % (line[1].replace('"', ''), line[2]) -options = options.strip() - -# with ' < 1:' on the next line, this is a no-op: -if len(sys.argv) < 1: - print(__doc__ % locals()) - sys.exit(1) - -try: - opts, files = getopt.gnu_getopt(sys.argv[1:], "hC:pvV", ["help", "copyright=", "patch", "version", "verbose",]) -except Exception as e: - print( "%s: %s" % (program, e)) - sys.exit(1) - -# ---------------------------------------------------------------------- -# Handle options - -# set default values, if any -opt_verbose = 0 -opt_patch = False -opt_copyright = "Copyright The IETF Trust {years}, All Rights Reserved" - -# handle individual options -for opt, value in opts: - if opt in ["-h", "--help"]: # Output this help, then exit - print( __doc__ % locals() ) - sys.exit(1) - elif opt in ["-p", "--patch"]: # Generate patch output rather than error messages - opt_patch = True - elif opt in ["-C", "--copyright"]: # Copyright line pattern using {years} for years - opt_copyright = value - elif opt in ["-V", "--version"]: # Output version information, then exit - print( program, version ) - sys.exit(0) - elif opt in ["-v", "--verbose"]: # Be more verbose - opt_verbose += 1 - -# ---------------------------------------------------------------------- -def say(s): - sys.stderr.write("%s\n" % (s)) - -# ---------------------------------------------------------------------- -def note(s): - if opt_verbose: - sys.stderr.write("%s\n" % (s)) - -# ---------------------------------------------------------------------- -def die(s, error=1): - sys.stderr.write("\n%s: Error: %s\n\n" % (program, s)) - sys.exit(error) - -# ---------------------------------------------------------------------- - -def pipe(cmd, inp=None): - import shlex - from subprocess import Popen, PIPE - args = shlex.split(cmd) - bufsize = 4096 - stdin = PIPE if inp else None - pipe = Popen(args, stdin=stdin, stdout=PIPE, stderr=PIPE, bufsize=bufsize, encoding='utf-8', universal_newlines=True) - out, err = pipe.communicate(inp) - code = pipe.returncode - if code != 0: - raise OSError(err) - return out - -# ---------------------------------------------------------------------- -def split_loginfo(line): - try: - parts = line.split() - rev = parts[0][1:] - who = parts[2] - date = parts[4] - time = parts[5] - tz = parts[6] - when = tzparse.tzparse(" ".join(parts[4:7]), "%Y-%m-%d %H:%M:%S %Z") - when = when.astimezone(pytz.utc) - except ValueError as e: - sys.stderr.write("Bad log line format: %s\n %s\n" % (line, e)) - - return rev, who, when - -# ---------------------------------------------------------------------- -def get_first_commit(path): - note("Getting first commit for '%s'" % path) - cmd = 'svn log %s' % path - if opt_verbose > 1: - note("Running '%s' ..." % cmd) - try: - commit_log = pipe(cmd) - commit_log = commit_log.splitlines() - commit_log.reverse() - for line in commit_log: - if re.search(loginfo_format, line): - rev, who, when = split_loginfo(line) - break - else: - pass - except OSError: - rev, who, when = None, None, datetime.datetime.now(datetime.timezone.utc) - return { path: { 'rev': rev, 'who': who, 'date': when.strftime('%Y-%m-%d %H:%M:%S'), }, } - - -# ---------------------------------------------------------------------- -# The program itself - -import os -import json - -cwd = os.getcwd() - -# Get current initinfo from cache and svn -cachefn = os.path.join(os.environ.get('HOME', '.'), '.initinfo') - -if os.path.exists(cachefn): - note("Reading initinfo cache file %s" % cachefn) - with open(cachefn, "r") as file: - cache = json.load(file) -else: - sys.stderr.write("No initinfo cache file found -- will have to extract all information from SVN.\n"+ - "This may take some time.\n\n") - cache = {} -initinfo = cache - -merged_revs = {} -write_cache = False -loginfo_format = r'^r[0-9]+ \| [^@]+@[^@]+ \| \d\d\d\d-\d\d-\d\d ' - -year = time.strftime('%Y') -copyright_re = "(?i)"+opt_copyright.format(years=r"(\d+-)?\d+") -for path in files: - try: - if not os.path.exists(path): - note("File does not exist: %s" % path) - continue - note("Checking path %s" % path) - if not path in initinfo: - initinfo.update(get_first_commit(path)) - write_cache = True - date = initinfo[path]['date'] - init = date[:4] - - copyright_year_re = "(?i)"+opt_copyright.format(years=r"({init}-)?{year}".format(init=init, year=year)) - with open(path) as file: - try: - chunk = file.read(4000) - except UnicodeDecodeError as e: - sys.stderr.write(f'Error when reading {file.name}: {e}\n') - raise - if os.path.basename(path) == '__init__.py' and len(chunk)==0: - continue - if not re.search(copyright_year_re, chunk): - if year == init: - copyright = opt_copyright.format(years=year) - else: - copyright = opt_copyright.format(years=f"{init}-{year}") - if opt_patch: - print(f"--- {file.name}\t(original)") - print(f"+++ {file.name}\t(modified)") - if not re.search(copyright_re, chunk): - # Simple case, just insert copyright at the top - print( "@@ -1,3 +1,4 @@") - print(f"+# {copyright}") - for i, line in list(enumerate(chunk.splitlines()))[:3]: - print(f" {line}") - else: - # Find old copyright, then emit preceding lines, - # change, and following lines. - pos = None - for i, line in enumerate(chunk.splitlines(), start=1): - if re.search(copyright_re, line): - pos = i - break - if not pos: - raise RuntimeError("Unexpected state: Expected a copyright line, but found none") - print(f"@@ -1,{pos+3} +1,{pos+3} @@") - for i, line in list(enumerate(chunk.splitlines(), start=1))[:pos+3]: - if i == pos: - print(f"-{line}") - print(f"+# {copyright}") - else: - print(f" {line}") - else: - sys.stderr.write(f"{path}(1): Error: Missing or bad copyright. Expected: {copyright}") - except Exception: - if write_cache: - cache = initinfo - with open(cachefn, "w") as file: - json.dump(cache, file, indent=2, sort_keys=True) - raise - -if write_cache: - cache = initinfo - with open(cachefn, "w") as file: - json.dump(cache, file, indent=2, sort_keys=True) - From 370c3b24edf164e1fdb1be0fb88311c8c59fea0c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 Apr 2024 10:25:02 -0500 Subject: [PATCH 016/846] chore: remove alreay used on-shot import commands (#7333) --- .../commands/import_iesg_appeals.py | 294 -------------- .../commands/import_iesg_statements.py | 274 ------------- .../commands/import_iesg_minutes.py | 364 ------------------ 3 files changed, 932 deletions(-) delete mode 100644 ietf/group/management/commands/import_iesg_appeals.py delete mode 100644 ietf/group/management/commands/import_iesg_statements.py delete mode 100644 ietf/meeting/management/commands/import_iesg_minutes.py diff --git a/ietf/group/management/commands/import_iesg_appeals.py b/ietf/group/management/commands/import_iesg_appeals.py deleted file mode 100644 index 1c4ebe3f83..0000000000 --- a/ietf/group/management/commands/import_iesg_appeals.py +++ /dev/null @@ -1,294 +0,0 @@ -# Copyright The IETF Trust 2023, All Rights Reserved - -import csv -import datetime -import re -import shutil -import subprocess -import tempfile - -from pathlib import Path -import dateutil - -from django.conf import settings -from django.core.management import BaseCommand - -from ietf.group.models import Appeal, AppealArtifact - - -class Command(BaseCommand): - help = "Performs a one-time import of IESG appeals" - - def handle(self, *args, **options): - old_appeals_root = ( - "/a/www/www6/iesg/appeal" - if settings.SERVER_MODE == "production" - else "/assets/www6/iesg/appeal" - ) - tmpdir = tempfile.mkdtemp() - process = subprocess.Popen( - ["git", "clone", "https://github.com/kesara/iesg-scraper.git", tmpdir], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - sub_stdout, sub_stderr = process.communicate() - if not (Path(tmpdir) / "iesg_appeals" / "anderson-2006-03-08.md").exists(): - self.stdout.write( - "Git clone of the iesg-scraper directory did not go as expected" - ) - self.stdout.write("stdout:", sub_stdout) - self.stdout.write("stderr:", sub_stderr) - self.stdout.write(f"Clean up {tmpdir} manually") - exit(-1) - titles = [ - "Appeal: IESG Statement on Guidance on In-Person and Online Interim Meetings (John Klensin, 2023-08-15)", - "Appeal of current Guidance on in-Person and Online meetings (Ted Hardie, Alan Frindell, 2023-07-19)", - "Appeal re: URI Scheme Application and draft-mcsweeney-drop-scheme (Tim McSweeney, 2020-07-08)", - "Appeal to the IESG re WGLC of draft-ietf-spring-srv6-network-programming (Fernando Gont, Andrew Alston, and Sander Steffann, 2020-04-22)", - "Appeal re Protocol Action: 'URI Design and Ownership' to Best \nCurrent Practice (draft-nottingham-rfc7320bis-03.txt) (John Klensin; 2020-02-04)", - "Appeal of IESG Conflict Review process and decision on draft-mavrogiannopoulos-pkcs8-validated-parameters-02 (John Klensin; 2018-07-07)", - "Appeal of IESG decision to defer action and request that ISE publish draft-klensin-dns-function-considerations (John Klensin; 2017-11-29)", - 'Appeal to the IESG concerning its approval of the "draft-ietf-ianaplan-icg-response" (PDF file) (JFC Morfin; 2015-03-11)', - "Appeal re tzdist mailing list moderation (Tobias Conradi; 2014-08-28) / Withdrawn by Submitter", - "Appeal re draft-masotta-tftpexts-windowsize-opt (Patrick Masotta; 2013-11-14)", - "Appeal re draft-ietf-manet-nhdp-sec-threats (Abdussalam Baryun; 2013-06-19)", - "Appeal of decision to advance RFC6376 (Douglas Otis; 2013-05-30)", - "Appeal to the IESG in regards to RFC 6852 (PDF file) (JFC Morfin; 2013-04-05)", - "Appeal to the IESG concerning the approbation of the IDNA2008 document set (PDF file) (JFC Morfin; 2010-03-10)", - "Authentication-Results Header Field Appeal (Douglas Otis, David Rand; 2009-02-16) / Withdrawn by Submitter", - "Appeal to the IAB of IESG rejection of Appeal to Last Call draft-ietf-grow-anycast (Dean Anderson; 2008-11-14)", - "Appeal to the IESG Concerning the Way At Large Internet Lead Users Are Not Permitted To Adequately Contribute to the IETF Deliverables (JFC Morfin; 2008-09-10)", - "Appeal over suspension of posting rights for Todd Glassey (Todd Glassey; 2008-07-28)", - "Appeal against IESG blocking DISCUSS on draft-klensin-rfc2821bis (John C Klensin; 2008-06-13)", - "Appeal: Continued Abuse of Process by IPR-WG Chair (Dean Anderson; 2007-12-26)", - "Appeal to the IESG from Todd Glassey (Todd Glassey; 2007-11-26)", - "Appeal Against the Removal of the Co-Chairs of the GEOPRIV Working Group (PDF file) (Randall Gellens, Allison Mankin, and Andrew Newton; 2007-06-22)", - "Appeal concerning the WG-LTRU rechartering (JFC Morfin; 2006-10-24)", - "Appeal against decision within July 10 IESG appeal dismissal (JFC Morfin; 2006-09-09)", - "Appeal: Mandatory to implement HTTP authentication mechanism in the Atom Publishing Protocol (Robert Sayre; 2006-08-29)", - "Appeal Against IESG Decisions Regarding the draft-ietf-ltru-matching (PDF file) (JFC Morfin; 2006-08-16)", - "Amended Appeal Re: grow: Last Call: 'Operation of Anycast Services' to BCP (draft-ietf-grow-anycast) (Dean Anderson; 2006-06-14)", - "Appeal Against an IESG Decision Denying Me IANA Language Registration Process by way of PR-Action (PDF file) (JFC Morfin; 2006-05-17)", - "Appeal to the IESG of PR-Action against Dean Anderson (Dean Anderson; 2006-03-08)", - "Appeal to IESG against AD decision: one must clear the confusion opposing the RFC 3066 Bis consensus (JFC Morfin; 2006-02-20)", - "Appeal to the IESG of an IESG decision (JFC Morfin; 2006-02-17)", - "Appeal to the IESG in reference to the ietf-languages@alvestrand.no mailing list (JFC Morfin; 2006-02-07)", - "Appeal to the IESG against an IESG decision concerning RFC 3066 Bis Draft (JFC Morfin; 2006-01-14)", - "Appeal over a key change in a poor RFC 3066 bis example (JFC Morfin; 2005-10-19)", - "Additional appeal against publication of draft-lyon-senderid-* in regards to its recommended use of Resent- header fields in the way that is inconsistant with RFC2822(William Leibzon; 2005-08-29)", - "Appeal: Publication of draft-lyon-senderid-core-01 in conflict with referenced draft-schlitt-spf-classic-02 (Julian Mehnle; 2005-08-25)", - 'Appeal of decision to standardize "Mapping Between the Multimedia Messaging Service (MMS) and Internet Mail" (John C Klensin; 2005-06-10)', - "Appeal regarding IESG decision on the GROW WG (David Meyer; 2003-11-15)", - "Appeal: Official notice of appeal on suspension rights (Todd Glassey; 2003-08-06)", - "Appeal: AD response to Site-Local Appeal (Tony Hain; 2003-07-31)", - "Appeal against IESG decision for draft-chiba-radius-dynamic-authorization-05.txt (Glen Zorn; 2003-01-15)", - "Appeal Against moving draft-ietf-ipngwg-addr-arch-v3 to Draft Standard (Robert Elz; 2002-11-05)", - ] - date_re = re.compile(r"\d{4}-\d{2}-\d{2}") - dates = [ - datetime.datetime.strptime(date_re.search(t).group(), "%Y-%m-%d").date() - for t in titles - ] - - parts = [ - ["klensin-2023-08-15.txt", "response-to-klensin-2023-08-15.txt"], - [ - "hardie-frindell-2023-07-19.txt", - "response-to-hardie-frindell-2023-07-19.txt", - ], - ["mcsweeney-2020-07-08.txt", "response-to-mcsweeney-2020-07-08.pdf"], - ["gont-2020-04-22.txt", "response-to-gont-2020-06-02.txt"], - ["klensin-2020-02-04.txt", "response-to-klensin-2020-02-04.txt"], - ["klensin-2018-07-07.txt", "response-to-klensin-2018-07-07.txt"], - ["klensin-2017-11-29.txt", "response-to-klensin-2017-11-29.md"], - ["morfin-2015-03-11.pdf", "response-to-morfin-2015-03-11.md"], - ["conradi-2014-08-28.txt"], - ["masotta-2013-11-14.txt", "response-to-masotta-2013-11-14.md"], - ["baryun-2013-06-19.txt", "response-to-baryun-2013-06-19.md"], - ["otis-2013-05-30.txt", "response-to-otis-2013-05-30.md"], - ["morfin-2013-04-05.pdf", "response-to-morfin-2013-04-05.md"], - ["morfin-2010-03-10.pdf", "response-to-morfin-2010-03-10.txt"], - ["otis-2009-02-16.txt"], - ["anderson-2008-11-14.md", "response-to-anderson-2008-11-14.txt"], - ["morfin-2008-09-10.txt", "response-to-morfin-2008-09-10.txt"], - ["glassey-2008-07-28.txt", "response-to-glassey-2008-07-28.txt"], - ["klensin-2008-06-13.txt", "response-to-klensin-2008-06-13.txt"], - ["anderson-2007-12-26.txt", "response-to-anderson-2007-12-26.txt"], - ["glassey-2007-11-26.txt", "response-to-glassey-2007-11-26.txt"], - ["gellens-2007-06-22.pdf", "response-to-gellens-2007-06-22.txt"], - ["morfin-2006-10-24.txt", "response-to-morfin-2006-10-24.txt"], - ["morfin-2006-09-09.txt", "response-to-morfin-2006-09-09.txt"], - ["sayre-2006-08-29.txt", "response-to-sayre-2006-08-29.txt"], - [ - "morfin-2006-08-16.pdf", - "response-to-morfin-2006-08-17.txt", - "response-to-morfin-2006-08-17-part2.txt", - ], - ["anderson-2006-06-13.txt", "response-to-anderson-2006-06-14.txt"], - ["morfin-2006-05-17.pdf", "response-to-morfin-2006-05-17.txt"], - ["anderson-2006-03-08.md", "response-to-anderson-2006-03-08.txt"], - ["morfin-2006-02-20.txt", "response-to-morfin-2006-02-20.txt"], - ["morfin-2006-02-17.txt", "response-to-morfin-2006-02-17.txt"], - ["morfin-2006-02-07.txt", "response-to-morfin-2006-02-07.txt"], - ["morfin-2006-01-14.txt", "response-to-morfin-2006-01-14.txt"], - ["morfin-2005-10-19.txt", "response-to-morfin-2005-10-19.txt"], - ["leibzon-2005-08-29.txt", "response-to-leibzon-2005-08-29.txt"], - ["mehnle-2005-08-25.txt", "response-to-mehnle-2005-08-25.txt"], - ["klensin-2005-06-10.txt", "response-to-klensin-2005-06-10.txt"], - ["meyer-2003-11-15.txt", "response-to-meyer-2003-11-15.txt"], - ["glassey-2003-08-06.txt", "response-to-glassey-2003-08-06.txt"], - ["hain-2003-07-31.txt", "response-to-hain-2003-07-31.txt"], - ["zorn-2003-01-15.txt", "response-to-zorn-2003-01-15.txt"], - ["elz-2002-11-05.txt", "response-to-elz-2002-11-05.txt"], - ] - - assert len(titles) == len(dates) - assert len(titles) == len(parts) - - part_times = dict() - part_times["klensin-2023-08-15.txt"] = "2023-08-15 15:03:55 -0400" - part_times["response-to-klensin-2023-08-15.txt"] = "2023-08-24 18:54:13 +0300" - part_times["hardie-frindell-2023-07-19.txt"] = "2023-07-19 07:17:16PDT" - part_times["response-to-hardie-frindell-2023-07-19.txt"] = ( - "2023-08-15 11:58:26PDT" - ) - part_times["mcsweeney-2020-07-08.txt"] = "2020-07-08 14:45:00 -0400" - part_times["response-to-mcsweeney-2020-07-08.pdf"] = "2020-07-28 12:54:04 -0000" - part_times["gont-2020-04-22.txt"] = "2020-04-22 22:26:20 -0400" - part_times["response-to-gont-2020-06-02.txt"] = "2020-06-02 20:44:29 -0400" - part_times["klensin-2020-02-04.txt"] = "2020-02-04 13:54:46 -0500" - # part_times["response-to-klensin-2020-02-04.txt"]="2020-03-24 11:49:31EDT" - part_times["response-to-klensin-2020-02-04.txt"] = "2020-03-24 11:49:31 -0400" - part_times["klensin-2018-07-07.txt"] = "2018-07-07 12:40:43PDT" - # part_times["response-to-klensin-2018-07-07.txt"]="2018-08-16 10:46:45EDT" - part_times["response-to-klensin-2018-07-07.txt"] = "2018-08-16 10:46:45 -0400" - part_times["klensin-2017-11-29.txt"] = "2017-11-29 09:35:02 -0500" - part_times["response-to-klensin-2017-11-29.md"] = "2017-11-30 11:33:04 -0500" - part_times["morfin-2015-03-11.pdf"] = "2015-03-11 18:03:44 -0000" - part_times["response-to-morfin-2015-03-11.md"] = "2015-04-16 15:18:09 -0000" - part_times["conradi-2014-08-28.txt"] = "2014-08-28 22:28:06 +0300" - part_times["masotta-2013-11-14.txt"] = "2013-11-14 15:35:19 +0200" - part_times["response-to-masotta-2013-11-14.md"] = "2014-01-27 07:39:32 -0800" - part_times["baryun-2013-06-19.txt"] = "2013-06-19 06:29:51PDT" - part_times["response-to-baryun-2013-06-19.md"] = "2013-07-02 15:24:42 -0700" - part_times["otis-2013-05-30.txt"] = "2013-05-30 19:35:18 +0000" - part_times["response-to-otis-2013-05-30.md"] = "2013-06-27 11:56:48 -0700" - part_times["morfin-2013-04-05.pdf"] = "2013-04-05 17:31:19 -0700" - part_times["response-to-morfin-2013-04-05.md"] = "2013-04-17 08:17:29 -0700" - part_times["morfin-2010-03-10.pdf"] = "2010-03-10 21:40:58 +0100" - part_times["response-to-morfin-2010-03-10.txt"] = "2010-04-07 14:26:06 -0700" - part_times["otis-2009-02-16.txt"] = "2009-02-16 15:47:15 -0800" - part_times["anderson-2008-11-14.md"] = "2008-11-14 00:16:58 -0500" - part_times["response-to-anderson-2008-11-14.txt"] = "2008-12-15 11:00:02 -0800" - part_times["morfin-2008-09-10.txt"] = "2008-09-10 04:10:13 +0200" - part_times["response-to-morfin-2008-09-10.txt"] = "2008-09-28 10:00:01PDT" - part_times["glassey-2008-07-28.txt"] = "2008-07-28 08:34:52 -0700" - part_times["response-to-glassey-2008-07-28.txt"] = "2008-09-02 11:00:01PDT" - part_times["klensin-2008-06-13.txt"] = "2008-06-13 21:14:38 -0400" - part_times["response-to-klensin-2008-06-13.txt"] = "2008-07-07 10:00:01 PDT" - # part_times["anderson-2007-12-26.txt"]="2007-12-26 17:19:34EST" - part_times["anderson-2007-12-26.txt"] = "2007-12-26 17:19:34 -0500" - part_times["response-to-anderson-2007-12-26.txt"] = "2008-01-15 17:21:05 -0500" - part_times["glassey-2007-11-26.txt"] = "2007-11-26 08:13:22 -0800" - part_times["response-to-glassey-2007-11-26.txt"] = "2008-01-23 17:38:43 -0500" - part_times["gellens-2007-06-22.pdf"] = "2007-06-22 21:45:41 -0400" - part_times["response-to-gellens-2007-06-22.txt"] = "2007-09-20 14:01:27 -0400" - part_times["morfin-2006-10-24.txt"] = "2006-10-24 05:03:17 +0200" - part_times["response-to-morfin-2006-10-24.txt"] = "2006-11-07 12:56:02 -0500" - part_times["morfin-2006-09-09.txt"] = "2006-09-09 02:54:55 +0200" - part_times["response-to-morfin-2006-09-09.txt"] = "2006-09-15 12:56:31 -0400" - part_times["sayre-2006-08-29.txt"] = "2006-08-29 17:05:03 -0400" - part_times["response-to-sayre-2006-08-29.txt"] = "2006-10-16 13:07:18 -0400" - part_times["morfin-2006-08-16.pdf"] = "2006-08-16 18:28:19 -0400" - part_times["response-to-morfin-2006-08-17.txt"] = "2006-08-22 12:05:42 -0400" - part_times["response-to-morfin-2006-08-17-part2.txt"] = ( - "2006-11-07 13:00:58 -0500" - ) - # part_times["anderson-2006-06-13.txt"]="2006-06-13 21:51:18EDT" - part_times["anderson-2006-06-13.txt"] = "2006-06-13 21:51:18 -0400" - part_times["response-to-anderson-2006-06-14.txt"] = "2006-07-10 14:31:08 -0400" - part_times["morfin-2006-05-17.pdf"] = "2006-05-17 06:46:18 +0200" - part_times["response-to-morfin-2006-05-17.txt"] = "2006-07-10 14:18:10 -0400" - part_times["anderson-2006-03-08.md"] = "2006-03-08 09:42:44 +0100" - part_times["response-to-anderson-2006-03-08.txt"] = "2006-03-20 14:55:38 -0500" - part_times["morfin-2006-02-20.txt"] = "2006-02-20 19:18:24 +0100" - part_times["response-to-morfin-2006-02-20.txt"] = "2006-03-06 13:08:39 -0500" - part_times["morfin-2006-02-17.txt"] = "2006-02-17 18:59:38 +0100" - part_times["response-to-morfin-2006-02-17.txt"] = "2006-07-10 14:05:15 -0400" - part_times["morfin-2006-02-07.txt"] = "2006-02-07 19:38:57 -0500" - part_times["response-to-morfin-2006-02-07.txt"] = "2006-02-21 19:09:26 -0500" - part_times["morfin-2006-01-14.txt"] = "2006-01-14 15:05:24 +0100" - part_times["response-to-morfin-2006-01-14.txt"] = "2006-02-21 12:23:38 -0500" - part_times["morfin-2005-10-19.txt"] = "2005-10-19 17:12:11 +0200" - part_times["response-to-morfin-2005-10-19.txt"] = "2005-11-15 11:42:30 -0500" - part_times["leibzon-2005-08-29.txt"] = "2005-08-29 08:28:52PDT" - part_times["response-to-leibzon-2005-08-29.txt"] = "2005-12-08 14:04:47 -0500" - part_times["mehnle-2005-08-25.txt"] = "2005-08-25 00:45:26 +0200" - part_times["response-to-mehnle-2005-08-25.txt"] = "2005-12-08 13:37:38 -0500" - part_times["klensin-2005-06-10.txt"] = "2005-06-10 14:49:17 -0400" - part_times["response-to-klensin-2005-06-10.txt"] = "2005-07-22 18:14:06 -0400" - part_times["meyer-2003-11-15.txt"] = "2003-11-15 09:47:11 -0800" - part_times["response-to-meyer-2003-11-15.txt"] = "2003-11-25 10:56:06 -0500" - part_times["glassey-2003-08-06.txt"] = "2003-08-06 02:14:24 +0000" - part_times["response-to-glassey-2003-08-06.txt"] = "2003-09-24 09:54:51 -0400" - part_times["hain-2003-07-31.txt"] = "2003-07-31 16:44:19 -0700" - part_times["response-to-hain-2003-07-31.txt"] = "2003-09-30 14:44:30 -0400" - part_times["zorn-2003-01-15.txt"] = "2003-01-15 01:22:28 -0800" - part_times["elz-2002-11-05.txt"] = "2002-11-05 10:51:13 +0700" - # No time could be found for this one: - part_times["response-to-zorn-2003-01-15.txt"] = "2003-02-08" - # This one was issued sometime between 2002-12-27 (when IESG minutes note that the - # appeal response was approved) and 2003-01-04 (when the appeal was escalated to - # the IAB) - we're using the earlier end of the window - part_times["response-to-elz-2002-11-05.txt"] = "2002-12-27" - for name in part_times: - part_times[name] = dateutil.parser.parse(part_times[name]).astimezone( - datetime.timezone.utc - ) - - redirects = [] - for index, title in enumerate(titles): - # IESG is group 2 - appeal = Appeal.objects.create( - name=titles[index], date=dates[index], group_id=2 - ) - for part in parts[index]: - if part.endswith(".pdf"): - content_type = "application/pdf" - else: - content_type = "text/markdown;charset=utf-8" - if part.endswith(".md"): - source_path = Path(tmpdir) / "iesg_appeals" / part - else: - source_path = Path(old_appeals_root) / part - with source_path.open("rb") as source_file: - bits = source_file.read() - if part == "morfin-2008-09-10.txt": - bits = bits.decode("macintosh") - bits = bits.replace("\r", "\n") - bits = bits.encode("utf8") - elif part in ["morfin-2006-02-07.txt", "morfin-2006-01-14.txt"]: - bits = bits.decode("windows-1252").encode("utf8") - artifact_type_id = ( - "response" if part.startswith("response") else "appeal" - ) - artifact = AppealArtifact.objects.create( - appeal=appeal, - artifact_type_id=artifact_type_id, - date=part_times[part].date(), - content_type=content_type, - bits=bits, - ) - redirects.append( - [ - f'www6.ietf.org/iesg/appeal/{part.replace(".md", ".html") if part.endswith(".md") else part}', - f"https://datatracker.ietf.org/group/iesg/appeals/artifact/{artifact.pk}", - 302, - ] - ) - - shutil.rmtree(tmpdir) - with open("iesg_appeal_redirects.csv", "w", newline="") as f: - csvwriter = csv.writer(f) - for row in redirects: - csvwriter.writerow(row) diff --git a/ietf/group/management/commands/import_iesg_statements.py b/ietf/group/management/commands/import_iesg_statements.py deleted file mode 100644 index 93fdcec161..0000000000 --- a/ietf/group/management/commands/import_iesg_statements.py +++ /dev/null @@ -1,274 +0,0 @@ -# Copyright The IETF Trust 2024, All Rights Reserved - -import debug # pyflakes:ignore - -import csv -import datetime -import os -import shutil -import subprocess -import tempfile - -from collections import namedtuple, Counter -from pathlib import Path - -from django.conf import settings -from django.core.management.base import BaseCommand - -from ietf.doc.models import Document, DocEvent, State -from ietf.utils.text import xslugify - - -class Command(BaseCommand): - help = "Performs a one-time import of IESG statements" - - def handle(self, *args, **options): - if Document.objects.filter(type="statement", group__acronym="iesg").exists(): - self.stdout.write("IESG statement documents already exist - exiting") - exit(-1) - tmpdir = tempfile.mkdtemp() - process = subprocess.Popen( - ["git", "clone", "https://github.com/kesara/iesg-scraper.git", tmpdir], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - sub_stdout, sub_stderr = process.communicate() - if not Path(tmpdir).joinpath("iesg_statements", "2000-08-29-0.md").exists(): - self.stdout.write( - "Git clone of the iesg-scraper directory did not go as expected" - ) - self.stdout.write("stdout:", sub_stdout) - self.stdout.write("stderr:", sub_stderr) - self.stdout.write(f"Clean up {tmpdir} manually") - exit(-1) - - redirects = [] - for item in self.get_work_items(): - replaced = item.title.endswith( - " SUPERSEDED" - ) or item.doc_time.date() == datetime.date(2007, 7, 30) - title = item.title - if title.endswith(" - SUPERSEDED"): - title = title[: -len(" - SUPERSEDED")] - name = f"statement-iesg-{xslugify(title)}-{item.doc_time:%Y%m%d}" - dest_filename = f"{name}-00.md" - # Create Document - doc = Document.objects.create( - name=name, - type_id="statement", - title=title, - group_id=2, # The IESG group - rev="00", - uploaded_filename=dest_filename, - ) - doc.set_state( - State.objects.get( - type_id="statement", - slug="replaced" if replaced else "active", - ) - ) - e1 = DocEvent.objects.create( - time=item.doc_time, - type="published_statement", - doc=doc, - rev="00", - by_id=1, # (System) - desc="Statement published (note: The exact time of day is inaccurate - the actual time of day is not known)", - ) - e2 = DocEvent.objects.create( - type="added_comment", - doc=doc, - rev="00", - by_id=1, # (System) - desc="Statement moved into datatracker from www.ietf.org", - ) - doc.save_with_history([e1, e2]) - - # Put file in place - source = Path(tmpdir).joinpath("iesg_statements", item.source_filename) - dest = Path(settings.DOCUMENT_PATH_PATTERN.format(doc=doc)).joinpath( - dest_filename - ) - if dest.exists(): - self.stdout.write( - f"WARNING: {dest} already exists - not overwriting it." - ) - else: - os.makedirs(dest.parent, exist_ok=True) - shutil.copy(source, dest) - - redirects.append( - [ - f"www.ietf.org/about/groups/iesg/statements/{item.slug}", - f"https://datatracker.ietf.org/doc/{name}", - 302, - ] - ) - - shutil.rmtree(tmpdir) - with open("iesg_statement_redirects.csv", "w", newline="") as f: - csvwriter = csv.writer(f) - for row in redirects: - csvwriter.writerow(row) - - def get_work_items(self): - Item = namedtuple("Item", "doc_time source_filename title slug") - items = [] - dressed_rows = " ".join( - self.cut_paste_from_www().expandtabs(1).split(" ") - ).split("\n") - old_slugs = self.get_old_slugs() - # Rube-Goldberg-esque dance to deal with conflicting directions of the scrape and - # what order we want the result to sort to - dressed_rows.reverse() - old_slugs.reverse() - total_times_date_seen = Counter([row.split(" ")[0] for row in dressed_rows]) - count_date_seen_so_far = Counter() - for row, slug in zip(dressed_rows, old_slugs): - date_part = row.split(" ")[0] - title_part = row[len(date_part) + 1 :] - datetime_args = list(map(int, date_part.replace("-0", "-").split("-"))) - # Use the minutes in timestamps to preserve order of statements - # on the same day as they currently appear at www.ietf.org - datetime_args.extend([12, count_date_seen_so_far[date_part]]) - count_date_seen_so_far[date_part] += 1 - doc_time = datetime.datetime(*datetime_args, tzinfo=datetime.timezone.utc) - items.append( - Item( - doc_time, - f"{date_part}-{total_times_date_seen[date_part] - count_date_seen_so_far[date_part]}.md", - title_part, - slug, - ) - ) - return items - - def cut_paste_from_www(self): - return """2023-08-24 Support Documents in IETF Working Groups -2023-08-14 Guidance on In-Person and Online Interim Meetings -2023-05-01 IESG Statement on EtherTypes -2023-03-15 Second Report on the RFC 8989 Experiment -2023-01-27 Guidance on In-Person and Online Interim Meetings - SUPERSEDED -2022-10-31 Statement on Restricting Access to IETF IT Systems -2022-01-21 Handling Ballot Positions -2021-09-01 Report on the RFC 8989 experiment -2021-07-21 IESG Statement on Allocation of Email Addresses in the ietf.org Domain -2021-05-11 IESG Statement on Inclusive Language -2021-05-10 IESG Statement on Internet-Draft Authorship -2021-05-07 IESG Processing of RFC Errata for the IETF Stream -2021-04-16 Last Call Guidance to the Community -2020-07-23 IESG Statement On Oppressive or Exclusionary Language -2020-05-01 Guidance on Face-to-Face and Virtual Interim Meetings - SUPERSEDED -2018-03-16 IETF Meeting Photography Policy -2018-01-11 Guidance on Face-to-Face and Virtual Interim Meetings - SUPERSEDED -2017-02-09 License File for Open Source Repositories -2016-11-13 Support Documents in IETF Working Groups - SUPERSEDED -2016-02-05 Guidance on Face-to-Face and Virtual Interim Meetings - SUPERSEDED -2016-01-11 Guidance on Face-to-Face and Virtual Interim Meetings - SUPERSEDED -2015-08-20 IESG Statement on Maximizing Encrypted Access To IETF Information -2015-06-11 IESG Statement on Internet-Draft Authorship - SUPERSEDED -2014-07-20 IESG Statement on Designating RFCs as Historic -2014-05-07 DISCUSS Criteria in IESG Review -2014-03-02 Writable MIB Module IESG Statement -2013-11-03 IETF Anti-Harassment Policy -2012-10-25 IESG Statement on Ethertypes - SUPERSEDED -2012-10-25 IESG Statement on Removal of an Internet-Draft from the IETF Web Site -2011-10-20 IESG Statement on Designating RFCs as Historic - SUPERSEDED -2011-06-27 IESG Statement on Designating RFCs as Historic - SUPERSEDED -2011-06-13 IESG Statement on IESG Processing of RFC Errata concerning RFC Metadata -2010-10-11 IESG Statement on Document Shepherds -2010-05-24 IESG Statement on the Usage of Assignable Codepoints, Addresses and Names in Specification Examples -2010-05-24 IESG Statement on NomCom Eligibility and Day Passes -2009-09-08 IESG Statement on Copyright -2009-01-20 IESG Statement on Proposed Status for IETF Documents Reserving Resources for Example Purposes -2008-09-02 Guidance on Interim Meetings, Conference Calls and Jabber Sessions - SUPERSEDED -2008-07-30 IESG Processing of RFC Errata for the IETF Stream -2008-04-14 IESG Statement on Spam Control on IETF Mailing Lists -2008-03-03 IESG Statement on Registration Requests for URIs Containing Telephone Numbers -2008-02-27 IESG Statement on RFC3406 and URN Namespaces Registry Review -2008-01-23 Advice for WG Chairs Dealing with Off-Topic Postings -2007-10-04 On Appeals of IESG and Area Director Actions and Decisions -2007-07-05 Experimental Specification of New Congestion Control Algorithms -2007-03-20 Guidance on Area Director Sponsoring of Documents -2007-01-15 Last Call Guidance to the Community - SUPERSEDED -2006-04-19 IESG Statement: Normative and Informative References -2006-02-17 IESG Statement on Disruptive Posting -2006-01-09 Guidance for Spam Control on IETF Mailing Lists - SUPERSEDED -2006-01-05 IESG Statement on AUTH48 State -2005-05-12 Syntax for Format Definitions -2003-02-11 IESG Statement on IDN -2002-11-27 Copyright Statement in MIB and PIB Modules -2002-03-13 Guidance for Spam Control on IETF Mailing Lists - SUPERSEDED -2001-12-21 On Design Teams -2001-10-01 Guidelines for the Use of Formal Languages in IETF Specifications -2001-03-21 Establishment of Temporary Sub-IP Area -2000-12-06 Plans to Organize "Sub-IP" Technologies in the IETF -2000-11-20 A New IETF Work Area -2000-08-29 Guidance on Interim IETF Working Group Meetings and Conference Calls - SUPERSEDED -2000-08-29 IESG Guidance on the Moderation of IETF Working Group Mailing Lists""" - - def get_old_slugs(self): - return [ - "support-documents", - "interim-meetings-guidance", - "ethertypes", - "second-report-on-the-rfc-8989-experiment", - "interim-meetings-guidance-2023-01-27", - "statement-on-restricting-access", - "handling-ballot-positions", - "report-on-rfc8989-experiment", - "email-addresses-ietf-domain", - "on-inclusive-language", - "internet-draft-authorship", - "processing-errata-ietf-stream", - "last-call-guidance", - "statement-on-oppressive-exclusionary-language", - "interim-meetings-guidance-2020-05-01", - "meeting-photography-policy", - "interim-meetings-guidance-2018-01-11", - "open-source-repositories-license", - "support-documents-2016-11-13", - "interim-meetings-guidance-2016-02-05", - "interim-meetings-guidance-2016-01-11", - "maximizing-encrypted-access", - "internet-draft-authorship-2015-06-11", - "designating-rfcs-historic", - "iesg-discuss-criteria", - "writable-mib-module", - "anti-harassment-policy", - "ethertypes-2012-10-25", - "internet-draft-removal", - "designating-rfcs-historic-2011-10-20", - "designating-rfcs-historic-2011-06-27", - "rfc-metadata-errata", - "document-shepherds", - "assignable-codepoints-addresses-names", - "nomcom-eligibility-day-passes", - "copyright-2009-09-08", - "reserving-resources-examples", - "interim-meetings-guidance-2008-09-02", - "processing-rfc-errata", - "spam-control-2008-04-14", - "registration-requests-uris", - "urn-namespaces-registry", - "off-topic-postings", - "appeals-actions-decisions", - "experimental-congestion-control", - "area-director-sponsoring-documents", - "last-call-guidance-2007-01-15", - "normative-informative-references", - "disruptive-posting", - "spam-control-2006-01-09", - "auth48", - "syntax-format-definitions", - "idn", - "copyright-2002-11-27", - "spam-control-2002-03-13", - "design-teams", - "formal-languages-use", - "sub-ip-area-2001-03-21", - "sub-ip-area-2000-11-20", - "sub-ip-area-2000-12-06", - "interim-meetings-guidance-2000-08-29", - "mailing-lists-moderation", - ] diff --git a/ietf/meeting/management/commands/import_iesg_minutes.py b/ietf/meeting/management/commands/import_iesg_minutes.py deleted file mode 100644 index d62e5058e4..0000000000 --- a/ietf/meeting/management/commands/import_iesg_minutes.py +++ /dev/null @@ -1,364 +0,0 @@ -# Copyright The IETF Trust 2023, All Rights Reserved - -from collections import namedtuple -import csv -import datetime -import os -import re -import shutil - -from django.conf import settings -from django.core.management import BaseCommand - -from pathlib import Path -from zoneinfo import ZoneInfo -from ietf.doc.models import DocEvent, Document - -from ietf.meeting.models import ( - Meeting, - SchedTimeSessAssignment, - Schedule, - SchedulingEvent, - Session, - TimeSlot, -) -from ietf.name.models import DocTypeName - - -def add_time_of_day(bare_datetime): - """Add a time for the iesg meeting based on a date and make it tzaware - - From the secretariat - the telechats happened at these times: - 2015-04-09 to present: 0700 PT America/Los Angeles - 1993-02-01 to 2015-03-12: 1130 ET America/New York - 1991-07-30 to 1993-01-25: 1200 ET America/New York - """ - dt = None - if bare_datetime.year > 2015: - dt = bare_datetime.replace(hour=7).replace( - tzinfo=ZoneInfo("America/Los_Angeles") - ) - elif bare_datetime.year == 2015: - if bare_datetime.month >= 4: - dt = bare_datetime.replace(hour=7).replace( - tzinfo=ZoneInfo("America/Los_Angeles") - ) - else: - dt = bare_datetime.replace(hour=11, minute=30).replace( - tzinfo=ZoneInfo("America/New_York") - ) - elif bare_datetime.year > 1993: - dt = bare_datetime.replace(hour=11, minute=30).replace( - tzinfo=ZoneInfo("America/New_York") - ) - elif bare_datetime.year == 1993: - if bare_datetime.month >= 2: - dt = bare_datetime.replace(hour=11, minute=30).replace( - tzinfo=ZoneInfo("America/New_York") - ) - else: - dt = bare_datetime.replace(hour=12).replace( - tzinfo=ZoneInfo("America/New_York") - ) - else: - dt = bare_datetime.replace(hour=12).replace(tzinfo=ZoneInfo("America/New_York")) - - return dt.astimezone(datetime.timezone.utc) - - -def build_bof_coord_data(): - CoordTuple = namedtuple("CoordTuple", "meeting_number source_name") - - def utc_from_la_time(time): - return time.replace(tzinfo=ZoneInfo("America/Los_Angeles")).astimezone( - datetime.timezone.utc - ) - - data = dict() - data[utc_from_la_time(datetime.datetime(2016, 6, 10, 7, 0))] = CoordTuple( - 96, "2015/bof-minutes-ietf-96.txt" - ) - data[utc_from_la_time(datetime.datetime(2016, 10, 6, 7, 0))] = CoordTuple( - 97, "2016/BoF-Minutes-2016-10-06.txt" - ) - data[utc_from_la_time(datetime.datetime(2017, 2, 15, 8, 0))] = CoordTuple( - 98, "2017/bof-minutes-ietf-98.txt" - ) - data[utc_from_la_time(datetime.datetime(2017, 6, 7, 8, 0))] = CoordTuple( - 99, "2017/bof-minutes-ietf-99.txt" - ) - data[utc_from_la_time(datetime.datetime(2017, 10, 5, 7, 0))] = CoordTuple( - 100, "2017/bof-minutes-ietf-100.txt" - ) - data[utc_from_la_time(datetime.datetime(2018, 2, 5, 11, 0))] = CoordTuple( - 101, "2018/bof-minutes-ietf-101.txt" - ) - data[utc_from_la_time(datetime.datetime(2018, 6, 5, 8, 0))] = CoordTuple( - 102, "2018/bof-minutes-ietf-102.txt" - ) - data[utc_from_la_time(datetime.datetime(2018, 9, 26, 7, 0))] = CoordTuple( - 103, "2018/bof-minutes-ietf-103.txt" - ) - data[utc_from_la_time(datetime.datetime(2019, 2, 15, 9, 0))] = CoordTuple( - 104, "2019/bof-minutes-ietf-104.txt" - ) - data[utc_from_la_time(datetime.datetime(2019, 6, 11, 7, 30))] = CoordTuple( - 105, "2019/bof-minutes-ietf-105.txt" - ) - data[utc_from_la_time(datetime.datetime(2019, 10, 9, 6, 30))] = CoordTuple( - 106, "2019/bof-minutes-ietf-106.txt" - ) - data[utc_from_la_time(datetime.datetime(2020, 2, 13, 8, 0))] = CoordTuple( - 107, "2020/bof-minutes-ietf-107.txt" - ) - data[utc_from_la_time(datetime.datetime(2020, 6, 15, 8, 0))] = CoordTuple( - 108, "2020/bof-minutes-ietf-108.txt" - ) - data[utc_from_la_time(datetime.datetime(2020, 10, 9, 7, 0))] = CoordTuple( - 109, "2020/bof-minutes-ietf-109.txt" - ) - data[utc_from_la_time(datetime.datetime(2021, 1, 14, 13, 30))] = CoordTuple( - 110, "2021/bof-minutes-ietf-110.txt" - ) - data[utc_from_la_time(datetime.datetime(2021, 6, 1, 8, 0))] = CoordTuple( - 111, "2021/bof-minutes-ietf-111.txt" - ) - data[utc_from_la_time(datetime.datetime(2021, 9, 15, 9, 0))] = CoordTuple( - 112, "2021/bof-minutes-ietf-112.txt" - ) - data[utc_from_la_time(datetime.datetime(2022, 1, 28, 7, 0))] = CoordTuple( - 113, "2022/bof-minutes-ietf-113.txt" - ) - data[utc_from_la_time(datetime.datetime(2022, 6, 2, 10, 0))] = CoordTuple( - 114, "2022/bof-minutes-ietf-114.txt" - ) - data[utc_from_la_time(datetime.datetime(2022, 9, 13, 9, 0))] = CoordTuple( - 115, "2022/bof-minutes-ietf-115.txt" - ) - data[utc_from_la_time(datetime.datetime(2023, 2, 1, 9, 0))] = CoordTuple( - 116, "2023/bof-minutes-ietf-116.txt" - ) - data[utc_from_la_time(datetime.datetime(2023, 6, 1, 7, 0))] = CoordTuple( - 117, "2023/bof-minutes-ietf-117.txt" - ) - data[utc_from_la_time(datetime.datetime(2023, 9, 15, 8, 0))] = CoordTuple( - 118, "2023/bof-minutes-ietf-118.txt" - ) - return data - - -class Command(BaseCommand): - help = "Performs a one-time import of IESG minutes, creating Meetings to attach them to" - - def handle(self, *args, **options): - old_minutes_root = ( - "/a/www/www6/iesg/minutes" - if settings.SERVER_MODE == "production" - else "/assets/www6/iesg/minutes" - ) - minutes_dir = Path(old_minutes_root) - date_re = re.compile(r"\d{4}-\d{2}-\d{2}") - meeting_times = set() - redirects = [] - for file_prefix in ["minutes", "narrative"]: - paths = list(minutes_dir.glob(f"[12][09][0129][0-9]/{file_prefix}*.txt")) - paths.extend( - list(minutes_dir.glob(f"[12][09][0129][0-9]/{file_prefix}*.html")) - ) - for path in paths: - s = date_re.search(path.name) - if s: - meeting_times.add( - add_time_of_day( - datetime.datetime.strptime(s.group(), "%Y-%m-%d") - ) - ) - bof_coord_data = build_bof_coord_data() - bof_times = set(bof_coord_data.keys()) - assert len(bof_times.intersection(meeting_times)) == 0 - meeting_times.update(bof_times) - year_seen = None - for dt in sorted(meeting_times): - if dt.year != year_seen: - counter = 1 - year_seen = dt.year - meeting_name = f"interim-{dt.year}-iesg-{counter:02d}" - meeting = Meeting.objects.create( - number=meeting_name, - type_id="interim", - date=dt.date(), - days=1, - time_zone=dt.tzname(), - ) - schedule = Schedule.objects.create( - meeting=meeting, - owner_id=1, # the "(System)" person - visible=True, - public=True, - ) - meeting.schedule = schedule - meeting.save() - session = Session.objects.create( - meeting=meeting, - group_id=2, # The IESG group - type_id="regular", - purpose_id="regular", - name=( - f"IETF {bof_coord_data[dt].meeting_number} BOF Coordination Call" - if dt in bof_times - else "Formal Telechat" - ), - ) - SchedulingEvent.objects.create( - session=session, - status_id="sched", - by_id=1, # (System) - ) - timeslot = TimeSlot.objects.create( - meeting=meeting, - type_id="regular", - time=dt, - duration=datetime.timedelta(seconds=2 * 60 * 60), - ) - SchedTimeSessAssignment.objects.create( - timeslot=timeslot, session=session, schedule=schedule - ) - - if dt in bof_times: - source = minutes_dir / bof_coord_data[dt].source_name - if source.exists(): - doc_name = ( - f"minutes-interim-{dt.year}-iesg-{counter:02d}-{dt:%Y%m%d%H%M}" - ) - doc_filename = f"{doc_name}-00.txt" - doc = Document.objects.create( - name=doc_name, - type_id="minutes", - title=f"Minutes IETF {bof_coord_data[dt].meeting_number} BOF coordination {meeting_name} {dt:%Y-%m-%d %H:%M}", - group_id=2, # the IESG group - rev="00", - uploaded_filename=doc_filename, - ) - e = DocEvent.objects.create( - type="comment", - doc=doc, - rev="00", - by_id=1, # "(System)" - desc="Minutes moved into datatracker", - ) - doc.save_with_history([e]) - session.presentations.create(document=doc, rev=doc.rev) - dest = ( - Path(settings.AGENDA_PATH) - / meeting_name - / "minutes" - / doc_filename - ) - if dest.exists(): - self.stdout.write( - f"WARNING: {dest} already exists - not overwriting it." - ) - else: - os.makedirs(dest.parent, exist_ok=True) - shutil.copy(source, dest) - redirects.append( - [ - f"www6.ietf.org/iesg/minutes/{dt.year}/{bof_coord_data[dt].source_name}", - f"https://datatracker.ietf.org/doc/{doc_name}", - 302, - ] - ) - else: - for type_id in ["minutes", "narrativeminutes"]: - source_file_prefix = ( - "minutes" if type_id == "minutes" else "narrative-minutes" - ) - txt_source = ( - minutes_dir - / f"{dt.year}" - / f"{source_file_prefix}-{dt:%Y-%m-%d}.txt" - ) - html_source = ( - minutes_dir - / f"{dt.year}" - / f"{source_file_prefix}-{dt:%Y-%m-%d}.html" - ) - if txt_source.exists() and html_source.exists(): - self.stdout.write( - f"WARNING: Both {txt_source} and {html_source} exist." - ) - if txt_source.exists() or html_source.exists(): - prefix = DocTypeName.objects.get(slug=type_id).prefix - doc_name = f"{prefix}-interim-{dt.year}-iesg-{counter:02d}-{dt:%Y%m%d%H%M}" - suffix = "html" if html_source.exists() else "txt" - doc_filename = f"{doc_name}-00.{suffix}" - verbose_type = ( - "Minutes" if type_id == "minutes" else "Narrative Minutes" - ) - doc = Document.objects.create( - name=doc_name, - type_id=type_id, - title=f"{verbose_type} {meeting_name} {dt:%Y-%m-%d %H:%M}", - group_id=2, # the IESG group - rev="00", - uploaded_filename=doc_filename, - ) - e = DocEvent.objects.create( - type="comment", - doc=doc, - rev="00", - by_id=1, # "(System)" - desc=f"{verbose_type} moved into datatracker", - ) - doc.save_with_history([e]) - session.presentations.create(document=doc, rev=doc.rev) - dest = ( - Path(settings.AGENDA_PATH) - / meeting_name - / type_id - / doc_filename - ) - if dest.exists(): - self.stdout.write( - f"WARNING: {dest} already exists - not overwriting it." - ) - else: - os.makedirs(dest.parent, exist_ok=True) - if html_source.exists(): - html_content = html_source.read_text(encoding="utf-8") - html_content = html_content.replace( - f'href="IESGnarrative-{dt:%Y-%m-%d}.html#', - 'href="#', - ) - html_content = re.sub( - r']*>([^<]*)', - r"\1", - html_content, - ) - html_content = re.sub( - r'([^<]*)', - r"\1", - html_content, - ) - html_content = re.sub( - ' Date: Fri, 19 Apr 2024 16:18:52 -0500 Subject: [PATCH 017/846] feat: obviate ghostlinkd (#7336) * wip: identify whats needed to obviate ghostlinkd * fix: hardlink new charter files to ftp directory * fix: hardlink new charter files to ftp directory (continued) * chore: bring settings comment up to date * chore: add archive and ftp dirs to setup of various environments * fix: test charter submits write to ftp dir * chore: remove debug * fix: test charter approval writes to ftp dir * fix: link review revisions into ftp dir * fix: link to all archive and ftp on submission post * chore: clean comments, move action to github issue * fix: link idindex files to all archive and ftp * chore: deflake * chore: remove TODO comment * fix: use settings * chore: rename new setting --- dev/deploy-to-container/settings_local.py | 3 ++- dev/diff/settings_local.py | 3 ++- dev/tests/settings_local.py | 3 ++- docker/configs/settings_local.py | 3 ++- docker/scripts/app-create-dirs.sh | 6 +++++ ietf/doc/expire.py | 8 ++++++ ietf/doc/models.py | 1 + ietf/doc/tests_charter.py | 21 ++++++++++----- ietf/doc/tests_review.py | 31 ++++++++++++++--------- ietf/doc/utils_charter.py | 25 ++++++++++++++++-- ietf/doc/views_charter.py | 15 ++++++++++- ietf/doc/views_draft.py | 3 +++ ietf/doc/views_review.py | 12 ++++++--- ietf/idindex/tasks.py | 26 +++++++++++++------ ietf/idindex/tests.py | 31 +++++++++++++---------- ietf/settings.py | 6 +++-- ietf/submit/tests.py | 19 ++++++++++++++ ietf/submit/utils.py | 9 ++++++- ietf/utils/test_utils.py | 1 + 19 files changed, 172 insertions(+), 54 deletions(-) diff --git a/dev/deploy-to-container/settings_local.py b/dev/deploy-to-container/settings_local.py index 15b44433ea..25eacc3004 100644 --- a/dev/deploy-to-container/settings_local.py +++ b/dev/deploy-to-container/settings_local.py @@ -60,10 +60,11 @@ BOFREQ_PATH = '/assets/ietf-ftp/bofreq/' CONFLICT_REVIEW_PATH = '/assets/ietf-ftp/conflict-reviews/' STATUS_CHANGE_PATH = '/assets/ietf-ftp/status-changes/' -INTERNET_DRAFT_ARCHIVE_DIR = '/assets/archive/id' +INTERNET_DRAFT_ARCHIVE_DIR = '/assets/collection/draft-archive' INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/assets/archive/id' BIBXML_BASE_PATH = '/assets/ietfdata/derived/bibxml' IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH +FTP_DIR = '/assets/ftp' NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/' SLIDE_STAGING_PATH = '/test/staging/' diff --git a/dev/diff/settings_local.py b/dev/diff/settings_local.py index 593ccadd7f..774c7797cf 100644 --- a/dev/diff/settings_local.py +++ b/dev/diff/settings_local.py @@ -57,9 +57,10 @@ BOFREQ_PATH = '/assets/ietf-ftp/bofreq/' CONFLICT_REVIEW_PATH = '/assets/ietf-ftp/conflict-reviews/' STATUS_CHANGE_PATH = '/assets/ietf-ftp/status-changes/' -INTERNET_DRAFT_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/' +INTERNET_DRAFT_ARCHIVE_DIR = '/assets/collection/draft-archive' INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/' BIBXML_BASE_PATH = '/assets/ietfdata/derived/bibxml' +FTP_DIR = '/assets/ftp' NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/' SLIDE_STAGING_PATH = 'test/staging/' diff --git a/dev/tests/settings_local.py b/dev/tests/settings_local.py index 0cd761c0a9..8b5d90b1ec 100644 --- a/dev/tests/settings_local.py +++ b/dev/tests/settings_local.py @@ -56,9 +56,10 @@ BOFREQ_PATH = '/assets/ietf-ftp/bofreq/' CONFLICT_REVIEW_PATH = '/assets/ietf-ftp/conflict-reviews/' STATUS_CHANGE_PATH = '/assets/ietf-ftp/status-changes/' -INTERNET_DRAFT_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/' +INTERNET_DRAFT_ARCHIVE_DIR = '/assets/collection/draft-archive' INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/' BIBXML_BASE_PATH = '/assets/ietfdata/derived/bibxml' +FTP_DIR = '/assets/ftp' NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/' SLIDE_STAGING_PATH = 'test/staging/' diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index 07c16c2e9a..bcd04898ea 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -46,10 +46,11 @@ BOFREQ_PATH = '/assets/ietf-ftp/bofreq/' CONFLICT_REVIEW_PATH = '/assets/ietf-ftp/conflict-reviews/' STATUS_CHANGE_PATH = '/assets/ietf-ftp/status-changes/' -INTERNET_DRAFT_ARCHIVE_DIR = '/assets/archive/id' +INTERNET_DRAFT_ARCHIVE_DIR = '/assets/collection/draft-archive' INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/assets/archive/id' BIBXML_BASE_PATH = '/assets/ietfdata/derived/bibxml' IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH +FTP_DIR = '/assets/ftp' NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/' SLIDE_STAGING_PATH = 'test/staging/' diff --git a/docker/scripts/app-create-dirs.sh b/docker/scripts/app-create-dirs.sh index d9296ecffe..b75c57767d 100755 --- a/docker/scripts/app-create-dirs.sh +++ b/docker/scripts/app-create-dirs.sh @@ -9,6 +9,8 @@ for sub in \ test/wiki/ietf \ data/nomcom_keys/public_keys \ /assets/archive/id \ + /assets/collection \ + /assets/collection/draft-archive \ /assets/ietf-ftp \ /assets/ietf-ftp/bofreq \ /assets/ietf-ftp/charter \ @@ -33,6 +35,10 @@ for sub in \ /assets/www6/iesg \ /assets/www6/iesg/evaluation \ /assets/media/photo \ + /assets/ftp \ + /assets/ftp/charter \ + /assets/ftp/internet-drafts \ + /assets/ftp/review \ ; do if [ ! -d "$sub" ]; then echo "Creating dir $sub" diff --git a/ietf/doc/expire.py b/ietf/doc/expire.py index f6779e0471..1650b4ddf5 100644 --- a/ietf/doc/expire.py +++ b/ietf/doc/expire.py @@ -139,6 +139,9 @@ def move_file(f): if os.path.exists(src): try: + # ghostlinkd would keep this in the combined all archive since it would + # be sourced from a different place. But when ghostlinkd is removed, nothing + # new is needed here - the file will already exist in the combined archive shutil.move(src, dst) except IOError as e: if "No such file or directory" in str(e): @@ -213,6 +216,10 @@ def splitext(fn): filename, revision = match.groups() def move_file_to(subdir): + # Similar to move_draft_files_to_archive + # ghostlinkd would keep this in the combined all archive since it would + # be sourced from a different place. But when ghostlinkd is removed, nothing + # new is needed here - the file will already exist in the combined archive shutil.move(path, os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, subdir, basename)) @@ -229,4 +236,5 @@ def move_file_to(subdir): move_file_to("") except Document.DoesNotExist: + # All uses of this past 2014 seem related to major system failures. move_file_to("unknown_ids") diff --git a/ietf/doc/models.py b/ietf/doc/models.py index d97e8238ec..a103fca645 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -142,6 +142,7 @@ def get_file_path(self): if self.is_dochistory(): self._cached_file_path = settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR else: + # This could be simplified since anything in INTERNET_DRAFT_PATH is also already in INTERNET_ALL_DRAFTS_ARCHIVE_DIR draft_state = self.get_state('draft') if draft_state and draft_state.slug == 'active': self._cached_file_path = settings.INTERNET_DRAFT_PATH diff --git a/ietf/doc/tests_charter.py b/ietf/doc/tests_charter.py index 1bd6c1701d..e0207fe842 100644 --- a/ietf/doc/tests_charter.py +++ b/ietf/doc/tests_charter.py @@ -87,6 +87,10 @@ def test_view_revisions(self): class EditCharterTests(TestCase): settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH'] + def setUp(self): + super().setUp() + (Path(settings.FTP_DIR)/"charter").mkdir() + def write_charter_file(self, charter): (Path(settings.CHARTER_PATH) / f"{charter.name}-{charter.rev}.txt").write_text("This is a charter.") @@ -506,13 +510,16 @@ def test_submit_charter(self): self.assertEqual(charter.rev, next_revision(prev_rev)) self.assertTrue("new_revision" in charter.latest_event().type) - file_contents = ( - Path(settings.CHARTER_PATH) / (charter.name + "-" + charter.rev + ".txt") - ).read_text("utf-8") + charter_path = Path(settings.CHARTER_PATH) / (charter.name + "-" + charter.rev + ".txt") + file_contents = (charter_path).read_text("utf-8") self.assertEqual( file_contents, "Windows line\nMac line\nUnix line\n" + utf_8_snippet.decode("utf-8"), ) + ftp_charter_path = Path(settings.FTP_DIR) / "charter" / charter_path.name + self.assertTrue(ftp_charter_path.exists()) + self.assertTrue(charter_path.samefile(ftp_charter_path)) + def test_submit_initial_charter(self): group = GroupFactory(type_id='wg',acronym='mars',list_email='mars-wg@ietf.org') @@ -808,9 +815,11 @@ def test_approve(self): self.assertTrue(not charter.ballot_open("approve")) self.assertEqual(charter.rev, "01") - self.assertTrue( - (Path(settings.CHARTER_PATH) / ("charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))).exists() - ) + charter_path = Path(settings.CHARTER_PATH) / ("charter-ietf-%s-%s.txt" % (group.acronym, charter.rev)) + charter_ftp_path = Path(settings.FTP_DIR) / "charter" / charter_path.name + self.assertTrue(charter_path.exists()) + self.assertTrue(charter_ftp_path.exists()) + self.assertTrue(charter_path.samefile(charter_ftp_path)) self.assertEqual(len(outbox), 2) # diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index d9aca94e86..a956fd3287 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- +from pathlib import Path import datetime, os, shutil import io import tarfile, tempfile, mailbox @@ -47,6 +48,7 @@ def setUp(self): self.review_dir = self.tempdir('review') self.old_document_path_pattern = settings.DOCUMENT_PATH_PATTERN settings.DOCUMENT_PATH_PATTERN = self.review_dir + "/{doc.type_id}/" + (Path(settings.FTP_DIR) / "review").mkdir() self.review_subdir = os.path.join(self.review_dir, "review") if not os.path.exists(self.review_subdir): @@ -57,6 +59,13 @@ def tearDown(self): settings.DOCUMENT_PATH_PATTERN = self.old_document_path_pattern super().tearDown() + def verify_review_files_were_written(self, assignment, expected_content = "This is a review\nwith two lines"): + review_file = Path(self.review_subdir) / f"{assignment.review.name}.txt" + content = review_file.read_text() + self.assertEqual(content, expected_content) + review_ftp_file = Path(settings.FTP_DIR) / "review" / review_file.name + self.assertTrue(review_file.samefile(review_ftp_file)) + def test_request_review(self): doc = WgDraftFactory(group__acronym='mars',rev='01') NewRevisionDocEventFactory(doc=doc,rev='01') @@ -830,8 +839,7 @@ def test_complete_review_upload_content(self): self.assertTrue(assignment.review_request.team.acronym.lower() in assignment.review.name) self.assertTrue(assignment.review_request.doc.rev in assignment.review.name) - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 1) self.assertIn(assignment.review_request.team.list_email, outbox[0]["To"]) @@ -885,8 +893,7 @@ def test_complete_review_enter_content(self): completed_time_diff = timezone.now() - assignment.completed_on self.assertLess(completed_time_diff, datetime.timedelta(seconds=10)) - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 1) self.assertIn(assignment.review_request.team.list_email, outbox[0]["To"]) @@ -926,8 +933,7 @@ def test_complete_review_enter_content_by_secretary(self): self.assertLess(event0_time_diff, datetime.timedelta(seconds=10)) self.assertEqual(events[1].time, datetime.datetime(2012, 12, 24, 12, 13, 14, tzinfo=DEADLINE_TZINFO)) - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 1) self.assertIn(assignment.review_request.team.list_email, outbox[0]["To"]) @@ -1013,8 +1019,7 @@ def test_complete_review_link_to_mailing_list(self, mock): assignment = reload_db_objects(assignment) self.assertEqual(assignment.state_id, "completed") - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 0) self.assertTrue("http://example.com" in assignment.review.external_url) @@ -1063,8 +1068,7 @@ def test_complete_unsolicited_review_link_to_mailing_list_by_secretary(self, moc self.assertEqual(assignment.reviewer, rev_role.person.role_email('reviewer')) self.assertEqual(assignment.state_id, "completed") - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 0) self.assertTrue("http://example.com" in assignment.review.external_url) @@ -1172,8 +1176,9 @@ def test_revise_review_enter_content(self): self.assertLess(event_time_diff, datetime.timedelta(seconds=10)) self.assertTrue('revised' in event1.desc.lower()) - with io.open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f: - self.assertEqual(f.read(), "This is a review\nwith two lines") + # See https://github.com/ietf-tools/datatracker/issues/6941 + # These are _not_ getting written as a new version as intended. + self.verify_review_files_were_written(assignment) self.assertEqual(len(outbox), 0) @@ -1200,6 +1205,8 @@ def test_revise_review_enter_content(self): # Ensure that a new event was created for the new revision (#2590) self.assertNotEqual(event1.id, event2.id) + self.verify_review_files_were_written(assignment, "This is a revised review") + self.assertEqual(len(outbox), 0) def test_edit_comment(self): diff --git a/ietf/doc/utils_charter.py b/ietf/doc/utils_charter.py index 7d2001e4d7..b29d1e303c 100644 --- a/ietf/doc/utils_charter.py +++ b/ietf/doc/utils_charter.py @@ -92,11 +92,31 @@ def change_group_state_after_charter_approval(group, by): def fix_charter_revision_after_approval(charter, by): # according to spec, 00-02 becomes 01, so copy file and record new revision try: - old = os.path.join(charter.get_file_path(), '%s-%s.txt' % (charter.name, charter.rev)) - new = os.path.join(charter.get_file_path(), '%s-%s.txt' % (charter.name, next_approved_revision(charter.rev))) + old = os.path.join( + charter.get_file_path(), "%s-%s.txt" % (charter.name, charter.rev) + ) + new = os.path.join( + charter.get_file_path(), + "%s-%s.txt" % (charter.name, next_approved_revision(charter.rev)), + ) shutil.copy(old, new) except IOError: log("There was an error copying %s to %s" % (old, new)) + # Also provide a copy to the legacy ftp source directory, which is served by rsync + # This replaces the hardlink copy that ghostlink has made in the past + # Still using a hardlink as long as these are on the same filesystem. + # Staying with os.path vs pathlib.Path until we get to python>=3.10. + charter_dir = os.path.join(settings.FTP_DIR, "charter") + ftp_filepath = os.path.join( + charter_dir, "%s-%s.txt" % (charter.name, next_approved_revision(charter.rev)) + ) + try: + os.link(new, ftp_filepath) + except IOError: + log( + "There was an error creating a harlink at %s pointing to %s" + % (ftp_filepath, new) + ) events = [] e = NewRevisionDocEvent(doc=charter, by=by, type="new_revision") @@ -108,6 +128,7 @@ def fix_charter_revision_after_approval(charter, by): charter.rev = e.rev charter.save_with_history(events) + def historic_milestones_for_charter(charter, rev): """Return GroupMilestone/GroupMilestoneHistory objects for charter document at rev by looking through the history.""" diff --git a/ietf/doc/views_charter.py b/ietf/doc/views_charter.py index 9596970f86..d44a675f68 100644 --- a/ietf/doc/views_charter.py +++ b/ietf/doc/views_charter.py @@ -4,6 +4,7 @@ import datetime import json +import os import textwrap from pathlib import Path @@ -42,7 +43,7 @@ from ietf.name.models import GroupStateName from ietf.person.models import Person from ietf.utils.history import find_history_active_at -from ietf.utils.log import assertion +from ietf.utils.log import assertion, log from ietf.utils.mail import send_mail_preformatted from ietf.utils.textupload import get_cleaned_text_file_content from ietf.utils.response import permission_denied @@ -443,6 +444,18 @@ def submit(request, name, option=None): destination.write(form.cleaned_data["txt"]) else: destination.write(form.cleaned_data["content"]) + # Also provide a copy to the legacy ftp source directory, which is served by rsync + # This replaces the hardlink copy that ghostlink has made in the past + # Still using a hardlink as long as these are on the same filesystem. + ftp_filename = Path(settings.FTP_DIR) / "charter" / charter_filename.name + try: + os.link(charter_filename, ftp_filename) # os.link until we are on python>=3.10 + except IOError: + log( + "There was an error creating a hardlink at %s pointing to %s" + % (ftp_filename, charter_filename) + ) + if option in ["initcharter", "recharter"] and charter.ad == None: charter.ad = getattr(group.ad_role(), "person", None) diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index ea30e7bd2d..1deca4503c 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -831,6 +831,9 @@ def restore_draft_file(request, draft): log.log("Resurrecting %s. Moving files:" % draft.name) for file in files: try: + # ghostlinkd would keep this in the combined all archive since it would + # be sourced from a different place. But when ghostlinkd is removed, nothing + # new is needed here - the file will already exist in the combined archive shutil.move(file, settings.INTERNET_DRAFT_PATH) log.log(" Moved file %s to %s" % (file, settings.INTERNET_DRAFT_PATH)) except shutil.Error as ex: diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index 04c558ce3e..646b51b09c 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -2,11 +2,11 @@ # -*- coding: utf-8 -*- -import io import itertools import json import os import datetime +from pathlib import Path import requests import email.utils @@ -803,9 +803,13 @@ def complete_review(request, name, assignment_id=None, acronym=None): else: content = form.cleaned_data['review_content'] - filename = os.path.join(review.get_file_path(), '{}.txt'.format(review.name)) - with io.open(filename, 'w', encoding='utf-8') as destination: - destination.write(content) + review_path = Path(review.get_file_path()) / f"{review.name}.txt" + review_path.write_text(content) + review_ftp_path = Path(settings.FTP_DIR) / "review" / review_path.name + # See https://github.com/ietf-tools/datatracker/issues/6941 - when that's + # addressed, making this link should not be conditional + if not review_ftp_path.exists(): + os.link(review_path, review_ftp_path) # switch this to Path.hardlink when python>=3.10 is available completion_datetime = timezone.now() if "completion_date" in form.cleaned_data: diff --git a/ietf/idindex/tasks.py b/ietf/idindex/tasks.py index c01d50cf5d..6ae2efc5ee 100644 --- a/ietf/idindex/tasks.py +++ b/ietf/idindex/tasks.py @@ -2,6 +2,7 @@ # # Celery task definitions # +import os import shutil import debug # pyflakes:ignore @@ -10,6 +11,9 @@ from contextlib import AbstractContextManager from pathlib import Path from tempfile import NamedTemporaryFile +from typing import List + +from django.conf import settings from .index import all_id_txt, all_id2_txt, id_index_txt @@ -26,10 +30,14 @@ def make_temp_file(self, content): tf.write(content) return tf_path - def move_into_place(self, src_path: Path, dest_path: Path): + def move_into_place(self, src_path: Path, dest_path: Path, hardlink_dirs: List[Path] = []): shutil.move(src_path, dest_path) dest_path.chmod(0o644) self.cleanup_list.remove(src_path) + for path in hardlink_dirs: + target = path / dest_path.name + target.unlink(missing_ok=True) + os.link(dest_path, target) # until python>=3.10 def cleanup(self): for tf_path in self.cleanup_list: @@ -43,9 +51,11 @@ def __exit__(self, exc_type, exc_val, exc_tb): @shared_task def idindex_update_task(): """Update I-D indexes""" - id_path = Path("/a/ietfdata/doc/draft/repository") - derived_path = Path("/a/ietfdata/derived") - download_path = Path("/a/www/www6s/download") + id_path = Path(settings.INTERNET_DRAFT_PATH) + derived_path = Path(settings.DERIVED_DIR) + download_path = Path(settings.ALL_ID_DOWNLOAD_DIR) + ftp_path = Path(settings.FTP_DIR) / "internet-drafts" + all_archive_path = Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR) with TempFileManager("/a/tmp") as tmp_mgr: # Generate copies of new contents @@ -69,17 +79,17 @@ def idindex_update_task(): derived_all_id2_tmpfile = tmp_mgr.make_temp_file(all_id2_content) # Move temp files as-atomically-as-possible into place - tmp_mgr.move_into_place(all_id_tmpfile, id_path / "all_id.txt") + tmp_mgr.move_into_place(all_id_tmpfile, id_path / "all_id.txt", [ftp_path, all_archive_path]) tmp_mgr.move_into_place(derived_all_id_tmpfile, derived_path / "all_id.txt") tmp_mgr.move_into_place(download_all_id_tmpfile, download_path / "id-all.txt") - tmp_mgr.move_into_place(id_index_tmpfile, id_path / "1id-index.txt") + tmp_mgr.move_into_place(id_index_tmpfile, id_path / "1id-index.txt", [ftp_path, all_archive_path]) tmp_mgr.move_into_place(derived_id_index_tmpfile, derived_path / "1id-index.txt") tmp_mgr.move_into_place(download_id_index_tmpfile, download_path / "id-index.txt") - tmp_mgr.move_into_place(id_abstracts_tmpfile, id_path / "1id-abstracts.txt") + tmp_mgr.move_into_place(id_abstracts_tmpfile, id_path / "1id-abstracts.txt", [ftp_path, all_archive_path]) tmp_mgr.move_into_place(derived_id_abstracts_tmpfile, derived_path / "1id-abstracts.txt") tmp_mgr.move_into_place(download_id_abstracts_tmpfile, download_path / "id-abstract.txt") - tmp_mgr.move_into_place(all_id2_tmpfile, id_path / "all_id2.txt") + tmp_mgr.move_into_place(all_id2_tmpfile, id_path / "all_id2.txt", [ftp_path, all_archive_path]) tmp_mgr.move_into_place(derived_all_id2_tmpfile, derived_path / "all_id2.txt") diff --git a/ietf/idindex/tests.py b/ietf/idindex/tests.py index 31c3aaafbf..44abf805f0 100644 --- a/ietf/idindex/tests.py +++ b/ietf/idindex/tests.py @@ -188,17 +188,20 @@ def test_idindex_update_task( def test_temp_file_manager(self): with TemporaryDirectory() as temp_dir: - temp_path = Path(temp_dir) - with TempFileManager(temp_path) as tfm: - path1 = tfm.make_temp_file("yay") - path2 = tfm.make_temp_file("boo") # do not keep this one - self.assertTrue(path1.exists()) - self.assertTrue(path2.exists()) - dest = temp_path / "yay.txt" - tfm.move_into_place(path1, dest) - # make sure things were cleaned up... - self.assertFalse(path1.exists()) # moved to dest - self.assertFalse(path2.exists()) # left behind - # check destination contents and permissions - self.assertEqual(dest.read_text(), "yay") - self.assertEqual(dest.stat().st_mode & 0o777, 0o644) + with TemporaryDirectory() as other_dir: + temp_path = Path(temp_dir) + other_path = Path(other_dir) + with TempFileManager(temp_path) as tfm: + path1 = tfm.make_temp_file("yay") + path2 = tfm.make_temp_file("boo") # do not keep this one + self.assertTrue(path1.exists()) + self.assertTrue(path2.exists()) + dest = temp_path / "yay.txt" + tfm.move_into_place(path1, dest, [other_path]) + # make sure things were cleaned up... + self.assertFalse(path1.exists()) # moved to dest + self.assertFalse(path2.exists()) # left behind + # check destination contents and permissions + self.assertEqual(dest.read_text(), "yay") + self.assertEqual(dest.stat().st_mode & 0o777, 0o644) + self.assertTrue(dest.samefile(other_path / "yay.txt")) diff --git a/ietf/settings.py b/ietf/settings.py index dca3fb132a..cd8c0700a1 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -679,11 +679,13 @@ def skip_unreadable_post(record): IPR_DOCUMENT_PATH = '/a/www/ietf-ftp/ietf/IPR/' # Move drafts to this directory when they expire INTERNET_DRAFT_ARCHIVE_DIR = '/a/ietfdata/doc/draft/collection/draft-archive/' -# The following directory contains linked copies of all drafts, but don't -# write anything to this directory -- its content is maintained by ghostlinkd: +# The following directory contains copies of all drafts - it used to be +# a set of hardlinks maintained by ghostlinkd, but is now explicitly written to INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/a/ietfdata/doc/draft/archive' MEETING_RECORDINGS_DIR = '/a/www/audio' DERIVED_DIR = '/a/ietfdata/derived' +FTP_DIR = '/a/ftp' +ALL_ID_DOWNLOAD_DIR = '/a/www/www6s/download' DOCUMENT_FORMAT_ALLOWLIST = ["txt", "ps", "pdf", "xml", "html", ] diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 6a4051f829..08b898c13a 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -221,6 +221,7 @@ def test_manualpost_cancel(self): class SubmitTests(BaseSubmitTestCase): def setUp(self): super().setUp() + (Path(settings.FTP_DIR) / "internet-drafts").mkdir() # Submit views assume there is a "next" IETF to look for cutoff dates against MeetingFactory(type_id='ietf', date=date_today()+datetime.timedelta(days=180)) @@ -954,6 +955,24 @@ def submit_new_individual(self, formats): self.assertEqual(new_revision.by.name, "Submitter Name") self.verify_bibxml_ids_creation(draft) + repository_path = Path(draft.get_file_name()) + self.assertTrue(repository_path.exists()) # Note that this doesn't check that it has the right _content_ + ftp_path = Path(settings.FTP_DIR) / "internet-drafts" / repository_path.name + self.assertTrue(repository_path.samefile(ftp_path)) + all_archive_path = Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR) / repository_path.name + self.assertTrue(repository_path.samefile(all_archive_path)) + for ext in settings.IDSUBMIT_FILE_TYPES: + if ext == "txt": + continue + variant_path = repository_path.parent / f"{repository_path.stem}.{ext}" + if variant_path.exists(): + variant_ftp_path = Path(settings.FTP_DIR) / "internet-drafts" / variant_path.name + self.assertTrue(variant_path.samefile(variant_ftp_path)) + variant_all_archive_path = Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR) / variant_path.name + self.assertTrue(variant_path.samefile(variant_all_archive_path)) + + + def test_submit_new_individual_txt(self): self.submit_new_individual(["txt"]) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index e03c702632..a19c42ecf8 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -167,7 +167,10 @@ def validate_submission_rev(name, rev): if rev != expected: return 'Invalid revision (revision %02d is expected)' % expected - + + # This is not really correct, though the edges that it doesn't cover are not likely. + # It might be better just to look in the combined archive to make sure we're not colliding with + # a thing that exists there already because it was included from an approved personal collection. for dirname in [settings.INTERNET_DRAFT_PATH, settings.INTERNET_DRAFT_ARCHIVE_DIR, ]: dir = pathlib.Path(dirname) pattern = '%s-%02d.*' % (name, rev) @@ -652,6 +655,10 @@ def move_files_to_repository(submission): dest = Path(settings.IDSUBMIT_REPOSITORY_PATH) / fname if source.exists(): move(source, dest) + all_archive_dest = Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR) / dest.name + ftp_dest = Path(settings.FTP_DIR) / "internet-drafts" / dest.name + os.link(dest, all_archive_dest) + os.link(dest, ftp_dest) elif dest.exists(): log.log("Intended to move '%s' to '%s', but found source missing while destination exists.") elif ext in submission.file_types.split(','): diff --git a/ietf/utils/test_utils.py b/ietf/utils/test_utils.py index ddd274a613..ba35665a8d 100644 --- a/ietf/utils/test_utils.py +++ b/ietf/utils/test_utils.py @@ -211,6 +211,7 @@ class TestCase(django.test.TestCase): 'INTERNET_DRAFT_ARCHIVE_DIR', 'INTERNET_DRAFT_PATH', 'BIBXML_BASE_PATH', + 'FTP_DIR', ] parser = html5lib.HTMLParser(strict=True) From 18e98aa8996cfa5d13dee8a7caa7037782151728 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 22 Apr 2024 10:28:49 -0500 Subject: [PATCH 018/846] fix: clarify comment at beginning of nonwg lists page (#7341) --- ietf/templates/mailinglists/nonwg.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf/templates/mailinglists/nonwg.html b/ietf/templates/mailinglists/nonwg.html index 803b484414..bee2a8829e 100644 --- a/ietf/templates/mailinglists/nonwg.html +++ b/ietf/templates/mailinglists/nonwg.html @@ -10,10 +10,10 @@ {% origin %}

    Other (not Working Group) email lists

    Guidelines for these lists, including how to request a - new one to be created, are at - - https://www.ietf.org/how/lists/nonwglist-guidelines/ - + new one to be created, can be found on the + + Non–Working Group email list guidelines + webpage.

    {% cache 900 nonwglisttable %} From 0616b07d2dd0c9d135238d6bfe2d010768418062 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 11:07:50 -0300 Subject: [PATCH 019/846] feat: email ingestion API (#7342) * feat: IANA review email ingestor API * refactor: Replace iana email api with generic one * chore: Add type hint * feat: Ingest ipr responses * feat: Ingest nomcom feedback * refactor: message -> msg * fix: Typo * feat: Send email on nomcom ingestion failure * feat: Send email on IPR mail ingestion error * feat: Check content type, handle more errs * fix: drop additionalProperties: false Unfortunately this does not mix well with the conditional "year" property. * test: Test ingest_email view * Revert "test: Test ingest_email view" This reverts commit e498022829f834a0d3cebcb0dafb0d5f5a5d162e. * test: Test ingest_email view * fix: pass new test * test: Test ingest_review_email * fix: Pass new test * test: Test ipr ingest_response_email * fix: pass new test * test: test nomcom ingest_feedback_email * chore: fix typo found in code reviw * fix: De-lint --- ietf/api/tests.py | 193 ++++++++++++++++++++++++++++++++++++++++++- ietf/api/urls.py | 4 +- ietf/api/views.py | 163 +++++++++++++++++++++++++++++++++++- ietf/ipr/tests.py | 40 ++++++++- ietf/ipr/utils.py | 30 +++++++ ietf/nomcom/tests.py | 47 ++++++++++- ietf/nomcom/utils.py | 32 +++++++ ietf/sync/iana.py | 19 +++++ ietf/sync/tests.py | 57 +++++++++++++ ietf/sync/views.py | 1 - 10 files changed, 577 insertions(+), 9 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 25b6ac5b7f..c4e627c52e 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -1,6 +1,6 @@ # Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- - +import base64 import datetime import json import html @@ -36,11 +36,12 @@ from ietf.person.models import Email, User from ietf.person.models import PersonalApiKey from ietf.stats.models import MeetingRegistration -from ietf.utils.mail import outbox, get_payload_text +from ietf.utils.mail import empty_outbox, outbox, get_payload_text from ietf.utils.models import DumpInfo from ietf.utils.test_utils import TestCase, login_testing_unauthorized, reload_db_objects from .ietf_utils import is_valid_token, requires_api_token +from .views import EmailIngestionError OMITTED_APPS = ( 'ietf.secr.meetings', @@ -1013,6 +1014,194 @@ def test_role_holder_addresses(self): sorted(e.address for e in emails), ) + @override_settings(APP_API_TOKENS={"ietf.api.views.ingest_email": "valid-token"}) + @mock.patch("ietf.api.views.iana_ingest_review_email") + @mock.patch("ietf.api.views.ipr_ingest_response_email") + @mock.patch("ietf.api.views.nomcom_ingest_feedback_email") + def test_ingest_email( + self, mock_nomcom_ingest, mock_ipr_ingest, mock_iana_ingest + ): + mocks = {mock_nomcom_ingest, mock_ipr_ingest, mock_iana_ingest} + empty_outbox() + url = urlreverse("ietf.api.views.ingest_email") + + # test various bad calls + r = self.client.get(url) + self.assertEqual(r.status_code, 403) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.post(url) + self.assertEqual(r.status_code, 403) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 405) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.post(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 415) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.post( + url, content_type="application/json", headers={"X-Api-Key": "valid-token"} + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.post( + url, + "this is not JSON!", + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(any(m.called for m in mocks)) + + r = self.client.post( + url, + {"json": "yes", "valid_schema": False}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertFalse(any(m.called for m in mocks)) + + # test that valid requests call handlers appropriately + message_b64 = base64.b64encode(b"This is a message").decode() + r = self.client.post( + url, + {"dest": "iana-review", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + self.assertTrue(mock_iana_ingest.called) + self.assertEqual(mock_iana_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_iana_ingest}))) + mock_iana_ingest.reset_mock() + + r = self.client.post( + url, + {"dest": "ipr-response", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + self.assertTrue(mock_ipr_ingest.called) + self.assertEqual(mock_ipr_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_ipr_ingest}))) + mock_ipr_ingest.reset_mock() + + r = self.client.post( + url, + {"dest": "nomcom-feedback", "message": message_b64, "year": 2024}, # arbitrary year + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 200) + self.assertTrue(mock_nomcom_ingest.called) + self.assertEqual(mock_nomcom_ingest.call_args, mock.call(b"This is a message", 2024)) + self.assertFalse(any(m.called for m in (mocks - {mock_nomcom_ingest}))) + mock_nomcom_ingest.reset_mock() + + # test that exceptions lead to email being sent - assumes that iana-review handling is representative + mock_iana_ingest.side_effect = EmailIngestionError("Error: don't send email") + r = self.client.post( + url, + {"dest": "iana-review", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertTrue(mock_iana_ingest.called) + self.assertEqual(mock_iana_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_iana_ingest}))) + self.assertEqual(len(outbox), 0) # implicitly tests that _none_ of the earlier tests sent email + mock_iana_ingest.reset_mock() + + # test default recipients and attached original message + mock_iana_ingest.side_effect = EmailIngestionError( + "Error: do send email", + email_body="This is my email\n", + email_original_message=b"This is the original message" + ) + with override_settings(ADMINS=[("Some Admin", "admin@example.com")]): + r = self.client.post( + url, + {"dest": "iana-review", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertTrue(mock_iana_ingest.called) + self.assertEqual(mock_iana_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_iana_ingest}))) + self.assertEqual(len(outbox), 1) + self.assertIn("admin@example.com", outbox[0]["To"]) + self.assertEqual("Error: do send email", outbox[0]["Subject"]) + self.assertEqual("This is my email\n", get_payload_text(outbox[0].get_body())) + attachments = list(a for a in outbox[0].iter_attachments()) + self.assertEqual(len(attachments), 1) + self.assertEqual(attachments[0].get_filename(), "original-message") + self.assertEqual(attachments[0].get_content_type(), "application/octet-stream") + self.assertEqual(attachments[0].get_content(), b"This is the original message") + mock_iana_ingest.reset_mock() + empty_outbox() + + # test overridden recipients and no attached original message + mock_iana_ingest.side_effect = EmailIngestionError( + "Error: do send email", + email_body="This is my email\n", + email_recipients=("thatguy@example.com") + ) + with override_settings(ADMINS=[("Some Admin", "admin@example.com")]): + r = self.client.post( + url, + {"dest": "iana-review", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertTrue(mock_iana_ingest.called) + self.assertEqual(mock_iana_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_iana_ingest}))) + self.assertEqual(len(outbox), 1) + self.assertNotIn("admin@example.com", outbox[0]["To"]) + self.assertIn("thatguy@example.com", outbox[0]["To"]) + self.assertEqual("Error: do send email", outbox[0]["Subject"]) + self.assertEqual("This is my email\n", get_payload_text(outbox[0])) + mock_iana_ingest.reset_mock() + empty_outbox() + + # test attached traceback + mock_iana_ingest.side_effect = EmailIngestionError( + "Error: do send email", + email_body="This is my email\n", + email_attach_traceback=True, + ) + with override_settings(ADMINS=[("Some Admin", "admin@example.com")]): + r = self.client.post( + url, + {"dest": "iana-review", "message": message_b64}, + content_type="application/json", + headers={"X-Api-Key": "valid-token"}, + ) + self.assertEqual(r.status_code, 400) + self.assertTrue(mock_iana_ingest.called) + self.assertEqual(mock_iana_ingest.call_args, mock.call(b"This is a message")) + self.assertFalse(any(m.called for m in (mocks - {mock_iana_ingest}))) + self.assertEqual(len(outbox), 1) + self.assertIn("admin@example.com", outbox[0]["To"]) + self.assertEqual("Error: do send email", outbox[0]["Subject"]) + self.assertEqual("This is my email\n", get_payload_text(outbox[0].get_body())) + attachments = list(a for a in outbox[0].iter_attachments()) + self.assertEqual(len(attachments), 1) + self.assertEqual(attachments[0].get_filename(), "traceback.txt") + self.assertEqual(attachments[0].get_content_type(), "text/plain") + self.assertIn("ietf.api.views.EmailIngestionError: Error: do send email", attachments[0].get_content()) + mock_iana_ingest.reset_mock() + empty_outbox() + class DirectAuthApiTests(TestCase): diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 4fab831726..fb2184a3f0 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -24,7 +24,9 @@ # --- Custom API endpoints, sorted alphabetically --- # Email alias information for drafts url(r'^doc/draft-aliases/$', api_views.draft_aliases), - # GPRD: export of personal information for the logged-in person + # email ingestor + url(r'email/$', api_views.ingest_email), + # GDPR: export of personal information for the logged-in person url(r'^export/personal-information/$', api_views.PersonalInformationExportView.as_view()), # Email alias information for groups url(r'^group/group-aliases/$', api_views.group_aliases), diff --git a/ietf/api/views.py b/ietf/api/views.py index e992db1196..6f97efbdb8 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -1,10 +1,13 @@ # Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- +import base64 +import binascii import json +import jsonschema +import pytz import re -import pytz from django.conf import settings from django.contrib.auth import authenticate from django.contrib.auth.decorators import login_required @@ -18,11 +21,15 @@ from django.views.decorators.csrf import csrf_exempt from django.views.decorators.gzip import gzip_page from django.views.generic.detail import DetailView +from email.message import EmailMessage from jwcrypto.jwk import JWK from tastypie.exceptions import BadRequest from tastypie.serializers import Serializer from tastypie.utils import is_valid_jsonp_callback_value from tastypie.utils.mime import determine_format, build_content_type +from textwrap import dedent +from traceback import format_exception, extract_tb +from typing import Iterable, Optional import ietf from ietf.api import _api_list @@ -32,12 +39,16 @@ from ietf.group.utils import GroupAliasGenerator, role_holder_emails from ietf.ietfauth.utils import role_required from ietf.ietfauth.views import send_account_creation_email +from ietf.ipr.utils import ingest_response_email as ipr_ingest_response_email from ietf.meeting.models import Meeting from ietf.nomcom.models import Volunteer, NomCom +from ietf.nomcom.utils import ingest_feedback_email as nomcom_ingest_feedback_email from ietf.person.models import Person, Email from ietf.stats.models import MeetingRegistration +from ietf.sync.iana import ingest_review_email as iana_ingest_review_email from ietf.utils import log from ietf.utils.decorators import require_api_key +from ietf.utils.mail import send_smtp from ietf.utils.models import DumpInfo @@ -515,3 +526,153 @@ def role_holder_addresses(request): } ) return HttpResponse(status=405) + + +_response_email_json_validator = jsonschema.Draft202012Validator( + schema={ + "type": "object", + "properties": { + "dest": { + "enum": [ + "iana-review", + "ipr-response", + "nomcom-feedback", + ] + }, + "message": { + "type": "string", # base64-encoded mail message + }, + }, + "required": ["dest", "message"], + "if": { + # If dest == "nomcom-feedback"... + "properties": { + "dest": {"const": "nomcom-feedback"}, + } + }, + "then": { + # ... then also require year, an integer, be present + "properties": { + "year": { + "type": "integer", + }, + }, + "required": ["year"], + }, + } +) + + +class EmailIngestionError(Exception): + """Exception indicating ingestion failed""" + def __init__( + self, + msg="Message rejected", + *, + email_body: Optional[str] = None, + email_recipients: Optional[Iterable[str]] = None, + email_attach_traceback=False, + email_original_message: Optional[bytes]=None, + ): + self.msg = msg + self.email_body = email_body + self.email_subject = msg + self.email_recipients = email_recipients + self.email_attach_traceback = email_attach_traceback + self.email_original_message = email_original_message + self.email_from = settings.SERVER_EMAIL + + @staticmethod + def _summarize_error(error): + frame = extract_tb(error.__traceback__)[-1] + return dedent(f"""\ + Error details: + Exception type: {type(error).__module__}.{type(error).__name__} + File: {frame.filename} + Line: {frame.lineno}""") + + def as_emailmessage(self) -> Optional[EmailMessage]: + """Generate an EmailMessage to report an error""" + if self.email_body is None: + return None + error = self if self.__cause__ is None else self.__cause__ + format_values = dict( + error=error, + error_summary=self._summarize_error(error), + ) + msg = EmailMessage() + if self.email_recipients is None: + msg["To"] = tuple(adm[1] for adm in settings.ADMINS) + else: + msg["To"] = self.email_recipients + msg["From"] = self.email_from + msg["Subject"] = self.msg + msg.set_content( + self.email_body.format(**format_values) + ) + if self.email_attach_traceback: + msg.add_attachment( + "".join(format_exception(None, error, error.__traceback__)), + filename="traceback.txt", + ) + if self.email_original_message is not None: + # Attach incoming message if it was provided. Send as a generic media + # type because we don't know for sure that it was actually a valid + # message. + msg.add_attachment( + self.email_original_message, + 'application', 'octet-stream', # media type + filename='original-message', + ) + return msg + + +@requires_api_token +@csrf_exempt +def ingest_email(request): + + def _err(code, text): + return HttpResponse(text, status=code, content_type="text/plain") + + if request.method != "POST": + return _err(405, "Method not allowed") + + if request.content_type != "application/json": + return _err(415, "Content-Type must be application/json") + + # Validate + try: + payload = json.loads(request.body) + _response_email_json_validator.validate(payload) + except json.decoder.JSONDecodeError as err: + return _err(400, f"JSON parse error at line {err.lineno} col {err.colno}: {err.msg}") + except jsonschema.exceptions.ValidationError as err: + return _err(400, f"JSON schema error at {err.json_path}: {err.message}") + except Exception: + return _err(400, "Invalid request format") + + try: + message = base64.b64decode(payload["message"], validate=True) + except binascii.Error: + return _err(400, "Invalid message: bad base64 encoding") + + dest = payload["dest"] + try: + if dest == "iana-review": + iana_ingest_review_email(message) + elif dest == "ipr-response": + ipr_ingest_response_email(message) + elif dest == "nomcom-feedback": + year = payload["year"] + nomcom_ingest_feedback_email(message, year) + else: + # Should never get here - json schema validation should enforce the enum + log.unreachable(date="2024-04-04") + return _err(400, "Invalid dest") # return something reasonable if we got here unexpectedly + except EmailIngestionError as err: + error_email = err.as_emailmessage() + if error_email is not None: + send_smtp(error_email) + return _err(400, err.msg) + + return HttpResponse(status=200) diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index 73b5d0dc5a..e6964445dc 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -3,18 +3,20 @@ import datetime - +import mock from pyquery import PyQuery from urllib.parse import quote, urlparse from zoneinfo import ZoneInfo from django.conf import settings +from django.test.utils import override_settings from django.urls import reverse as urlreverse from django.utils import timezone import debug # pyflakes:ignore +from ietf.api.views import EmailIngestionError from ietf.doc.factories import ( DocumentFactory, WgDraftFactory, @@ -34,8 +36,9 @@ from ietf.ipr.models import (IprDisclosureBase,GenericIprDisclosure,HolderIprDisclosure, ThirdPartyIprDisclosure) from ietf.ipr.templatetags.ipr_filters import no_revisions_message -from ietf.ipr.utils import get_genitive, get_ipr_summary +from ietf.ipr.utils import get_genitive, get_ipr_summary, ingest_response_email from ietf.mailtrigger.utils import gather_address_lists +from ietf.message.factories import MessageFactory from ietf.message.models import Message from ietf.utils.mail import outbox, empty_outbox, get_payload_text from ietf.utils.test_utils import TestCase, login_testing_unauthorized @@ -769,6 +772,39 @@ def test_process_response_email_uninteresting_with_invalid_encoding(self): result = process_response_email(message_bytes) self.assertIsNone(result) + @override_settings(ADMINS=(("Some Admin", "admin@example.com"),)) + @mock.patch("ietf.ipr.utils.process_response_email") + def test_ingest_response_email(self, mock_process_response_email): + message = b"What a nice message" + mock_process_response_email.side_effect = ValueError("ouch!") + with self.assertRaises(EmailIngestionError) as context: + ingest_response_email(message) + self.assertIsNone(context.exception.email_recipients) # default recipients + self.assertIsNotNone(context.exception.email_body) # body set + self.assertIsNotNone(context.exception.email_original_message) # original message attached + self.assertEqual(context.exception.email_attach_traceback, True) + self.assertTrue(mock_process_response_email.called) + self.assertEqual(mock_process_response_email.call_args, mock.call(message)) + mock_process_response_email.reset_mock() + + mock_process_response_email.side_effect = None + mock_process_response_email.return_value = None # rejected message + with self.assertRaises(EmailIngestionError) as context: + ingest_response_email(message) + self.assertIsNone(context.exception.email_recipients) # default recipients + self.assertIsNotNone(context.exception.email_body) # body set + self.assertIsNotNone(context.exception.email_original_message) # original message attached + self.assertEqual(context.exception.email_attach_traceback, True) + self.assertTrue(mock_process_response_email.called) + self.assertEqual(mock_process_response_email.call_args, mock.call(message)) + mock_process_response_email.reset_mock() + + # successful operation + mock_process_response_email.return_value = MessageFactory() + ingest_response_email(message) + self.assertTrue(mock_process_response_email.called) + self.assertEqual(mock_process_response_email.call_args, mock.call(message)) + def test_ajax_search(self): url = urlreverse('ietf.ipr.views.ajax_search') response=self.client.get(url+'?q=disclosure') diff --git a/ietf/ipr/utils.py b/ietf/ipr/utils.py index c4f17c4822..06af1535f2 100644 --- a/ietf/ipr/utils.py +++ b/ietf/ipr/utils.py @@ -1,6 +1,9 @@ # Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- +from textwrap import dedent + +from ietf.ipr.mail import process_response_email from ietf.ipr.models import IprDocRel import debug # pyflakes:ignore @@ -86,3 +89,30 @@ def generate_draft_recursive_txt(): f.write(data) +def ingest_response_email(message: bytes): + from ietf.api.views import EmailIngestionError # avoid circular import + try: + result = process_response_email(message) + except Exception as err: + raise EmailIngestionError( + "Datatracker IPR email ingestion error", + email_body=dedent("""\ + An error occurred while ingesting IPR email into the Datatracker. The original message is attached. + + {error_summary} + """), + email_original_message=message, + email_attach_traceback=True, + ) from err + + if result is None: + raise EmailIngestionError( + "Datatracker IPR email ingestion rejected", + email_body=dedent("""\ + A message was rejected while ingesting IPR email into the Datatracker. The original message is attached. + + {error_summary} + """), + email_original_message=message, + email_attach_traceback=True, + ) diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index cdbb860c43..9a615c91d1 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -24,6 +24,7 @@ import debug # pyflakes:ignore +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, \ @@ -37,14 +38,15 @@ MEMBER_USER, SECRETARIAT_USER, EMAIL_DOMAIN, NOMCOM_YEAR from ietf.nomcom.models import NomineePosition, Position, Nominee, \ NomineePositionStateName, Feedback, FeedbackTypeName, \ - Nomination, FeedbackLastSeen, TopicFeedbackLastSeen, ReminderDates + Nomination, FeedbackLastSeen, TopicFeedbackLastSeen, ReminderDates, \ + NomCom from ietf.nomcom.management.commands.send_reminders import Command, is_time_to_send from ietf.nomcom.factories import NomComFactory, FeedbackFactory, TopicFactory, \ nomcom_kwargs_for_year, provide_private_key_to_test_client, \ key from ietf.nomcom.utils import get_nomcom_by_year, make_nomineeposition, \ get_hash_nominee_position, is_eligible, list_eligible, \ - get_eligibility_date, suggest_affiliation, \ + get_eligibility_date, suggest_affiliation, ingest_feedback_email, \ decorate_volunteers_with_qualifications from ietf.person.factories import PersonFactory, EmailFactory from ietf.person.models import Email, Person @@ -1114,6 +1116,47 @@ def test_encrypted_comments(self): self.assertNotEqual(feedback.comments, comment_text) self.assertEqual(check_comments(feedback.comments, comment_text, self.privatekey_file), True) + @mock.patch("ietf.nomcom.utils.create_feedback_email") + def test_ingest_feedback_email(self, mock_create_feedback_email): + message = b"This is nomcom feedback" + no_nomcom_year = date_today().year + 10 # a guess at a year with no nomcoms + while NomCom.objects.filter(group__acronym__icontains=no_nomcom_year).exists(): + no_nomcom_year += 1 + inactive_nomcom = NomComFactory(group__state_id="conclude", group__acronym=f"nomcom{no_nomcom_year + 1}") + + # cases where the nomcom does not exist, so admins are notified + for bad_year in (no_nomcom_year, inactive_nomcom.year()): + with self.assertRaises(EmailIngestionError) as context: + ingest_feedback_email(message, bad_year) + self.assertIn("does not exist", context.exception.msg) + self.assertIsNotNone(context.exception.email_body) # error message to be sent + self.assertIsNone(context.exception.email_recipients) # default recipients (i.e., admin) + self.assertIsNone(context.exception.email_original_message) # no original message + self.assertFalse(context.exception.email_attach_traceback) # no traceback + self.assertFalse(mock_create_feedback_email.called) + + # nomcom exists but an error occurs, so feedback goes to the nomcom chair + active_nomcom = NomComFactory(group__acronym=f"nomcom{no_nomcom_year + 2}") + mock_create_feedback_email.side_effect = ValueError("ouch!") + with self.assertRaises(EmailIngestionError) as context: + ingest_feedback_email(message, active_nomcom.year()) + self.assertIn(f"Error ingesting nomcom {active_nomcom.year()}", context.exception.msg) + self.assertIsNotNone(context.exception.email_body) # error message to be sent + self.assertEqual(context.exception.email_recipients, active_nomcom.chair_emails()) + self.assertEqual(context.exception.email_original_message, message) + self.assertFalse(context.exception.email_attach_traceback) # no traceback + self.assertTrue(mock_create_feedback_email.called) + self.assertEqual(mock_create_feedback_email.call_args, mock.call(active_nomcom, message)) + mock_create_feedback_email.reset_mock() + + # and, finally, success + mock_create_feedback_email.side_effect = None + mock_create_feedback_email.return_value = FeedbackFactory(author="someone@example.com") + ingest_feedback_email(message, active_nomcom.year()) + self.assertTrue(mock_create_feedback_email.called) + self.assertEqual(mock_create_feedback_email.call_args, mock.call(active_nomcom, message)) + + class ReminderTest(TestCase): def setUp(self): diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index 23e89026d1..53e775deb9 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -16,6 +16,7 @@ from email.header import decode_header from email.iterators import typed_subpart_iterator from email.utils import parseaddr +from textwrap import dedent from django.db.models import Q, Count from django.conf import settings @@ -715,3 +716,34 @@ def extract_volunteers(year): decorate_volunteers_with_qualifications(volunteers,nomcom=nomcom) volunteers = sorted(volunteers,key=lambda v:(not v.eligible,v.person.last_name())) return nomcom, volunteers + + +def ingest_feedback_email(message: bytes, year: int): + from ietf.api.views import EmailIngestionError # avoid circular import + from .models import NomCom + try: + nomcom = NomCom.objects.get(group__acronym__icontains=str(year), + group__state__slug='active') + except NomCom.DoesNotExist: + raise EmailIngestionError( + f"Error ingesting nomcom email: nomcom {year} does not exist or is not active", + email_body=dedent(f"""\ + An email for nomcom {year} was posted to ingest_feedback_email, but no + active nomcom exists for that year. + """), + ) + + try: + feedback = create_feedback_email(nomcom, message) + except Exception as err: + raise EmailIngestionError( + f"Error ingesting nomcom {year} feedback email", + email_recipients=nomcom.chair_emails(), + email_body=dedent(f"""\ + An error occurred while ingesting feedback email for nomcom {year}. + + {{error_summary}} + """), + email_original_message=message, + ) from err + log("Received nomcom email from %s" % feedback.author) diff --git a/ietf/sync/iana.py b/ietf/sync/iana.py index 9ce54a687b..f46fe407d4 100644 --- a/ietf/sync/iana.py +++ b/ietf/sync/iana.py @@ -304,3 +304,22 @@ def add_review_comment(doc_name, review_time, by, comment): e.by = by e.save() + + +def ingest_review_email(message: bytes): + from ietf.api.views import EmailIngestionError # avoid circular import + try: + doc_name, review_time, by, comment = parse_review_email(message) + except Exception as err: + raise EmailIngestionError("Unable to parse message as IANA review email") from err + log(f"Read IANA review email for {doc_name} at {review_time} by {by}") + if by.name == "(System)": + log("WARNING: person responsible for email does not have a IANA role") # (sic) + try: + add_review_comment(doc_name, review_time, by, comment) + except Document.DoesNotExist: + log(f"ERROR: unknown document {doc_name}") + raise EmailIngestionError(f"Unknown document {doc_name}") + except Exception as err: + raise EmailIngestionError("Error ingesting IANA review email") from err + diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index d59b31a95d..db56190954 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -19,10 +19,12 @@ import debug # pyflakes:ignore +from ietf.api.views import EmailIngestionError from ietf.doc.factories import WgDraftFactory, RfcFactory, DocumentAuthorFactory, DocEventFactory from ietf.doc.models import Document, DocEvent, DeletedEvent, DocTagName, RelatedDocument, State, StateDocEvent from ietf.doc.utils import add_state_change_event from ietf.group.factories import GroupFactory +from ietf.person.factories import PersonFactory from ietf.person.models import Person from ietf.sync import iana, rfceditor, tasks from ietf.utils.mail import outbox, empty_outbox @@ -214,6 +216,61 @@ def test_iana_review_mail(self): iana.add_review_comment(doc_name, review_time, by, comment) self.assertEqual(DocEvent.objects.filter(doc=draft, type="iana_review").count(), events_before+1) + @mock.patch("ietf.sync.iana.add_review_comment") + @mock.patch("ietf.sync.iana.parse_review_email") + def test_ingest_review_email(self, mock_parse_review_email, mock_add_review_comment): + mock_parse_review_email.side_effect = ValueError("ouch!") + message = b"message" + + # Error parsing mail + with self.assertRaises(EmailIngestionError) as context: + iana.ingest_review_email(message) + self.assertIsNone(context.exception.as_emailmessage()) # no email + self.assertEqual("Unable to parse message as IANA review email", str(context.exception)) + self.assertTrue(mock_parse_review_email.called) + self.assertEqual(mock_parse_review_email.call_args, mock.call(message)) + self.assertFalse(mock_add_review_comment.called) + mock_parse_review_email.reset_mock() + + args = ( + "doc-name", + datetime.datetime.now(tz=datetime.timezone.utc), + PersonFactory(), + "yadda yadda yadda", + ) + mock_parse_review_email.side_effect = None + mock_parse_review_email.return_value = args + mock_add_review_comment.side_effect = Document.DoesNotExist + with self.assertRaises(EmailIngestionError) as context: + iana.ingest_review_email(message) + self.assertIsNone(context.exception.as_emailmessage()) # no email + self.assertEqual(str(context.exception), "Unknown document doc-name") + self.assertTrue(mock_parse_review_email.called) + self.assertEqual(mock_parse_review_email.call_args, mock.call(message)) + self.assertTrue(mock_add_review_comment.called) + self.assertEqual(mock_add_review_comment.call_args, mock.call(*args)) + mock_parse_review_email.reset_mock() + mock_add_review_comment.reset_mock() + + mock_add_review_comment.side_effect = ValueError("ouch!") + with self.assertRaises(EmailIngestionError) as context: + iana.ingest_review_email(message) + self.assertIsNone(context.exception.as_emailmessage()) # no email + self.assertEqual("Error ingesting IANA review email", str(context.exception)) + self.assertTrue(mock_parse_review_email.called) + self.assertEqual(mock_parse_review_email.call_args, mock.call(message)) + self.assertTrue(mock_add_review_comment.called) + self.assertEqual(mock_add_review_comment.call_args, mock.call(*args)) + mock_parse_review_email.reset_mock() + mock_add_review_comment.reset_mock() + + mock_add_review_comment.side_effect = None + iana.ingest_review_email(message) + self.assertTrue(mock_parse_review_email.called) + self.assertEqual(mock_parse_review_email.call_args, mock.call(message)) + self.assertTrue(mock_add_review_comment.called) + self.assertEqual(mock_add_review_comment.call_args, mock.call(*args)) + def test_notify_page(self): # check that we can get the notify page url = urlreverse("ietf.sync.views.notify", kwargs=dict(org="iana", notification="changes")) diff --git a/ietf/sync/views.py b/ietf/sync/views.py index 30b2a928e5..788e982f7c 100644 --- a/ietf/sync/views.py +++ b/ietf/sync/views.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- - import datetime import subprocess import os From 6b112912165afb002b8d7a3a31d2de0391da497e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 23 Apr 2024 11:43:48 -0500 Subject: [PATCH 020/846] feat: investigate file authenticity (#7331) * feat: investigate file authenticity * fix: use django-provided validation --- ietf/doc/forms.py | 21 ++++ ietf/doc/templatetags/ietf_filters.py | 30 ++++++ ietf/doc/tests.py | 136 +++++++++++++++++++++++++- ietf/doc/urls.py | 5 +- ietf/doc/utils.py | 27 +++++ ietf/doc/views_doc.py | 17 +++- ietf/templates/doc/investigate.html | 93 ++++++++++++++++++ 7 files changed, 325 insertions(+), 4 deletions(-) create mode 100644 ietf/templates/doc/investigate.html diff --git a/ietf/doc/forms.py b/ietf/doc/forms.py index 554451c564..f77b218318 100644 --- a/ietf/doc/forms.py +++ b/ietf/doc/forms.py @@ -266,3 +266,24 @@ def clean(self): @staticmethod def valid_resource_tags(): return ExtResourceName.objects.all().order_by('slug').values_list('slug', flat=True) + +class InvestigateForm(forms.Form): + name_fragment = forms.CharField( + label="File name or fragment to investigate", + required=True, + help_text=( + "Enter a filename such as draft-ietf-some-draft-00.txt or a fragment like draft-ietf-some-draft using at least 8 characters. The search will also work for files that are not necessarily drafts." + ), + min_length=8, + ) + + def clean_name_fragment(self): + disallowed_characters = ["%", "/", "\\", "*"] + name_fragment = self.cleaned_data["name_fragment"] + # Manual inspection of the directories at the time of this writing shows + # looking for files with less than 8 characters in the name is not useful + # Requiring this will help protect against the secretariat unintentionally + # matching every draft. + if any(c in name_fragment for c in disallowed_characters): + raise ValidationError(f"The following characters are disallowed: {', '.join(disallowed_characters)}") + return name_fragment diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index a791aad383..4c200a4700 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -4,6 +4,7 @@ import datetime import re +from pathlib import Path from urllib.parse import urljoin from zoneinfo import ZoneInfo @@ -899,3 +900,32 @@ def simple_history_delta_change_cnt(history): delta = history.diff_against(prev) return len(delta.changes) return 0 + +@register.filter +def mtime(path): + """Returns a datetime object representing mtime given a pathlib Path object""" + return datetime.datetime.fromtimestamp(path.stat().st_mtime).astimezone(ZoneInfo(settings.TIME_ZONE)) + +@register.filter +def url_for_path(path): + """Consructs a 'best' URL for web access to the given pathlib Path object. + + Assumes that the path is into the Internet-Draft archive or the proceedings. + """ + if path.match(f"{settings.AGENDA_PATH}/**/*"): + return ( + f"https://www.ietf.org/proceedings/{path.relative_to(settings.AGENDA_PATH)}" + ) + elif any( + [ + pathdir in path.parents + for pathdir in [ + Path(settings.INTERNET_DRAFT_PATH), + Path(settings.INTERNET_DRAFT_ARCHIVE_DIR).parent, + Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR), + ] + ] + ): + return f"{settings.IETF_ID_ARCHIVE_URL}{path.name}" + else: + return "#" diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index d4a6504213..4f5492e6cb 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -45,7 +45,7 @@ StatusChangeFactory, DocExtResourceFactory, RgDraftFactory, BcpFactory) from ietf.doc.forms import NotifyForm from ietf.doc.fields import SearchableDocumentsField -from ietf.doc.utils import create_ballot_if_not_open, uppercase_std_abbreviated_name, DraftAliasGenerator +from ietf.doc.utils import create_ballot_if_not_open, investigate_fragment, uppercase_std_abbreviated_name, DraftAliasGenerator from ietf.group.models import Group, Role from ietf.group.factories import GroupFactory, RoleFactory from ietf.ipr.factories import HolderIprDisclosureFactory @@ -3141,3 +3141,137 @@ def test_state_index(self): if not '-' in name: self.assertIn(name, content) +class InvestigateTests(TestCase): + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [ + "AGENDA_PATH", + # "INTERNET_DRAFT_PATH", + # "INTERNET_DRAFT_ARCHIVE_DIR", + # "INTERNET_ALL_DRAFTS_ARCHIVE_DIR", + ] + + def setUp(self): + super().setUp() + # Contort the draft archive dir temporary replacement + # to match the "collections" concept + archive_tmp_dir = Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) + new_archive_dir = archive_tmp_dir / "draft-archive" + new_archive_dir.mkdir() + settings.INTERNET_DRAFT_ARCHIVE_DIR = str(new_archive_dir) + donated_personal_copy_dir = archive_tmp_dir / "donated-personal-copy" + donated_personal_copy_dir.mkdir() + meeting_dir = Path(settings.AGENDA_PATH) / "666" + meeting_dir.mkdir() + all_archive_dir = Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR) + repository_dir = Path(settings.INTERNET_DRAFT_PATH) + + for path in [repository_dir, all_archive_dir]: + (path / "draft-this-is-active-00.txt").touch() + for path in [new_archive_dir, all_archive_dir]: + (path / "draft-old-but-can-authenticate-00.txt").touch() + (path / "draft-has-mixed-provenance-01.txt").touch() + for path in [donated_personal_copy_dir, all_archive_dir]: + (path / "draft-donated-from-a-personal-collection-00.txt").touch() + (path / "draft-has-mixed-provenance-00.txt").touch() + (path / "draft-has-mixed-provenance-00.txt.Z").touch() + (all_archive_dir / "draft-this-should-not-be-possible-00.txt").touch() + (meeting_dir / "draft-this-predates-the-archive-00.txt").touch() + + def test_investigate_fragment(self): + + result = investigate_fragment("this-is-active") + self.assertEqual(len(result["can_verify"]), 1) + self.assertEqual(len(result["unverifiable_collections"]), 0) + self.assertEqual(len(result["unexpected"]), 0) + self.assertEqual( + list(result["can_verify"])[0].name, "draft-this-is-active-00.txt" + ) + + result = investigate_fragment("old-but-can") + self.assertEqual(len(result["can_verify"]), 1) + self.assertEqual(len(result["unverifiable_collections"]), 0) + self.assertEqual(len(result["unexpected"]), 0) + self.assertEqual( + list(result["can_verify"])[0].name, "draft-old-but-can-authenticate-00.txt" + ) + + result = investigate_fragment("predates") + self.assertEqual(len(result["can_verify"]), 1) + self.assertEqual(len(result["unverifiable_collections"]), 0) + self.assertEqual(len(result["unexpected"]), 0) + self.assertEqual( + list(result["can_verify"])[0].name, "draft-this-predates-the-archive-00.txt" + ) + + result = investigate_fragment("personal-collection") + self.assertEqual(len(result["can_verify"]), 0) + self.assertEqual(len(result["unverifiable_collections"]), 1) + self.assertEqual(len(result["unexpected"]), 0) + self.assertEqual( + list(result["unverifiable_collections"])[0].name, + "draft-donated-from-a-personal-collection-00.txt", + ) + + result = investigate_fragment("mixed-provenance") + self.assertEqual(len(result["can_verify"]), 1) + self.assertEqual(len(result["unverifiable_collections"]), 2) + self.assertEqual(len(result["unexpected"]), 0) + self.assertEqual( + list(result["can_verify"])[0].name, "draft-has-mixed-provenance-01.txt" + ) + self.assertEqual( + set([p.name for p in result["unverifiable_collections"]]), + set( + [ + "draft-has-mixed-provenance-00.txt", + "draft-has-mixed-provenance-00.txt.Z", + ] + ), + ) + + result = investigate_fragment("not-be-possible") + self.assertEqual(len(result["can_verify"]), 0) + self.assertEqual(len(result["unverifiable_collections"]), 0) + self.assertEqual(len(result["unexpected"]), 1) + self.assertEqual( + list(result["unexpected"])[0].name, + "draft-this-should-not-be-possible-00.txt", + ) + + def test_investigate(self): + url = urlreverse("ietf.doc.views_doc.investigate") + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("form#investigate")), 1) + self.assertEqual(len(q("div#results")), 0) + r = self.client.post(url, dict(name_fragment="this-is-not-found")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("div#results")), 1) + self.assertEqual(len(q("table#authenticated")), 0) + self.assertEqual(len(q("table#unverifiable")), 0) + self.assertEqual(len(q("table#unexpected")), 0) + r = self.client.post(url, dict(name_fragment="mixed-provenance")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("div#results")), 1) + self.assertEqual(len(q("table#authenticated")), 1) + self.assertEqual(len(q("table#unverifiable")), 1) + self.assertEqual(len(q("table#unexpected")), 0) + r = self.client.post(url, dict(name_fragment="not-be-possible")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("div#results")), 1) + self.assertEqual(len(q("table#authenticated")), 0) + self.assertEqual(len(q("table#unverifiable")), 0) + self.assertEqual(len(q("table#unexpected")), 1) + r = self.client.post(url, dict(name_fragment="short")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("#id_name_fragment.is-invalid")), 1) + for char in ["*", "%", "/", "\\"]: + r = self.client.post(url, dict(name_fragment=f"bad{char}character")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q("#id_name_fragment.is-invalid")), 1) diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index d29fd9da14..7d930f7f40 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -66,6 +66,8 @@ r"^shepherdwriteup-template/(?P\w+)/?$", views_doc.document_shepherd_writeup_template, ), + url(r'^investigate/?$', views_doc.investigate), + url(r'^stats/newrevisiondocevent/?$', views_stats.chart_newrevisiondocevent), url(r'^stats/newrevisiondocevent/conf/?$', views_stats.chart_conf_newrevisiondocevent), @@ -179,7 +181,8 @@ url(r'^%(name)s/session/' % settings.URL_REGEXPS, include('ietf.doc.urls_material')), url(r'^(?P[A-Za-z0-9._+-]+)/session/', include(session_patterns)), url(r'^(?P[A-Za-z0-9\._\+\-]+)$', views_search.search_for_name), - # latest versions - keep old URLs alive during migration period + # rfcdiff - latest versions - keep old URLs alive during migration period url(r'^rfcdiff-latest-json/%(name)s(?:-%(rev)s)?(\.txt|\.html)?/?$' % settings.URL_REGEXPS, RedirectView.as_view(pattern_name='ietf.api.views.rfcdiff_latest_json', permanent=True)), url(r'^rfcdiff-latest-json/(?P[Rr][Ff][Cc] [0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(pattern_name='ietf.api.views.rfcdiff_latest_json', permanent=True)), + # end of rfcdiff support URLs ] diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 4872f41fc4..8ec3985b8b 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -13,6 +13,7 @@ from collections import defaultdict, namedtuple, Counter from dataclasses import dataclass +from pathlib import Path from typing import Iterator, Union from zoneinfo import ZoneInfo @@ -1382,3 +1383,29 @@ def __iter__(self) -> Iterator[tuple[str, list[str]]]: # .all = everything from above if all: yield alias + ".all", list(all) + +def investigate_fragment(name_fragment): + can_verify = set() + for root in [settings.INTERNET_DRAFT_PATH, settings.INTERNET_DRAFT_ARCHIVE_DIR]: + can_verify.update(list(Path(root).glob(f"*{name_fragment}*"))) + + can_verify.update(list(Path(settings.AGENDA_PATH).glob(f"**/*{name_fragment}*"))) + + # N.B. This reflects the assumption that the internet draft archive dir is in the + # a directory with other collections (at /a/ietfdata/draft/collections as this is written) + unverifiable_collections = set( + Path(settings.INTERNET_DRAFT_ARCHIVE_DIR).parent.glob(f"**/*{name_fragment}*") + ) + unverifiable_collections.difference_update(can_verify) + + expected_names = set([p.name for p in can_verify.union(unverifiable_collections)]) + maybe_unexpected = list( + Path(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR).glob(f"*{name_fragment}*") + ) + unexpected = [p for p in maybe_unexpected if p.name not in expected_names] + + return dict( + can_verify=can_verify, + unverifiable_collections=unverifiable_collections, + unexpected=unexpected, + ) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index a94af21e61..021d5645d9 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -58,7 +58,7 @@ IESG_BALLOT_ACTIVE_STATES, STATUSCHANGE_RELATIONS, DocumentActionHolder, DocumentAuthor, RelatedDocument, RelatedDocHistory) from ietf.doc.utils import (augment_events_with_revision, - can_adopt_draft, can_unadopt_draft, get_chartering_type, get_tags_for_stream_id, + can_adopt_draft, can_unadopt_draft, get_chartering_type, get_tags_for_stream_id, investigate_fragment, needed_ballot_positions, nice_consensus, update_telechat, has_same_ballot, get_initial_notify, make_notify_changed_event, make_rev_history, default_consensus, add_events_message_info, get_unicode_document_content, @@ -72,7 +72,7 @@ role_required, is_individual_draft_author, can_request_rfc_publication) from ietf.name.models import StreamName, BallotPositionName from ietf.utils.history import find_history_active_at -from ietf.doc.forms import TelechatForm, NotifyForm, ActionHoldersForm, DocAuthorForm, DocAuthorChangeBasisForm +from ietf.doc.forms import InvestigateForm, TelechatForm, NotifyForm, ActionHoldersForm, DocAuthorForm, DocAuthorChangeBasisForm from ietf.doc.mails import email_comment, email_remind_action_holders from ietf.mailtrigger.utils import gather_relevant_expansions from ietf.meeting.models import Session, SessionPresentation @@ -2254,3 +2254,16 @@ def idnits2_state(request, name, rev=None): content_type="text/plain;charset=utf-8", ) +@role_required("Secretariat") +def investigate(request): + results = None + if request.method == "POST": + form = InvestigateForm(request.POST) + if form.is_valid(): + name_fragment = form.cleaned_data["name_fragment"] + results = investigate_fragment(name_fragment) + else: + form = InvestigateForm() + return render( + request, "doc/investigate.html", context=dict(form=form, results=results) + ) diff --git a/ietf/templates/doc/investigate.html b/ietf/templates/doc/investigate.html new file mode 100644 index 0000000000..80b004c838 --- /dev/null +++ b/ietf/templates/doc/investigate.html @@ -0,0 +1,93 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2024, All Rights Reserved #} +{% load django_bootstrap5 ietf_filters origin static %} +{% block title %}Investigate{% endblock %} +{% block pagehead %} + +{% endblock %} +{% block content %} + {% origin %} +

    Investigate

    +
    + {% csrf_token %} + {% bootstrap_form form %} + + + {% if results %} +
    + {% if results.can_verify %} +

    These can be authenticated

    +
    + + + + + + + + + {% for path in results.can_verify %} + {% with url=path|url_for_path %} + + {% endwith %} + {% endfor %} + +
    NameLast Modified OnLink
    {{path.name}}{{path|mtime|date:"DATETIME_FORMAT"}}{{url}}
    + {% else %} +

    Nothing with this name fragment can be authenticated

    + {% endif %} +
    + {% if results.unverifiable_collections %} +

    These are in the archive, but cannot be authenticated

    + + + + + + + + + + + {% for path in results.unverifiable_collections %} + {% with url=path|url_for_path %} + + + + + + + {% endwith %} + {% endfor %} + +
    NameLast Modified OnLinkSource
    {{path.name}}{{path|mtime|date:"DATETIME_FORMAT"}}{{url}}{{path}}
    + {% endif %} + {% if results.unexpected %} +

    These are unexpected and we do not know what their origin is. These cannot be authenticated

    + + + + + + + + + + {% for path in results.unexpected %} + {% with url=path|url_for_path %} + + + + + + {% endwith %} + {% endfor %} + +
    NameLast Modified OnLink
    {{path.name}}{{path|mtime|date:"DATETIME_FORMAT"}}{{url}}
    + {% endif %} + + {% endif %} +{% endblock %} +{% block js %} + +{% endblock %} \ No newline at end of file From bfa35fb6d8a578c0c4bd554df3a5a6e0d2b862c4 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Tue, 23 Apr 2024 12:45:15 -0400 Subject: [PATCH 021/846] feat: add links to system status (#7286) * feat: add links to system status * fix: Update menu.html casing --- ietf/templates/base.html | 1 + ietf/templates/base/menu.html | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/ietf/templates/base.html b/ietf/templates/base.html index ccecd8eb1c..f426d361ce 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -140,6 +140,7 @@ {% endif %} {% endif %} + System Status Report a bug: diff --git a/ietf/templates/base/menu.html b/ietf/templates/base/menu.html index 5a0ba2ba5d..1d7bad8724 100644 --- a/ietf/templates/base/menu.html +++ b/ietf/templates/base/menu.html @@ -440,6 +440,12 @@ Release notes

    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ⅇ-RORkB`0Lf`^HRV%H(^rkmyg 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%0A8G3*N#6Dt#_Ey7kAJ@G2jnO%%# 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

  3. +
  4. + + System status + +
  5. {% if flavor == 'top' %}
  6. From 2767fc55d2a8de98d7ae2a16e0979494a52b45de Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 24 Apr 2024 13:34:50 -0300 Subject: [PATCH 022/846] chore: remove do-nothing cron script (#7358) --- bin/mm_hourly | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100755 bin/mm_hourly diff --git a/bin/mm_hourly b/bin/mm_hourly deleted file mode 100755 index e371fd611b..0000000000 --- a/bin/mm_hourly +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Hourly datatracker jobs, ***run as mailman*** -# -# This script is expected to be triggered by cron from -# $DTDIR/etc/cron.d/datatracker which should be symlinked from -# /etc/cron.d/ - -export LANG=en_US.UTF-8 -export PYTHONIOENCODING=utf-8 - -# Make sure we stop if something goes wrong: -program=${0##*/} -trap 'echo "$program($LINENO): Command failed with error code $? ([$$] $0 $*)"; exit 1' ERR - -DTDIR=/a/www/ietf-datatracker/web -cd $DTDIR/ - -# Set up the virtual environment -source $DTDIR/env/bin/activate - -logger -p user.info -t cron "Running $DTDIR/bin/mm_hourly" - From f8ba3579742dab80e9ff0e7440d5df185de65fea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:09:47 -0400 Subject: [PATCH 023/846] chore(deps): bump actions/download-artifact from 4.1.4 to 4.1.7 (#7377) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.4 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4.1.4...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact 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/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6ba25ff55e..09e7d53263 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -161,7 +161,7 @@ jobs: - name: Download a Coverage Results if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - uses: actions/download-artifact@v4.1.4 + uses: actions/download-artifact@v4.1.7 with: name: coverage @@ -385,7 +385,7 @@ jobs: - uses: actions/checkout@v4 - name: Download a Release Artifact - uses: actions/download-artifact@v4.1.4 + uses: actions/download-artifact@v4.1.7 with: name: release-${{ env.PKG_VERSION }} @@ -421,7 +421,7 @@ jobs: steps: - name: Download a Release Artifact - uses: actions/download-artifact@v4.1.4 + uses: actions/download-artifact@v4.1.7 with: name: release-${{ env.PKG_VERSION }} path: /a/www/ietf-datatracker/main.dev.${{ github.run_number }} From 428a42497df5f570425e0d9c8448292770ea2f72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:10:22 -0400 Subject: [PATCH 024/846] chore(deps): bump slackapi/slack-github-action from 1.25.0 to 1.26.0 (#7348) Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 1.25.0 to 1.26.0. - [Release notes](https://github.com/slackapi/slack-github-action/releases) - [Commits](https://github.com/slackapi/slack-github-action/compare/v1.25.0...v1.26.0) --- updated-dependencies: - dependency-name: slackapi/slack-github-action 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09e7d53263..bd65da036c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -323,7 +323,7 @@ jobs: steps: - name: Notify on Slack (Success) if: ${{ !contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v1.25.0 + uses: slackapi/slack-github-action@v1.26.0 with: channel-id: ${{ secrets.SLACK_GH_BUILDS_CHANNEL_ID }} payload: | @@ -346,7 +346,7 @@ jobs: SLACK_BOT_TOKEN: ${{ secrets.SLACK_GH_BOT }} - name: Notify on Slack (Failure) if: ${{ contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v1.25.0 + uses: slackapi/slack-github-action@v1.26.0 with: channel-id: ${{ secrets.SLACK_GH_BUILDS_CHANNEL_ID }} payload: | From 1e8b1ac7f55d76d3130a0fbeadefed5539ae41cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:11:17 -0400 Subject: [PATCH 025/846] chore(deps): bump codecov/codecov-action from 4.2.0 to 4.3.0 (#7326) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.2.0...v4.3.0) --- updated-dependencies: - dependency-name: codecov/codecov-action 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/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dbac84cda5..34ce6a5491 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,7 +59,7 @@ jobs: path: geckodriver.log - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v4.2.0 + uses: codecov/codecov-action@v4.3.0 with: files: coverage.xml From 64ff6b8e2e6c891cea5bbffaa2f144b05590c699 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:12:05 -0400 Subject: [PATCH 026/846] chore(deps): bump tar from 6.2.1 to 7.0.1 in /dev/diff in the npm group (#7325) Bumps the npm group in /dev/diff with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 6.2.1 to 7.0.1 - [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/v6.2.1...v7.0.1) --- updated-dependencies: - dependency-name: tar dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev/diff/package-lock.json | 702 ++++++++++++++++++++++++++++++++----- dev/diff/package.json | 2 +- 2 files changed, 624 insertions(+), 80 deletions(-) diff --git a/dev/diff/package-lock.json b/dev/diff/package-lock.json index d4583ec051..3145058433 100644 --- a/dev/diff/package-lock.json +++ b/dev/diff/package-lock.json @@ -17,7 +17,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^6.2.1", + "tar": "^7.0.1", "yargs": "^17.7.2" }, "engines": { @@ -29,6 +29,115 @@ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" }, + "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", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "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/@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -123,6 +232,11 @@ "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", @@ -150,6 +264,14 @@ "tweetnacl": "^0.14.3" } }, + "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-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -331,6 +453,19 @@ "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.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -491,6 +626,32 @@ "pend": "~1.2.0" } }, + "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/foreground-child/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/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -517,17 +678,6 @@ "node": ">=14.14" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -547,6 +697,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/got": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", @@ -625,6 +796,28 @@ "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/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -858,6 +1051,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", @@ -885,38 +1086,52 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" }, "engines": { - "node": ">= 8" + "node": ">= 18" } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp-classic": { @@ -976,6 +1191,29 @@ "node": ">=12.20" } }, + "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/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -1072,6 +1310,23 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, + "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", @@ -1096,6 +1351,25 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "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": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -1181,6 +1455,20 @@ "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", @@ -1192,20 +1480,32 @@ "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": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", + "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar-fs": { @@ -1268,11 +1568,11 @@ } }, "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar/node_modules/minipass": { @@ -1312,6 +1612,20 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "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", @@ -1328,6 +1642,23 @@ "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", @@ -1342,9 +1673,12 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "engines": { + "node": ">=18" + } }, "node_modules/yargs": { "version": "17.7.2", @@ -1387,6 +1721,78 @@ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" }, + "@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", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "requires": { + "minipass": "^7.0.4" + } + }, + "@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 + }, "@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -1454,6 +1860,11 @@ "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", @@ -1467,6 +1878,14 @@ "tweetnacl": "^0.14.3" } }, + "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-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -1592,6 +2011,16 @@ "nan": "^2.17.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.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1707,6 +2136,22 @@ "pend": "~1.2.0" } }, + "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" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, "form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -1727,14 +2172,6 @@ "universalify": "^2.0.0" } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1745,6 +2182,18 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, + "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" + } + }, "got": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", @@ -1797,6 +2246,20 @@ "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" + } + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -1949,6 +2412,11 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" }, + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" + }, "luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", @@ -1964,27 +2432,32 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==" }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "requires": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" } }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "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", @@ -2028,6 +2501,20 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" }, + "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" + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -2094,6 +2581,14 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, + "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", @@ -2104,6 +2599,19 @@ "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": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -2164,6 +2672,16 @@ "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", @@ -2172,23 +2690,31 @@ "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": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", + "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "dependencies": { "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" }, "minipass": { "version": "5.0.0", @@ -2261,6 +2787,14 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "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", @@ -2271,6 +2805,16 @@ "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", @@ -2282,9 +2826,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" }, "yargs": { "version": "17.7.2", diff --git a/dev/diff/package.json b/dev/diff/package.json index 99661c3846..d8a6dafd5c 100644 --- a/dev/diff/package.json +++ b/dev/diff/package.json @@ -13,7 +13,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^6.2.1", + "tar": "^7.0.1", "yargs": "^17.7.2" }, "engines": { From 000e6b7dca78ee3f6e7bd19f2602a136e09371d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:12:30 -0400 Subject: [PATCH 027/846] chore(deps): bump tar in /dev/deploy-to-container in the npm group (#7323) Bumps the npm group in /dev/deploy-to-container with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 6.2.1 to 7.0.1 - [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/v6.2.1...v7.0.1) --- updated-dependencies: - dependency-name: tar dependency-type: direct:production update-type: version-update:semver-major 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 | 710 +++++++++++++++++++--- dev/deploy-to-container/package.json | 2 +- 2 files changed, 632 insertions(+), 80 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index 6e6bd88e9b..e27ac66e5e 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -11,7 +11,7 @@ "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^6.2.1", + "tar": "^7.0.1", "yargs": "^17.7.2" }, "engines": { @@ -23,6 +23,115 @@ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" }, + "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", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "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/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -53,6 +162,11 @@ "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", @@ -80,6 +194,14 @@ "tweetnacl": "^0.14.3" } }, + "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/buildcheck": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", @@ -137,6 +259,19 @@ "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.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -180,6 +315,11 @@ "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", @@ -201,6 +341,21 @@ "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", @@ -219,17 +374,6 @@ "node": ">=14.14" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -238,6 +382,27 @@ "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", @@ -275,6 +440,28 @@ "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", @@ -286,38 +473,60 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "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": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" }, "engines": { - "node": ">= 8" + "node": ">= 18" } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp-classic": { @@ -366,6 +575,29 @@ "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/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -396,6 +628,23 @@ "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", @@ -420,6 +669,36 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "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", @@ -471,6 +750,20 @@ "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", @@ -482,20 +775,32 @@ "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": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", + "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar-fs": { @@ -558,11 +863,11 @@ } }, "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar/node_modules/minipass": { @@ -591,6 +896,20 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "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", @@ -607,6 +926,23 @@ "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", @@ -621,9 +957,12 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "engines": { + "node": ">=18" + } }, "node_modules/yargs": { "version": "17.7.2", @@ -657,6 +996,78 @@ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" }, + "@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", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "requires": { + "minipass": "^7.0.4" + } + }, + "@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 + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -678,6 +1089,11 @@ "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", @@ -691,6 +1107,14 @@ "tweetnacl": "^0.14.3" } }, + "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" + } + }, "buildcheck": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", @@ -735,6 +1159,16 @@ "nan": "^2.17.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.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -764,6 +1198,11 @@ "tar-fs": "~2.0.1" } }, + "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", @@ -782,6 +1221,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", @@ -797,19 +1245,23 @@ "universalify": "^2.0.0" } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, "get-caller-file": { "version": "2.0.5", "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", @@ -830,6 +1282,20 @@ "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", @@ -839,27 +1305,37 @@ "universalify": "^2.0.0" } }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "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": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" } }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "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", @@ -895,6 +1371,20 @@ "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" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -919,6 +1409,14 @@ "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", @@ -929,6 +1427,24 @@ "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", @@ -968,6 +1484,16 @@ "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", @@ -976,23 +1502,31 @@ "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": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", + "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "dependencies": { "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" }, "minipass": { "version": "5.0.0", @@ -1060,6 +1594,14 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "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", @@ -1070,6 +1612,16 @@ "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", @@ -1081,9 +1633,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" }, "yargs": { "version": "17.7.2", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index 01c2cc3d7e..e8c6bafbf5 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -7,7 +7,7 @@ "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^6.2.1", + "tar": "^7.0.1", "yargs": "^17.7.2" }, "engines": { From bd25bc603498546a9ce5f10c85afb591bf751953 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 6 May 2024 08:45:36 -0400 Subject: [PATCH 028/846] fix: improve file investigation results (#7376) --- ietf/doc/templatetags/ietf_filters.py | 6 +++++- ietf/doc/utils.py | 10 ++++++--- ietf/templates/doc/investigate.html | 30 ++++++++++++++++++++++++--- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 4c200a4700..35c79ac28d 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -906,13 +906,17 @@ def mtime(path): """Returns a datetime object representing mtime given a pathlib Path object""" return datetime.datetime.fromtimestamp(path.stat().st_mtime).astimezone(ZoneInfo(settings.TIME_ZONE)) +@register.filter +def mtime_is_epoch(path): + return path.stat().st_mtime == 0 + @register.filter def url_for_path(path): """Consructs a 'best' URL for web access to the given pathlib Path object. Assumes that the path is into the Internet-Draft archive or the proceedings. """ - if path.match(f"{settings.AGENDA_PATH}/**/*"): + if Path(settings.AGENDA_PATH) in path.parents: return ( f"https://www.ietf.org/proceedings/{path.relative_to(settings.AGENDA_PATH)}" ) diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 8ec3985b8b..ddf6e015e0 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -1388,14 +1388,18 @@ def investigate_fragment(name_fragment): can_verify = set() for root in [settings.INTERNET_DRAFT_PATH, settings.INTERNET_DRAFT_ARCHIVE_DIR]: can_verify.update(list(Path(root).glob(f"*{name_fragment}*"))) - + archive_verifiable_names = set([p.name for p in can_verify]) + # Can also verify drafts in proceedings directories can_verify.update(list(Path(settings.AGENDA_PATH).glob(f"**/*{name_fragment}*"))) # N.B. This reflects the assumption that the internet draft archive dir is in the # a directory with other collections (at /a/ietfdata/draft/collections as this is written) - unverifiable_collections = set( + unverifiable_collections = set([ + p for p in Path(settings.INTERNET_DRAFT_ARCHIVE_DIR).parent.glob(f"**/*{name_fragment}*") - ) + if p.name not in archive_verifiable_names + ]) + unverifiable_collections.difference_update(can_verify) expected_names = set([p.name for p in can_verify.union(unverifiable_collections)]) diff --git a/ietf/templates/doc/investigate.html b/ietf/templates/doc/investigate.html index 80b004c838..bdcf644406 100644 --- a/ietf/templates/doc/investigate.html +++ b/ietf/templates/doc/investigate.html @@ -23,12 +23,24 @@

    These can be authenticated

    Name Last Modified On Link + Source {% for path in results.can_verify %} {% with url=path|url_for_path %} - {{path.name}}{{path|mtime|date:"DATETIME_FORMAT"}}{{url}} + + {{path.name}} + + {% if path|mtime_is_epoch %} + Timestamp has been lost (is Unix Epoch) + {% else %} + {{path|mtime|date:"DATETIME_FORMAT"}} + {% endif %} + + {{url}} + {{path}} + {% endwith %} {% endfor %} @@ -53,7 +65,13 @@

    These are in the archive, but cannot be authenticated

    {% with url=path|url_for_path %} {{path.name}} - {{path|mtime|date:"DATETIME_FORMAT"}} + + {% if path|mtime_is_epoch %} + Timestamp has been lost (is Unix Epoch) + {% else %} + {{path|mtime|date:"DATETIME_FORMAT"}} + {% endif %} + {{url}} {{path}} @@ -77,7 +95,13 @@
    +

    + The not-prepped XML + is the RFC XML v3 source for an RFC at the moment in the publication process + just before the prep tool was used to expand default + values, generate section numbers, resolve cross-references, and embed + boilerplate. +

    + It is useful for authors who want to begin a new draft based on + the RFC's text, such as when creating a bis-draft, and for tools that process + author-facing RFC XML. +

    +

    + + + Download not-prepped XML for RFC {{ rfc.rfc_number }} + +

    +{% endblock %} From 20480d6242254693b3dbcbf9b73380b5b3c838cb Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 16 Apr 2026 13:59:23 -0500 Subject: [PATCH 840/846] fix: force notprepped downloads (#10719) --- ietf/doc/{tests_unprepped.py => tests_notprepped.py} | 10 +++++++--- ietf/doc/views_doc.py | 5 +++-- 2 files changed, 10 insertions(+), 5 deletions(-) rename ietf/doc/{tests_unprepped.py => tests_notprepped.py} (92%) diff --git a/ietf/doc/tests_unprepped.py b/ietf/doc/tests_notprepped.py similarity index 92% rename from ietf/doc/tests_unprepped.py rename to ietf/doc/tests_notprepped.py index f88af8e81a..f417aa7931 100644 --- a/ietf/doc/tests_unprepped.py +++ b/ietf/doc/tests_notprepped.py @@ -12,7 +12,7 @@ from ietf.utils.test_utils import TestCase -class UnpreppedRfcXmlTests(TestCase): +class NotpreppedRfcXmlTests(TestCase): def test_editor_source_button_visibility(self): pre_v3 = WgRfcFactory(rfc_number=settings.FIRST_V3_RFC - 1) first_v3 = WgRfcFactory(rfc_number=settings.FIRST_V3_RFC) @@ -72,13 +72,17 @@ def test_rfcxml_notprepped(self): r = self.client.get(url) self.assertEqual(r.status_code, 404) - # 200 with correct content-type and body when object is fully stored + # 200 with correct content-type, attachment disposition, and body when object is fully stored xml_content = b"test" store_bytes("rfc", stored_name, xml_content, allow_overwrite=True) r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(r["Content-Type"], "application/xml") - self.assertEqual(r.content, xml_content) + self.assertEqual( + r["Content-Disposition"], + f'attachment; filename="rfc{number}.notprepped.xml"', + ) + self.assertEqual(b"".join(r.streaming_content), xml_content) def test_rfcxml_notprepped_wrapper(self): number = settings.FIRST_V3_RFC diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index a23185333e..5b57a62074 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -43,9 +43,10 @@ from celery.result import AsyncResult from django.core.cache import caches +from django.core.files.base import ContentFile from django.core.exceptions import PermissionDenied from django.db.models import Max -from django.http import HttpResponse, Http404, HttpResponseBadRequest, JsonResponse +from django.http import FileResponse, HttpResponse, Http404, HttpResponseBadRequest, 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 @@ -2372,7 +2373,7 @@ def rfcxml_notprepped(request, number): bytes = retrieve_bytes("rfc", name) except FileNotFoundError: raise Http404 - return HttpResponse(bytes, content_type="application/xml") + return FileResponse(ContentFile(bytes, name=f"rfc{number}.notprepped.xml"), as_attachment=True) def rfcxml_notprepped_wrapper(request, number): From 9cecc36bc7e42ecc5cd196d96f4bd0eaf03b5e69 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 17 Apr 2026 00:25:02 -0300 Subject: [PATCH 841/846] feat: rebuild_searchindex task (#10723) * refactor: DRY * chore: typesense docker container (commented out) * feat: batched RFC search index import * feat: rebuild_searchindex task * feat: logging / error reporting * refactor: _task suffix for task name * test: tests for searchindex utils + tasks * fix: only create collection if dropped * fix: typing / lint --- docker-compose.yml | 12 ++ ietf/doc/tasks.py | 11 ++ ietf/doc/tests_tasks.py | 43 ++++++ ietf/utils/searchindex.py | 239 ++++++++++++++++++++++++++++++-- ietf/utils/tests_searchindex.py | 152 +++++++++++++++----- 5 files changed, 410 insertions(+), 47 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 4c3f2f6b8e..073d04b896 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -132,6 +132,18 @@ services: volumes: - blobdb-data:/var/lib/postgresql/data +# typesense: +# image: typesense/typesense:30.1 +# restart: on-failure +# ports: +# - "8108:8108" +# volumes: +# - ./typesense-data:/data +# command: +# - '--data-dir=/data' +# - '--api-key=typesense-api-key' +# - '--enable-cors' + # Celery Beat is a periodic task runner. It is not normally needed for development, # but can be enabled by uncommenting the following. # diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index 19edb39014..273242e35f 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -209,3 +209,14 @@ def update_rfc_searchindex_task(self, rfc_number: int): countdown=searchindex_settings["TASK_RETRY_DELAY"], max_retries=searchindex_settings["TASK_MAX_RETRIES"], ) + + +@shared_task +def rebuild_searchindex_task(*, batchsize=40, drop_collection=False): + if drop_collection: + searchindex.delete_collection() + searchindex.create_collection() + 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 728d21f131..2e2d65463f 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -24,6 +24,7 @@ generate_idnits2_rfc_status_task, investigate_fragment_task, notify_expirations_task, + rebuild_searchindex_task, update_rfc_searchindex_task, ) @@ -144,6 +145,48 @@ def test_update_rfc_searchindex_task( with self.assertRaises(Retry): 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.create_collection") + @mock.patch("ietf.doc.tasks.searchindex.delete_collection") + def test_rebuild_searchindex_task(self, mock_delete, mock_create, mock_update): + rfcs = WgRfcFactory.create_batch(10) + rebuild_searchindex_task() + self.assertFalse(mock_delete.called) + self.assertFalse(mock_create.called) + self.assertTrue(mock_update.called) + self.assertQuerysetEqual( + mock_update.call_args.args[0], + sorted(rfcs, key=lambda doc: -doc.rfc_number), + ordered=True, + ) + + mock_delete.reset_mock() + mock_create.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_update.called) + self.assertQuerysetEqual( + mock_update.call_args.args[0], + sorted(rfcs, key=lambda doc: -doc.rfc_number), + ordered=True, + ) + + mock_delete.reset_mock() + mock_create.reset_mock() + mock_update.reset_mock() + rebuild_searchindex_task(drop_collection=True, batchsize=3) + self.assertTrue(mock_delete.called) + self.assertTrue(mock_create.called) + self.assertTrue(mock_update.called) + self.assertQuerysetEqual( + mock_update.call_args.args[0], + sorted(rfcs, key=lambda doc: -doc.rfc_number), + ordered=True, + ) + self.assertEqual(mock_update.call_args.kwargs["batchsize"], 3) + class Idnits2SupportTests(TestCase): settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [ diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py index e4427b88b5..a47e6d2f12 100644 --- a/ietf/utils/searchindex.py +++ b/ietf/utils/searchindex.py @@ -2,12 +2,15 @@ """Search indexing utilities""" import re +from itertools import batched from math import floor +from typing import Iterable import httpx # just for exceptions import typesense import typesense.exceptions from django.conf import settings +from typesense.types.document import DocumentSchema from ietf.doc.models import Document, StoredObject from ietf.doc.storage_utils import retrieve_str @@ -42,6 +45,24 @@ def enabled(): return _settings["TYPESENSE_API_URL"] != "" +def get_typesense_client() -> typesense.Client: + _settings = get_settings() + client = typesense.Client( + { + "api_key": _settings["TYPESENSE_API_KEY"], + "nodes": [_settings["TYPESENSE_API_URL"]], + } + ) + return client + + +def get_collection_name() -> str: + _settings = get_settings() + collection_name = _settings["TYPESENSE_COLLECTION_NAME"] + assert isinstance(collection_name, str) + return collection_name + + def _sanitize_text(content): """Sanitize content or abstract text for search""" # REs (with approximate names) @@ -62,7 +83,7 @@ def _sanitize_text(content): return content.strip() -def update_or_create_rfc_entry(rfc: Document): +def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: assert rfc.type_id == "rfc" assert rfc.rfc_number is not None @@ -75,8 +96,8 @@ def update_or_create_rfc_entry(rfc: Document): 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") + obsoleted_by = rfc.related_that("obs") + updated_by = rfc.related_that("updates") stored_txt = ( StoredObject.objects.exclude_deleted() @@ -91,8 +112,8 @@ def update_or_create_rfc_entry(rfc: Document): except Exception as err: log(f"Unable to retrieve {stored_txt} from storage: {err}") - ts_id = f"doc-{rfc.pk}" ts_document = { + "id": f"doc-{rfc.pk}", "rfcNumber": rfc.rfc_number, "rfc": str(rfc.rfc_number), "filename": rfc.name, @@ -143,13 +164,205 @@ def update_or_create_rfc_entry(rfc: Document): ts_document["adName"] = rfc.ad.name if content != "": ts_document["content"] = _sanitize_text(content) - _settings = get_settings() - client = typesense.Client( + return ts_document + + +def update_or_create_rfc_entry(rfc: Document): + """Update/create index entries for one RFC""" + ts_document = typesense_doc_from_rfc(rfc) + client = get_typesense_client() + client.collections[get_collection_name()].documents.upsert(ts_document) + + +def update_or_create_rfc_entries( + rfcs: Iterable[Document], batchsize: int | None = None +): + """Update/create index entries for RFCs in bulk + + If batchsize is set, computes index data in batches of batchsize and adds to the + index. Will make a total of (len(rfcs) // batchsize) + 1 API calls. + + N.b. that typesense has a server-side batch size that defaults to 40, which should + "almost never be changed from the default." This does not change that. Further, + the python client library's import_ method has a batch_size parameter that does + client-side batching. We don't use that, either. + """ + success_count = 0 + fail_count = 0 + client = get_typesense_client() + batches = [rfcs] if batchsize is None else batched(rfcs, batchsize) + for batch in batches: + tdoc_batch = [typesense_doc_from_rfc(rfc) for rfc in batch] + results = client.collections[get_collection_name()].documents.import_( + tdoc_batch, {"action": "upsert"} + ) + for tdoc, result in zip(tdoc_batch, results): + if result["success"]: + success_count += 1 + else: + fail_count += 1 + log(f"Failed to index RFC {tdoc['rfcNumber']}: {result['error']}") + log(f"Added {success_count} RFCs to the index, failed to add {fail_count}") + + +DOCS_SCHEMA = { + "enable_nested_fields": True, + "default_sorting_field": "ranking", + "fields": [ + # RFC number in integer form, for sorting asc/desc in search results + # Omit field for drafts { - "api_key": _settings["TYPESENSE_API_KEY"], - "nodes": [_settings["TYPESENSE_API_URL"]], - } - ) - client.collections[_settings["TYPESENSE_COLLECTION_NAME"]].documents.upsert( - {"id": ts_id} | ts_document - ) + "name": "rfcNumber", + "type": "int32", + "facet": False, + "optional": True, + "sort": True, + }, + # RFC number in string form, for direct matching with ranking + # Omit field for drafts + {"name": "rfc", "type": "string", "facet": False, "optional": True}, + # For drafts that correspond to an RFC, insert the RFC number + # Omit field for rfcs or if not relevant + {"name": "ref", "type": "string", "facet": False, "optional": True}, + # Filename of the document (without the extension, e.g. "rfc1234" + # or "draft-ietf-abc-def-02") + {"name": "filename", "type": "string", "facet": False, "infix": True}, + # Title of the draft / rfc + {"name": "title", "type": "string", "facet": False}, + # Abstract of the draft / rfc + {"name": "abstract", "type": "string", "facet": False}, + # A list of search keywords if relevant, set to empty array otherwise + {"name": "keywords", "type": "string[]", "facet": True}, + # Type of the document + # Accepted values: "draft" or "rfc" + {"name": "type", "type": "string", "facet": True}, + # State(s) of the document (e.g. "Published", "Adopted by a WG", etc.) + # Use the full name, not the slug + {"name": "state", "type": "string[]", "facet": True, "optional": True}, + # Status (Standard Level Name) + # Object with properties "slug" and "name" + # e.g.: { slug: "std", "name": "Internet Standard" } + {"name": "status", "type": "object", "facet": True, "optional": True}, + # The subseries it is part of. (e.g. "BCP") + # Omit otherwise. + { + "name": "subseries.acronym", + "type": "string", + "facet": True, + "optional": True, + }, + # The subseries number it is part of. (e.g. 123) + # Omit otherwise. + { + "name": "subseries.number", + "type": "int32", + "facet": True, + "sort": True, + "optional": True, + }, + # The total of RFCs in the subseries + # Omit if not part of a subseries + { + "name": "subseries.total", + "type": "int32", + "facet": False, + "sort": False, + "optional": True, + }, + # Date of the document, in unix epoch seconds (can be negative for < 1970) + {"name": "date", "type": "int64", "facet": False}, + # Expiration date of the document, in unix epoch seconds (can be negative + # for < 1970). Omit field for RFCs + {"name": "expires", "type": "int64", "facet": False, "optional": True}, + # Publication date of the RFC, in unix epoch seconds (can be negative + # for < 1970). Omit field for drafts + { + "name": "publicationDate", + "type": "int64", + "facet": True, + "optional": True, + }, + # Working Group + # Object with properties "acronym", "name" and "full" + # e.g.: + # { + # "acronym": "ntp", + # "name": "Network Time Protocols", + # "full": "ntp - Network Time Protocols", + # } + {"name": "group", "type": "object", "facet": True, "optional": True}, + # Area + # Object with properties "acronym", "name" and "full" + # e.g.: + # { + # "acronym": "mpls", + # "name": "Multiprotocol Label Switching", + # "full": "mpls - Multiprotocol Label Switching", + # } + {"name": "area", "type": "object", "facet": True, "optional": True}, + # Stream + # Object with properties "slug" and "name" + # e.g.: { slug: "ietf", "name": "IETF" } + {"name": "stream", "type": "object", "facet": True, "optional": True}, + # List of authors + # Array of objects with properties "name" and "affiliation" + # e.g.: + # [ + # {"name": "John Doe", "affiliation": "ACME Inc."}, + # {"name": "Ada Lovelace", "affiliation": "Babbage Corps."}, + # ] + {"name": "authors", "type": "object[]", "facet": True, "optional": True}, + # Area Director Name (e.g. "Leonardo DaVinci") + {"name": "adName", "type": "string", "facet": True, "optional": True}, + # Whether the document should be hidden by default in search results or not. + {"name": "flags.hiddenDefault", "type": "bool", "facet": True}, + # Whether the document is obsoleted by another document or not. + {"name": "flags.obsoleted", "type": "bool", "facet": True}, + # Whether the document is updated by another document or not. + {"name": "flags.updated", "type": "bool", "facet": True}, + # List of documents that obsolete this document. + # Array of strings. Use RFC number for RFCs. (e.g. ["123", "456"]) + # Omit if none. Must be provided if "flags.obsoleted" is set to True. + { + "name": "obsoletedBy", + "type": "string[]", + "facet": False, + "optional": True, + }, + # List of documents that update this document. + # Array of strings. Use RFC number for RFCs. (e.g. ["123", "456"]) + # Omit if none. Must be provided if "flags.updated" is set to True. + {"name": "updatedBy", "type": "string[]", "facet": False, "optional": True}, + # Sanitized content of the document. + # Make sure to remove newlines, double whitespaces, symbols and tags. + { + "name": "content", + "type": "string", + "facet": False, + "optional": True, + "store": False, + }, + # Ranking value to use when no explicit sorting is used during search + # Set to the RFC number for RFCs and the revision number for drafts + # This ensures newer RFCs get listed first in the default search results + # (without a query) + {"name": "ranking", "type": "int32", "facet": False}, + ], +} + + +def create_collection(): + collection_name = get_collection_name() + log(f"Creating '{collection_name}' collection") + client = get_typesense_client() + client.collections.create({"name": get_collection_name()} | DOCS_SCHEMA) + + +def delete_collection(): + collection_name = get_collection_name() + log(f"Deleting '{collection_name}' collection") + client = get_typesense_client() + try: + client.collections[collection_name].delete() + except typesense.exceptions.ObjectNotFound: + pass diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py index 8740716c85..0bff96ec7d 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 typesense.exceptions from django.conf import settings from django.test.utils import override_settings @@ -51,42 +52,29 @@ def test_sanitize_text(self): "TYPESENSE_COLLECTION_NAME": "frogs", } ) - @mock.patch("ietf.utils.searchindex.typesense.Client") - def test_update_or_create_rfc_entry(self, mock_ts_client_constructor): + def test_typesense_doc_from_rfc(self): 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) + searchindex.typesense_doc_from_rfc(not_rfc) 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) + searchindex.typesense_doc_from_rfc(invalid_rfc) 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] + result = searchindex.typesense_doc_from_rfc(rfc) # 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) + 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.assertNotIn("adName", result) + self.assertNotIn("content", result) # no blob + self.assertNotIn("subseries", result) # repeat, this time with contents, an AD, and subseries docs - mock_upsert.reset_mock() store_str( kind="rfc", name=f"txt/{rfc.name}.txt", @@ -99,17 +87,15 @@ def test_update_or_create_rfc_entry(self, mock_ts_client_constructor): # (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] + result = searchindex.typesense_doc_from_rfc(rfc) # Check a few values, not exhaustive self.assertEqual( - upserted_dict["content"], + result["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"] + self.assertEqual(result["adName"], "Alfred D. Rector") + self.assertIn("subseries", result) + ss_dict = result["subseries"] # We should get one of the two subseries docs, but neither is more correct # than the other... self.assertTrue( @@ -119,10 +105,108 @@ def test_update_or_create_rfc_entry(self, mock_ts_client_constructor): ) ) - # Finally, delete the contents blob and make sure things don't blow up - mock_upsert.reset_mock() + # Finally, delete the contents blob and make sure things don't blow up Blob.objects.get(bucket="rfc", name=f"txt/{rfc.name}.txt").delete() + result = searchindex.typesense_doc_from_rfc(rfc) + self.assertNotIn("content", result) + + @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_doc_from_rfc") + @mock.patch("ietf.utils.searchindex.typesense.Client") + def test_update_or_create_rfc_entry( + self, mock_ts_client_constructor, mock_tdoc_from_rfc + ): + fake_tdoc = object() + mock_tdoc_from_rfc.return_value = fake_tdoc + rfc = WgRfcFactory() + 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" # matches value in override_settings above + ].documents.upsert self.assertTrue(mock_upsert.called) - upserted_dict = mock_upsert.call_args[0][0] - self.assertNotIn("content", upserted_dict) + self.assertEqual(mock_upsert.call_args, mock.call(fake_tdoc)) + + @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_doc_from_rfc") + @mock.patch("ietf.utils.searchindex.typesense.Client") + def test_update_or_create_rfc_entries( + self, mock_ts_client_constructor, mock_tdoc_from_rfc + ): + fake_tdoc = object() + mock_tdoc_from_rfc.return_value = fake_tdoc + rfc = WgRfcFactory() + assert isinstance(rfc, Document) + searchindex.update_or_create_rfc_entries([rfc] * 50) # list of docs... + self.assertEqual(mock_ts_client_constructor.call_count, 1) + # walk the tree down to the method we expected to be called... + mock_import_ = mock_ts_client_constructor.return_value.collections[ + "frogs" # matches value in override_settings above + ].documents.import_ + self.assertEqual(mock_import_.call_count, 1) + self.assertEqual( + mock_import_.call_args, mock.call([fake_tdoc] * 50, {"action": "upsert"}) + ) + + mock_import_.reset_mock() + searchindex.update_or_create_rfc_entries([rfc] * 50, batchsize=20) + self.assertEqual(mock_ts_client_constructor.call_count, 2) # one more + # walk the tree down to the method we expected to be called... + mock_import_ = mock_ts_client_constructor.return_value.collections[ + "frogs" # matches value in override_settings above + ].documents.import_ + self.assertEqual(mock_import_.call_count, 3) + self.assertEqual( + mock_import_.call_args_list, + [ + mock.call([fake_tdoc] * 20, {"action": "upsert"}), + mock.call([fake_tdoc] * 20, {"action": "upsert"}), + mock.call([fake_tdoc] * 10, {"action": "upsert"}), + ], + ) + + @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_create_collection(self, mock_ts_client_constructor): + searchindex.create_collection() + self.assertEqual(mock_ts_client_constructor.call_count, 1) + mock_collections = mock_ts_client_constructor.return_value.collections + self.assertTrue(mock_collections.create.called) + self.assertEqual(mock_collections.create.call_args[0][0]["name"], "frogs") + + @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_delete_collection(self, mock_ts_client_constructor): + searchindex.delete_collection() + self.assertEqual(mock_ts_client_constructor.call_count, 1) + mock_collections = mock_ts_client_constructor.return_value.collections + self.assertTrue(mock_collections["frogs"].delete.called) + + mock_collections["frogs"].side_effect = typesense.exceptions.ObjectNotFound + searchindex.delete_collection() # should ignore the exception From c4cb8b91fc9434a3bb3419acfac2dd3b30cb4a6c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 17 Apr 2026 07:33:51 -0300 Subject: [PATCH 842/846] fix: add pages to typesense schema (#10726) --- ietf/utils/searchindex.py | 4 ++++ ietf/utils/tests_searchindex.py | 1 + 2 files changed, 5 insertions(+) diff --git a/ietf/utils/searchindex.py b/ietf/utils/searchindex.py index a47e6d2f12..87951abb60 100644 --- a/ietf/utils/searchindex.py +++ b/ietf/utils/searchindex.py @@ -86,6 +86,7 @@ def _sanitize_text(content): def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: assert rfc.type_id == "rfc" assert rfc.rfc_number is not None + assert rfc.pages is not None keywords: list[str] = rfc.keywords # help type checking @@ -119,6 +120,7 @@ def typesense_doc_from_rfc(rfc: Document) -> DocumentSchema: "filename": rfc.name, "title": rfc.title, "abstract": _sanitize_text(rfc.abstract), + "pages": rfc.pages, "keywords": keywords, "type": "rfc", "state": [state.name for state in rfc.states.all()], @@ -231,6 +233,8 @@ def update_or_create_rfc_entries( {"name": "title", "type": "string", "facet": False}, # Abstract of the draft / rfc {"name": "abstract", "type": "string", "facet": False}, + # Number of pages + {"name": "pages", "type": "int32", "facet": False}, # A list of search keywords if relevant, set to empty array otherwise {"name": "keywords", "type": "string[]", "facet": True}, # Type of the document diff --git a/ietf/utils/tests_searchindex.py b/ietf/utils/tests_searchindex.py index 0bff96ec7d..e9fbf52020 100644 --- a/ietf/utils/tests_searchindex.py +++ b/ietf/utils/tests_searchindex.py @@ -70,6 +70,7 @@ def test_typesense_doc_from_rfc(self): 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["pages"], rfc.pages) self.assertNotIn("adName", result) self.assertNotIn("content", result) # no blob self.assertNotIn("subseries", result) From 629ffb13480201e25fc5d941cfcea9de123562f9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 17 Apr 2026 15:04:23 -0300 Subject: [PATCH 843/846] fix: decode non-utf-8 blob content (#10729) * refactor: decode_document_content() utility method * fix: fall back to latin-1 in retrieve_str() * refactor: match structure with retrieve_bytes() * refactor: separate tests_text.py module * test: test_decode_document_content + ruff * fix: revert misguided refactor * test: assert to guarantee test is valid --- ietf/doc/models.py | 15 ++------- ietf/doc/storage_utils.py | 47 +++++++++++++------------- ietf/utils/tests.py | 19 ----------- ietf/utils/tests_text.py | 71 +++++++++++++++++++++++++++++++++++++++ ietf/utils/text.py | 18 ++++++++++ 5 files changed, 114 insertions(+), 56 deletions(-) create mode 100644 ietf/utils/tests_text.py diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 972f0a34e8..cc79b73831 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -52,6 +52,7 @@ from ietf.person.utils import get_active_balloters from ietf.utils import log from ietf.utils.decorators import memoize +from ietf.utils.text import decode_document_content from ietf.utils.validators import validate_no_control_chars from ietf.utils.mail import formataddr from ietf.utils.models import ForeignKey @@ -640,19 +641,7 @@ def text(self, size = -1): except IOError as e: log.log(f"Error reading text for {path}: {e}") return None - text = None - try: - text = raw.decode('utf-8') - except UnicodeDecodeError: - for back in range(1,4): - try: - text = raw[:-back].decode('utf-8') - break - except UnicodeDecodeError: - pass - if text is None: - text = raw.decode('latin-1') - return text + return decode_document_content(raw) def text_or_error(self): return self.text() or "Error; cannot read '%s'"%self.get_base_name() diff --git a/ietf/doc/storage_utils.py b/ietf/doc/storage_utils.py index ffdd4599be..9c18bb8a8a 100644 --- a/ietf/doc/storage_utils.py +++ b/ietf/doc/storage_utils.py @@ -10,6 +10,7 @@ from django.core.files.storage import storages, Storage from ietf.utils.log import log +from ietf.utils.text import decode_document_content class StorageUtilsError(Exception): @@ -164,32 +165,30 @@ def store_str( def retrieve_bytes(kind: str, name: str) -> bytes: from ietf.doc.storage import maybe_log_timing - content = b"" - if settings.ENABLE_BLOBSTORAGE: - try: - store = _get_storage(kind) - with store.open(name) as f: - with maybe_log_timing( - hasattr(store, "ietf_log_blob_timing") and store.ietf_log_blob_timing, - "read", - bucket_name=store.bucket_name if hasattr(store, "bucket_name") else "", - name=name, - ): - content = f.read() - except Exception as err: - log(f"Blobstore Error: Failed to read bytes from {kind}:{name}: {repr(err)}") - raise + if not settings.ENABLE_BLOBSTORAGE: + return b"" + try: + store = _get_storage(kind) + with store.open(name) as f: + with maybe_log_timing( + hasattr(store, "ietf_log_blob_timing") and store.ietf_log_blob_timing, + "read", + bucket_name=store.bucket_name if hasattr(store, "bucket_name") else "", + name=name, + ): + content = f.read() + except Exception as err: + log(f"Blobstore Error: Failed to read bytes from {kind}:{name}: {repr(err)}") + raise return content def retrieve_str(kind: str, name: str) -> str: - content = "" - if settings.ENABLE_BLOBSTORAGE: - try: - content_bytes = retrieve_bytes(kind, name) - # TODO-BLOBSTORE: try to decode all the different ways doc.text() does - content = content_bytes.decode("utf-8") - except Exception as err: - log(f"Blobstore Error: Failed to read string from {kind}:{name}: {repr(err)}") - raise + if not settings.ENABLE_BLOBSTORAGE: + return "" + try: + content = decode_document_content(retrieve_bytes(kind, name)) + except Exception as err: + log(f"Blobstore Error: Failed to read string from {kind}:{name}: {repr(err)}") + raise return content diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index 3288309095..99c33f34b3 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -60,7 +60,6 @@ set_url_coverage, ) from ietf.utils.test_utils import TestCase, unicontent -from ietf.utils.text import parse_unicode from ietf.utils.timezone import timezone_not_near_midnight from ietf.utils.xmldraft import XMLDraft, InvalidMetadataError, capture_xml2rfc_output @@ -864,24 +863,6 @@ def test_assertion(self): assertion('False') settings.SERVER_MODE = 'test' -class TestRFC2047Strings(TestCase): - def test_parse_unicode(self): - names = ( - ('=?utf-8?b?4Yuz4YuK4Ym1IOGJoOGJgOGIiA==?=', 'ዳዊት በቀለ'), - ('=?utf-8?b?5Li9IOmDnA==?=', '丽 郜'), - ('=?utf-8?b?4KSV4KSu4KWN4KSs4KWL4KScIOCkoeCkvuCksA==?=', 'कम्बोज डार'), - ('=?utf-8?b?zpfPgc6szrrOu861zrnOsSDOm865z4zOvc+Ezrc=?=', 'Ηράκλεια Λιόντη'), - ('=?utf-8?b?15nXqdeo15DXnCDXqNeV15bXoNek15zXkw==?=', 'ישראל רוזנפלד'), - ('=?utf-8?b?5Li95Y2OIOeahw==?=', '丽华 皇'), - ('=?utf-8?b?77ul77qu766V77qzIO+tlu+7ru+vvu+6ju+7pw==?=', 'ﻥﺮﮕﺳ ﭖﻮﯾﺎﻧ'), - ('=?utf-8?b?77uh77uu77qz77uu76++IO+6su+7tO+7p++6jSDvurDvu6Pvuo7vu6jvr74=?=', 'ﻡﻮﺳﻮﯾ ﺲﻴﻧﺍ ﺰﻣﺎﻨﯾ'), - ('=?utf-8?b?ScOxaWdvIFNhbsOnIEliw6HDsWV6IGRlIGxhIFBlw7Fh?=', 'Iñigo Sanç Ibáñez de la Peña'), - ('Mart van Oostendorp', 'Mart van Oostendorp'), - ('', ''), - ) - for encoded_str, unicode in names: - self.assertEqual(unicode, parse_unicode(encoded_str)) - class TestAndroidSiteManifest(TestCase): def test_manifest(self): r = self.client.get(urlreverse('site.webmanifest')) diff --git a/ietf/utils/tests_text.py b/ietf/utils/tests_text.py new file mode 100644 index 0000000000..51aa2eff13 --- /dev/null +++ b/ietf/utils/tests_text.py @@ -0,0 +1,71 @@ +# Copyright The IETF Trust 2021-2026, All Rights Reserved +from ietf.utils.test_utils import TestCase +from ietf.utils.text import parse_unicode, decode_document_content + + +class TestDecoders(TestCase): + def test_parse_unicode(self): + names = ( + ("=?utf-8?b?4Yuz4YuK4Ym1IOGJoOGJgOGIiA==?=", "ዳዊት በቀለ"), + ("=?utf-8?b?5Li9IOmDnA==?=", "丽 郜"), + ("=?utf-8?b?4KSV4KSu4KWN4KSs4KWL4KScIOCkoeCkvuCksA==?=", "कम्बोज डार"), + ("=?utf-8?b?zpfPgc6szrrOu861zrnOsSDOm865z4zOvc+Ezrc=?=", "Ηράκλεια Λιόντη"), + ("=?utf-8?b?15nXqdeo15DXnCDXqNeV15bXoNek15zXkw==?=", "ישראל רוזנפלד"), + ("=?utf-8?b?5Li95Y2OIOeahw==?=", "丽华 皇"), + ("=?utf-8?b?77ul77qu766V77qzIO+tlu+7ru+vvu+6ju+7pw==?=", "ﻥﺮﮕﺳ ﭖﻮﯾﺎﻧ"), + ( + "=?utf-8?b?77uh77uu77qz77uu76++IO+6su+7tO+7p++6jSDvurDvu6Pvuo7vu6jvr74=?=", + "ﻡﻮﺳﻮﯾ ﺲﻴﻧﺍ ﺰﻣﺎﻨﯾ", + ), + ( + "=?utf-8?b?ScOxaWdvIFNhbsOnIEliw6HDsWV6IGRlIGxhIFBlw7Fh?=", + "Iñigo Sanç Ibáñez de la Peña", + ), + ("Mart van Oostendorp", "Mart van Oostendorp"), + ("", ""), + ) + for encoded_str, unicode in names: + self.assertEqual(unicode, parse_unicode(encoded_str)) + + def test_decode_document_content(self): + utf8_bytes = "𒀭𒊩𒌆𒄈𒋢".encode("utf-8") # ends with 4-byte character + latin1_bytes = "àéîøü".encode("latin-1") + other_bytes = "àéîøü".encode("macintosh") # different from its latin-1 encoding + assert other_bytes.decode("macintosh") != other_bytes.decode("latin-1"),\ + "test broken: other_bytes must decode differently as latin-1" + + # simplest case + self.assertEqual( + decode_document_content(utf8_bytes), + utf8_bytes.decode(), + ) + # losing 1-4 bytes from the end leave the last character incomplete; the + # decoder should decode all but that last character + self.assertEqual( + decode_document_content(utf8_bytes[:-1]), + utf8_bytes.decode()[:-1], + ) + self.assertEqual( + decode_document_content(utf8_bytes[:-2]), + utf8_bytes.decode()[:-1], + ) + self.assertEqual( + decode_document_content(utf8_bytes[:-3]), + utf8_bytes.decode()[:-1], + ) + self.assertEqual( + decode_document_content(utf8_bytes[:-4]), + utf8_bytes.decode()[:-1], + ) + + # latin-1 is also simple + self.assertEqual( + decode_document_content(latin1_bytes), + latin1_bytes.decode("latin-1"), + ) + + # other character sets are just treated as latin1 (bug? feature? you decide) + self.assertEqual( + decode_document_content(other_bytes), + other_bytes.decode("latin-1"), + ) diff --git a/ietf/utils/text.py b/ietf/utils/text.py index 590ec3fd30..2763056e1a 100644 --- a/ietf/utils/text.py +++ b/ietf/utils/text.py @@ -263,3 +263,21 @@ def parse_unicode(text): else: text = decoded_string return text + + +def decode_document_content(content: bytes) -> str: + """Decode document contents as utf-8 or latin1 + + Method was developed in DocumentInfo.text() where it gave acceptable results + for existing documents / RFCs. + """ + try: + return content.decode("utf-8") + except UnicodeDecodeError: + pass + for back in range(1, 4): + try: + return content[:-back].decode("utf-8") + except UnicodeDecodeError: + pass + return content.decode("latin-1") # everything is legal in latin-1 From 63a69945ab11b1c3b3ec490fb260073c90eed0bc Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 17 Apr 2026 16:24:18 -0500 Subject: [PATCH 844/846] test: Squash some transient test error vectors (#10730) * test: enforce queryset order assumed by test * test: match html escaping in test * test: search more specifically for tokens to avoid mis-reading them when they occur in faker data --- ietf/group/tests_review.py | 30 +++++++++++++------------- ietf/meeting/tests_session_requests.py | 2 +- ietf/meeting/tests_views.py | 7 +++--- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index 89c755bb26..bb9b79a416 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -888,10 +888,10 @@ def test_requests_history_filter_page(self): self.assertEqual(r.status_code, 200) self.assertContains(r, review_req.doc.name) self.assertContains(r, review_req2.doc.name) - self.assertContains(r, 'Assigned') - self.assertContains(r, 'Accepted') - self.assertContains(r, 'Completed') - self.assertContains(r, 'Ready') + self.assertContains(r, 'data-text="Assigned"') + self.assertContains(r, 'data-text="Accepted"') + self.assertContains(r, 'data-text="Completed"') + self.assertContains(r, 'data-text="Ready"') self.assertContains(r, escape(assignment.reviewer.person.name)) self.assertContains(r, escape(assignment2.reviewer.person.name)) @@ -907,10 +907,10 @@ def test_requests_history_filter_page(self): self.assertEqual(r.status_code, 200) self.assertContains(r, review_req.doc.name) self.assertNotContains(r, review_req2.doc.name) - self.assertContains(r, 'Assigned') - self.assertNotContains(r, 'Accepted') - self.assertNotContains(r, 'Completed') - self.assertNotContains(r, 'Ready') + self.assertContains(r, 'data-text="Assigned"') + self.assertNotContains(r, 'data-text="Accepted"') + self.assertNotContains(r, 'data-text="Completed"') + self.assertNotContains(r, 'data-text="Ready"') self.assertContains(r, escape(assignment.reviewer.person.name)) self.assertNotContains(r, escape(assignment2.reviewer.person.name)) @@ -926,10 +926,10 @@ def test_requests_history_filter_page(self): self.assertEqual(r.status_code, 200) self.assertNotContains(r, review_req.doc.name) self.assertContains(r, review_req2.doc.name) - self.assertNotContains(r, 'Assigned') - self.assertContains(r, 'Accepted') - self.assertContains(r, 'Completed') - self.assertContains(r, 'Ready') + self.assertNotContains(r, 'data-text="Assigned"') + self.assertContains(r, 'data-text="Accepted"') + self.assertContains(r, 'data-text="Completed"') + self.assertContains(r, 'data-text="Ready"') self.assertNotContains(r, escape(assignment.reviewer.person.name)) self.assertContains(r, escape(assignment2.reviewer.person.name)) @@ -940,9 +940,9 @@ def test_requests_history_filter_page(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertNotContains(r, review_req.doc.name) - self.assertNotContains(r, 'Assigned') - self.assertNotContains(r, 'Accepted') - self.assertNotContains(r, 'Completed') + self.assertNotContains(r, 'data-text="Assigned"') + self.assertNotContains(r, 'data-text="Accepted"') + self.assertNotContains(r, 'data-text="Completed"') def test_requests_history_invalid_filter_parameters(self): # First assignment as assigned diff --git a/ietf/meeting/tests_session_requests.py b/ietf/meeting/tests_session_requests.py index 0cb092d2f8..42dbee5f23 100644 --- a/ietf/meeting/tests_session_requests.py +++ b/ietf/meeting/tests_session_requests.py @@ -236,7 +236,7 @@ def test_edit(self): self.assertRedirects(r, redirect_url) # Check whether updates were stored in the database - sessions = Session.objects.filter(meeting=meeting, group=mars) + sessions = Session.objects.filter(meeting=meeting, group=mars).order_by("id") self.assertEqual(len(sessions), 2) session = sessions[0] self.assertFalse(session.constraints().filter(name='time_relation')) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 258ffe554c..17988e50be 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -33,6 +33,7 @@ from django.http import QueryDict, FileResponse from django.template import Context, Template from django.utils import timezone +from django.utils.html import escape from django.utils.safestring import mark_safe from django.utils.text import slugify @@ -9491,7 +9492,7 @@ def test_session_attendance(self): self.assertEqual(r.status_code, 200) self.assertContains(r, '3 attendees') for person in persons: - self.assertContains(r, person.plain_name()) + self.assertContains(r, escape(person.plain_name())) # Test for the "I was there" button. def _test_button(person, expected): @@ -9511,14 +9512,14 @@ def _test_button(person, expected): # attempt to POST anyway is ignored r = self.client.post(attendance_url) self.assertEqual(r.status_code, 200) - self.assertNotContains(r, persons[3].plain_name()) + self.assertNotContains(r, escape(persons[3].plain_name())) self.assertEqual(session.attended_set.count(), 3) # button is shown, and POST is accepted meeting.importantdate_set.update(name_id='revsub',date=date_today() + datetime.timedelta(days=20)) _test_button(persons[3], True) r = self.client.post(attendance_url) self.assertEqual(r.status_code, 200) - self.assertContains(r, persons[3].plain_name()) + self.assertContains(r, escape(persons[3].plain_name())) self.assertEqual(session.attended_set.count(), 4) # When the meeting is finalized, a bluesheet file is generated, From dc49dc8362812893cad560feecc55efcea1553dc Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 20 Apr 2026 14:29:41 -0300 Subject: [PATCH 845/846] chore: beat termination grace period -> 10 s (#10741) --- k8s/beat.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/beat.yaml b/k8s/beat.yaml index 9ab242681c..b4291c7e31 100644 --- a/k8s/beat.yaml +++ b/k8s/beat.yaml @@ -59,4 +59,4 @@ spec: name: files-cfgmap dnsPolicy: ClusterFirst restartPolicy: Always - terminationGracePeriodSeconds: 600 + terminationGracePeriodSeconds: 10 From 4d69329ef86054fa5bfb9da9acd0c966ab013d8f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 20 Apr 2026 23:59:36 -0300 Subject: [PATCH 846/846] chore: remove blobdb profiling logs (#10732) These are not useful any more, blobdb is fast --- ietf/doc/storage.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ietf/doc/storage.py b/ietf/doc/storage.py index 375620ccaf..ee1e76c4fa 100644 --- a/ietf/doc/storage.py +++ b/ietf/doc/storage.py @@ -114,7 +114,6 @@ def _get_write_parameters(self, name, content=None): class StoredObjectBlobdbStorage(BlobdbStorage): - ietf_log_blob_timing = True warn_if_missing = True # TODO-BLOBSTORE make this configurable (or remove it) def _save_stored_object(self, name, content) -> StoredObject:

    These are unexpected and we do not know what their origin is. These cannot b {% with url=path|url_for_path %} {{path.name}} - {{path|mtime|date:"DATETIME_FORMAT"}} + + {% if path|mtime_is_epoch %} + Timestamp has been lost (is Unix Epoch) + {% else %} + {{path|mtime|date:"DATETIME_FORMAT"}} + {% endif %} + {{url}} {% endwith %} From 342905fef8a3431bd78f963e3d0c2c1087788fd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:04:18 -0400 Subject: [PATCH 029/846] chore(deps): bump tar from 7.0.1 to 7.1.0 in /dev/diff in the npm group (#7398) Bumps the npm group in /dev/diff with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 7.0.1 to 7.1.0 - [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.0.1...v7.1.0) --- updated-dependencies: - dependency-name: tar 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/diff/package-lock.json | 43 +++++++++++++------------------------- dev/diff/package.json | 2 +- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/dev/diff/package-lock.json b/dev/diff/package-lock.json index 3145058433..d97649b39e 100644 --- a/dev/diff/package-lock.json +++ b/dev/diff/package-lock.json @@ -17,7 +17,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^7.0.1", + "tar": "^7.1.0", "yargs": "^17.7.2" }, "engines": { @@ -1101,9 +1101,9 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1493,13 +1493,13 @@ } }, "node_modules/tar": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", - "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.1.0.tgz", + "integrity": "sha512-ENhg4W6BmjYxl8GTaE7/h99f0aXiSWv4kikRZ9n2/JRxypZniE84ILZqimAhxxX7Zb8Px6pFdheW3EeHfhnXQQ==", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", - "minipass": "^5.0.0", + "minipass": "^7.1.0", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" @@ -1575,14 +1575,6 @@ "node": ">=18" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -2441,9 +2433,9 @@ } }, "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==" }, "minizlib": { "version": "3.0.1", @@ -2699,13 +2691,13 @@ } }, "tar": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", - "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.1.0.tgz", + "integrity": "sha512-ENhg4W6BmjYxl8GTaE7/h99f0aXiSWv4kikRZ9n2/JRxypZniE84ILZqimAhxxX7Zb8Px6pFdheW3EeHfhnXQQ==", "requires": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", - "minipass": "^5.0.0", + "minipass": "^7.1.0", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" @@ -2715,11 +2707,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, diff --git a/dev/diff/package.json b/dev/diff/package.json index d8a6dafd5c..dcc6e9eb7b 100644 --- a/dev/diff/package.json +++ b/dev/diff/package.json @@ -13,7 +13,7 @@ "lodash-es": "^4.17.21", "luxon": "^3.4.4", "pretty-bytes": "^6.1.1", - "tar": "^7.0.1", + "tar": "^7.1.0", "yargs": "^17.7.2" }, "engines": { From 5fbeb8cd903f3d985ef000c2a4113ce6f1e40b82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:04:47 -0400 Subject: [PATCH 030/846] chore(deps): bump tar in /dev/deploy-to-container in the npm group (#7397) Bumps the npm group in /dev/deploy-to-container with 1 update: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 7.0.1 to 7.1.0 - [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.0.1...v7.1.0) --- updated-dependencies: - dependency-name: tar 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 | 43 ++++++++--------------- dev/deploy-to-container/package.json | 2 +- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index e27ac66e5e..550f8f072e 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -11,7 +11,7 @@ "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^7.0.1", + "tar": "^7.1.0", "yargs": "^17.7.2" }, "engines": { @@ -496,9 +496,9 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -788,13 +788,13 @@ } }, "node_modules/tar": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", - "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.1.0.tgz", + "integrity": "sha512-ENhg4W6BmjYxl8GTaE7/h99f0aXiSWv4kikRZ9n2/JRxypZniE84ILZqimAhxxX7Zb8Px6pFdheW3EeHfhnXQQ==", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", - "minipass": "^5.0.0", + "minipass": "^7.1.0", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" @@ -870,14 +870,6 @@ "node": ">=18" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -1319,9 +1311,9 @@ } }, "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz", + "integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==" }, "minizlib": { "version": "3.0.1", @@ -1511,13 +1503,13 @@ } }, "tar": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.0.1.tgz", - "integrity": "sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.1.0.tgz", + "integrity": "sha512-ENhg4W6BmjYxl8GTaE7/h99f0aXiSWv4kikRZ9n2/JRxypZniE84ILZqimAhxxX7Zb8Px6pFdheW3EeHfhnXQQ==", "requires": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", - "minipass": "^5.0.0", + "minipass": "^7.1.0", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" @@ -1527,11 +1519,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index e8c6bafbf5..6b134e5405 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -7,7 +7,7 @@ "nanoid": "5.0.7", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", - "tar": "^7.0.1", + "tar": "^7.1.0", "yargs": "^17.7.2" }, "engines": { From 565486ee83752d95909d3fccf66399861b9e5b0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:06:24 -0400 Subject: [PATCH 031/846] chore(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1 (#7394) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: codecov/codecov-action 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.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 34ce6a5491..f6d54b14bb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,7 +59,7 @@ jobs: path: geckodriver.log - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v4.3.0 + uses: codecov/codecov-action@v4.3.1 with: files: coverage.xml From 661941dbf17c96241fb9674cdc6adcf15607f90d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 26 Jan 2024 16:35:14 -0400 Subject: [PATCH 032/846] feat: Split datatracker/celery start scripts (#6974) --- dev/build/celery-start.sh | 22 ++++++++++++++++++++++ dev/build/datatracker-start.sh | 10 ++++++++++ dev/build/start.sh | 28 +++++++++++++++++++--------- 3 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 dev/build/celery-start.sh create mode 100644 dev/build/datatracker-start.sh diff --git a/dev/build/celery-start.sh b/dev/build/celery-start.sh new file mode 100644 index 0000000000..c229defa2f --- /dev/null +++ b/dev/build/celery-start.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# Run a celery worker +# +echo "Running Datatracker checks..." +./ietf/manage.py check + +cleanup () { + # Cleanly terminate the celery app by sending it a TERM, then waiting for it to exit. + if [[ -n "${celery_pid}" ]]; then + echo "Gracefully terminating celery worker. This may take a few minutes if tasks are in progress..." + kill -TERM "${celery_pid}" + wait "${celery_pid}" + fi +} + +trap 'trap "" TERM; cleanup' TERM + +# start celery in the background so we can trap the TERM signal +celery "$@" & +celery_pid=$! +wait "${celery_pid}" diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh new file mode 100644 index 0000000000..ef64ca7b30 --- /dev/null +++ b/dev/build/datatracker-start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Running Datatracker checks..." +./ietf/manage.py check + +echo "Running Datatracker migrations..." +./ietf/manage.py migrate --settings=settings_local + +echo "Starting Datatracker..." +./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local diff --git a/dev/build/start.sh b/dev/build/start.sh index ef64ca7b30..f20d264beb 100644 --- a/dev/build/start.sh +++ b/dev/build/start.sh @@ -1,10 +1,20 @@ #!/bin/bash - -echo "Running Datatracker checks..." -./ietf/manage.py check - -echo "Running Datatracker migrations..." -./ietf/manage.py migrate --settings=settings_local - -echo "Starting Datatracker..." -./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local +# +# Environment config: +# +# CONTAINER_ROLE - datatracker, celery, or beat (defaults to datatracker) +# +case "${CONTAINER_ROLE:-datatracker}" in + datatracker) + exec ./datatracker-start.sh + ;; + celery) + exec ./celery-start.sh --app=ietf worker + ;; + beat) + exec ./celery-start.sh --app=ietf beat + ;; + *) + echo "Unknown role '${CONTAINER_ROLE}'" + exit 255 +esac From ff228a5913b01aeccab8926e2642e2fcc280bcdb Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 26 Jan 2024 15:01:38 -0600 Subject: [PATCH 033/846] feat: merge dt and celery container builds (#6973) * feat: merge dt and celery container builds * fix: mount /a instead of /assets * feat: use consolidated script * fix: get start.sh dependencies. Remove watchdog * fix: correct source path --- dev/build/Dockerfile | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 2ffce35495..e6173cd508 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,17 +1,26 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:latest -LABEL maintainer="IETF Tools Team " - -ENV DEBIAN_FRONTEND=noninteractive - -COPY . . -COPY ./dev/build/start.sh ./start.sh -RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt -RUN chmod +x start.sh && \ - chmod +x docker/scripts/app-create-dirs.sh && \ - sh ./docker/scripts/app-create-dirs.sh - -VOLUME [ "/assets" ] - -EXPOSE 8000 - -CMD ["./start.sh"] \ No newline at end of file +FROM ghcr.io/ietf-tools/datatracker-app-base:latest +LABEL maintainer="IETF Tools Team " + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get purge -y imagemagick imagemagick-6-common + +COPY . . +COPY ./dev/build/start.sh ./start.sh +COPY ./dev/build/datatracker-start.sh ./datatracker-start.sh +COPY ./dev/build/celery-start.sh ./celery-start.sh + +RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt + +RUN chmod +x datatracker-start.sh && \ + chmod +x celery-start.sh \ + chmod +x docker/scripts/app-create-dirs.sh && \ + sh ./docker/scripts/app-create-dirs.sh + +RUN mkdir -p /a + +VOLUME [ "/a" ] + +EXPOSE 8000 + +CMD ["./start.sh"] From c867d6f0da40721da32c5304e60b08616d1bed2b Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 26 Jan 2024 16:54:03 -0500 Subject: [PATCH 034/846] ci: helm values + deployment files for all 5 services (wip) --- helm/templates/_helpers.tpl | 127 +++- .../beat.yaml} | 1 + helm/templates/deployments/celery.yaml | 67 ++ helm/templates/deployments/datatracker.yaml | 67 ++ helm/templates/deployments/memcached.yaml | 67 ++ helm/templates/deployments/rabbitmq.yaml | 67 ++ helm/templates/ingress.yaml | 20 +- helm/templates/rbac/beat-serviceaccount.yaml | 12 + .../templates/rbac/celery-serviceaccount.yaml | 12 + .../rbac/datatracker-serviceaccount.yaml | 12 + .../rbac/memcached-serviceaccount.yaml | 12 + .../rbac/rabbitmq-serviceaccount.yaml | 12 + helm/templates/service.yaml | 6 +- helm/templates/serviceaccount.yaml | 12 - helm/values.yaml | 587 ++++++++++++++---- 15 files changed, 943 insertions(+), 138 deletions(-) rename helm/templates/{deployment.yaml => deployments/beat.yaml} (95%) create mode 100644 helm/templates/deployments/celery.yaml create mode 100644 helm/templates/deployments/datatracker.yaml create mode 100644 helm/templates/deployments/memcached.yaml create mode 100644 helm/templates/deployments/rabbitmq.yaml create mode 100644 helm/templates/rbac/beat-serviceaccount.yaml create mode 100644 helm/templates/rbac/celery-serviceaccount.yaml create mode 100644 helm/templates/rbac/datatracker-serviceaccount.yaml create mode 100644 helm/templates/rbac/memcached-serviceaccount.yaml create mode 100644 helm/templates/rbac/rabbitmq-serviceaccount.yaml delete mode 100644 helm/templates/serviceaccount.yaml diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index 071e9b824c..0f6d455856 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -23,6 +23,91 @@ If release name contains chart name it will be used as a full name. {{- end }} {{- end }} +{{/* +Create a fully qualified datatracker name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.datatracker.fullname" -}} +{{- if .Values.datatracker.fullnameOverride -}} +{{- .Values.datatracker.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified celery name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.celery.fullname" -}} +{{- if .Values.celery.fullnameOverride -}} +{{- .Values.celery.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.celery.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.celery.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified celery name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.beat.fullname" -}} +{{- if .Values.beat.fullnameOverride -}} +{{- .Values.beat.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.beat.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.beat.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified rabbitmq name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.rabbitmq.fullname" -}} +{{- if .Values.rabbitmq.fullnameOverride -}} +{{- .Values.rabbitmq.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified memcached name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.memcached.fullname" -}} +{{- if .Values.memcached.fullnameOverride -}} +{{- .Values.memcached.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + {{/* Create chart name and version as used by the chart label. */}} @@ -53,10 +138,42 @@ app.kubernetes.io/instance: {{ .Release.Name }} {{/* Create the name of the service account to use */}} -{{- define "datatracker.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "datatracker.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} +{{- define "datatracker.serviceAccountName.datatracker" -}} +{{- if .Values.serviceAccounts.datatracker.create -}} + {{ default (include "datatracker.datatracker.fullname" .) .Values.serviceAccounts.datatracker.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.datatracker.name }} +{{- end -}} {{- end }} + +{{- define "datatracker.serviceAccountName.celery" -}} +{{- if .Values.serviceAccounts.celery.create -}} + {{ default (include "datatracker.celery.fullname" .) .Values.serviceAccounts.celery.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.celery.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.beat" -}} +{{- if .Values.serviceAccounts.beat.create -}} + {{ default (include "datatracker.beat.fullname" .) .Values.serviceAccounts.beat.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.beat.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.rabbitmq" -}} +{{- if .Values.serviceAccounts.rabbitmq.create -}} + {{ default (include "datatracker.rabbitmq.fullname" .) .Values.serviceAccounts.rabbitmq.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.rabbitmq.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.memcached" -}} +{{- if .Values.serviceAccounts.memcached.create -}} + {{ default (include "datatracker.memcached.fullname" .) .Values.serviceAccounts.memcached.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.memcached.name }} +{{- end -}} {{- end }} \ No newline at end of file diff --git a/helm/templates/deployment.yaml b/helm/templates/deployments/beat.yaml similarity index 95% rename from helm/templates/deployment.yaml rename to helm/templates/deployments/beat.yaml index b47c41a970..41f76b7f4f 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployments/beat.yaml @@ -29,6 +29,7 @@ spec: image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} env: + CONTAINER_ROLE: beat {{- if .Values.env }} {{- toYaml .Values.env | nindent 12 }} {{- end }} diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml new file mode 100644 index 0000000000..f346783072 --- /dev/null +++ b/helm/templates/deployments/celery.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + env: + CONTAINER_ROLE: celery + {{- if .Values.env }} + {{- toYaml .Values.env | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml new file mode 100644 index 0000000000..1f403787e2 --- /dev/null +++ b/helm/templates/deployments/datatracker.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + env: + CONTAINER_ROLE: datatracker + {{- if .Values.env }} + {{- toYaml .Values.env | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml new file mode 100644 index 0000000000..41f76b7f4f --- /dev/null +++ b/helm/templates/deployments/memcached.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + env: + CONTAINER_ROLE: beat + {{- if .Values.env }} + {{- toYaml .Values.env | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/rabbitmq.yaml b/helm/templates/deployments/rabbitmq.yaml new file mode 100644 index 0000000000..41f76b7f4f --- /dev/null +++ b/helm/templates/deployments/rabbitmq.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + env: + CONTAINER_ROLE: beat + {{- if .Values.env }} + {{- toYaml .Values.env | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index 8d9258cd83..68034601a5 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,9 +1,9 @@ -{{- if .Values.ingress.enabled -}} +{{- if .Values.datatracker.ingress.enabled -}} {{- $fullName := include "datatracker.fullname" . -}} {{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} +{{- if and .Values.datatracker.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class" .Values.datatracker.ingress.className}} {{- end }} {{- end }} {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} @@ -18,17 +18,17 @@ metadata: name: {{ $fullName }} labels: {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} + {{- with .Values.datatracker.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.ingress.className }} + {{- if and .Values.datatracker.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.datatracker.ingress.className }} {{- end }} - {{- if .Values.ingress.tls }} + {{- if .Values.datatracker.ingress.tls }} tls: - {{- range .Values.ingress.tls }} + {{- range .Values.datatracker.ingress.tls }} - hosts: {{- range .hosts }} - {{ . | quote }} @@ -37,7 +37,7 @@ spec: {{- end }} {{- end }} rules: - {{- range .Values.ingress.hosts }} + {{- range .Values.datatracker.ingress.hosts }} - host: {{ .host | quote }} http: paths: diff --git a/helm/templates/rbac/beat-serviceaccount.yaml b/helm/templates/rbac/beat-serviceaccount.yaml new file mode 100644 index 0000000000..f9fa5830c3 --- /dev/null +++ b/helm/templates/rbac/beat-serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccounts.beat.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.beat" . }} + labels: + {{- include "datatracker.beat.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.beat.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/rbac/celery-serviceaccount.yaml b/helm/templates/rbac/celery-serviceaccount.yaml new file mode 100644 index 0000000000..267d1dce3e --- /dev/null +++ b/helm/templates/rbac/celery-serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccounts.celery.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.celery" . }} + labels: + {{- include "datatracker.celery.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.celery.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/rbac/datatracker-serviceaccount.yaml b/helm/templates/rbac/datatracker-serviceaccount.yaml new file mode 100644 index 0000000000..8f37799ba7 --- /dev/null +++ b/helm/templates/rbac/datatracker-serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccounts.datatracker.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.datatracker" . }} + labels: + {{- include "datatracker.datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.datatracker.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/rbac/memcached-serviceaccount.yaml b/helm/templates/rbac/memcached-serviceaccount.yaml new file mode 100644 index 0000000000..ba150a4065 --- /dev/null +++ b/helm/templates/rbac/memcached-serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccounts.memcached.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.memcached" . }} + labels: + {{- include "datatracker.memcached.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.memcached.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/rbac/rabbitmq-serviceaccount.yaml b/helm/templates/rbac/rabbitmq-serviceaccount.yaml new file mode 100644 index 0000000000..c9ce127482 --- /dev/null +++ b/helm/templates/rbac/rabbitmq-serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccounts.rabbitmq.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} + labels: + {{- include "datatracker.rabbitmq.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.rabbitmq.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml index f1bdca0ad2..e7b310f98f 100644 --- a/helm/templates/service.yaml +++ b/helm/templates/service.yaml @@ -3,16 +3,16 @@ kind: Service metadata: name: {{include "datatracker.fullname" .}} labels: {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.service.annotations }} + {{- with .Values.datatracker.service.annotations }} annotations: {{- range $key, $value := . }} {{ $key }}: {{ $value | quote }} {{- end }} {{- end }} spec: - type: {{.Values.service.type}} + type: {{.Values.datatracker.service.type}} ports: - - port: {{ default "80" .Values.service.port}} + - port: {{ default "80" .Values.datatracker.service.port}} targetPort: http protocol: TCP name: http diff --git a/helm/templates/serviceaccount.yaml b/helm/templates/serviceaccount.yaml deleted file mode 100644 index 475fcd51f7..0000000000 --- a/helm/templates/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml index 92efbce9dd..31f5e25cf8 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -2,117 +2,488 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -replicaCount: 1 - -image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" - -serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -livenessProbe: - httpGet: - path: /healthz - port: http - -readinessProbe: - httpGet: - path: /healthz - port: http - -startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - httpGet: - path: /healthz - port: http - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 80 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: datatracker.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi +## Define serviceAccount names for components. Defaults to component's fully qualified name. +## +serviceAccounts: + datatracker: + create: true + name: + annotations: {} + celery: + create: true + name: + annotations: {} + beat: + create: true + name: + annotations: {} + rabbitmq: + create: true + name: + annotations: {} + memcached: + create: true + name: + annotations: {} -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 +# ------------------------------------------------------------- +# DATATRACKER +# ------------------------------------------------------------- + +datatracker: + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: datatracker.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + livenessProbe: + httpGet: + path: /health + port: http + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + readinessProbe: + httpGet: + path: /health + port: http + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + httpGet: + path: /health + port: http + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# CELERY +# ------------------------------------------------------------- + +celery: + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: celery inspect ping + periodSeconds: 30 + timeoutSeconds: 5 + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: celery inspect ping + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# BEAT +# ------------------------------------------------------------- + +beat: + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: celery inspect ping + periodSeconds: 30 + timeoutSeconds: 5 -# Additional volumes on the output Deployment definition. -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false + podAnnotations: {} + podLabels: {} -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true + podSecurityContext: {} + # fsGroup: 2000 -nodeSelector: {} + replicaCount: 1 -tolerations: [] + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi -affinity: {} \ No newline at end of file + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: celery inspect ping + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# RABBITMQ +# ------------------------------------------------------------- + +rabbitmq: + image: + repository: "ghcr.io/ietf-tools/datatracker-mq" + pullPolicy: IfNotPresent + tag: "latest" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: rabbitmq-diagnostics -q ping + periodSeconds: 30 + timeoutSeconds: 5 + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: rabbitmq-diagnostics -q ping + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# MEMCACHED +# ------------------------------------------------------------- + +memcached: + image: + repository: "memcached" + pullPolicy: IfNotPresent + tag: "latest" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# COMMON +# ------------------------------------------------------------- + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 \ No newline at end of file From f980954336761cdc02c526c31fca6f6bb43c109b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 Mar 2024 18:01:26 -0300 Subject: [PATCH 035/846] ci: add missing "&&" --- dev/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index e6173cd508..539dd88af7 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -13,7 +13,7 @@ COPY ./dev/build/celery-start.sh ./celery-start.sh RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt RUN chmod +x datatracker-start.sh && \ - chmod +x celery-start.sh \ + chmod +x celery-start.sh && \ chmod +x docker/scripts/app-create-dirs.sh && \ sh ./docker/scripts/app-create-dirs.sh From bf74f2db31a9ae5abd18de3cd2ed31b6e4663006 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 Mar 2024 18:25:50 -0300 Subject: [PATCH 036/846] ci: still need to chmod start.sh --- dev/build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 539dd88af7..fe1b51f0bd 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -12,7 +12,8 @@ COPY ./dev/build/celery-start.sh ./celery-start.sh RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt -RUN chmod +x datatracker-start.sh && \ +RUN chmod +x start.sh && \ + chmod +x datatracker-start.sh && \ chmod +x celery-start.sh && \ chmod +x docker/scripts/app-create-dirs.sh && \ sh ./docker/scripts/app-create-dirs.sh From 6ed19bb2abdaa077f6004a0822980548f1880715 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 Mar 2024 18:40:07 -0300 Subject: [PATCH 037/846] ci: nearly deployable helm chart (wip) (#7176) * style: CRLF -> LF * build: Use AppVersion for image * chore: Helm YAML indent_size = 2 * ci: Deploy settings_local.py via helm * ci: misc progress on the helm chart (WIP) * ci: move configmap to env in values.yaml * ci: Refactor env and configmap formats * ci: merge fixup + helm debugging * ci: Fix rabbitmq.yaml and its values * ci: fix up other deployments * ci: fix copy error in beat.yaml and celery.yaml * ci: install correct images and volumes --- .editorconfig | 6 + helm/settings_local.py | 121 ++++++++++++++ helm/templates/_helpers.tpl | 2 +- helm/templates/configmap.yaml | 7 + helm/templates/deployments/beat.yaml | 139 ++++++++-------- helm/templates/deployments/celery.yaml | 45 ++--- helm/templates/deployments/datatracker.yaml | 47 +++--- helm/templates/deployments/memcached.yaml | 43 ++--- helm/templates/deployments/rabbitmq.yaml | 43 ++--- helm/templates/ingress.yaml | 4 +- helm/templates/rbac/beat-serviceaccount.yaml | 4 +- .../templates/rbac/celery-serviceaccount.yaml | 4 +- .../rbac/datatracker-serviceaccount.yaml | 4 +- .../rbac/memcached-serviceaccount.yaml | 4 +- .../rbac/rabbitmq-serviceaccount.yaml | 4 +- helm/values.yaml | 156 ++++++++++++++---- 16 files changed, 437 insertions(+), 196 deletions(-) create mode 100644 helm/settings_local.py create mode 100644 helm/templates/configmap.yaml diff --git a/.editorconfig b/.editorconfig index d6eafe8d8f..35c9168a28 100644 --- a/.editorconfig +++ b/.editorconfig @@ -50,3 +50,9 @@ indent_size = 2 [ietf/**.html] insert_final_newline = false + +# Settings for Helm chart yaml +# --------------------------------------------------------- +# Use 2-space indents +[helm/**.yaml] +indent_size = 2 \ No newline at end of file diff --git a/helm/settings_local.py b/helm/settings_local.py new file mode 100644 index 0000000000..3434b54205 --- /dev/null +++ b/helm/settings_local.py @@ -0,0 +1,121 @@ +# Copyright The IETF Trust 2007-2024, All Rights Reserved +# -*- coding: utf-8 -*- + +from ietf.settings import * # pyflakes:ignore + +ALLOWED_HOSTS = ['*'] + +DATABASES = { + "default": { + "HOST": os.environ.get("DBHOST", "db"), + "PORT": os.environ.get("DBPORT", "5432"), + "NAME": os.environ.get("DBNAME", "datatracker"), + "ENGINE": "django.db.backends.postgresql", + "USER": os.environ.get("DBUSER", "django"), + "PASSWORD": os.environ.get("DBPASS", ""), + }, +} + +SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY") + +CELERY_BROKER_URL = os.environ.get("CELERY_BROKER_URL") + +IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" +IDSUBMIT_REPOSITORY_PATH = "/test/id/" +IDSUBMIT_STAGING_PATH = "/test/staging/" + +AGENDA_PATH = "/assets/www6s/proceedings/" +MEETINGHOST_LOGO_PATH = AGENDA_PATH + +USING_DEBUG_EMAIL_SERVER=True +EMAIL_HOST= "localhost" +EMAIL_PORT=2025 + +MEDIA_BASE_DIR = "/assets" +MEDIA_ROOT = MEDIA_BASE_DIR + "/media/" +MEDIA_URL = "/media/" + +PHOTOS_DIRNAME = "photo" +PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME + +SUBMIT_YANG_CATALOG_MODEL_DIR = "/assets/ietf-ftp/yang/catalogmod/" +SUBMIT_YANG_DRAFT_MODEL_DIR = "/assets/ietf-ftp/yang/draftmod/" +SUBMIT_YANG_INVAL_MODEL_DIR = "/assets/ietf-ftp/yang/invalmod/" +SUBMIT_YANG_IANA_MODEL_DIR = "/assets/ietf-ftp/yang/ianamod/" +SUBMIT_YANG_RFC_MODEL_DIR = "/assets/ietf-ftp/yang/rfcmod/" + +# Set INTERNAL_IPS for use within Docker. See https://knasmueller.net/fix-djangos-debug-toolbar-not-showing-inside-docker +import socket +hostname, _, ips = socket.gethostbyname_ex(socket.gethostname()) +INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips] + +# DEV_TEMPLATE_CONTEXT_PROCESSORS = [ +# 'ietf.context_processors.sql_debug', +# ] + +DOCUMENT_PATH_PATTERN = "/assets/ietfdata/doc/{doc.type_id}/" +INTERNET_DRAFT_PATH = "/assets/ietf-ftp/internet-drafts/" +RFC_PATH = "/assets/ietf-ftp/rfc/" +CHARTER_PATH = "/assets/ietf-ftp/charter/" +BOFREQ_PATH = "/assets/ietf-ftp/bofreq/" +CONFLICT_REVIEW_PATH = "/assets/ietf-ftp/conflict-reviews/" +STATUS_CHANGE_PATH = "/assets/ietf-ftp/status-changes/" +INTERNET_DRAFT_ARCHIVE_DIR = "/assets/archive/id" +INTERNET_ALL_DRAFTS_ARCHIVE_DIR = "/assets/archive/id" +BIBXML_BASE_PATH = "/assets/ietfdata/derived/bibxml" +IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH + +NOMCOM_PUBLIC_KEYS_DIR = "data/nomcom_keys/public_keys/" +SLIDE_STAGING_PATH = "/test/staging/" + +# todo check that de-gfm is in place +DE_GFM_BINARY = "/usr/local/bin/de-gfm" + +# OIDC configuration +SITE_URL = os.environ.get("OIDC_SITE_URL") + +# todo: parameterize memcached url in settings.py +MEMCACHED_HOST = os.environ.get("DTH_DATATRACKER_MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_PORT = os.environ.get("DTH_DATATRACKER_MEMCACHED_SERVICE_PORT", "11211") +from ietf import __version__ +CACHES = { + "default": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + "VERSION": __version__, + "KEY_PREFIX": "ietf:dt", + "KEY_FUNCTION": lambda key, key_prefix, version: ( + f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" + ), + }, + "sessions": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt", + }, + "htmlized": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/htmlized", + "OPTIONS": { + "MAX_ENTRIES": 100000, # 100,000 + }, + }, + "pdfized": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/pdfized", + "OPTIONS": { + "MAX_ENTRIES": 100000, # 100,000 + }, + }, + "slowpages": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/slowpages", + "OPTIONS": { + "MAX_ENTRIES": 5000, + }, + }, +} + +# Normally only set for debug, but needed until we have a real FS +DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index 0f6d455856..4da0ff5df8 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -176,4 +176,4 @@ Create the name of the service account to use {{- else -}} {{ default "default" .Values.serviceAccounts.memcached.name }} {{- end -}} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml new file mode 100644 index 0000000000..904efe8622 --- /dev/null +++ b/helm/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: django-configmap +data: + settings_local.py: |- + {{- .Files.Get "settings_local.py" | indent 4 }} diff --git a/helm/templates/deployments/beat.yaml b/helm/templates/deployments/beat.yaml index 41f76b7f4f..bfb3e99b14 100644 --- a/helm/templates/deployments/beat.yaml +++ b/helm/templates/deployments/beat.yaml @@ -1,67 +1,72 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} - env: - CONTAINER_ROLE: beat - {{- if .Values.env }} - {{- toYaml .Values.env | nindent 12 }} - {{- end }} - {{- with .Values.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.beat.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + {{- $podValues := .Values.beat }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with $podValues.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName.beat" . }} + securityContext: + {{- toYaml $podValues.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + env: + - name: "CONTAINER_ROLE" + value: "beat" + {{- if .Values.env }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with $podValues.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml $podValues.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml $podValues.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml $podValues.startupProbe | nindent 12 }} + resources: + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index f346783072..ab12ce66e7 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -1,12 +1,13 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "datatracker.fullname" . }} + name: {{ include "datatracker.celery.fullname" . }} labels: {{- include "datatracker.labels" . | nindent 4 }} spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- $podValues := .Values.celery }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} @@ -15,25 +16,29 @@ spec: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} spec: - {{- with .Values.imagePullSecrets }} + {{- with $podValues.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + serviceAccountName: {{ include "datatracker.serviceAccountName.celery" . }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} env: - CONTAINER_ROLE: celery + - name: "CONTAINER_ROLE" + value: "celery" {{- if .Values.env }} - {{- toYaml .Values.env | nindent 12 }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} {{- end }} - {{- with .Values.volumeMounts }} + {{- end }} + {{- with $podValues.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} @@ -42,26 +47,26 @@ spec: containerPort: 8000 protocol: TCP livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml $podValues.livenessProbe | nindent 12 }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml $podValues.readinessProbe | nindent 12 }} startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} + {{- toYaml $podValues.startupProbe | nindent 12 }} resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.affinity }} + {{- with $podValues.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.tolerations }} + {{- with $podValues.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.volumes }} + {{- with $podValues.volumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index 1f403787e2..1ee4a7b6d0 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -1,12 +1,13 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "datatracker.fullname" . }} + name: {{ include "datatracker.datatracker.fullname" . }} labels: {{- include "datatracker.labels" . | nindent 4 }} spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- $podValues := .Values.datatracker }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} @@ -15,25 +16,29 @@ spec: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} spec: - {{- with .Values.imagePullSecrets }} + {{- with $podValues.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + serviceAccountName: {{ include "datatracker.serviceAccountName.datatracker" . }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} env: - CONTAINER_ROLE: datatracker - {{- if .Values.env }} - {{- toYaml .Values.env | nindent 12 }} + - name: "CONTAINER_ROLE" + value: "datatracker" + {{- if $.Values.env }} + {{- range $key, $val := $.Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} {{- end }} - {{- with .Values.volumeMounts }} + {{- end }} + {{- with $podValues.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} @@ -42,26 +47,26 @@ spec: containerPort: 8000 protocol: TCP livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml $podValues.livenessProbe | nindent 12 }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml $podValues.readinessProbe | nindent 12 }} startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} + {{- toYaml $podValues.startupProbe | nindent 12 }} resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.affinity }} + {{- with $podValues.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.tolerations }} + {{- with $podValues.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.volumes }} + {{- with $podValues.volumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml index 41f76b7f4f..02d4401832 100644 --- a/helm/templates/deployments/memcached.yaml +++ b/helm/templates/deployments/memcached.yaml @@ -1,12 +1,13 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "datatracker.fullname" . }} + name: {{ include "datatracker.memcached.fullname" . }} labels: {{- include "datatracker.labels" . | nindent 4 }} spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- $podValues := .Values.memcached }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} @@ -15,25 +16,27 @@ spec: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} spec: - {{- with .Values.imagePullSecrets }} + {{- with $podValues.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + serviceAccountName: {{ include "datatracker.serviceAccountName.memcached" . }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} env: - CONTAINER_ROLE: beat {{- if .Values.env }} - {{- toYaml .Values.env | nindent 12 }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} {{- end }} - {{- with .Values.volumeMounts }} + {{- end }} + {{- with $podValues.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} @@ -42,26 +45,26 @@ spec: containerPort: 8000 protocol: TCP livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml $podValues.livenessProbe | nindent 12 }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml $podValues.readinessProbe | nindent 12 }} startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} + {{- toYaml $podValues.startupProbe | nindent 12 }} resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.affinity }} + {{- with $podValues.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.tolerations }} + {{- with $podValues.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.volumes }} + {{- with $podValues.volumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/helm/templates/deployments/rabbitmq.yaml b/helm/templates/deployments/rabbitmq.yaml index 41f76b7f4f..bf72d5b4b9 100644 --- a/helm/templates/deployments/rabbitmq.yaml +++ b/helm/templates/deployments/rabbitmq.yaml @@ -1,12 +1,13 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "datatracker.fullname" . }} + name: {{ include "datatracker.rabbitmq.fullname" . }} labels: {{- include "datatracker.labels" . | nindent 4 }} spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- $podValues := .Values.rabbitmq }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} @@ -15,25 +16,27 @@ spec: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} spec: - {{- with .Values.imagePullSecrets }} + {{- with $podValues.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName" . }} + serviceAccountName: {{ include "datatracker.serviceAccountName.rabbitmq" . }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ default "latest" .Values.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.image.imagePullPolicy }} + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.pullPolicy }} env: - CONTAINER_ROLE: beat {{- if .Values.env }} - {{- toYaml .Values.env | nindent 12 }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} {{- end }} - {{- with .Values.volumeMounts }} + {{- end }} + {{- with $podValues.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} @@ -42,26 +45,26 @@ spec: containerPort: 8000 protocol: TCP livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml $podValues.livenessProbe | nindent 12 }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml $podValues.readinessProbe | nindent 12 }} startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} + {{- toYaml $podValues.startupProbe | nindent 12 }} resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.affinity }} + {{- with $podValues.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.tolerations }} + {{- with $podValues.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.volumes }} + {{- with $podValues.volumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index 68034601a5..be9207658c 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,6 +1,6 @@ {{- if .Values.datatracker.ingress.enabled -}} {{- $fullName := include "datatracker.fullname" . -}} -{{- $svcPort := .Values.service.port -}} +{{- $svcPort := .Values.datatracker.service.port -}} {{- if and .Values.datatracker.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class") }} {{- $_ := set .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class" .Values.datatracker.ingress.className}} @@ -58,4 +58,4 @@ spec: {{- end }} {{- end }} {{- end }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/helm/templates/rbac/beat-serviceaccount.yaml b/helm/templates/rbac/beat-serviceaccount.yaml index f9fa5830c3..85331d76dd 100644 --- a/helm/templates/rbac/beat-serviceaccount.yaml +++ b/helm/templates/rbac/beat-serviceaccount.yaml @@ -4,9 +4,9 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.beat" . }} labels: - {{- include "datatracker.beat.labels" . | nindent 4 }} + {{- include "datatracker.labels" . | nindent 4 }} {{- with .Values.serviceAccounts.beat.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/helm/templates/rbac/celery-serviceaccount.yaml b/helm/templates/rbac/celery-serviceaccount.yaml index 267d1dce3e..8f8876f08d 100644 --- a/helm/templates/rbac/celery-serviceaccount.yaml +++ b/helm/templates/rbac/celery-serviceaccount.yaml @@ -4,9 +4,9 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.celery" . }} labels: - {{- include "datatracker.celery.labels" . | nindent 4 }} + {{- include "datatracker.labels" . | nindent 4 }} {{- with .Values.serviceAccounts.celery.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/helm/templates/rbac/datatracker-serviceaccount.yaml b/helm/templates/rbac/datatracker-serviceaccount.yaml index 8f37799ba7..67b38cf0f2 100644 --- a/helm/templates/rbac/datatracker-serviceaccount.yaml +++ b/helm/templates/rbac/datatracker-serviceaccount.yaml @@ -4,9 +4,9 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.datatracker" . }} labels: - {{- include "datatracker.datatracker.labels" . | nindent 4 }} + {{- include "datatracker.labels" . | nindent 4 }} {{- with .Values.serviceAccounts.datatracker.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/helm/templates/rbac/memcached-serviceaccount.yaml b/helm/templates/rbac/memcached-serviceaccount.yaml index ba150a4065..6674dccff7 100644 --- a/helm/templates/rbac/memcached-serviceaccount.yaml +++ b/helm/templates/rbac/memcached-serviceaccount.yaml @@ -4,9 +4,9 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.memcached" . }} labels: - {{- include "datatracker.memcached.labels" . | nindent 4 }} + {{- include "datatracker.labels" . | nindent 4 }} {{- with .Values.serviceAccounts.memcached.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/helm/templates/rbac/rabbitmq-serviceaccount.yaml b/helm/templates/rbac/rabbitmq-serviceaccount.yaml index c9ce127482..e0b81d11f7 100644 --- a/helm/templates/rbac/rabbitmq-serviceaccount.yaml +++ b/helm/templates/rbac/rabbitmq-serviceaccount.yaml @@ -4,9 +4,9 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} labels: - {{- include "datatracker.rabbitmq.labels" . | nindent 4 }} + {{- include "datatracker.labels" . | nindent 4 }} {{- with .Values.serviceAccounts.rabbitmq.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/helm/values.yaml b/helm/values.yaml index 31f5e25cf8..2c549382ba 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -7,23 +7,23 @@ serviceAccounts: datatracker: create: true - name: + name: datatracker annotations: {} celery: create: true - name: + name: celery annotations: {} beat: create: true - name: + name: beat annotations: {} rabbitmq: create: true - name: + name: rabbitmq annotations: {} memcached: create: true - name: + name: memcached annotations: {} # ------------------------------------------------------------- @@ -31,6 +31,7 @@ serviceAccounts: # ------------------------------------------------------------- datatracker: + name: datatracker image: repository: "ghcr.io/ietf-tools/datatracker" pullPolicy: IfNotPresent @@ -59,7 +60,8 @@ datatracker: livenessProbe: httpGet: - path: /health + # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint + path: /submit/tool-instructions/ port: http podAnnotations: {} @@ -68,10 +70,11 @@ datatracker: podSecurityContext: {} # fsGroup: 2000 - readinessProbe: - httpGet: - path: /health - port: http +#readinessProbe: +# httpGet: +# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint +# path: /submit/tool-instructions/ +# port: http replicaCount: 1 @@ -117,18 +120,36 @@ datatracker: successThreshold: 1 failureThreshold: 60 httpGet: - path: /health + # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint + path: /submit/tool-instructions/ port: http # Additional volumes on the output Deployment definition. - volumes: [] + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret # optional: false # Additional volumeMounts on the output Deployment definition. - volumeMounts: [] + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -144,6 +165,7 @@ datatracker: # ------------------------------------------------------------- celery: + name: celery image: repository: "ghcr.io/ietf-tools/datatracker" pullPolicy: IfNotPresent @@ -156,7 +178,10 @@ celery: livenessProbe: exec: - command: celery inspect ping + command: + - celery + - inspect + - ping periodSeconds: 30 timeoutSeconds: 5 @@ -210,17 +235,37 @@ celery: successThreshold: 1 failureThreshold: 60 exec: - command: celery inspect ping + command: + - celery + - inspect + - ping # Additional volumes on the output Deployment definition. - volumes: [] + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret # optional: false # Additional volumeMounts on the output Deployment definition. - volumeMounts: [] + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -236,6 +281,7 @@ celery: # ------------------------------------------------------------- beat: + name: beat image: repository: "ghcr.io/ietf-tools/datatracker" pullPolicy: IfNotPresent @@ -248,7 +294,10 @@ beat: livenessProbe: exec: - command: celery inspect ping + command: + - celery + - inspect + - ping periodSeconds: 30 timeoutSeconds: 5 @@ -302,17 +351,37 @@ beat: successThreshold: 1 failureThreshold: 60 exec: - command: celery inspect ping + command: + - celery + - inspect + - ping # Additional volumes on the output Deployment definition. - volumes: [] + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret # optional: false # Additional volumeMounts on the output Deployment definition. - volumeMounts: [] + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -328,6 +397,7 @@ beat: # ------------------------------------------------------------- rabbitmq: + name: rabbitmq image: repository: "ghcr.io/ietf-tools/datatracker-mq" pullPolicy: IfNotPresent @@ -339,7 +409,10 @@ rabbitmq: livenessProbe: exec: - command: rabbitmq-diagnostics -q ping + command: + - rabbitmq-diagnostics + - -q + - ping periodSeconds: 30 timeoutSeconds: 5 @@ -393,20 +466,23 @@ rabbitmq: successThreshold: 1 failureThreshold: 60 exec: - command: rabbitmq-diagnostics -q ping + command: + - rabbitmq-diagnostics + - -q + - ping # Additional volumes on the output Deployment definition. volumes: [] - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. volumeMounts: [] - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true tolerations: [] @@ -419,10 +495,11 @@ rabbitmq: # ------------------------------------------------------------- memcached: + name: memcached image: repository: "memcached" pullPolicy: IfNotPresent - tag: "latest" + tag: "1.6-alpine" imagePullSecrets: [] nameOverride: "" @@ -458,7 +535,7 @@ memcached: service: type: ClusterIP - port: 80 + port: 11211 serviceAccount: # Specifies whether a service account should be created @@ -486,4 +563,13 @@ autoscaling: minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 \ No newline at end of file + # targetMemoryUtilizationPercentage: 80 + +env: + # n.b., these are debug values / non-secret secrets + # DBHOST: "host.minikube.internal" + # DBPORT: "5432" + DBNAME: "datatracker" + DBUSER: "django" + DBPASS: "RkTkDPFnKpko" + DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" From dca77db2507d1d93f32dad420485807d68d42ebd Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 12 Mar 2024 18:55:27 -0300 Subject: [PATCH 038/846] ci: package and push helm chart --- .github/workflows/build.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd65da036c..3ac2441a84 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -248,6 +248,17 @@ jobs: push: true tags: ghcr.io/ietf-tools/datatracker:${{ env.PKG_VERSION }} + - name: Package and Push Chart + env: + VERSION: 2.0.${{ github.run_number }} + run: | + echo "Setting version ${{ env.PKG_VERSION }}..." + sed -i -r -e "s|^version: .*$|version: '${{ env.PKG_VERSION }}'|" -e "s|^appVersion: .*$|appVersion: '${{ env.PKG_VERSION }}'|" helm/Chart.yaml + helm plugin install https://github.com/chartmuseum/helm-push.git + helm repo add chartmuseum https://charts.ietf.org + helm cm-push --version="${{ env.PKG_VERSION }}" --username="${{ secrets.HELM_REPO_USERNAME }}" --password="${{ secrets.HELM_REPO_PASSWORD }}" helm/ chartmuseum + helm repo remove chartmuseum + - name: Update CHANGELOG id: changelog uses: Requarks/changelog-action@v1 From cd225018f9fdbe8427f2edc1b873c0c5c174e2d0 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sat, 16 Mar 2024 01:18:23 +1000 Subject: [PATCH 039/846] ci: Memcached service (#7185) * ci: service.yaml -> services/datatracker.yaml * ci: memcached service * ci: simplify memcached service name * ci: Use correct service.type for memcached --- helm/settings_local.py | 4 +-- helm/templates/deployments/memcached.yaml | 4 +-- .../datatracker.yaml} | 36 +++++++++---------- helm/templates/services/memcached.yaml | 19 ++++++++++ 4 files changed, 41 insertions(+), 22 deletions(-) rename helm/templates/{service.yaml => services/datatracker.yaml} (96%) create mode 100644 helm/templates/services/memcached.yaml diff --git a/helm/settings_local.py b/helm/settings_local.py index 3434b54205..993c8c3276 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -75,8 +75,8 @@ SITE_URL = os.environ.get("OIDC_SITE_URL") # todo: parameterize memcached url in settings.py -MEMCACHED_HOST = os.environ.get("DTH_DATATRACKER_MEMCACHED_SERVICE_HOST", "127.0.0.1") -MEMCACHED_PORT = os.environ.get("DTH_DATATRACKER_MEMCACHED_SERVICE_PORT", "11211") +MEMCACHED_HOST = os.environ.get(f"MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") from ietf import __version__ CACHES = { "default": { diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml index 02d4401832..36ef484666 100644 --- a/helm/templates/deployments/memcached.yaml +++ b/helm/templates/deployments/memcached.yaml @@ -41,8 +41,8 @@ spec: {{- toYaml . | nindent 12 }} {{- end }} ports: - - name: http - containerPort: 8000 + - name: memcached + containerPort: 11211 protocol: TCP livenessProbe: {{- toYaml $podValues.livenessProbe | nindent 12 }} diff --git a/helm/templates/service.yaml b/helm/templates/services/datatracker.yaml similarity index 96% rename from helm/templates/service.yaml rename to helm/templates/services/datatracker.yaml index e7b310f98f..2fbea5826f 100644 --- a/helm/templates/service.yaml +++ b/helm/templates/services/datatracker.yaml @@ -1,19 +1,19 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{include "datatracker.fullname" .}} - labels: {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.datatracker.service.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: - type: {{.Values.datatracker.service.type}} - ports: - - port: {{ default "80" .Values.datatracker.service.port}} - targetPort: http - protocol: TCP - name: http +apiVersion: v1 +kind: Service +metadata: + name: {{include "datatracker.fullname" .}} + labels: {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.datatracker.service.annotations }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + type: {{.Values.datatracker.service.type}} + ports: + - port: {{ default "80" .Values.datatracker.service.port}} + targetPort: http + protocol: TCP + name: http selector: {{- include "datatracker.selectorLabels" . | nindent 4}} \ No newline at end of file diff --git a/helm/templates/services/memcached.yaml b/helm/templates/services/memcached.yaml new file mode 100644 index 0000000000..1337571b04 --- /dev/null +++ b/helm/templates/services/memcached.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: memcached + labels: {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.memcached.service.annotations }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + type: {{.Values.memcached.service.type}} + ports: + - port: {{ default "11211" .Values.memcached.service.port}} + targetPort: memcached + protocol: TCP + name: memcached + selector: {{- include "datatracker.selectorLabels" . | nindent 4}} From f91ea458138b96a85a27a97e96c8af7ed70345e6 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Sat, 16 Mar 2024 21:27:16 -0500 Subject: [PATCH 040/846] chore: CRLF -> LF (#7214) --- helm/.helmignore | 44 +- helm/Chart.yaml | 44 +- helm/templates/_helpers.tpl | 358 ++--- helm/templates/deployments/celery.yaml | 144 +-- helm/templates/deployments/datatracker.yaml | 144 +-- helm/templates/deployments/memcached.yaml | 140 +- helm/templates/deployments/rabbitmq.yaml | 140 +- helm/templates/hpa.yaml | 62 +- helm/templates/ingress.yaml | 122 +- helm/templates/rbac/beat-serviceaccount.yaml | 24 +- .../templates/rbac/celery-serviceaccount.yaml | 24 +- .../rbac/datatracker-serviceaccount.yaml | 24 +- .../rbac/memcached-serviceaccount.yaml | 24 +- .../rbac/rabbitmq-serviceaccount.yaml | 24 +- helm/values.yaml | 1150 ++++++++--------- 15 files changed, 1234 insertions(+), 1234 deletions(-) diff --git a/helm/.helmignore b/helm/.helmignore index 2252590f2e..691fa13d6a 100644 --- a/helm/.helmignore +++ b/helm/.helmignore @@ -1,23 +1,23 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj .vscode/ \ No newline at end of file diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 1c19834c06..844087fa69 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -1,23 +1,23 @@ -apiVersion: v2 -name: datatracker -description: The day-to-day front-end to the IETF database for people who work on IETF standards. -home: https://datatracker.ietf.org -sources: - - https://github.com/ietf-tools/datatracker -maintainers: - - name: IETF Tools Team - email: tools-discuss@ietf.org - url: https://github.com/ietf-tools - -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. +apiVersion: v2 +name: datatracker +description: The day-to-day front-end to the IETF database for people who work on IETF standards. +home: https://datatracker.ietf.org +sources: + - https://github.com/ietf-tools/datatracker +maintainers: + - name: IETF Tools Team + email: tools-discuss@ietf.org + url: https://github.com/ietf-tools + +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 1.0.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. appVersion: "1.0.0" \ No newline at end of file diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index 4da0ff5df8..268f0e75dc 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -1,179 +1,179 @@ -{{/* - Expand the name of the chart. - */}} -{{- define "datatracker.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "datatracker.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create a fully qualified datatracker name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.datatracker.fullname" -}} -{{- if .Values.datatracker.fullnameOverride -}} -{{- .Values.datatracker.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified celery name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.celery.fullname" -}} -{{- if .Values.celery.fullnameOverride -}} -{{- .Values.celery.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.celery.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.celery.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified celery name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.beat.fullname" -}} -{{- if .Values.beat.fullnameOverride -}} -{{- .Values.beat.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.beat.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.beat.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified rabbitmq name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.rabbitmq.fullname" -}} -{{- if .Values.rabbitmq.fullnameOverride -}} -{{- .Values.rabbitmq.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified memcached name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.memcached.fullname" -}} -{{- if .Values.memcached.fullnameOverride -}} -{{- .Values.memcached.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "datatracker.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "datatracker.labels" -}} -helm.sh/chart: {{ include "datatracker.chart" . }} -{{ include "datatracker.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "datatracker.selectorLabels" -}} -app.kubernetes.io/name: {{ include "datatracker.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "datatracker.serviceAccountName.datatracker" -}} -{{- if .Values.serviceAccounts.datatracker.create -}} - {{ default (include "datatracker.datatracker.fullname" .) .Values.serviceAccounts.datatracker.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.datatracker.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.celery" -}} -{{- if .Values.serviceAccounts.celery.create -}} - {{ default (include "datatracker.celery.fullname" .) .Values.serviceAccounts.celery.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.celery.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.beat" -}} -{{- if .Values.serviceAccounts.beat.create -}} - {{ default (include "datatracker.beat.fullname" .) .Values.serviceAccounts.beat.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.beat.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.rabbitmq" -}} -{{- if .Values.serviceAccounts.rabbitmq.create -}} - {{ default (include "datatracker.rabbitmq.fullname" .) .Values.serviceAccounts.rabbitmq.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.rabbitmq.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.memcached" -}} -{{- if .Values.serviceAccounts.memcached.create -}} - {{ default (include "datatracker.memcached.fullname" .) .Values.serviceAccounts.memcached.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.memcached.name }} -{{- end -}} -{{- end }} +{{/* + Expand the name of the chart. + */}} +{{- define "datatracker.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "datatracker.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create a fully qualified datatracker name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.datatracker.fullname" -}} +{{- if .Values.datatracker.fullnameOverride -}} +{{- .Values.datatracker.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified celery name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.celery.fullname" -}} +{{- if .Values.celery.fullnameOverride -}} +{{- .Values.celery.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.celery.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.celery.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified celery name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.beat.fullname" -}} +{{- if .Values.beat.fullnameOverride -}} +{{- .Values.beat.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.beat.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.beat.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified rabbitmq name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.rabbitmq.fullname" -}} +{{- if .Values.rabbitmq.fullnameOverride -}} +{{- .Values.rabbitmq.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a fully qualified memcached name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "datatracker.memcached.fullname" -}} +{{- if .Values.memcached.fullnameOverride -}} +{{- .Values.memcached.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- printf "%s-%s" .Release.Name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s-%s" .Release.Name $name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "datatracker.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "datatracker.labels" -}} +helm.sh/chart: {{ include "datatracker.chart" . }} +{{ include "datatracker.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "datatracker.selectorLabels" -}} +app.kubernetes.io/name: {{ include "datatracker.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "datatracker.serviceAccountName.datatracker" -}} +{{- if .Values.serviceAccounts.datatracker.create -}} + {{ default (include "datatracker.datatracker.fullname" .) .Values.serviceAccounts.datatracker.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.datatracker.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.celery" -}} +{{- if .Values.serviceAccounts.celery.create -}} + {{ default (include "datatracker.celery.fullname" .) .Values.serviceAccounts.celery.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.celery.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.beat" -}} +{{- if .Values.serviceAccounts.beat.create -}} + {{ default (include "datatracker.beat.fullname" .) .Values.serviceAccounts.beat.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.beat.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.rabbitmq" -}} +{{- if .Values.serviceAccounts.rabbitmq.create -}} + {{ default (include "datatracker.rabbitmq.fullname" .) .Values.serviceAccounts.rabbitmq.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.rabbitmq.name }} +{{- end -}} +{{- end }} + +{{- define "datatracker.serviceAccountName.memcached" -}} +{{- if .Values.serviceAccounts.memcached.create -}} + {{ default (include "datatracker.memcached.fullname" .) .Values.serviceAccounts.memcached.name }} +{{- else -}} + {{ default "default" .Values.serviceAccounts.memcached.name }} +{{- end -}} +{{- end }} diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index ab12ce66e7..8dc1643fff 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -1,72 +1,72 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.celery.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - {{- $podValues := .Values.celery }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.celery" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} - env: - - name: "CONTAINER_ROLE" - value: "celery" - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.celery.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + {{- $podValues := .Values.celery }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with $podValues.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName.celery" . }} + securityContext: + {{- toYaml $podValues.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + env: + - name: "CONTAINER_ROLE" + value: "celery" + {{- if .Values.env }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with $podValues.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml $podValues.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml $podValues.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml $podValues.startupProbe | nindent 12 }} + resources: + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index 1ee4a7b6d0..dd4d8e4d82 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -1,72 +1,72 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.datatracker.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - {{- $podValues := .Values.datatracker }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.datatracker" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} - env: - - name: "CONTAINER_ROLE" - value: "datatracker" - {{- if $.Values.env }} - {{- range $key, $val := $.Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + {{- $podValues := .Values.datatracker }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with $podValues.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName.datatracker" . }} + securityContext: + {{- toYaml $podValues.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + env: + - name: "CONTAINER_ROLE" + value: "datatracker" + {{- if $.Values.env }} + {{- range $key, $val := $.Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with $podValues.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml $podValues.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml $podValues.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml $podValues.startupProbe | nindent 12 }} + resources: + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml index 36ef484666..cbc7b3c35a 100644 --- a/helm/templates/deployments/memcached.yaml +++ b/helm/templates/deployments/memcached.yaml @@ -1,70 +1,70 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.memcached.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - {{- $podValues := .Values.memcached }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.memcached" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} - env: - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: memcached - containerPort: 11211 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.memcached.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + {{- $podValues := .Values.memcached }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with $podValues.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName.memcached" . }} + securityContext: + {{- toYaml $podValues.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + env: + {{- if .Values.env }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with $podValues.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: memcached + containerPort: 11211 + protocol: TCP + livenessProbe: + {{- toYaml $podValues.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml $podValues.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml $podValues.startupProbe | nindent 12 }} + resources: + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/deployments/rabbitmq.yaml b/helm/templates/deployments/rabbitmq.yaml index bf72d5b4b9..a44a84a252 100644 --- a/helm/templates/deployments/rabbitmq.yaml +++ b/helm/templates/deployments/rabbitmq.yaml @@ -1,70 +1,70 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.rabbitmq.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - {{- $podValues := .Values.rabbitmq }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.rabbitmq" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.pullPolicy }} - env: - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "datatracker.rabbitmq.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + {{- $podValues := .Values.rabbitmq }} + replicas: {{ $podValues.replicaCount }} + revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "datatracker.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "datatracker.selectorLabels" . | nindent 8 }} + spec: + {{- with $podValues.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "datatracker.serviceAccountName.rabbitmq" . }} + securityContext: + {{- toYaml $podValues.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml $podValues.securityContext | nindent 12 }} + image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.image.pullPolicy }} + env: + {{- if .Values.env }} + {{- range $key, $val := .Values.env }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with $podValues.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + {{- toYaml $podValues.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml $podValues.readinessProbe | nindent 12 }} + startupProbe: + {{- toYaml $podValues.startupProbe | nindent 12 }} + resources: + {{- toYaml $podValues.resources | nindent 12 }} + {{- with $podValues.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with $podValues.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml index 518f7e23ab..5dd889b509 100644 --- a/helm/templates/hpa.yaml +++ b/helm/templates/hpa.yaml @@ -1,32 +1,32 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "datatracker.fullname" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "datatracker.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "datatracker.fullname" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "datatracker.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} {{- end }} \ No newline at end of file diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index be9207658c..c9405ef389 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,61 +1,61 @@ -{{- if .Values.datatracker.ingress.enabled -}} -{{- $fullName := include "datatracker.fullname" . -}} -{{- $svcPort := .Values.datatracker.service.port -}} -{{- if and .Values.datatracker.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class" .Values.datatracker.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.datatracker.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.datatracker.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.datatracker.ingress.className }} - {{- end }} - {{- if .Values.datatracker.ingress.tls }} - tls: - {{- range .Values.datatracker.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.datatracker.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} +{{- if .Values.datatracker.ingress.enabled -}} +{{- $fullName := include "datatracker.fullname" . -}} +{{- $svcPort := .Values.datatracker.service.port -}} +{{- if and .Values.datatracker.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class" .Values.datatracker.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.datatracker.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.datatracker.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.datatracker.ingress.className }} + {{- end }} + {{- if .Values.datatracker.ingress.tls }} + tls: + {{- range .Values.datatracker.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.datatracker.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/helm/templates/rbac/beat-serviceaccount.yaml b/helm/templates/rbac/beat-serviceaccount.yaml index 85331d76dd..bd955aed88 100644 --- a/helm/templates/rbac/beat-serviceaccount.yaml +++ b/helm/templates/rbac/beat-serviceaccount.yaml @@ -1,12 +1,12 @@ -{{- if .Values.serviceAccounts.beat.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.beat" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccounts.beat.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} +{{- if .Values.serviceAccounts.beat.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.beat" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.beat.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/templates/rbac/celery-serviceaccount.yaml b/helm/templates/rbac/celery-serviceaccount.yaml index 8f8876f08d..105b979c60 100644 --- a/helm/templates/rbac/celery-serviceaccount.yaml +++ b/helm/templates/rbac/celery-serviceaccount.yaml @@ -1,12 +1,12 @@ -{{- if .Values.serviceAccounts.celery.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.celery" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccounts.celery.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} +{{- if .Values.serviceAccounts.celery.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.celery" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.celery.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/templates/rbac/datatracker-serviceaccount.yaml b/helm/templates/rbac/datatracker-serviceaccount.yaml index 67b38cf0f2..7786443ada 100644 --- a/helm/templates/rbac/datatracker-serviceaccount.yaml +++ b/helm/templates/rbac/datatracker-serviceaccount.yaml @@ -1,12 +1,12 @@ -{{- if .Values.serviceAccounts.datatracker.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.datatracker" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccounts.datatracker.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} +{{- if .Values.serviceAccounts.datatracker.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.datatracker" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.datatracker.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/templates/rbac/memcached-serviceaccount.yaml b/helm/templates/rbac/memcached-serviceaccount.yaml index 6674dccff7..7f01615b1d 100644 --- a/helm/templates/rbac/memcached-serviceaccount.yaml +++ b/helm/templates/rbac/memcached-serviceaccount.yaml @@ -1,12 +1,12 @@ -{{- if .Values.serviceAccounts.memcached.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.memcached" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccounts.memcached.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} +{{- if .Values.serviceAccounts.memcached.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.memcached" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.memcached.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/templates/rbac/rabbitmq-serviceaccount.yaml b/helm/templates/rbac/rabbitmq-serviceaccount.yaml index e0b81d11f7..015e098da3 100644 --- a/helm/templates/rbac/rabbitmq-serviceaccount.yaml +++ b/helm/templates/rbac/rabbitmq-serviceaccount.yaml @@ -1,12 +1,12 @@ -{{- if .Values.serviceAccounts.rabbitmq.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} - labels: - {{- include "datatracker.labels" . | nindent 4 }} - {{- with .Values.serviceAccounts.rabbitmq.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} +{{- if .Values.serviceAccounts.rabbitmq.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} + labels: + {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.serviceAccounts.rabbitmq.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/values.yaml b/helm/values.yaml index 2c549382ba..cfdef165a2 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -1,575 +1,575 @@ -# Default values for datatracker. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -## Define serviceAccount names for components. Defaults to component's fully qualified name. -## -serviceAccounts: - datatracker: - create: true - name: datatracker - annotations: {} - celery: - create: true - name: celery - annotations: {} - beat: - create: true - name: beat - annotations: {} - rabbitmq: - create: true - name: rabbitmq - annotations: {} - memcached: - create: true - name: memcached - annotations: {} - -# ------------------------------------------------------------- -# DATATRACKER -# ------------------------------------------------------------- - -datatracker: - name: datatracker - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: datatracker.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - - livenessProbe: - httpGet: - # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint - path: /submit/tool-instructions/ - port: http - - podAnnotations: {} - podLabels: {} - - podSecurityContext: {} - # fsGroup: 2000 - -#readinessProbe: -# httpGet: -# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint -# path: /submit/tool-instructions/ -# port: http - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - service: - type: ClusterIP - port: 80 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - httpGet: - # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint - path: /submit/tool-instructions/ - port: http - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# CELERY -# ------------------------------------------------------------- - -celery: - name: celery - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: - - celery - - inspect - - ping - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - podSecurityContext: {} - # fsGroup: 2000 - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - service: - type: ClusterIP - port: 80 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: - - celery - - inspect - - ping - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# BEAT -# ------------------------------------------------------------- - -beat: - name: beat - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: - - celery - - inspect - - ping - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - podSecurityContext: {} - # fsGroup: 2000 - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - service: - type: ClusterIP - port: 80 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: - - celery - - inspect - - ping - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# RABBITMQ -# ------------------------------------------------------------- - -rabbitmq: - name: rabbitmq - image: - repository: "ghcr.io/ietf-tools/datatracker-mq" - pullPolicy: IfNotPresent - tag: "latest" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: - - rabbitmq-diagnostics - - -q - - ping - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - podSecurityContext: {} - # fsGroup: 2000 - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - service: - type: ClusterIP - port: 80 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: - - rabbitmq-diagnostics - - -q - - ping - - # Additional volumes on the output Deployment definition. - volumes: [] - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: [] - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# MEMCACHED -# ------------------------------------------------------------- - -memcached: - name: memcached - image: - repository: "memcached" - pullPolicy: IfNotPresent - tag: "1.6-alpine" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - podAnnotations: {} - podLabels: {} - - podSecurityContext: {} - # fsGroup: 2000 - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - service: - type: ClusterIP - port: 11211 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# COMMON -# ------------------------------------------------------------- - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -env: - # n.b., these are debug values / non-secret secrets - # DBHOST: "host.minikube.internal" - # DBPORT: "5432" - DBNAME: "datatracker" - DBUSER: "django" - DBPASS: "RkTkDPFnKpko" - DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" +# Default values for datatracker. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +## Define serviceAccount names for components. Defaults to component's fully qualified name. +## +serviceAccounts: + datatracker: + create: true + name: datatracker + annotations: {} + celery: + create: true + name: celery + annotations: {} + beat: + create: true + name: beat + annotations: {} + rabbitmq: + create: true + name: rabbitmq + annotations: {} + memcached: + create: true + name: memcached + annotations: {} + +# ------------------------------------------------------------- +# DATATRACKER +# ------------------------------------------------------------- + +datatracker: + name: datatracker + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: datatracker.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + livenessProbe: + httpGet: + # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint + path: /submit/tool-instructions/ + port: http + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + +#readinessProbe: +# httpGet: +# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint +# path: /submit/tool-instructions/ +# port: http + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + httpGet: + # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint + path: /submit/tool-instructions/ + port: http + + # Additional volumes on the output Deployment definition. + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# CELERY +# ------------------------------------------------------------- + +celery: + name: celery + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: + - celery + - inspect + - ping + periodSeconds: 30 + timeoutSeconds: 5 + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: + - celery + - inspect + - ping + + # Additional volumes on the output Deployment definition. + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# BEAT +# ------------------------------------------------------------- + +beat: + name: beat + image: + repository: "ghcr.io/ietf-tools/datatracker" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + # tag: "v1.1.0" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: + - celery + - inspect + - ping + periodSeconds: 30 + timeoutSeconds: 5 + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: + - celery + - inspect + - ping + + # Additional volumes on the output Deployment definition. + volumes: + - name: settings-local-volume + configMap: + name: django-configmap + - name: cache-volume + emptyDir: + sizeLimit: 1Gi + - name: staging-volume + emptyDir: + sizeLimit: 1Gi + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: + - name: settings-local-volume + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + readOnly: true + - name: cache-volume + mountPath: "/a/cache" + - name: staging-volume + mountPath: "/test/staging" + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# RABBITMQ +# ------------------------------------------------------------- + +rabbitmq: + name: rabbitmq + image: + repository: "ghcr.io/ietf-tools/datatracker-mq" + pullPolicy: IfNotPresent + tag: "latest" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + livenessProbe: + exec: + command: + - rabbitmq-diagnostics + - -q + - ping + periodSeconds: 30 + timeoutSeconds: 5 + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 80 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: + - rabbitmq-diagnostics + - -q + - ping + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# MEMCACHED +# ------------------------------------------------------------- + +memcached: + name: memcached + image: + repository: "memcached" + pullPolicy: IfNotPresent + tag: "1.6-alpine" + + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + + podAnnotations: {} + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + replicaCount: 1 + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + service: + type: ClusterIP + port: 11211 + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + tolerations: [] + + nodeSelector: {} + + affinity: {} + +# ------------------------------------------------------------- +# COMMON +# ------------------------------------------------------------- + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +env: + # n.b., these are debug values / non-secret secrets + # DBHOST: "host.minikube.internal" + # DBPORT: "5432" + DBNAME: "datatracker" + DBUSER: "django" + DBPASS: "RkTkDPFnKpko" + DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" From c6372992c609797e0f771e31b32469221df51dda Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 17 Mar 2024 12:35:16 +1000 Subject: [PATCH 041/846] ci: use datatracker image values for celery/beat (#7213) * ci: use datatracker image values for celery/beat * ci: refactor exec command lists as JSON --------- Co-authored-by: Robert Sparks --- helm/templates/deployments/beat.yaml | 4 +-- helm/templates/deployments/celery.yaml | 4 +-- helm/values.yaml | 44 ++++++++------------------ 3 files changed, 18 insertions(+), 34 deletions(-) diff --git a/helm/templates/deployments/beat.yaml b/helm/templates/deployments/beat.yaml index bfb3e99b14..6f7409fb9c 100644 --- a/helm/templates/deployments/beat.yaml +++ b/helm/templates/deployments/beat.yaml @@ -27,8 +27,8 @@ spec: - name: {{ .Chart.Name }} securityContext: {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + image: "{{ default $.Values.datatracker.image.repository $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" + imagePullPolicy: {{ default "IfNotPresent" (default $.Values.datatracker.image.imagePullPolicy $podValues.image.imagePullPolicy) }} env: - name: "CONTAINER_ROLE" value: "beat" diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index 8dc1643fff..f1f043abbd 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -27,8 +27,8 @@ spec: - name: {{ .Chart.Name }} securityContext: {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} + image: "{{ default $.Values.datatracker.image.repository $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" + imagePullPolicy: {{ default "IfNotPresent" (default $.Values.datatracker.image.imagePullPolicy $podValues.image.imagePullPolicy) }} env: - name: "CONTAINER_ROLE" value: "celery" diff --git a/helm/values.yaml b/helm/values.yaml index cfdef165a2..68b9344c02 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -166,9 +166,10 @@ datatracker: celery: name: celery - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent + image: {} + # defaults to datatracker settings if not specified separately + #repository: "ghcr.io/ietf-tools/datatracker" + #pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. # tag: "v1.1.0" @@ -178,10 +179,7 @@ celery: livenessProbe: exec: - command: - - celery - - inspect - - ping + command: ["celery", "inspect", "ping"] periodSeconds: 30 timeoutSeconds: 5 @@ -235,10 +233,7 @@ celery: successThreshold: 1 failureThreshold: 60 exec: - command: - - celery - - inspect - - ping + command: ["celery", "inspect", "ping"] # Additional volumes on the output Deployment definition. volumes: @@ -282,9 +277,10 @@ celery: beat: name: beat - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent + image: {} + # defaults to datatracker settings if not specified separately + # repository: "ghcr.io/ietf-tools/datatracker" + # pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. # tag: "v1.1.0" @@ -294,10 +290,7 @@ beat: livenessProbe: exec: - command: - - celery - - inspect - - ping + command: ["celery", "inspect", "ping"] periodSeconds: 30 timeoutSeconds: 5 @@ -351,10 +344,7 @@ beat: successThreshold: 1 failureThreshold: 60 exec: - command: - - celery - - inspect - - ping + command: ["celery", "inspect", "ping"] # Additional volumes on the output Deployment definition. volumes: @@ -409,10 +399,7 @@ rabbitmq: livenessProbe: exec: - command: - - rabbitmq-diagnostics - - -q - - ping + command: ["rabbitmq-diagnostics", "-q", "ping"] periodSeconds: 30 timeoutSeconds: 5 @@ -466,10 +453,7 @@ rabbitmq: successThreshold: 1 failureThreshold: 60 exec: - command: - - rabbitmq-diagnostics - - -q - - ping + command: ["rabbitmq-diagnostics", "-q", "ping"] # Additional volumes on the output Deployment definition. volumes: [] From 0faf4d868cfdceab203a488f70b1b9393eda4172 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 16 Mar 2024 23:05:17 -0400 Subject: [PATCH 042/846] ci: Update Dockerfile --- dev/build/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index fe1b51f0bd..81215c7bfa 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -18,6 +18,9 @@ RUN chmod +x start.sh && \ chmod +x docker/scripts/app-create-dirs.sh && \ sh ./docker/scripts/app-create-dirs.sh +RUN yarn build && \ + yarn legacy:build + RUN mkdir -p /a VOLUME [ "/a" ] From f6db3e8e1b4535eaba32ad5d758af8f4d9b95e55 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 16 Mar 2024 23:11:41 -0400 Subject: [PATCH 043/846] ci: Update Dockerfile --- dev/build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 81215c7bfa..e9ebf3bcba 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -18,7 +18,8 @@ RUN chmod +x start.sh && \ chmod +x docker/scripts/app-create-dirs.sh && \ sh ./docker/scripts/app-create-dirs.sh -RUN yarn build && \ +RUN yarn rebuild && \ + yarn build && \ yarn legacy:build RUN mkdir -p /a From c987bacc95c75077febffa505242a26fd45800ac Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 19 Mar 2024 14:24:39 +1000 Subject: [PATCH 044/846] ci: Rabbitmq progress (wip) (#7233) * ci: rabbitmq service (wip) * ci: customize rabbitmq config --- helm/templates/configmap.yaml | 56 +++++++++++++++++++ helm/templates/services/rabbitmq.yaml | 20 +++++++ .../rabbitmq.yaml | 6 +- helm/values.yaml | 18 ++++-- 4 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 helm/templates/services/rabbitmq.yaml rename helm/templates/{deployments => statefulsets}/rabbitmq.yaml (96%) diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index 904efe8622..89983b5f07 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -5,3 +5,59 @@ metadata: data: settings_local.py: |- {{- .Files.Get "settings_local.py" | indent 4 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: rabbitmq-configmap +data: + definitions.json: |- + { + "permissions": [ + { + "configure": ".*", + "read": ".*", + "user": "datatracker", + "vhost": "dt", + "write": ".*" + } + ], + "users": [ + { + "hashing_algorithm": "rabbit_password_hashing_sha256", + "limits": {}, + "name": "datatracker", + "password_hash": "HJxcItcpXtBN+R/CH7dUelfKBOvdUs3AWo82SBw2yLMSguzb", + "tags": [] + } + ], + "vhosts": [ + { + "limits": [], + "metadata": { + "description": "", + "tags": [] + }, + "name": "dt" + } + ] + } + rabbitmq.conf: |- + # prevent guest from logging in over tcp + loopback_users.guest = true + + # load saved definitions + load_definitions = /etc/rabbitmq/definitions.json + + # Ensure that enough disk is available to flush to disk. To do this, need to limit the + # memory available to the container to something reasonable. See + # https://www.rabbitmq.com/production-checklist.html#monitoring-and-resource-usage + # for recommendations. + + # 1-1.5 times the memory available to the container is adequate for disk limit + disk_free_limit.absolute = 6000MB + + # This should be ~40% of the memory available to the container. Use an + # absolute number because relative will be proprtional to the full machine + # memory. + vm_memory_high_watermark.absolute = 1600MB diff --git a/helm/templates/services/rabbitmq.yaml b/helm/templates/services/rabbitmq.yaml new file mode 100644 index 0000000000..a23c4eaef5 --- /dev/null +++ b/helm/templates/services/rabbitmq.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq + labels: {{- include "datatracker.labels" . | nindent 4 }} + {{- with .Values.rabbitmq.service.annotations }} + annotations: + {{- range $key, $value := . }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + type: {{.Values.rabbitmq.service.type}} + clusterIP: None # headless service + ports: + - port: {{ default "5672" .Values.rabbitmq.service.port}} + targetPort: amqp + protocol: TCP + name: amqp + selector: {{- include "datatracker.selectorLabels" . | nindent 4}} diff --git a/helm/templates/deployments/rabbitmq.yaml b/helm/templates/statefulsets/rabbitmq.yaml similarity index 96% rename from helm/templates/deployments/rabbitmq.yaml rename to helm/templates/statefulsets/rabbitmq.yaml index a44a84a252..cad4f16502 100644 --- a/helm/templates/deployments/rabbitmq.yaml +++ b/helm/templates/statefulsets/rabbitmq.yaml @@ -1,5 +1,5 @@ apiVersion: apps/v1 -kind: Deployment +kind: StatefulSet metadata: name: {{ include "datatracker.rabbitmq.fullname" . }} labels: @@ -41,8 +41,8 @@ spec: {{- toYaml . | nindent 12 }} {{- end }} ports: - - name: http - containerPort: 8000 + - name: amqp + containerPort: 5672 protocol: TCP livenessProbe: {{- toYaml $podValues.livenessProbe | nindent 12 }} diff --git a/helm/values.yaml b/helm/values.yaml index 68b9344c02..dc5c24f065 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -387,11 +387,11 @@ beat: # ------------------------------------------------------------- rabbitmq: - name: rabbitmq + name: "rabbitmq" image: - repository: "ghcr.io/ietf-tools/datatracker-mq" + repository: "rabbitmq" pullPolicy: IfNotPresent - tag: "latest" + tag: "3.13" imagePullSecrets: [] nameOverride: "" @@ -433,7 +433,7 @@ rabbitmq: service: type: ClusterIP - port: 80 + port: 5672 serviceAccount: # Specifies whether a service account should be created @@ -456,14 +456,19 @@ rabbitmq: command: ["rabbitmq-diagnostics", "-q", "ping"] # Additional volumes on the output Deployment definition. - volumes: [] + volumes: + - name: "rabbitmq-config" + configMap: + name: "rabbitmq-configmap" # - name: foo # secret: # secretName: mysecret # optional: false # Additional volumeMounts on the output Deployment definition. - volumeMounts: [] + volumeMounts: + - name: "rabbitmq-config" + mountPath: "/etc/rabbitmq" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -557,3 +562,4 @@ env: DBUSER: "django" DBPASS: "RkTkDPFnKpko" DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" + CELERY_BROKER_URL: "amqp://datatracker:frog@rabbitmq/dt" From f1e6c3729ff1cedde3da9cd007aa06313c57dd7c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 20 Mar 2024 05:21:38 +1000 Subject: [PATCH 045/846] ci: give rabbitmq a persistent volume claim (#7235) * ci: give rabbitmq a persistent volume claim This relies on minikube's dynamic creation of persistent volumes - expect changes likely needed for production deployment. * ci: that's not an f-string * ci: todo is todone --- helm/settings_local.py | 3 +-- helm/templates/persistentvolumeclaims.yaml | 12 ++++++++++++ helm/values.yaml | 7 ++++++- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 helm/templates/persistentvolumeclaims.yaml diff --git a/helm/settings_local.py b/helm/settings_local.py index 993c8c3276..b07b559c44 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -68,14 +68,13 @@ NOMCOM_PUBLIC_KEYS_DIR = "data/nomcom_keys/public_keys/" SLIDE_STAGING_PATH = "/test/staging/" -# todo check that de-gfm is in place DE_GFM_BINARY = "/usr/local/bin/de-gfm" # OIDC configuration SITE_URL = os.environ.get("OIDC_SITE_URL") # todo: parameterize memcached url in settings.py -MEMCACHED_HOST = os.environ.get(f"MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") from ietf import __version__ CACHES = { diff --git a/helm/templates/persistentvolumeclaims.yaml b/helm/templates/persistentvolumeclaims.yaml new file mode 100644 index 0000000000..edf69aebcc --- /dev/null +++ b/helm/templates/persistentvolumeclaims.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: "rabbitmq-data-claim" +spec: +# storageClassName: "local" +# volumeName: "" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi diff --git a/helm/values.yaml b/helm/values.yaml index dc5c24f065..c64105abb1 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -37,7 +37,7 @@ datatracker: pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. # tag: "v1.1.0" - + imagePullSecrets: [] nameOverride: "" fullnameOverride: "" @@ -457,6 +457,9 @@ rabbitmq: # Additional volumes on the output Deployment definition. volumes: + - name: "rabbitmq-data" + persistentVolumeClaim: + claimName: "rabbitmq-data-claim" - name: "rabbitmq-config" configMap: name: "rabbitmq-configmap" @@ -467,6 +470,8 @@ rabbitmq: # Additional volumeMounts on the output Deployment definition. volumeMounts: + - name: "rabbitmq-data" + mountPath: "/var/lib/rabbitmq/mnesia" - name: "rabbitmq-config" mountPath: "/etc/rabbitmq" # - name: foo From b36ff61805e6d0a71b95ef26c57ae65760ce8074 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 19 Mar 2024 19:49:00 -0500 Subject: [PATCH 046/846] feat: use gunicorn (#7215) * feat: use gunicorn * fix: let gunicorn emit logs to stdout/stderr * fix: log to stdout/stderr in json format * fix: run collectstatic for the local copy of the statics --- dev/build/datatracker-start.sh | 16 ++++++++++++- ietf/settings.py | 28 +++++++++++------------ ietf/utils/log.py | 41 ++++++++-------------------------- requirements.txt | 1 + 4 files changed, 39 insertions(+), 47 deletions(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index ef64ca7b30..988b8f5124 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -6,5 +6,19 @@ echo "Running Datatracker checks..." echo "Running Datatracker migrations..." ./ietf/manage.py migrate --settings=settings_local +echo "Running collectstatic..." +./ietf/manage.py collectstatic + echo "Starting Datatracker..." -./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local + +gunicorn \ + --workers 53 \ + --max-requests 32768 \ + --timeout 180 \ + --bind :8000 \ + --log-level info \ + ietf.wsgi:application + + # Leaving this here as a reminder to set up the env in the chart + # Remove this once that's complete. + #--env SCOUT_NAME=Datatracker \ diff --git a/ietf/settings.py b/ietf/settings.py index cd8c0700a1..b80f668f8e 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -236,7 +236,7 @@ def skip_unreadable_post(record): # 'loggers': { 'django': { - 'handlers': ['debug_console', 'mail_admins'], + 'handlers': ['console', 'mail_admins',], 'level': 'INFO', }, 'django.request': { @@ -248,13 +248,17 @@ def skip_unreadable_post(record): 'level': 'INFO', }, 'django.security': { - 'handlers': ['debug_console', ], + 'handlers': ['console', ], + 'level': 'INFO', + }, + 'oidc_provider': { + 'handlers': ['debug_console', ], + 'level': 'DEBUG', + }, + 'datatracker': { + 'handlers': ['console', ], 'level': 'INFO', }, - 'oidc_provider': { - 'handlers': ['debug_console', ], - 'level': 'DEBUG', - }, }, # # No logger filters @@ -263,14 +267,7 @@ def skip_unreadable_post(record): 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', - 'formatter': 'plain', - }, - 'syslog': { - 'level': 'DEBUG', - 'class': 'logging.handlers.SysLogHandler', - 'facility': 'user', - 'formatter': 'plain', - 'address': '/dev/log', + 'formatter': 'json', }, 'debug_console': { # Active only when DEBUG=True @@ -325,6 +322,9 @@ def skip_unreadable_post(record): 'style': '{', 'format': '{levelname}: {name}:{lineno}: {message}', }, + 'json' : { + '()': 'pythonjsonlogger.jsonlogger.JsonFormatter' + } }, } diff --git a/ietf/utils/log.py b/ietf/utils/log.py index d5a54e5516..324e8937f9 100644 --- a/ietf/utils/log.py +++ b/ietf/utils/log.py @@ -10,30 +10,19 @@ import traceback from typing import Callable # pyflakes:ignore - -try: - import syslog - logfunc = syslog.syslog # type: Callable -except ImportError: # import syslog will fail on Windows boxes - logging.basicConfig(filename='tracker.log',level=logging.INFO) - logfunc = logging.info - pass - from django.conf import settings +from pythonjsonlogger import jsonlogger import debug # pyflakes:ignore -formatter = logging.Formatter('{levelname}: {name}:{lineno}: {message}', style='{') +formatter = jsonlogger.JsonFormatter for name, level in settings.UTILS_LOGGER_LEVELS.items(): logger = logging.getLogger(name) if not logger.hasHandlers(): debug.say(' Adding handlers to logger %s' % logger.name) - handlers = [ - logging.StreamHandler(), - logging.handlers.SysLogHandler(address='/dev/log', - facility=logging.handlers.SysLogHandler.LOG_USER), - ] + logging.StreamHandler(), + ] for h in handlers: h.setFormatter(formatter) h.setLevel(level) @@ -56,20 +45,9 @@ def getcaller(): return (pmodule, pclass, pfunction, pfile, pline) def log(msg, e=None): - "Uses syslog by preference. Logs the given calling point and message." - global logfunc - def _flushfunc(): - pass - _logfunc = logfunc - if settings.SERVER_MODE == 'test': - if getattr(settings, 'show_logging', False) is True: - _logfunc = debug.say - _flushfunc = sys.stdout.flush # pyflakes:ignore (intentional redefinition) - else: + "Logs the given calling point and message to the logging framework's datatracker handler at severity INFO" + if settings.SERVER_MODE == 'test' and not getattr(settings, 'show_logging',False): return - elif settings.DEBUG == True: - _logfunc = debug.say - _flushfunc = sys.stdout.flush # pyflakes:ignore (intentional redefinition) if not isinstance(msg, str): msg = msg.encode('unicode_escape') try: @@ -82,11 +60,8 @@ def _flushfunc(): where = " in " + func + "()" except IndexError: file, line, where = "/", 0, "" - _flushfunc() - _logfunc("ietf%s(%d)%s: %s" % (file, line, where, msg)) - -logger = logging.getLogger('django') + logging.getLogger("datatracker").info(msg=msg, extra = {"file":file, "line":line, "where":where}) def exc_parts(): @@ -124,6 +99,7 @@ def assertion(statement, state=True, note=None): This acts like an assertion. It uses the django logger in order to send the failed assertion and a backtrace as for an internal server error. """ + logger = logging.getLogger("django") # Note this is a change - before this would have gone to "django" frame = inspect.currentframe().f_back value = eval(statement, frame.f_globals, frame.f_locals) if bool(value) != bool(state): @@ -148,6 +124,7 @@ def assertion(statement, state=True, note=None): def unreachable(date="(unknown)"): "Raises an assertion or sends traceback to admins if executed." + logger = logging.getLogger("django") frame = inspect.currentframe().f_back if settings.DEBUG is True or settings.SERVER_MODE == 'test': raise AssertionError("Arrived at code in %s() which was marked unreachable on %s." % (frame.f_code.co_name, date)) diff --git a/requirements.txt b/requirements.txt index 9231e400a7..36c0f5d4e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -53,6 +53,7 @@ pyopenssl>=22.0.0 # Used by urllib3.contrib, which is used by PyQuery but not pyquery>=1.4.3 python-dateutil>=2.8.2 types-python-dateutil>=2.8.2 +python-json-logger>=2.0.7 python-magic==0.4.18 # Versions beyond the yanked .19 and .20 introduce form failures pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache python-mimeparse>=1.6 # from TastyPie From ad34104f689f0dda6c6d3423c11b5050d12d41cd Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 20 Mar 2024 16:13:26 +1000 Subject: [PATCH 047/846] ci: Deploy rabbitmq with a password (#7239) --- helm/settings_local.py | 6 +++++- helm/values.yaml | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index b07b559c44..26d8ca8e05 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -18,7 +18,11 @@ SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY") -CELERY_BROKER_URL = os.environ.get("CELERY_BROKER_URL") +CELERY_BROKER_URL = "amqp://datatracker:{password}@{host}/{queue}".format( + host=os.environ.get("RABBITMQ_HOSTNAME", "rabbitmq"), + password=os.environ.get("CELERY_PASSWORD", ""), + queue=os.environ.get("RABBITMQ_QUEUE", "dt") +) IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" IDSUBMIT_REPOSITORY_PATH = "/test/id/" diff --git a/helm/values.yaml b/helm/values.yaml index c64105abb1..2902b346bc 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -179,7 +179,7 @@ celery: livenessProbe: exec: - command: ["celery", "inspect", "ping"] + command: ["celery", "-A", "ietf", "inspect", "ping"] periodSeconds: 30 timeoutSeconds: 5 @@ -233,7 +233,7 @@ celery: successThreshold: 1 failureThreshold: 60 exec: - command: ["celery", "inspect", "ping"] + command: ["celery", "-A", "ietf", "inspect", "ping"] # Additional volumes on the output Deployment definition. volumes: @@ -290,7 +290,7 @@ beat: livenessProbe: exec: - command: ["celery", "inspect", "ping"] + command: ["celery", "-A", "ietf", "inspect", "ping"] periodSeconds: 30 timeoutSeconds: 5 @@ -344,7 +344,7 @@ beat: successThreshold: 1 failureThreshold: 60 exec: - command: ["celery", "inspect", "ping"] + command: ["celery", "-A", "ietf", "inspect", "ping"] # Additional volumes on the output Deployment definition. volumes: @@ -389,9 +389,9 @@ beat: rabbitmq: name: "rabbitmq" image: - repository: "rabbitmq" + repository: "ghcr.io/ietf-tools/datatracker-mq" pullPolicy: IfNotPresent - tag: "3.13" + tag: "3.12-alpine" imagePullSecrets: [] nameOverride: "" @@ -567,4 +567,4 @@ env: DBUSER: "django" DBPASS: "RkTkDPFnKpko" DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" - CELERY_BROKER_URL: "amqp://datatracker:frog@rabbitmq/dt" + CELERY_PASSWORD: "this-is-a-secret" From 1c90789b4989059f5a0612b8bca920bb8050ec0e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 20 Mar 2024 16:40:36 -0500 Subject: [PATCH 048/846] chore: reduce worker count and disable live checks for the datatracker pod (#7240) --- dev/build/datatracker-start.sh | 2 +- helm/values.yaml | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index 988b8f5124..c04834b97b 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -12,7 +12,7 @@ echo "Running collectstatic..." echo "Starting Datatracker..." gunicorn \ - --workers 53 \ + --workers 9 \ --max-requests 32768 \ --timeout 180 \ --bind :8000 \ diff --git a/helm/values.yaml b/helm/values.yaml index 2902b346bc..df75ebb8bc 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -58,11 +58,11 @@ datatracker: # hosts: # - chart-example.local - livenessProbe: - httpGet: - # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint - path: /submit/tool-instructions/ - port: http +# livenessProbe: +# httpGet: +# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint +# path: /submit/tool-instructions/ +# port: http podAnnotations: {} podLabels: {} @@ -113,16 +113,16 @@ datatracker: # If not set and create is true, a name is generated using the fullname template name: "" - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - httpGet: - # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint - path: /submit/tool-instructions/ - port: http +# startupProbe: +# initialDelaySeconds: 15 +# periodSeconds: 5 +# timeoutSeconds: 5 +# successThreshold: 1 +# failureThreshold: 60 +# httpGet: +# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint +# path: /submit/tool-instructions/ +# port: http # Additional volumes on the output Deployment definition. volumes: From 7a238a363e5bb645c535aab96e281736177c2c84 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 26 Mar 2024 09:03:07 -0600 Subject: [PATCH 049/846] ci: collectstatic --no-input (#7252) --- dev/build/datatracker-start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index c04834b97b..1e4c5f52b3 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -7,7 +7,7 @@ echo "Running Datatracker migrations..." ./ietf/manage.py migrate --settings=settings_local echo "Running collectstatic..." -./ietf/manage.py collectstatic +./ietf/manage.py collectstatic --no-input echo "Starting Datatracker..." From e3d02904808b968f02765c83632b16435835945d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 27 Mar 2024 16:02:59 -0300 Subject: [PATCH 050/846] ci: install libreoffice (#7262) Use bullseye-backports to get something more recent (ietfa has 7.3.6.2; bullseye has 7.0.x.x; bullseye-backports has 7.4.7.2) --- dev/build/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index e9ebf3bcba..f9ff3414e3 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -5,6 +5,11 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get purge -y imagemagick imagemagick-6-common +# Install libreoffice (needed via PPT2PDF_COMMAND) +RUN echo "deb http://deb.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/bullseye-backports.list && \ + apt-get update && \ + apt-get -qyt bullseye-backports install libreoffice-nogui + COPY . . COPY ./dev/build/start.sh ./start.sh COPY ./dev/build/datatracker-start.sh ./datatracker-start.sh From f58bbc3caa251279b7103669c3feeb4ddfb0226e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 27 Mar 2024 16:04:30 -0300 Subject: [PATCH 051/846] ci: parameterize / update settings (#7248) * ci: parameterize gunicorn in datatracker-start.sh * fix: typo * ci: update settings_local for helm chart * ci: Add todo comment * ci: Drop redundant USE_TZ setting * ci: Require secrets in production * ci: fix indentation * style: Black * ci: memcached cfg from env in settings.py * ci: set SITE_URL in settings.py * refactor: /www/htpasswd -> /a/www/htpasswd (it's a symlink on production) * refactor: Remove obsolete SECR_ settings * refactor: SECR_MAX_UPLOAD_SIZE -> DATATRACKER_... * refactor: SECR_PPT2PDF_COMMAND -> PPT2PDF_COMMAND * ci: Fix up helm/settings_local * ci: Remove commented-out settings * ci: Refactor/improve env var guards * ci: More env refactoring / guards --- dev/build/datatracker-start.sh | 8 +- helm/settings_local.py | 224 ++++++++++++++++++++++++--------- helm/values.yaml | 37 +++++- ietf/meeting/utils.py | 4 +- ietf/secr/meetings/tests.py | 20 +-- ietf/settings.py | 115 +++++++++-------- ietf/utils/validators.py | 11 +- 7 files changed, 275 insertions(+), 144 deletions(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index 1e4c5f52b3..da355175ff 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -12,11 +12,11 @@ echo "Running collectstatic..." echo "Starting Datatracker..." gunicorn \ - --workers 9 \ - --max-requests 32768 \ - --timeout 180 \ + --workers ${DATATRACKER_GUNICORN_WORKERS:-9} \ + --max-requests ${DATATRACKER_GUNICORN_MAX_REQUESTS:-32768} \ + --timeout ${DATATRACKER_GUNICORN_TIMEOUT:-180} \ --bind :8000 \ - --log-level info \ + --log-level ${DATATRACKER_GUNICORN_LOG_LEVEL:-info} \ ietf.wsgi:application # Leaving this here as a reminder to set up the env in the chart diff --git a/helm/settings_local.py b/helm/settings_local.py index 26d8ca8e05..92e7bce1a4 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -1,22 +1,100 @@ # Copyright The IETF Trust 2007-2024, All Rights Reserved # -*- coding: utf-8 -*- +from base64 import b64decode +from email.utils import parseaddr + +from ietf import __release_hash__ from ietf.settings import * # pyflakes:ignore -ALLOWED_HOSTS = ['*'] + +# Default to "development". Production _must_ set DATATRACKER_SERVER_MODE="production" in the env! +SERVER_MODE = os.environ.get("DATATRACKER_SERVER_MODE", "development") + +# Secrets +_SECRET_KEY = os.environ.get("DATATRACKER_DJANGO_SECRET_KEY", None) +if _SECRET_KEY is not None: + SECRET_KEY = _SECRET_KEY +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_DJANGO_SECRET_KEY must be set in production") + +_NOMCOM_APP_SECRET_B64 = os.environ.get("DATATRACKER_NOMCOM_APP_SECRET_B64", None) +if _NOMCOM_APP_SECRET_B64 is not None: + NOMCOM_APP_SECRET = b64decode(_NOMCOM_APP_SECRET_B64) +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set in production") + +_IANA_SYNC_PASSWORD = os.environ.get("DATATRACKER_IANA_SYNC_PASSWORD", None) +if _IANA_SYNC_PASSWORD is not None: + IANA_SYNC_PASSWORD = _IANA_SYNC_PASSWORD +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_IANA_SYNC_PASSWORD must be set in production") + +_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") +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_RFC_EDITOR_SYNC_PASSWORD must be set in production") + +_YOUTUBE_API_KEY = os.environ.get("DATATRACKER_YOUTUBE_API_KEY", None) +if _YOUTUBE_API_KEY is not None: + YOUTUBE_API_KEY = _YOUTUBE_API_KEY +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_YOUTUBE_API_KEY must be set in production") + +_GITHUB_BACKUP_API_KEY = os.environ.get("DATATRACKER_GITHUB_BACKUP_API_KEY", None) +if _GITHUB_BACKUP_API_KEY is not None: + GITHUB_BACKUP_API_KEY = _GITHUB_BACKUP_API_KEY +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_GITHUB_BACKUP_API_KEY must be set in production") + +_API_KEY_TYPE = os.environ.get("DATATRACKER_API_KEY_TYPE", None) +if _API_KEY_TYPE is not None: + API_KEY_TYPE = _API_KEY_TYPE +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_API_KEY_TYPE must be set in production") + +_API_PUBLIC_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PUBLIC_KEY_PEM_B64", None) +if _API_PUBLIC_KEY_PEM_B64 is not None: + API_PUBLIC_KEY_PEM = b64decode(_API_PUBLIC_KEY_PEM_B64) +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set in production") + +_API_PRIVATE_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PRIVATE_KEY_PEM_B64", None) +if _API_PRIVATE_KEY_PEM_B64 is not None: + API_PRIVATE_KEY_PEM = b64decode(_API_PRIVATE_KEY_PEM_B64) +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set in production") + +# Set DEBUG if DATATRACKER_DEBUG env var is the word "true" +DEBUG = os.environ.get("DATATRACKER_DEBUG", "false").lower() == "true" + +# DATATRACKER_ALLOWED_HOSTS env var is a comma-separated list of allowed hosts +_allowed_hosts_str = os.environ.get("DATATRACKER_ALLOWED_HOSTS", None) +if _allowed_hosts_str is not None: + ALLOWED_HOSTS = [h.strip() for h in _allowed_hosts_str.split(",")] DATABASES = { "default": { - "HOST": os.environ.get("DBHOST", "db"), - "PORT": os.environ.get("DBPORT", "5432"), - "NAME": os.environ.get("DBNAME", "datatracker"), + "HOST": os.environ.get("DATATRACKER_DBHOST", "db"), + "PORT": os.environ.get("DATATRACKER_DBPORT", "5432"), + "NAME": os.environ.get("DATATRACKER_DBNAME", "datatracker"), "ENGINE": "django.db.backends.postgresql", - "USER": os.environ.get("DBUSER", "django"), - "PASSWORD": os.environ.get("DBPASS", ""), + "USER": os.environ.get("DATATRACKER_DBUSER", "django"), + "PASSWORD": os.environ.get("DATATRACKER_DBPASS", ""), }, } -SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY") +# DATATRACKER_ADMINS is a newline-delimited list of addresses parseable by email.utils.parseaddr +_ADMINS = os.environ.get("DATATRACKER_ADMINS", None) +if _ADMINS is not None: + ADMINS = [parseaddr(admin) for admin in _ADMINS.split("\n")] +elif SERVER_MODE == "production": + raise RuntimeError("DATATRACKER_ADMINS must be set in production") + +USING_DEBUG_EMAIL_SERVER = os.environ.get("DATATRACKER_EMAIL_DEBUG", "false").lower() == "true" +EMAIL_HOST = os.environ.get("DATATRACKER_EMAIL_HOST", "localhost") +EMAIL_PORT = int(os.environ.get("DATATRACKER_EMAIL_PORT", "2025")) CELERY_BROKER_URL = "amqp://datatracker:{password}@{host}/{queue}".format( host=os.environ.get("RABBITMQ_HOSTNAME", "rabbitmq"), @@ -24,62 +102,99 @@ queue=os.environ.get("RABBITMQ_QUEUE", "dt") ) -IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" -IDSUBMIT_REPOSITORY_PATH = "/test/id/" -IDSUBMIT_STAGING_PATH = "/test/staging/" +IANA_SYNC_USERNAME = "ietfsync" +IANA_SYNC_CHANGES_URL = "https://datatracker.iana.org:4443/data-tracker/changes" +IANA_SYNC_PROTOCOLS_URL = "http://www.iana.org/protocols/" -AGENDA_PATH = "/assets/www6s/proceedings/" -MEETINGHOST_LOGO_PATH = AGENDA_PATH +RFC_EDITOR_NOTIFICATION_URL = "http://www.rfc-editor.org/parser/parser.php" -USING_DEBUG_EMAIL_SERVER=True -EMAIL_HOST= "localhost" -EMAIL_PORT=2025 +STATS_REGISTRATION_ATTENDEES_JSON_URL = 'https://registration.ietf.org/{number}/attendees/?apikey=redacted' -MEDIA_BASE_DIR = "/assets" -MEDIA_ROOT = MEDIA_BASE_DIR + "/media/" -MEDIA_URL = "/media/" +#FIRST_CUTOFF_DAYS = 12 +#SECOND_CUTOFF_DAYS = 12 +#SUBMISSION_CUTOFF_DAYS = 26 +#SUBMISSION_CORRECTION_DAYS = 57 +MEETING_MATERIALS_SUBMISSION_CUTOFF_DAYS = 26 +MEETING_MATERIALS_SUBMISSION_CORRECTION_DAYS = 54 + +HTPASSWD_COMMAND = "/usr/bin/htpasswd2" + +_MEETECHO_CLIENT_ID = os.environ.get("DATATRACKER_MEETECHO_CLIENT_ID", None) +_MEETECHO_CLIENT_SECRET = os.environ.get("DATATRACKER_MEETECHO_CLIENT_SECRET", None) +if _MEETECHO_CLIENT_ID is not None and _MEETECHO_CLIENT_SECRET is not None: + MEETECHO_API_CONFIG = { + "api_base": os.environ.get( + "DATATRACKER_MEETECHO_API_BASE", + "https://meetings.conf.meetecho.com/api/v1/", + ), + "client_id": _MEETECHO_CLIENT_ID, + "client_secret": _MEETECHO_CLIENT_SECRET, + "request_timeout": 3.01, # python-requests doc recommend slightly > a multiple of 3 seconds + } +elif SERVER_MODE == "production": + raise RuntimeError( + "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set in production" + ) + +APP_API_TOKENS = { + "ietf.api.views.directauth": ["redacted",], + "ietf.api.views.email_aliases": ["redacted"], + "ietf.api.views.active_email_list": ["redacted"], +} +EMAIL_COPY_TO = "" + +# Until we teach the datatracker to look beyond cloudflare for this check +IDSUBMIT_MAX_DAILY_SAME_SUBMITTER = 5000 + +# Leave DATATRACKER_MATOMO_SITE_ID unset to disable Matomo reporting +if "DATATRACKER_MATOMO_SITE_ID" in os.environ: + MATOMO_DOMAIN_PATH = os.environ.get("DATATRACKER_MATOMO_DOMAIN_PATH", "analytics.ietf.org") + MATOMO_SITE_ID = os.environ.get("DATATRACKER_MATOMO_SITE_ID") + MATOMO_DISABLE_COOKIES = True + +# Leave DATATRACKER_SCOUT_KEY unset to disable Scout APM agent +_SCOUT_KEY = os.environ.get("DATATRACKER_SCOUT_KEY", None) +if _SCOUT_KEY is not None: + if SERVER_MODE == "production": + PROD_PRE_APPS = ["scout_apm.django", ] + else: + DEV_PRE_APPS = ["scout_apm.django", ] + SCOUT_MONITOR = True + SCOUT_KEY = _SCOUT_KEY + SCOUT_NAME = "Datatracker" + SCOUT_ERRORS_ENABLED = True + SCOUT_SHUTDOWN_MESSAGE_ENABLED = False + SCOUT_CORE_AGENT_DIR = "/a/core-agent/1.4.0" + SCOUT_CORE_AGENT_FULL_NAME = "scout_apm_core-v1.4.0-x86_64-unknown-linux-musl" + SCOUT_CORE_AGENT_SOCKET_PATH = "tcp://{host}:{port}".format( + host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "scout"), + port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "16590"), + ), + SCOUT_CORE_AGENT_DOWNLOAD = False + SCOUT_CORE_AGENT_LAUNCH = False + SCOUT_REVISION_SHA = __release_hash__[:7] + +# Path to the email alias lists. Used by ietf.utils.aliases +DRAFT_ALIASES_PATH = "/a/postfix/draft-aliases" +DRAFT_VIRTUAL_PATH = "/a/postfix/draft-virtual" +GROUP_ALIASES_PATH = "/a/postfix/group-aliases" +GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual" + +# Set these to the same as "production" in settings.py, whether production mode or not +MEDIA_ROOT = "/a/www/www6s/lib/dt/media/" +MEDIA_URL = "https://www.ietf.org/lib/dt/media/" PHOTOS_DIRNAME = "photo" PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME -SUBMIT_YANG_CATALOG_MODEL_DIR = "/assets/ietf-ftp/yang/catalogmod/" -SUBMIT_YANG_DRAFT_MODEL_DIR = "/assets/ietf-ftp/yang/draftmod/" -SUBMIT_YANG_INVAL_MODEL_DIR = "/assets/ietf-ftp/yang/invalmod/" -SUBMIT_YANG_IANA_MODEL_DIR = "/assets/ietf-ftp/yang/ianamod/" -SUBMIT_YANG_RFC_MODEL_DIR = "/assets/ietf-ftp/yang/rfcmod/" - -# Set INTERNAL_IPS for use within Docker. See https://knasmueller.net/fix-djangos-debug-toolbar-not-showing-inside-docker -import socket -hostname, _, ips = socket.gethostbyname_ex(socket.gethostname()) -INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips] - -# DEV_TEMPLATE_CONTEXT_PROCESSORS = [ -# 'ietf.context_processors.sql_debug', -# ] - -DOCUMENT_PATH_PATTERN = "/assets/ietfdata/doc/{doc.type_id}/" -INTERNET_DRAFT_PATH = "/assets/ietf-ftp/internet-drafts/" -RFC_PATH = "/assets/ietf-ftp/rfc/" -CHARTER_PATH = "/assets/ietf-ftp/charter/" -BOFREQ_PATH = "/assets/ietf-ftp/bofreq/" -CONFLICT_REVIEW_PATH = "/assets/ietf-ftp/conflict-reviews/" -STATUS_CHANGE_PATH = "/assets/ietf-ftp/status-changes/" -INTERNET_DRAFT_ARCHIVE_DIR = "/assets/archive/id" -INTERNET_ALL_DRAFTS_ARCHIVE_DIR = "/assets/archive/id" -BIBXML_BASE_PATH = "/assets/ietfdata/derived/bibxml" -IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH - -NOMCOM_PUBLIC_KEYS_DIR = "data/nomcom_keys/public_keys/" -SLIDE_STAGING_PATH = "/test/staging/" +# Normally only set for debug, but needed until we have a real FS +DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') +# Binaries that are different in the docker image DE_GFM_BINARY = "/usr/local/bin/de-gfm" +IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" -# OIDC configuration -SITE_URL = os.environ.get("OIDC_SITE_URL") - -# todo: parameterize memcached url in settings.py -MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") -MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") +# Duplicating production cache from settings.py and using it whether we're in production mode or not from ietf import __version__ CACHES = { "default": { @@ -119,6 +234,3 @@ }, }, } - -# Normally only set for debug, but needed until we have a real FS -DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') diff --git a/helm/values.yaml b/helm/values.yaml index df75ebb8bc..3eedd0e1f6 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -561,10 +561,35 @@ autoscaling: env: # n.b., these are debug values / non-secret secrets - # DBHOST: "host.minikube.internal" - # DBPORT: "5432" - DBNAME: "datatracker" - DBUSER: "django" - DBPASS: "RkTkDPFnKpko" - DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" + DATATRACKER_SERVER_MODE: "development" # defaults to "production" + DATATRACKER_ADMINS: |- + Robert Sparks + Ryan Cross + Kesara Rathnayake + Jennifer Richards + Nicolas Giard + DATATRACKER_ALLOWED_HOSTS: "*" # empty for production + # DATATRACKER_DATATRACKER_DEBUG: "false" + # DATATRACKER_DBHOST: "db" + # DATATRACKER_DBPORT: "5432" + # DATATRACKER_DBNAME: "datatracker" + # DATATRACKER_DBUSER: "django" + DATATRACKER_DBPASS: "RkTkDPFnKpko" + DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" + DATATRACKER_EMAIL_DEBUG: "true" + DATATRACKER_EMAIL_HOST: "localhost" + DATATRACKER_EMAIL_PORT: "2025" + # DATATRACKER_NOMCOM_APP_SECRET_B64: "" + DATATRACKER_IANA_SYNC_PASSWORD: "this-is-the-iana-sync-password" + DATATRACKER_RFC_EDITOR_SYNC_PASSWORD: "this-is-the-rfc-editor-sync-password" + DATATRACKER_YOUTUBE_API_KEY: "this-is-the-youtube-api-key" + DATATRACKER_GITHUB_BACKUP_API_KEY: "this-is-the-github-backup-api-key" + # DATATRACKER_API_KEY_TYPE: "ES265" + # DATATRACKER_API_PUBLIC_KEY_PEM_B64: " settings.SECR_MAX_UPLOAD_SIZE: - raise ValidationError('Please keep filesize under %s. Requested upload size was %s' % (filesizeformat(settings.SECR_MAX_UPLOAD_SIZE), filesizeformat(file.size))) + if size > settings.DATATRACKER_MAX_UPLOAD_SIZE: + raise ValidationError( + "Please keep filesize under {}. Requested upload size was {}".format( + filesizeformat(settings.DATATRACKE_MAX_UPLOAD_SIZE), + filesizeformat(file.size) + ) + ) + def validate_mime_type(file, valid, missing_ok=False): try: From 253ba1dfbd86fdf8368a2cfc96f393e82011af9f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 28 Mar 2024 20:08:45 -0300 Subject: [PATCH 052/846] fix: mypy/flakes lint --- ietf/secr/meetings/tests.py | 3 --- ietf/utils/log.py | 2 +- ietf/utils/validators.py | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ietf/secr/meetings/tests.py b/ietf/secr/meetings/tests.py index 9eed6b94f6..a241d2b5eb 100644 --- a/ietf/secr/meetings/tests.py +++ b/ietf/secr/meetings/tests.py @@ -3,14 +3,11 @@ import datetime -import os -import shutil from pyquery import PyQuery import debug # pyflakes:ignore -from django.conf import settings from django.urls import reverse from django.utils import timezone diff --git a/ietf/utils/log.py b/ietf/utils/log.py index 324e8937f9..7c2e233f9b 100644 --- a/ietf/utils/log.py +++ b/ietf/utils/log.py @@ -24,7 +24,7 @@ logging.StreamHandler(), ] for h in handlers: - h.setFormatter(formatter) + h.setFormatter(formatter) # type: ignore h.setLevel(level) logger.addHandler(h) debug.say(" Setting %s logging level to %s" % (logger.name, level)) diff --git a/ietf/utils/validators.py b/ietf/utils/validators.py index 83814b24a5..8fe989df99 100644 --- a/ietf/utils/validators.py +++ b/ietf/utils/validators.py @@ -73,7 +73,7 @@ def validate_file_size(file, missing_ok=False): if size > settings.DATATRACKER_MAX_UPLOAD_SIZE: raise ValidationError( "Please keep filesize under {}. Requested upload size was {}".format( - filesizeformat(settings.DATATRACKE_MAX_UPLOAD_SIZE), + filesizeformat(settings.DATATRACKER_MAX_UPLOAD_SIZE), filesizeformat(file.size) ) ) From 8872e31e3045327ce85925e9dec56a63167aaf5c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 2 Apr 2024 11:02:45 -0300 Subject: [PATCH 053/846] ci: Get APP_API_TOKENS from env (#7271) * ci: Get APP_API_TOKENS from env * ci: chart fixup * ci: Remove canned APP_API_TOKENs (setec astronomy) --- helm/settings_local.py | 13 ++++++++----- helm/values.yaml | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index 92e7bce1a4..27ac845959 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -3,6 +3,7 @@ from base64 import b64decode from email.utils import parseaddr +import json from ietf import __release_hash__ from ietf.settings import * # pyflakes:ignore @@ -136,11 +137,11 @@ "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set in production" ) -APP_API_TOKENS = { - "ietf.api.views.directauth": ["redacted",], - "ietf.api.views.email_aliases": ["redacted"], - "ietf.api.views.active_email_list": ["redacted"], -} +_APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) +if _APP_API_TOKENS_JSON is not None: + APP_API_TOKENS = json.loads(_APP_API_TOKENS_JSON) +else: + APP_API_TOKENS = {} EMAIL_COPY_TO = "" @@ -195,6 +196,8 @@ IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" # Duplicating production cache from settings.py and using it whether we're in production mode or not +MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") from ietf import __version__ CACHES = { "default": { diff --git a/helm/values.yaml b/helm/values.yaml index 3eedd0e1f6..d09df4d65b 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -593,3 +593,4 @@ env: # DATATRACKER_MATOMO_SITE_ID: "7" # must be present to enable Matomo # DATATRACKER_MATOMO_DOMAIN_PATH: "analytics.ietf.org" CELERY_PASSWORD: "this-is-a-secret" + # DATATRACKER_APP_API_TOKENS_JSON: "" From 46e521ea9ac581a38033bf8503b404aa70b7f206 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 2 Apr 2024 17:51:15 -0300 Subject: [PATCH 054/846] ci: shared PersistentVolumeClaim on /a (#7283) * ci: shared PersistentVolumeClaim on /a * ci: Increase storage request, add comment --- helm/templates/persistentvolumeclaims.yaml | 14 ++++ helm/values.yaml | 81 ++++++++++++++-------- 2 files changed, 65 insertions(+), 30 deletions(-) diff --git a/helm/templates/persistentvolumeclaims.yaml b/helm/templates/persistentvolumeclaims.yaml index edf69aebcc..db636fb05e 100644 --- a/helm/templates/persistentvolumeclaims.yaml +++ b/helm/templates/persistentvolumeclaims.yaml @@ -1,5 +1,19 @@ apiVersion: v1 kind: PersistentVolumeClaim +metadata: + name: "datatracker-shared-volume-claim" + # Note: This is the /a shared volume. The spec should be adjusted to ensure it always + # matches the correct EBS volume in production. For the moment, it just requests a + # large volume. +spec: + accessModes: + - ReadWriteMany # or ReadWriteOnce and force datatracker/celery/beat to a single node + resources: + requests: + storage: 600Gi # adjust to something satisfied by the /a PersistentVolume +--- +apiVersion: v1 +kind: PersistentVolumeClaim metadata: name: "rabbitmq-data-claim" spec: diff --git a/helm/values.yaml b/helm/values.yaml index d09df4d65b..90ff438b29 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -129,12 +129,16 @@ datatracker: - name: settings-local-volume configMap: name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi + - name: datatracker-shared-volume + persistentVolumeClaim: + claimName: "datatracker-shared-volume-claim" +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# emptyDir: +# sizeLimit: 1Gi +# - name: staging-volume +# emptyDir: +# sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret @@ -146,10 +150,13 @@ datatracker: mountPath: /workspace/ietf/settings_local.py subPath: settings_local.py readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" + - name: datatracker-shared-volume + mountPath: /a +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# mountPath: "/a/cache" +# - name: staging-volume +# mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -240,12 +247,16 @@ celery: - name: settings-local-volume configMap: name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi + - name: datatracker-shared-volume + persistentVolumeClaim: + claimName: "datatracker-shared-volume-claim" +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# emptyDir: +# sizeLimit: 1Gi +# - name: staging-volume +# emptyDir: +# sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret @@ -257,10 +268,13 @@ celery: mountPath: /workspace/ietf/settings_local.py subPath: settings_local.py readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" + - name: datatracker-shared-volume + mountPath: /a +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# mountPath: "/a/cache" +# - name: staging-volume +# mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true @@ -351,12 +365,16 @@ beat: - name: settings-local-volume configMap: name: django-configmap - - name: cache-volume - emptyDir: - sizeLimit: 1Gi - - name: staging-volume - emptyDir: - sizeLimit: 1Gi + - name: datatracker-shared-volume + persistentVolumeClaim: + claimName: "datatracker-shared-volume-claim" +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# emptyDir: +# sizeLimit: 1Gi +# - name: staging-volume +# emptyDir: +# sizeLimit: 1Gi # - name: foo # secret: # secretName: mysecret @@ -368,10 +386,13 @@ beat: mountPath: /workspace/ietf/settings_local.py subPath: settings_local.py readOnly: true - - name: cache-volume - mountPath: "/a/cache" - - name: staging-volume - mountPath: "/test/staging" + - name: datatracker-shared-volume + mountPath: /a +# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume +# - name: cache-volume +# mountPath: "/a/cache" +# - name: staging-volume +# mountPath: "/test/staging" # - name: foo # mountPath: "/etc/foo" # readOnly: true From c4a2ea98223db4fb8b92469a5d0f60f332ed7a98 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 3 Apr 2024 16:02:27 -0300 Subject: [PATCH 055/846] ci: Adjust secrets in values.yaml (#7288) * ci: Require secrets, even in "development" * ci: More secrets-requiring * ci: Strip whitespace out before b64 decoding * ci: Adjust values.yaml * ci: Comment in values.yaml --- helm/settings_local.py | 58 +++++++++++++++++++++---------------- helm/values.yaml | 66 +++++++++++++++++++++++++++++------------- 2 files changed, 79 insertions(+), 45 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index 27ac845959..eb960839b6 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -9,6 +9,11 @@ from ietf.settings import * # pyflakes:ignore +def _remove_whitespace_and_b64decode(s): + """Helper to strip out whitespace and base64 decode""" + return b64decode("".join(s.split())) + + # Default to "development". Production _must_ set DATATRACKER_SERVER_MODE="production" in the env! SERVER_MODE = os.environ.get("DATATRACKER_SERVER_MODE", "development") @@ -16,56 +21,56 @@ _SECRET_KEY = os.environ.get("DATATRACKER_DJANGO_SECRET_KEY", None) if _SECRET_KEY is not None: SECRET_KEY = _SECRET_KEY -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_DJANGO_SECRET_KEY must be set in production") +else: + raise RuntimeError("DATATRACKER_DJANGO_SECRET_KEY must be set") _NOMCOM_APP_SECRET_B64 = os.environ.get("DATATRACKER_NOMCOM_APP_SECRET_B64", None) if _NOMCOM_APP_SECRET_B64 is not None: - NOMCOM_APP_SECRET = b64decode(_NOMCOM_APP_SECRET_B64) -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set in production") + NOMCOM_APP_SECRET = _remove_whitespace_and_b64decode(_NOMCOM_APP_SECRET_B64) +else: + raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set") _IANA_SYNC_PASSWORD = os.environ.get("DATATRACKER_IANA_SYNC_PASSWORD", None) if _IANA_SYNC_PASSWORD is not None: IANA_SYNC_PASSWORD = _IANA_SYNC_PASSWORD -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_IANA_SYNC_PASSWORD must be set in production") +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") -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_RFC_EDITOR_SYNC_PASSWORD must be set in production") +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 -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_YOUTUBE_API_KEY must be set in production") +else: + raise RuntimeError("DATATRACKER_YOUTUBE_API_KEY must be set") _GITHUB_BACKUP_API_KEY = os.environ.get("DATATRACKER_GITHUB_BACKUP_API_KEY", None) if _GITHUB_BACKUP_API_KEY is not None: GITHUB_BACKUP_API_KEY = _GITHUB_BACKUP_API_KEY -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_GITHUB_BACKUP_API_KEY must be set in production") +else: + raise RuntimeError("DATATRACKER_GITHUB_BACKUP_API_KEY must be set") _API_KEY_TYPE = os.environ.get("DATATRACKER_API_KEY_TYPE", None) if _API_KEY_TYPE is not None: API_KEY_TYPE = _API_KEY_TYPE -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_API_KEY_TYPE must be set in production") +else: + raise RuntimeError("DATATRACKER_API_KEY_TYPE must be set") _API_PUBLIC_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PUBLIC_KEY_PEM_B64", None) if _API_PUBLIC_KEY_PEM_B64 is not None: - API_PUBLIC_KEY_PEM = b64decode(_API_PUBLIC_KEY_PEM_B64) -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set in production") + API_PUBLIC_KEY_PEM = _remove_whitespace_and_b64decode(_API_PUBLIC_KEY_PEM_B64) +else: + raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set") _API_PRIVATE_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PRIVATE_KEY_PEM_B64", None) if _API_PRIVATE_KEY_PEM_B64 is not None: - API_PRIVATE_KEY_PEM = b64decode(_API_PRIVATE_KEY_PEM_B64) -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set in production") + API_PRIVATE_KEY_PEM = _remove_whitespace_and_b64decode(_API_PRIVATE_KEY_PEM_B64) +else: + raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") # Set DEBUG if DATATRACKER_DEBUG env var is the word "true" DEBUG = os.environ.get("DATATRACKER_DEBUG", "false").lower() == "true" @@ -73,7 +78,7 @@ # DATATRACKER_ALLOWED_HOSTS env var is a comma-separated list of allowed hosts _allowed_hosts_str = os.environ.get("DATATRACKER_ALLOWED_HOSTS", None) if _allowed_hosts_str is not None: - ALLOWED_HOSTS = [h.strip() for h in _allowed_hosts_str.split(",")] + ALLOWED_HOSTS = [h.strip() for h in _allowed_hosts_str.split("\n")] DATABASES = { "default": { @@ -90,16 +95,19 @@ _ADMINS = os.environ.get("DATATRACKER_ADMINS", None) if _ADMINS is not None: ADMINS = [parseaddr(admin) for admin in _ADMINS.split("\n")] -elif SERVER_MODE == "production": - raise RuntimeError("DATATRACKER_ADMINS must be set in production") +else: + raise RuntimeError("DATATRACKER_ADMINS must be set") USING_DEBUG_EMAIL_SERVER = os.environ.get("DATATRACKER_EMAIL_DEBUG", "false").lower() == "true" EMAIL_HOST = os.environ.get("DATATRACKER_EMAIL_HOST", "localhost") EMAIL_PORT = int(os.environ.get("DATATRACKER_EMAIL_PORT", "2025")) +_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", "rabbitmq"), - password=os.environ.get("CELERY_PASSWORD", ""), + password=_celery_password, queue=os.environ.get("RABBITMQ_QUEUE", "dt") ) diff --git a/helm/values.yaml b/helm/values.yaml index 90ff438b29..27094f5464 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -582,36 +582,62 @@ autoscaling: env: # n.b., these are debug values / non-secret secrets - DATATRACKER_SERVER_MODE: "development" # defaults to "production" + DATATRACKER_SERVER_MODE: "development" # development for staging, production for production DATATRACKER_ADMINS: |- Robert Sparks Ryan Cross Kesara Rathnayake Jennifer Richards Nicolas Giard - DATATRACKER_ALLOWED_HOSTS: "*" # empty for production + DATATRACKER_ALLOWED_HOSTS: ".ietf.org" # newline-separated list also allowed # DATATRACKER_DATATRACKER_DEBUG: "false" + + # DB access details - needs to be filled in # DATATRACKER_DBHOST: "db" # DATATRACKER_DBPORT: "5432" # DATATRACKER_DBNAME: "datatracker" - # DATATRACKER_DBUSER: "django" - DATATRACKER_DBPASS: "RkTkDPFnKpko" - DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" - DATATRACKER_EMAIL_DEBUG: "true" - DATATRACKER_EMAIL_HOST: "localhost" - DATATRACKER_EMAIL_PORT: "2025" - # DATATRACKER_NOMCOM_APP_SECRET_B64: "" - DATATRACKER_IANA_SYNC_PASSWORD: "this-is-the-iana-sync-password" - DATATRACKER_RFC_EDITOR_SYNC_PASSWORD: "this-is-the-rfc-editor-sync-password" - DATATRACKER_YOUTUBE_API_KEY: "this-is-the-youtube-api-key" - DATATRACKER_GITHUB_BACKUP_API_KEY: "this-is-the-github-backup-api-key" - # DATATRACKER_API_KEY_TYPE: "ES265" - # DATATRACKER_API_PUBLIC_KEY_PEM_B64: "" + + CELERY_PASSWORD: "this-is-a-secret" # secret + + DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret From 206a4bb7490da944d48d6777515232f4e745b16d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 11 Apr 2024 11:56:44 -0300 Subject: [PATCH 056/846] ci: clean up labels and service values (#7314) * ci: Remove unused service values * ci: Reorg labels --- helm/templates/_helpers.tpl | 6 +++--- helm/templates/deployments/beat.yaml | 5 ++++- helm/templates/deployments/celery.yaml | 5 ++++- helm/templates/deployments/datatracker.yaml | 5 ++++- helm/templates/deployments/memcached.yaml | 5 ++++- helm/templates/hpa.yaml | 4 ++-- helm/templates/ingress.yaml | 2 +- helm/templates/rbac/beat-serviceaccount.yaml | 2 +- helm/templates/rbac/celery-serviceaccount.yaml | 2 +- helm/templates/rbac/datatracker-serviceaccount.yaml | 2 +- helm/templates/rbac/memcached-serviceaccount.yaml | 2 +- helm/templates/rbac/rabbitmq-serviceaccount.yaml | 2 +- helm/templates/services/datatracker.yaml | 6 ++++-- helm/templates/services/memcached.yaml | 6 ++++-- helm/templates/services/rabbitmq.yaml | 6 ++++-- helm/templates/statefulsets/rabbitmq.yaml | 5 ++++- helm/values.yaml | 8 -------- 17 files changed, 43 insertions(+), 30 deletions(-) diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index 268f0e75dc..503b3f1bb8 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -118,20 +118,20 @@ Create chart name and version as used by the chart label. {{/* Common labels */}} -{{- define "datatracker.labels" -}} +{{- define "datatracker.commonLabels" -}} helm.sh/chart: {{ include "datatracker.chart" . }} -{{ include "datatracker.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/part-of: {{ include "datatracker.name" . | default "datatracker" }} {{- end }} {{/* Selector labels */}} {{- define "datatracker.selectorLabels" -}} -app.kubernetes.io/name: {{ include "datatracker.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} diff --git a/helm/templates/deployments/beat.yaml b/helm/templates/deployments/beat.yaml index 6f7409fb9c..83347481cd 100644 --- a/helm/templates/deployments/beat.yaml +++ b/helm/templates/deployments/beat.yaml @@ -3,7 +3,8 @@ kind: Deployment metadata: name: {{ include "datatracker.beat.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.beat.name }} spec: {{- $podValues := .Values.beat }} replicas: {{ $podValues.replicaCount }} @@ -11,10 +12,12 @@ spec: selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} + app.kubernetes.io/name: {{ $podValues.name }} template: metadata: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} + app.kubernetes.io/name: {{ $podValues.name }} spec: {{- with $podValues.imagePullSecrets }} imagePullSecrets: diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index f1f043abbd..1fb176009a 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -3,7 +3,8 @@ kind: Deployment metadata: name: {{ include "datatracker.celery.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.celery.name }} spec: {{- $podValues := .Values.celery }} replicas: {{ $podValues.replicaCount }} @@ -11,10 +12,12 @@ spec: selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} + app.kubernetes.io/name: {{ $podValues.name }} template: metadata: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} + app.kubernetes.io/name: {{ $podValues.name }} spec: {{- with $podValues.imagePullSecrets }} imagePullSecrets: diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index dd4d8e4d82..0cc5ab6173 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -3,7 +3,8 @@ kind: Deployment metadata: name: {{ include "datatracker.datatracker.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.datatracker.name }} spec: {{- $podValues := .Values.datatracker }} replicas: {{ $podValues.replicaCount }} @@ -11,10 +12,12 @@ spec: selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} + app.kubernetes.io/name: {{ $podValues.name }} template: metadata: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} + app.kubernetes.io/name: {{ $podValues.name }} spec: {{- with $podValues.imagePullSecrets }} imagePullSecrets: diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml index cbc7b3c35a..4bc35927d8 100644 --- a/helm/templates/deployments/memcached.yaml +++ b/helm/templates/deployments/memcached.yaml @@ -3,7 +3,8 @@ kind: Deployment metadata: name: {{ include "datatracker.memcached.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.memcached.name }} spec: {{- $podValues := .Values.memcached }} replicas: {{ $podValues.replicaCount }} @@ -11,10 +12,12 @@ spec: selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} + app.kubernetes.io/name: {{ $podValues.name }} template: metadata: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} + app.kubernetes.io/name: {{ $podValues.name }} spec: {{- with $podValues.imagePullSecrets }} imagePullSecrets: diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml index 5dd889b509..646000bdcb 100644 --- a/helm/templates/hpa.yaml +++ b/helm/templates/hpa.yaml @@ -4,7 +4,7 @@ kind: HorizontalPodAutoscaler metadata: name: {{ include "datatracker.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 @@ -29,4 +29,4 @@ spec: type: Utilization averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} {{- end }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index c9405ef389..3b1a9febc5 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -17,7 +17,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.datatracker.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/rbac/beat-serviceaccount.yaml b/helm/templates/rbac/beat-serviceaccount.yaml index bd955aed88..9834013756 100644 --- a/helm/templates/rbac/beat-serviceaccount.yaml +++ b/helm/templates/rbac/beat-serviceaccount.yaml @@ -4,7 +4,7 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.beat" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.serviceAccounts.beat.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/rbac/celery-serviceaccount.yaml b/helm/templates/rbac/celery-serviceaccount.yaml index 105b979c60..e27673e385 100644 --- a/helm/templates/rbac/celery-serviceaccount.yaml +++ b/helm/templates/rbac/celery-serviceaccount.yaml @@ -4,7 +4,7 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.celery" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.serviceAccounts.celery.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/rbac/datatracker-serviceaccount.yaml b/helm/templates/rbac/datatracker-serviceaccount.yaml index 7786443ada..d64f1523da 100644 --- a/helm/templates/rbac/datatracker-serviceaccount.yaml +++ b/helm/templates/rbac/datatracker-serviceaccount.yaml @@ -4,7 +4,7 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.datatracker" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.serviceAccounts.datatracker.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/rbac/memcached-serviceaccount.yaml b/helm/templates/rbac/memcached-serviceaccount.yaml index 7f01615b1d..cc8d1a1212 100644 --- a/helm/templates/rbac/memcached-serviceaccount.yaml +++ b/helm/templates/rbac/memcached-serviceaccount.yaml @@ -4,7 +4,7 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.memcached" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.serviceAccounts.memcached.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/rbac/rabbitmq-serviceaccount.yaml b/helm/templates/rbac/rabbitmq-serviceaccount.yaml index 015e098da3..58c89b2dcf 100644 --- a/helm/templates/rbac/rabbitmq-serviceaccount.yaml +++ b/helm/templates/rbac/rabbitmq-serviceaccount.yaml @@ -4,7 +4,7 @@ kind: ServiceAccount metadata: name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.serviceAccounts.rabbitmq.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/helm/templates/services/datatracker.yaml b/helm/templates/services/datatracker.yaml index 2fbea5826f..201f5a3b4b 100644 --- a/helm/templates/services/datatracker.yaml +++ b/helm/templates/services/datatracker.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: {{include "datatracker.fullname" .}} - labels: {{- include "datatracker.labels" . | nindent 4 }} + labels: {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.datatracker.service.annotations }} annotations: {{- range $key, $value := . }} @@ -16,4 +16,6 @@ spec: targetPort: http protocol: TCP name: http - selector: {{- include "datatracker.selectorLabels" . | nindent 4}} \ No newline at end of file + selector: + {{- include "datatracker.selectorLabels" . | nindent 4}} + app.kubernetes.io/name: {{ .Values.datatracker.name }} diff --git a/helm/templates/services/memcached.yaml b/helm/templates/services/memcached.yaml index 1337571b04..572c382b5b 100644 --- a/helm/templates/services/memcached.yaml +++ b/helm/templates/services/memcached.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: memcached - labels: {{- include "datatracker.labels" . | nindent 4 }} + labels: {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.memcached.service.annotations }} annotations: {{- range $key, $value := . }} @@ -16,4 +16,6 @@ spec: targetPort: memcached protocol: TCP name: memcached - selector: {{- include "datatracker.selectorLabels" . | nindent 4}} + selector: + {{- include "datatracker.selectorLabels" . | nindent 4}} + app.kubernetes.io/name: {{ .Values.memcached.name }} diff --git a/helm/templates/services/rabbitmq.yaml b/helm/templates/services/rabbitmq.yaml index a23c4eaef5..e67cb31694 100644 --- a/helm/templates/services/rabbitmq.yaml +++ b/helm/templates/services/rabbitmq.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: rabbitmq - labels: {{- include "datatracker.labels" . | nindent 4 }} + labels: {{- include "datatracker.commonLabels" . | nindent 4 }} {{- with .Values.rabbitmq.service.annotations }} annotations: {{- range $key, $value := . }} @@ -17,4 +17,6 @@ spec: targetPort: amqp protocol: TCP name: amqp - selector: {{- include "datatracker.selectorLabels" . | nindent 4}} + selector: + {{- include "datatracker.selectorLabels" . | nindent 4}} + app.kubernetes.io/name: {{ .Values.rabbitmq.name }} diff --git a/helm/templates/statefulsets/rabbitmq.yaml b/helm/templates/statefulsets/rabbitmq.yaml index cad4f16502..dcffe17671 100644 --- a/helm/templates/statefulsets/rabbitmq.yaml +++ b/helm/templates/statefulsets/rabbitmq.yaml @@ -3,7 +3,8 @@ kind: StatefulSet metadata: name: {{ include "datatracker.rabbitmq.fullname" . }} labels: - {{- include "datatracker.labels" . | nindent 4 }} + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.rabbitmq.name }} spec: {{- $podValues := .Values.rabbitmq }} replicas: {{ $podValues.replicaCount }} @@ -11,10 +12,12 @@ spec: selector: matchLabels: {{- include "datatracker.selectorLabels" . | nindent 6 }} + app.kubernetes.io/name: {{ $podValues.name }} template: metadata: labels: {{- include "datatracker.selectorLabels" . | nindent 8 }} + app.kubernetes.io/name: {{ $podValues.name }} spec: {{- with $podValues.imagePullSecrets }} imagePullSecrets: diff --git a/helm/values.yaml b/helm/values.yaml index 27094f5464..6e79be5e85 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -218,10 +218,6 @@ celery: # runAsNonRoot: true # runAsUser: 1000 - service: - type: ClusterIP - port: 80 - serviceAccount: # Specifies whether a service account should be created create: true @@ -336,10 +332,6 @@ beat: # runAsNonRoot: true # runAsUser: 1000 - service: - type: ClusterIP - port: 80 - serviceAccount: # Specifies whether a service account should be created create: true From e99286f400da7e0f3d49f84423e44134fef7bf88 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 12 Apr 2024 11:57:58 -0300 Subject: [PATCH 057/846] ci: use values for PVClaims, STATIC_URL (#7317) * ci: Expose PV parameters as values * ci: complain about missing value in dev mode * ci: Allow override of STATIC_URL --- helm/settings_local.py | 9 +++++-- helm/templates/persistentvolumeclaims.yaml | 29 +++++++++++++++------- helm/values.yaml | 26 ++++++++++++++++++- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index eb960839b6..0a6f8a3b53 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -140,9 +140,9 @@ def _remove_whitespace_and_b64decode(s): "client_secret": _MEETECHO_CLIENT_SECRET, "request_timeout": 3.01, # python-requests doc recommend slightly > a multiple of 3 seconds } -elif SERVER_MODE == "production": +else: raise RuntimeError( - "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set in production" + "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set" ) _APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) @@ -190,6 +190,11 @@ def _remove_whitespace_and_b64decode(s): GROUP_ALIASES_PATH = "/a/postfix/group-aliases" GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual" +# Repoint STATIC_URL - hack to let staging access statics without hosting them itself +_STATIC_URL = os.environ.get("DATATRACKER_STATIC_URL", None) +if _STATIC_URL is not None: + STATIC_URL = _STATIC_URL + # Set these to the same as "production" in settings.py, whether production mode or not MEDIA_ROOT = "/a/www/www6s/lib/dt/media/" MEDIA_URL = "https://www.ietf.org/lib/dt/media/" diff --git a/helm/templates/persistentvolumeclaims.yaml b/helm/templates/persistentvolumeclaims.yaml index db636fb05e..54e75925a9 100644 --- a/helm/templates/persistentvolumeclaims.yaml +++ b/helm/templates/persistentvolumeclaims.yaml @@ -2,25 +2,36 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: "datatracker-shared-volume-claim" - # Note: This is the /a shared volume. The spec should be adjusted to ensure it always - # matches the correct EBS volume in production. For the moment, it just requests a - # large volume. spec: + {{- with .Values.persistentVolumes.datatrackerSharedVolume }} + storageClassName: {{ .storageClassName | quote }} + {{- if .volumeName }} + volumeName: {{ .volumeName | quote }} + {{- end }} accessModes: - - ReadWriteMany # or ReadWriteOnce and force datatracker/celery/beat to a single node + {{- range .accessModes }} + - {{ . | quote }} + {{- end }} resources: requests: - storage: 600Gi # adjust to something satisfied by the /a PersistentVolume + storage: {{ .storage | quote }} + {{- end }} --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: "rabbitmq-data-claim" spec: -# storageClassName: "local" -# volumeName: "" + {{- with .Values.persistentVolumes.rabbitmqDataVolume }} + storageClassName: {{ .storageClassName | quote }} + {{- if .volumeName }} + volumeName: {{ .volumeName | quote }} + {{- end }} accessModes: - - ReadWriteOnce + {{- range .accessModes }} + - {{ . | quote }} + {{- end }} resources: requests: - storage: 8Gi + storage: {{ .storage | quote }} + {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 6e79be5e85..7170e63d0b 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -561,6 +561,26 @@ memcached: affinity: {} +# ------------------------------------------------------------- +# PERSISTENT VOLUMES +# ------------------------------------------------------------- + +persistentVolumes: + datatrackerSharedVolume: + # Note: This is the /a shared volume + volumeName: "datatracker-shared-volume" + accessModes: + - "ReadWriteMany" # or ReadWriteOnce and force datatracker/celery/beat to a single node + storageClassName: "" # Empty string means do not use default storage class + storage: "600Gi" # actual PersistentVolume must be at least this big or the PVC will not bind + + rabbitmqDataVolume: + volumeName: "rabbitmq-data-volume" + accessModes: + - "ReadWriteOnce" + storageClassName: "" # Empty string means do not use default storage class + storage: "8Gi" # actual PersistentVolume must be at least this big or the PVC will not bind + # ------------------------------------------------------------- # COMMON # ------------------------------------------------------------- @@ -592,7 +612,11 @@ env: # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret - + + # Set this to point testing / staging at the production statics server until we + # sort that out + DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" + # DATATRACKER_EMAIL_DEBUG: "true" # Outgoing email details From 39d2199a746a8867d8da429fcdcea9d76f3ae25b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 12 Apr 2024 17:17:25 -0300 Subject: [PATCH 058/846] ci: allow override of csrf_trusted_origins --- helm/settings_local.py | 17 +++++++++++++---- helm/values.yaml | 4 ++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index 0a6f8a3b53..18010a6867 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -14,6 +14,11 @@ def _remove_whitespace_and_b64decode(s): return b64decode("".join(s.split())) +def _multiline_to_list(s): + """Helper to split at newlines and conver to list""" + return [item.strip() for item in s.split("\n")] + + # Default to "development". Production _must_ set DATATRACKER_SERVER_MODE="production" in the env! SERVER_MODE = os.environ.get("DATATRACKER_SERVER_MODE", "development") @@ -78,7 +83,7 @@ def _remove_whitespace_and_b64decode(s): # DATATRACKER_ALLOWED_HOSTS env var is a comma-separated list of allowed hosts _allowed_hosts_str = os.environ.get("DATATRACKER_ALLOWED_HOSTS", None) if _allowed_hosts_str is not None: - ALLOWED_HOSTS = [h.strip() for h in _allowed_hosts_str.split("\n")] + ALLOWED_HOSTS = _multiline_to_list(_allowed_hosts_str) DATABASES = { "default": { @@ -92,9 +97,9 @@ def _remove_whitespace_and_b64decode(s): } # DATATRACKER_ADMINS is a newline-delimited list of addresses parseable by email.utils.parseaddr -_ADMINS = os.environ.get("DATATRACKER_ADMINS", None) -if _ADMINS is not None: - ADMINS = [parseaddr(admin) for admin in _ADMINS.split("\n")] +_admins_str = os.environ.get("DATATRACKER_ADMINS", None) +if _admins_str is not None: + ADMINS = [parseaddr(admin) for admin in _multiline_to_list(_admins_str)] else: raise RuntimeError("DATATRACKER_ADMINS must be set") @@ -250,3 +255,7 @@ def _remove_whitespace_and_b64decode(s): }, }, } + +_csrf_trusted_origins_str = os.environ.get("DATATRACKER_CSRF_TRUSTED_ORIGINS") +if _csrf_trusted_origins_str is not None: + CSRF_TRUSTED_ORIGINS = _multiline_to_list(_csrf_trusted_origins_str) diff --git a/helm/values.yaml b/helm/values.yaml index 7170e63d0b..5e11dfa709 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -657,3 +657,7 @@ env: CELERY_PASSWORD: "this-is-a-secret" # secret DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret + + # use this to override default - one entry per line + # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- + # https://datatracker.staging.ietf.org From 8a4fcf7024292660adf161277d61349b5061ee40 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 12 Apr 2024 17:17:46 -0300 Subject: [PATCH 059/846] ci: comment out DATATRACKER_STATIC_URL env --- helm/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/values.yaml b/helm/values.yaml index 5e11dfa709..ed568094c2 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -612,10 +612,10 @@ env: # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret - + # Set this to point testing / staging at the production statics server until we # sort that out - DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" + # DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" # DATATRACKER_EMAIL_DEBUG: "true" From 48f908020f2ef0d486db054c79ff22aea17a6b9e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 12 Apr 2024 18:22:06 -0300 Subject: [PATCH 060/846] ci: collect statics when building image --- dev/build/Dockerfile | 2 ++ dev/build/datatracker-start.sh | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index f9ff3414e3..bc46637f3a 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -27,6 +27,8 @@ RUN yarn rebuild && \ yarn build && \ yarn legacy:build +RUN echo "yes" | /bin/bash dev/build/collectstatics.sh + RUN mkdir -p /a VOLUME [ "/a" ] diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index da355175ff..5995409ef6 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -6,9 +6,6 @@ echo "Running Datatracker checks..." echo "Running Datatracker migrations..." ./ietf/manage.py migrate --settings=settings_local -echo "Running collectstatic..." -./ietf/manage.py collectstatic --no-input - echo "Starting Datatracker..." gunicorn \ From ebaf6b56805334554a67bf6f1fecc0875381753f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 15 Apr 2024 11:08:36 -0300 Subject: [PATCH 061/846] ci: quotes around shell parameters --- bin/mrun.py | 30 ++++++++++++++++++ bin/test-crawl | 57 ++++++++++++++++++++++++++-------- dev/build/datatracker-start.sh | 8 ++--- 3 files changed, 78 insertions(+), 17 deletions(-) create mode 100644 bin/mrun.py diff --git a/bin/mrun.py b/bin/mrun.py new file mode 100644 index 0000000000..7f30d5702f --- /dev/null +++ b/bin/mrun.py @@ -0,0 +1,30 @@ +from os import fork, kill, waitpid +from signal import SIGTERM +from subprocess import run +from sys import exit +from time import sleep + +num_processes = 50 + +children = [] + +def be_a_child(): + run(["bin/test-crawl"]) + + +for _ in range(num_processes): + sleep(0.5) + pid = fork() + if pid == 0: + be_a_child() + exit() + children.append(pid) + +input("Enter to exit...") +for pid in children: + kill(pid, SIGTERM) + +for pid in children: + waitpid(pid, 0) + +print("Done") diff --git a/bin/test-crawl b/bin/test-crawl index 9b1d5280d5..feafe87b30 100755 --- a/bin/test-crawl +++ b/bin/test-crawl @@ -66,16 +66,16 @@ args = parser.parse_args() # Import Django, call setup() os.environ.setdefault("DJANGO_SETTINGS_MODULE", args.settings or "ietf.settings_testcrawl") -import django -import django.test -import django.core.checks -from django.conf import settings -from django.utils import timezone - -django.setup() +# import django +# import django.test +# import django.core.checks +# from django.conf import settings +# from django.utils import timezone +# +# django.setup() # This needs to come after we set up sys path to include the local django -import debug # pyflakes:ignore +# import debug # pyflakes:ignore # prevent memory from leaking when settings.DEBUG=True # from django.db import connection @@ -84,7 +84,7 @@ import debug # pyflakes:ignore # pass # connection.queries = DontSaveQueries() -from ietf.name.models import DocTypeName +# from ietf.name.models import DocTypeName from ietf.utils.html import unescape from ietf.utils.test_utils import unicontent from ietf.utils.test_runner import start_vnu_server, vnu_validate, vnu_fmt_message, vnu_filter_message @@ -257,7 +257,7 @@ def nowstr(): t = time.time_ns()/(10**9) if nowtime != t: nowtime = t - nowstrn = timezone.now().strftime('%H:%M:%S').encode() + nowstrn = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%H:%M:%S').encode() return nowstrn b_exthost = re.sub(b'https?', b'', args.exthost.encode()) if args.exthost else None @@ -408,7 +408,8 @@ parser = html5lib.HTMLParser(strict=True) # because they aren't under our control, such as uploaded group agendas. validated_urls = {'/meeting/nn/agenda/foo/': True, } -doc_types = [ t.slug for t in DocTypeName.objects.all() ] +# doc_types = [ t.slug for t in DocTypeName.objects.all() ] +doc_types = ["agenda", "bcp", "bluesheets", "bofreq", "charter", "draft", "rfc"] # partial list errors = 0 warnings = 0 @@ -416,7 +417,36 @@ count = 0 start_time = datetime.datetime.now() -client = django.test.Client(Accept='text/html,text/plain,application/json') +# client = django.test.Client(Accept='text/html,text/plain,application/json') +class ExtResponse: + charset = "utf8" + def __init__(self, requests_response): + self._requests_response = requests_response + + def __getattr__(self, item): + return getattr(self._requests_response, item) + + def __getitem__(self, item): + return self._requests_response.headers[item] + + +class ExtClient: + base_url = "http://localhost" + accept_header = "text/html,text/plain,application/json" + + def get(self, url, **kwargs): + kwargs.pop("secure", None) + headers = kwargs.setdefault("headers", {}) + headers["accept"] = self.accept_header + return ExtResponse( + requests.get( + urllib.parse.urljoin(self.base_url, url), + **kwargs, + ) + ) + + +client = ExtClient() logfile = None if args.logfile: @@ -450,7 +480,8 @@ if __name__ == "__main__": do_exit(1) # Run django system checks and checks from ietf.checks: - error_list = django.core.checks.run_checks() + # error_list = django.core.checks.run_checks() + error_list = [] silenced = [] for i in range(len(error_list)): if error_list[i].id in settings.SILENCED_SYSTEM_CHECKS: diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index 5995409ef6..7a83ff5334 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -9,11 +9,11 @@ echo "Running Datatracker migrations..." echo "Starting Datatracker..." gunicorn \ - --workers ${DATATRACKER_GUNICORN_WORKERS:-9} \ - --max-requests ${DATATRACKER_GUNICORN_MAX_REQUESTS:-32768} \ - --timeout ${DATATRACKER_GUNICORN_TIMEOUT:-180} \ + --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} \ + --log-level "${DATATRACKER_GUNICORN_LOG_LEVEL:-info}" \ ietf.wsgi:application # Leaving this here as a reminder to set up the env in the chart From c81b5f7088a37b039eb6f40d57e67cdb234545a0 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 15 Apr 2024 11:16:23 -0300 Subject: [PATCH 062/846] ci: nindent instead of indent --- helm/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index 89983b5f07..e0261f0f49 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -4,7 +4,7 @@ metadata: name: django-configmap data: settings_local.py: |- - {{- .Files.Get "settings_local.py" | indent 4 }} + {{- .Files.Get "settings_local.py" | nindent 4 }} --- apiVersion: v1 kind: ConfigMap From ac5155122c61965f5eda57067ad227ae4e513533 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 15 Apr 2024 11:19:17 -0300 Subject: [PATCH 063/846] ci: label PVCs --- helm/templates/persistentvolumeclaims.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/helm/templates/persistentvolumeclaims.yaml b/helm/templates/persistentvolumeclaims.yaml index 54e75925a9..412de9d02d 100644 --- a/helm/templates/persistentvolumeclaims.yaml +++ b/helm/templates/persistentvolumeclaims.yaml @@ -2,6 +2,9 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: "datatracker-shared-volume-claim" + labels: + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.datatracker.name }} spec: {{- with .Values.persistentVolumes.datatrackerSharedVolume }} storageClassName: {{ .storageClassName | quote }} @@ -21,6 +24,9 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: "rabbitmq-data-claim" + labels: + {{- include "datatracker.commonLabels" . | nindent 4 }} + app.kubernetes.io/name: {{ .Values.rabbitmq.name }} spec: {{- with .Values.persistentVolumes.rabbitmqDataVolume }} storageClassName: {{ .storageClassName | quote }} From 64441be3301f428d133f30ee684ed3ba981a6f9e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 15 Apr 2024 13:23:54 -0300 Subject: [PATCH 064/846] chore: Remove accidentally committed file --- bin/mrun.py | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 bin/mrun.py diff --git a/bin/mrun.py b/bin/mrun.py deleted file mode 100644 index 7f30d5702f..0000000000 --- a/bin/mrun.py +++ /dev/null @@ -1,30 +0,0 @@ -from os import fork, kill, waitpid -from signal import SIGTERM -from subprocess import run -from sys import exit -from time import sleep - -num_processes = 50 - -children = [] - -def be_a_child(): - run(["bin/test-crawl"]) - - -for _ in range(num_processes): - sleep(0.5) - pid = fork() - if pid == 0: - be_a_child() - exit() - children.append(pid) - -input("Enter to exit...") -for pid in children: - kill(pid, SIGTERM) - -for pid in children: - waitpid(pid, 0) - -print("Done") From ffcf74bd03ac1505281094b2c93c0e9679b55778 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 15 Apr 2024 15:28:10 -0300 Subject: [PATCH 065/846] chore: Remove accidental commits... (#7329) --- bin/test-crawl | 57 ++++++++++++-------------------------------------- 1 file changed, 13 insertions(+), 44 deletions(-) diff --git a/bin/test-crawl b/bin/test-crawl index feafe87b30..9b1d5280d5 100755 --- a/bin/test-crawl +++ b/bin/test-crawl @@ -66,16 +66,16 @@ args = parser.parse_args() # Import Django, call setup() os.environ.setdefault("DJANGO_SETTINGS_MODULE", args.settings or "ietf.settings_testcrawl") -# import django -# import django.test -# import django.core.checks -# from django.conf import settings -# from django.utils import timezone -# -# django.setup() +import django +import django.test +import django.core.checks +from django.conf import settings +from django.utils import timezone + +django.setup() # This needs to come after we set up sys path to include the local django -# import debug # pyflakes:ignore +import debug # pyflakes:ignore # prevent memory from leaking when settings.DEBUG=True # from django.db import connection @@ -84,7 +84,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", args.settings or "ietf.settings_ # pass # connection.queries = DontSaveQueries() -# from ietf.name.models import DocTypeName +from ietf.name.models import DocTypeName from ietf.utils.html import unescape from ietf.utils.test_utils import unicontent from ietf.utils.test_runner import start_vnu_server, vnu_validate, vnu_fmt_message, vnu_filter_message @@ -257,7 +257,7 @@ def nowstr(): t = time.time_ns()/(10**9) if nowtime != t: nowtime = t - nowstrn = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%H:%M:%S').encode() + nowstrn = timezone.now().strftime('%H:%M:%S').encode() return nowstrn b_exthost = re.sub(b'https?', b'', args.exthost.encode()) if args.exthost else None @@ -408,8 +408,7 @@ parser = html5lib.HTMLParser(strict=True) # because they aren't under our control, such as uploaded group agendas. validated_urls = {'/meeting/nn/agenda/foo/': True, } -# doc_types = [ t.slug for t in DocTypeName.objects.all() ] -doc_types = ["agenda", "bcp", "bluesheets", "bofreq", "charter", "draft", "rfc"] # partial list +doc_types = [ t.slug for t in DocTypeName.objects.all() ] errors = 0 warnings = 0 @@ -417,36 +416,7 @@ count = 0 start_time = datetime.datetime.now() -# client = django.test.Client(Accept='text/html,text/plain,application/json') -class ExtResponse: - charset = "utf8" - def __init__(self, requests_response): - self._requests_response = requests_response - - def __getattr__(self, item): - return getattr(self._requests_response, item) - - def __getitem__(self, item): - return self._requests_response.headers[item] - - -class ExtClient: - base_url = "http://localhost" - accept_header = "text/html,text/plain,application/json" - - def get(self, url, **kwargs): - kwargs.pop("secure", None) - headers = kwargs.setdefault("headers", {}) - headers["accept"] = self.accept_header - return ExtResponse( - requests.get( - urllib.parse.urljoin(self.base_url, url), - **kwargs, - ) - ) - - -client = ExtClient() +client = django.test.Client(Accept='text/html,text/plain,application/json') logfile = None if args.logfile: @@ -480,8 +450,7 @@ if __name__ == "__main__": do_exit(1) # Run django system checks and checks from ietf.checks: - # error_list = django.core.checks.run_checks() - error_list = [] + error_list = django.core.checks.run_checks() silenced = [] for i in range(len(error_list)): if error_list[i].id in settings.SILENCED_SYSTEM_CHECKS: From 90dc303293411812d96068e22c04fedda1877dde Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 16 Apr 2024 17:03:50 -0300 Subject: [PATCH 066/846] ci: Add scoutapm sidecar container (#7330) * ci: Add scoutapm sidecar container * ci: Configure ScoutAPM via helm --- helm/settings_local.py | 8 +++----- helm/templates/deployments/datatracker.yaml | 7 +++++++ helm/values.yaml | 10 ++++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index 18010a6867..af27e17f7a 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -176,14 +176,12 @@ def _multiline_to_list(s): DEV_PRE_APPS = ["scout_apm.django", ] SCOUT_MONITOR = True SCOUT_KEY = _SCOUT_KEY - SCOUT_NAME = "Datatracker" + SCOUT_NAME = os.environ.get("DATATRACKER_SCOUT_NAME", "Datatracker") SCOUT_ERRORS_ENABLED = True SCOUT_SHUTDOWN_MESSAGE_ENABLED = False - SCOUT_CORE_AGENT_DIR = "/a/core-agent/1.4.0" - SCOUT_CORE_AGENT_FULL_NAME = "scout_apm_core-v1.4.0-x86_64-unknown-linux-musl" SCOUT_CORE_AGENT_SOCKET_PATH = "tcp://{host}:{port}".format( - host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "scout"), - port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "16590"), + host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "localhost"), + port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "6590"), ), SCOUT_CORE_AGENT_DOWNLOAD = False SCOUT_CORE_AGENT_LAUNCH = False diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index 0cc5ab6173..d625872973 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -57,6 +57,13 @@ spec: {{- toYaml $podValues.startupProbe | nindent 12 }} resources: {{- toYaml $podValues.resources | nindent 12 }} + {{- if $podValues.scoutapm }} + initContainers: + - name: "scoutapm" + image: "{{ $podValues.scoutapm.image.repository }}:{{ default "latest" $podValues.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.scoutapm.image.imagePullPolicy }} + restartPolicy: "Always" + {{- end }} {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/helm/values.yaml b/helm/values.yaml index ed568094c2..564f8c0258 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -166,6 +166,12 @@ datatracker: nodeSelector: {} affinity: {} + + # Set this to enable a Scout APM Core Agent sidecar + scoutapm: + image: + repository: "scoutapp/scoutapm" + tag: "version-1.4.0" # ------------------------------------------------------------- # CELERY @@ -661,3 +667,7 @@ env: # use this to override default - one entry per line # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- # https://datatracker.staging.ietf.org + + # Scout configuration + DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" + DATATRACKER_SCOUT_NAME: "StagingDatatracker" From d14cbd10e9578d63a6a3e610b8f5b437d4d57fcb Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 18 Apr 2024 10:42:53 -0300 Subject: [PATCH 067/846] ci: refactor scout sidecar (#7338) * ci: remove stray comma in settings_local.py * ci: move scout sidecar to containers initContainers sidecars not supported until kubernetes 1.29 --- helm/settings_local.py | 2 +- helm/templates/deployments/datatracker.yaml | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index af27e17f7a..2840ca6b98 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -182,7 +182,7 @@ def _multiline_to_list(s): SCOUT_CORE_AGENT_SOCKET_PATH = "tcp://{host}:{port}".format( host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "localhost"), port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "6590"), - ), + ) SCOUT_CORE_AGENT_DOWNLOAD = False SCOUT_CORE_AGENT_LAUNCH = False SCOUT_REVISION_SHA = __release_hash__[:7] diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index d625872973..31f15a5b74 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -27,6 +27,17 @@ spec: securityContext: {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: + {{- if $podValues.scoutapm }} + - name: "scoutapm" + image: "{{ $podValues.scoutapm.image.repository }}:{{ default "latest" $podValues.scoutapm.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $podValues.scoutapm.image.imagePullPolicy }} + livenessProbe: + exec: + command: + - "sh" + - "-c" + - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + {{- end }} - name: {{ .Chart.Name }} securityContext: {{- toYaml $podValues.securityContext | nindent 12 }} @@ -57,13 +68,6 @@ spec: {{- toYaml $podValues.startupProbe | nindent 12 }} resources: {{- toYaml $podValues.resources | nindent 12 }} - {{- if $podValues.scoutapm }} - initContainers: - - name: "scoutapm" - image: "{{ $podValues.scoutapm.image.repository }}:{{ default "latest" $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.scoutapm.image.imagePullPolicy }} - restartPolicy: "Always" - {{- end }} {{- with $podValues.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} From 6ccde89a68ac5b5d4325940ff39536c6457dd6c1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 14:21:20 -0300 Subject: [PATCH 068/846] ci: do not re-run yarn / collectstatics (#7353) --- dev/build/Dockerfile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index bc46637f3a..267dbc587c 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -23,12 +23,6 @@ RUN chmod +x start.sh && \ chmod +x docker/scripts/app-create-dirs.sh && \ sh ./docker/scripts/app-create-dirs.sh -RUN yarn rebuild && \ - yarn build && \ - yarn legacy:build - -RUN echo "yes" | /bin/bash dev/build/collectstatics.sh - RUN mkdir -p /a VOLUME [ "/a" ] From 26f2306316b2b626c5b674b37910cf60dac71572 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 14:59:45 -0300 Subject: [PATCH 069/846] ci: add scout container to celery pod (#7354) * ci: Add scout container to celery pod * ci: Refactor scoutapm settings in values.yaml --- helm/templates/deployments/celery.yaml | 11 +++++++++++ helm/templates/deployments/datatracker.yaml | 6 +++--- helm/values.yaml | 15 +++++++++------ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index 1fb176009a..d697fcdc9d 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -27,6 +27,17 @@ spec: securityContext: {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: + {{- if .Values.scoutapm }} + - name: "scoutapm" + image: "{{ .Values.scoutapm.image.repository }}:{{ default "latest" .Values.scoutapm.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.scoutapm.image.imagePullPolicy }} + livenessProbe: + exec: + command: + - "sh" + - "-c" + - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + {{- end }} - name: {{ .Chart.Name }} securityContext: {{- toYaml $podValues.securityContext | nindent 12 }} diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index 31f15a5b74..85e7556e93 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -27,10 +27,10 @@ spec: securityContext: {{- toYaml $podValues.podSecurityContext | nindent 8 }} containers: - {{- if $podValues.scoutapm }} + {{- if .Values.scoutapm }} - name: "scoutapm" - image: "{{ $podValues.scoutapm.image.repository }}:{{ default "latest" $podValues.scoutapm.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.scoutapm.image.imagePullPolicy }} + image: "{{ .Values.scoutapm.image.repository }}:{{ default "latest" .Values.scoutapm.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" .Values.scoutapm.image.imagePullPolicy }} livenessProbe: exec: command: diff --git a/helm/values.yaml b/helm/values.yaml index 564f8c0258..1a47d7f639 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -166,12 +166,6 @@ datatracker: nodeSelector: {} affinity: {} - - # Set this to enable a Scout APM Core Agent sidecar - scoutapm: - image: - repository: "scoutapp/scoutapm" - tag: "version-1.4.0" # ------------------------------------------------------------- # CELERY @@ -567,6 +561,15 @@ memcached: affinity: {} +# ------------------------------------------------------------- +# SCOUT APM SETTINGS +# ------------------------------------------------------------- +# Set this to enable a Scout APM Core Agent sidecar +scoutapm: + image: + repository: "scoutapp/scoutapm" + tag: "version-1.4.0" + # ------------------------------------------------------------- # PERSISTENT VOLUMES # ------------------------------------------------------------- From b50e60b05fb5e3e58040898ef64b8b65ad02ee63 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 17:03:22 -0300 Subject: [PATCH 070/846] ci: default to static.ietf.org in helm chart --- helm/settings_local.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/helm/settings_local.py b/helm/settings_local.py index 2840ca6b98..53609afa79 100644 --- a/helm/settings_local.py +++ b/helm/settings_local.py @@ -193,10 +193,10 @@ def _multiline_to_list(s): GROUP_ALIASES_PATH = "/a/postfix/group-aliases" GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual" -# Repoint STATIC_URL - hack to let staging access statics without hosting them itself -_STATIC_URL = os.environ.get("DATATRACKER_STATIC_URL", None) -if _STATIC_URL is not None: - STATIC_URL = _STATIC_URL +STATIC_URL = os.environ.get("DATATRACKER_STATIC_URL", None) +if STATIC_URL is None: + from ietf import __version__ + STATIC_URL = f"https://static.ietf.org/dt/{__version__}/" # Set these to the same as "production" in settings.py, whether production mode or not MEDIA_ROOT = "/a/www/www6s/lib/dt/media/" From 9379bbad7d163bccca86bf35454d8ceea9767e60 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 18:16:19 -0300 Subject: [PATCH 071/846] ci: remove reminder comment --- dev/build/datatracker-start.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh index 7a83ff5334..390b46af86 100644 --- a/dev/build/datatracker-start.sh +++ b/dev/build/datatracker-start.sh @@ -15,7 +15,3 @@ gunicorn \ --bind :8000 \ --log-level "${DATATRACKER_GUNICORN_LOG_LEVEL:-info}" \ ietf.wsgi:application - - # Leaving this here as a reminder to set up the env in the chart - # Remove this once that's complete. - #--env SCOUT_NAME=Datatracker \ From 2c9c61d8780f8f7d7c4e25fd8a168cead0e3ef91 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 23 Apr 2024 22:34:24 -0300 Subject: [PATCH 072/846] ci: more memcached mem; set securityContext (#7356) --- helm/templates/deployments/memcached.yaml | 1 + helm/values.yaml | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml index 4bc35927d8..7bf21c1d79 100644 --- a/helm/templates/deployments/memcached.yaml +++ b/helm/templates/deployments/memcached.yaml @@ -31,6 +31,7 @@ spec: securityContext: {{- toYaml $podValues.securityContext | nindent 12 }} image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" + args: ["-m", "$(MEMCACHED_MEM_LIMIT)"] imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} env: {{- if .Values.env }} diff --git a/helm/values.yaml b/helm/values.yaml index 1a47d7f639..dae391aaaa 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -515,9 +515,6 @@ memcached: podAnnotations: {} podLabels: {} - podSecurityContext: {} - # fsGroup: 2000 - replicaCount: 1 resources: {} @@ -532,13 +529,17 @@ memcached: # cpu: 100m # memory: 128Mi - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + podSecurityContext: + runAsNonRoot: true + runAsUser: 11211 + runAsGroup: 11211 + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true service: type: ClusterIP @@ -674,3 +675,5 @@ env: # Scout configuration DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" DATATRACKER_SCOUT_NAME: "StagingDatatracker" + + MEMCACHED_MEM_LIMIT: "1024" From 30a4a5a77b9322c1de42697a6eabb51179adcb52 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 24 Apr 2024 20:21:22 -0300 Subject: [PATCH 073/846] ci: run rabbitmq as non-root (#7362) * ci: securityContext for rabbitmq * ci: logs from rabbitmq as json to console * ci: tmp volume for rabbitmq Needed since rootfs is now read-only * ci: fix permissions on /var/lib/rabbitmq vol Rabbitmq needs to be able to write to the fs at /var/lib/rabbitmq. It may be possible to get rid of the initContainer and use fsGroup in the pod securityContext to manage this, but that does not work for the hostVolume mounts I use for dev. The solution here moves the actual mount to the rabbitmq/ directory in the rabbitmq-data volume and uses an initContainer to set the permissions on that. That should work for any volume type. --- helm/templates/configmap.yaml | 6 ++++ helm/templates/statefulsets/rabbitmq.yaml | 14 ++++++++ helm/values.yaml | 39 +++++++++++++---------- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index e0261f0f49..06cda4a04b 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -61,3 +61,9 @@ data: # absolute number because relative will be proprtional to the full machine # memory. vm_memory_high_watermark.absolute = 1600MB + + # Logging + log.file = false + log.console = true + log.console.level = info + log.console.formatter = json diff --git a/helm/templates/statefulsets/rabbitmq.yaml b/helm/templates/statefulsets/rabbitmq.yaml index dcffe17671..6cb2cc8367 100644 --- a/helm/templates/statefulsets/rabbitmq.yaml +++ b/helm/templates/statefulsets/rabbitmq.yaml @@ -26,6 +26,20 @@ spec: serviceAccountName: {{ include "datatracker.serviceAccountName.rabbitmq" . }} securityContext: {{- toYaml $podValues.podSecurityContext | nindent 8 }} + initContainers: + - name: init-rabbitmq + image: busybox:stable + command: + - "sh" + - "-c" + - "mkdir -p -m700 /mnt/rabbitmq && chown 100:101 /mnt/rabbitmq" + securityContext: + runAsNonRoot: false + runAsUser: 0 + readOnlyRootFilesystem: true + volumeMounts: + - name: "rabbitmq-data" + mountPath: "/mnt" containers: - name: {{ .Chart.Name }} securityContext: diff --git a/helm/values.yaml b/helm/values.yaml index dae391aaaa..366cea3d46 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -405,7 +405,6 @@ rabbitmq: repository: "ghcr.io/ietf-tools/datatracker-mq" pullPolicy: IfNotPresent tag: "3.12-alpine" - imagePullSecrets: [] nameOverride: "" fullnameOverride: "" @@ -419,9 +418,6 @@ rabbitmq: podAnnotations: {} podLabels: {} - podSecurityContext: {} - # fsGroup: 2000 - replicaCount: 1 resources: {} @@ -436,13 +432,18 @@ rabbitmq: # cpu: 100m # memory: 128Mi - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + podSecurityContext: + runAsNonRoot: true + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + # rabbitmq image sets up uid/gid 100/101 + runAsUser: 100 + runAsGroup: 101 service: type: ClusterIP @@ -476,6 +477,9 @@ rabbitmq: - name: "rabbitmq-config" configMap: name: "rabbitmq-configmap" + - name: "rabbitmq-tmp" + emptyDir: + sizeLimit: 50Mi # - name: foo # secret: # secretName: mysecret @@ -484,12 +488,12 @@ rabbitmq: # Additional volumeMounts on the output Deployment definition. volumeMounts: - name: "rabbitmq-data" - mountPath: "/var/lib/rabbitmq/mnesia" + mountPath: "/var/lib/rabbitmq" + subPath: "rabbitmq" - name: "rabbitmq-config" mountPath: "/etc/rabbitmq" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true + - name: "rabbitmq-tmp" + mountPath: "/tmp" tolerations: [] @@ -531,8 +535,6 @@ memcached: podSecurityContext: runAsNonRoot: true - runAsUser: 11211 - runAsGroup: 11211 securityContext: allowPrivilegeEscalation: false @@ -540,6 +542,9 @@ memcached: drop: - ALL readOnlyRootFilesystem: true + # memcached image sets up uid/gid 11211 + runAsUser: 11211 + runAsGroup: 11211 service: type: ClusterIP From c8ee43da95b5e784eeac3f3b2cd1a1d3a45ce445 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 25 Apr 2024 17:24:26 -0300 Subject: [PATCH 074/846] ci: run datatracker pod as non-root user (#7366) * feat: patch_libraries management command * ci: Patch libraries in docker img build * ci: non-root datatracker user * ci: securityContext for datatracker pod --- dev/build/Dockerfile | 6 ++- helm/values.yaml | 45 +++++++------------ .../management/commands/patch_libraries.py | 32 +++++++++++++ 3 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 ietf/utils/management/commands/patch_libraries.py diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 267dbc587c..51d2d3799e 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -3,6 +3,9 @@ LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive +RUN groupadd -g 1000 datatracker && \ + useradd -c "Datatracker User" -u 1000 -g datatracker -m -s /bin/false datatracker + RUN apt-get purge -y imagemagick imagemagick-6-common # Install libreoffice (needed via PPT2PDF_COMMAND) @@ -15,7 +18,8 @@ COPY ./dev/build/start.sh ./start.sh COPY ./dev/build/datatracker-start.sh ./datatracker-start.sh COPY ./dev/build/celery-start.sh ./celery-start.sh -RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt +RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt && \ + ietf/manage.py patch_libraries RUN chmod +x start.sh && \ chmod +x datatracker-start.sh && \ diff --git a/helm/values.yaml b/helm/values.yaml index 366cea3d46..28f9762848 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -67,9 +67,6 @@ datatracker: podAnnotations: {} podLabels: {} - podSecurityContext: {} - # fsGroup: 2000 - #readinessProbe: # httpGet: # # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint @@ -90,13 +87,17 @@ datatracker: # cpu: 100m # memory: 128Mi - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + podSecurityContext: + runAsNonRoot: true + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 service: type: ClusterIP @@ -132,17 +133,9 @@ datatracker: - name: datatracker-shared-volume persistentVolumeClaim: claimName: "datatracker-shared-volume-claim" -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# emptyDir: -# sizeLimit: 1Gi -# - name: staging-volume -# emptyDir: -# sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false + - name: datatracker-tmp + emptyDir: + sizeLimit: "2Gi" # Additional volumeMounts on the output Deployment definition. volumeMounts: @@ -152,14 +145,8 @@ datatracker: readOnly: true - name: datatracker-shared-volume mountPath: /a -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# mountPath: "/a/cache" -# - name: staging-volume -# mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true + - name: datatracker-tmp + mountPath: /tmp tolerations: [] diff --git a/ietf/utils/management/commands/patch_libraries.py b/ietf/utils/management/commands/patch_libraries.py new file mode 100644 index 0000000000..2ada67a280 --- /dev/null +++ b/ietf/utils/management/commands/patch_libraries.py @@ -0,0 +1,32 @@ +# Copyright The IETF Trust 2024, All Rights Reserved +import django +import os + +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError +from pathlib import Path + +from ietf.utils import patch + + +class Command(BaseCommand): + """Apply IETF patches to libraries""" + requires_system_checks = tuple() + + def handle(self, *args, **options): + library_path = Path(django.__file__).parent.parent + top_dir = Path(settings.BASE_DIR).parent + + # All patches in settings.CHECKS_LIBRARY_PATCHES_TO_APPLY must have a + # relative file path starting from the site-packages dir, e.g. + # 'django/db/models/fields/__init__.py' + for patch_file in settings.CHECKS_LIBRARY_PATCHES_TO_APPLY: + patch_set = patch.fromfile(top_dir / Path(patch_file)) + if not patch_set: + raise CommandError(f"Could not parse patch file '{patch_file}'") + if not patch_set.apply(root=bytes(library_path)): + raise CommandError(f"Could not apply the patch from '{patch_file}'") + if patch_set.already_patched: + self.stdout.write(f"Patch from '{patch_file}' was already applied") + else: + self.stdout.write(f"Applied the patch from '{patch_file}'") From 70c32254a94a444f0c405515b2b5d2af3c6fc34b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 25 Apr 2024 17:44:38 -0300 Subject: [PATCH 075/846] ci: non-root user for scout containers --- helm/templates/deployments/celery.yaml | 4 ++++ helm/templates/deployments/datatracker.yaml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml index d697fcdc9d..5c824aa2d0 100644 --- a/helm/templates/deployments/celery.yaml +++ b/helm/templates/deployments/celery.yaml @@ -37,6 +37,10 @@ spec: - "sh" - "-c" - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + securityContext: + readOnlyRootFilesystem: {{ default true .Values.scoutapm.readOnlyRootFilesystem }} + runAsUser: {{ default 65534 .Values.scoutapm.runAsUser }} # "nobody" user by default + runAsGroup: {{ default 65534 .Values.scoutapm.runAsGroup }} # "nogroup" group by default {{- end }} - name: {{ .Chart.Name }} securityContext: diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml index 85e7556e93..acd54af97a 100644 --- a/helm/templates/deployments/datatracker.yaml +++ b/helm/templates/deployments/datatracker.yaml @@ -37,6 +37,10 @@ spec: - "sh" - "-c" - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + securityContext: + readOnlyRootFilesystem: {{ default true .Values.scoutapm.readOnlyRootFilesystem }} + runAsUser: {{ default 65534 .Values.scoutapm.runAsUser }} # "nobody" user by default + runAsGroup: {{ default 65534 .Values.scoutapm.runAsGroup }} # "nogroup" group by default {{- end }} - name: {{ .Chart.Name }} securityContext: From 4e2b9ce7a6144ef93aeebe48b88b1abdf83bcd09 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 25 Apr 2024 18:23:26 -0300 Subject: [PATCH 076/846] ci: Non-root for celery containers (#7368) --- helm/values.yaml | 90 +++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 58 deletions(-) diff --git a/helm/values.yaml b/helm/values.yaml index 28f9762848..aa5bbaf30c 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -180,9 +180,6 @@ celery: podAnnotations: {} podLabels: {} - podSecurityContext: {} - # fsGroup: 2000 - replicaCount: 1 resources: {} @@ -197,13 +194,17 @@ celery: # cpu: 100m # memory: 128Mi - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + podSecurityContext: + runAsNonRoot: true + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 serviceAccount: # Specifies whether a service account should be created @@ -233,17 +234,9 @@ celery: - name: datatracker-shared-volume persistentVolumeClaim: claimName: "datatracker-shared-volume-claim" -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# emptyDir: -# sizeLimit: 1Gi -# - name: staging-volume -# emptyDir: -# sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false + - name: celery-tmp + emptyDir: + sizeLimit: "2Gi" # Additional volumeMounts on the output Deployment definition. volumeMounts: @@ -253,14 +246,8 @@ celery: readOnly: true - name: datatracker-shared-volume mountPath: /a -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# mountPath: "/a/cache" -# - name: staging-volume -# mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true + - name: celery-tmp + mountPath: /tmp tolerations: [] @@ -294,9 +281,6 @@ beat: podAnnotations: {} podLabels: {} - podSecurityContext: {} - # fsGroup: 2000 - replicaCount: 1 resources: {} @@ -311,13 +295,17 @@ beat: # cpu: 100m # memory: 128Mi - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + podSecurityContext: + runAsNonRoot: true + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 serviceAccount: # Specifies whether a service account should be created @@ -347,17 +335,9 @@ beat: - name: datatracker-shared-volume persistentVolumeClaim: claimName: "datatracker-shared-volume-claim" -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# emptyDir: -# sizeLimit: 1Gi -# - name: staging-volume -# emptyDir: -# sizeLimit: 1Gi - # - name: foo - # secret: - # secretName: mysecret - # optional: false + - name: beat-tmp + emptyDir: + sizeLimit: "2Gi" # Additional volumeMounts on the output Deployment definition. volumeMounts: @@ -367,14 +347,8 @@ beat: readOnly: true - name: datatracker-shared-volume mountPath: /a -# cache-volume and staging-volume are a hack to create paths for debugging without a /a volume -# - name: cache-volume -# mountPath: "/a/cache" -# - name: staging-volume -# mountPath: "/test/staging" - # - name: foo - # mountPath: "/etc/foo" - # readOnly: true + - name: beat-tmp + mountPath: /tmp tolerations: [] From 8f87573144276980af42a9b391a4f1984748d300 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 25 Apr 2024 20:05:50 -0300 Subject: [PATCH 077/846] ci: Fill in settings_local for docker --- dev/build/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 51d2d3799e..d5578be3df 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -19,7 +19,9 @@ COPY ./dev/build/datatracker-start.sh ./datatracker-start.sh COPY ./dev/build/celery-start.sh ./celery-start.sh RUN pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt && \ - ietf/manage.py patch_libraries + echo '# empty' > ietf/settings_local.py && \ + ietf/manage.py patch_libraries && \ + rm -f ietf/settings_local.py RUN chmod +x start.sh && \ chmod +x datatracker-start.sh && \ From d2623de615b81754fc125ec688e077a06c633bb1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 26 Apr 2024 17:00:51 -0300 Subject: [PATCH 078/846] feat: config celery logging via Django (#7371) * feat: config celery logger via Django * feat: Disable celery's logging config --- ietf/celeryapp.py | 10 ++++++++-- ietf/settings.py | 14 +++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ietf/celeryapp.py b/ietf/celeryapp.py index b36f134636..08089d509e 100644 --- a/ietf/celeryapp.py +++ b/ietf/celeryapp.py @@ -1,14 +1,20 @@ import os import scout_apm.celery -from celery import Celery +import celery from scout_apm.api import Config +# Disable celery's internal logging configuration, we set it up via Django +@celery.signals.setup_logging.connect +def on_setup_logging(**kwargs): + pass + + # Set the default Django settings module for the 'celery' program os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ietf.settings') -app = Celery('ietf') +app = celery.Celery('ietf') # Using a string here means the worker doesn't have to serialize # the configuration object to child processes. diff --git a/ietf/settings.py b/ietf/settings.py index 990d8bf056..9f12e0b4dc 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -252,17 +252,21 @@ def skip_unreadable_post(record): 'level': 'INFO', }, 'django.security': { - 'handlers': ['console', ], + 'handlers': ['console', ], 'level': 'INFO', }, - 'oidc_provider': { - 'handlers': ['debug_console', ], - 'level': 'DEBUG', - }, + 'oidc_provider': { + 'handlers': ['debug_console', ], + 'level': 'DEBUG', + }, 'datatracker': { 'handlers': ['console', ], 'level': 'INFO', }, + 'celery': { + 'handlers': ['console'], + 'level': 'INFO', + } }, # # No logger filters From e35b46eed81e71306a67e34331e566e8ec7cd791 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 26 Apr 2024 17:51:58 -0300 Subject: [PATCH 079/846] ci: fix celery scout env var names (#7373) --- ietf/celeryapp.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ietf/celeryapp.py b/ietf/celeryapp.py index 08089d509e..fda89c30be 100644 --- a/ietf/celeryapp.py +++ b/ietf/celeryapp.py @@ -23,10 +23,13 @@ def on_setup_logging(**kwargs): app.config_from_object('django.conf:settings', namespace='CELERY') # Turn on Scout APM celery instrumentation if configured in the environment -scout_key = os.environ.get("SCOUT_KEY", "") -scout_name = os.environ.get("SCOUT_NAME", "") -scout_core_agent_socket_path = os.environ.get("SCOUT_CORE_AGENT_SOCKET_PATH", "tcp://scoutapm:6590") -if scout_key and scout_name: +scout_key = os.environ.get("DATATRACKER_SCOUT_KEY", None) +if scout_key is not None: + scout_name = os.environ.get("DATATRACKER_SCOUT_NAME", "Datatracker") + scout_core_agent_socket_path = "tcp://{host}:{port}".format( + host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "localhost"), + port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "6590"), + ) Config.set( key=scout_key, name=scout_name, From 3ea70f2ceb345f60053ae7ab05784350adae4940 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 4 May 2024 01:13:19 -0400 Subject: [PATCH 080/846] refactor: helm to kustomize (wip) --- k8s/datatracker.yaml | 190 ++++++++++++++++++++++++++++++ k8s/kustomization.yaml | 10 ++ k8s/memcached.yaml | 14 +++ k8s/rabbitmq.yaml | 183 +++++++++++++++++++++++++++++ k8s/settings_local.py | 259 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 656 insertions(+) create mode 100644 k8s/datatracker.yaml create mode 100644 k8s/kustomization.yaml create mode 100644 k8s/memcached.yaml create mode 100644 k8s/rabbitmq.yaml create mode 100644 k8s/settings_local.py diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml new file mode 100644 index 0000000000..9f59c28c87 --- /dev/null +++ b/k8s/datatracker.yaml @@ -0,0 +1,190 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment +spec: + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: datatracker + strategy: + type: Recreate + template: + metadata: + labels: + app: datatracker + spec: + # ------------------------------------------------------- + # Node Affinity + # ------------------------------------------------------- + nodeSelector: + doks.digitalocean.com/node-pool: pool-apollo-hperf + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - mailarchive + topologyKey: "kubernetes.io/hostname" + # ------------------------------------------------------- + securityContext: + runAsNonRoot: true + containers: + # ----------------------------------------------------- + # ScoutAPM Container + # ----------------------------------------------------- + - name: scoutapm + image: "scoutapp/scoutapm:version-1.4.0" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - "sh" + - "-c" + - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + securityContext: + readOnlyRootFilesystem: true + runAsUser: 65534 # "nobody" user by default + runAsGroup: 65534 # "nogroup" group by default + # ----------------------------------------------------- + # Datatracker Container + # ----------------------------------------------------- + - name: datatracker + image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" + imagePullPolicy: Always + ports: + - containerPort: 80 + name: http + protocol: TCP + volumeMounts: + - name: dt-vol + mountPath: /a + - name: dt-tmp + mountPath: /tmp + - name: dt-cfg + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + envFrom: + - configMapRef: + name: django-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 + volumes: + - name: dt-vol + nfs: + server: 10.108.0.18 + path: "/mnt/datatracker" + readOnly: false + - name: dt-tmp + emptyDir: + sizeLimit: "2Gi" + - name: dt-cfg + configMap: + name: files-cfgmap + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: django-config +data: + # n.b., these are debug values / non-secret secrets + DATATRACKER_SERVER_MODE: "development" # development for staging, production for production + DATATRACKER_ADMINS: |- + Robert Sparks + Ryan Cross + Kesara Rathnayake + Jennifer Richards + Nicolas Giard + DATATRACKER_ALLOWED_HOSTS: ".ietf.org" # newline-separated list also allowed + # DATATRACKER_DATATRACKER_DEBUG: "false" + + # DB access details - needs to be filled in + # DATATRACKER_DBHOST: "db" + # DATATRACKER_DBPORT: "5432" + # DATATRACKER_DBNAME: "datatracker" + # DATATRACKER_DBUSER: "django" # secret + # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret + + DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret + + # Set this to point testing / staging at the production statics server until we + # sort that out + # DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" + + # DATATRACKER_EMAIL_DEBUG: "true" + + # Outgoing email details + # DATATRACKER_EMAIL_HOST: "localhost" # defaults to localhost + # DATATRACKER_EMAIL_PORT: "2025" # defaults to 2025 + + # The value here is the default from settings.py (i.e., not actually secret) + 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 + + # API key configuration + DATATRACKER_API_KEY_TYPE: "ES265" + # secret - value here is the default from settings.py (i.e., not actually secret) + DATATRACKER_API_PUBLIC_KEY_PEM_B64: |- + Ci0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS + 29aSXpqMERBUWNEUWdBRXFWb2pzYW9mREpTY3VNSk4rdHNodW15Tk01TUUKZ2Fyel + ZQcWtWb3ZtRjZ5RTdJSi9kdjRGY1YrUUtDdEovck9TOGUzNlk4WkFFVll1dWtoZXM + weVoxdz09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo= + # secret - value here is the default from settings.py (i.e., not actually secret) + DATATRACKER_API_PRIVATE_KEY_PEM_B64: |- + Ci0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQpNSUdIQWdFQU1CTUdCeXFHU000O + UFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdvSTZMSmtvcEtxOFhySGk5ClFxR1 + F2RTRBODNURllqcUx6KzhnVUxZZWNzcWhSQU5DQUFTcFdpT3hxaDhNbEp5NHdrMzY + yeUc2Ykkwemt3U0IKcXZOVStxUldpK1lYcklUc2duOTIvZ1Z4WDVBb0swbitzNUx4 + N2ZwanhrQVJWaTY2U0Y2elRKblgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + + # DATATRACKER_MEETECHO_API_BASE: "https://meetings.conf.meetecho.com/api/v1/" + DATATRACKER_MEETECHO_CLIENT_ID: "this-is-the-meetecho-client-id" # secret + DATATRACKER_MEETECHO_CLIENT_SECRET: "this-is-the-meetecho-client-secret" # secret + + # DATATRACKER_MATOMO_SITE_ID: "7" # must be present to enable Matomo + # DATATRACKER_MATOMO_DOMAIN_PATH: "analytics.ietf.org" + + CELERY_PASSWORD: "this-is-a-secret" # secret + + DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret + + # use this to override default - one entry per line + # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- + # https://datatracker.staging.ietf.org + + # Scout configuration + DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" + DATATRACKER_SCOUT_NAME: "StagingDatatracker" +--- +apiVersion: v1 +kind: Service +metadata: + name: datatracker +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: datatracker \ No newline at end of file diff --git a/k8s/kustomization.yaml b/k8s/kustomization.yaml new file mode 100644 index 0000000000..61df222ebd --- /dev/null +++ b/k8s/kustomization.yaml @@ -0,0 +1,10 @@ +namespace: datatracker +namePrefix: datatracker- +configMapGenerator: + - name: files-cfgmap + files: + - settings_local.py +resources: + - datatracker.yaml + - memcached.yaml + - rabbitmq.yaml \ No newline at end of file diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml new file mode 100644 index 0000000000..93665c9cf8 --- /dev/null +++ b/k8s/memcached.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: memcached +spec: + type: ClusterIP + ports: + - port: 11211 + targetPort: memcached + protocol: TCP + name: memcached + selector: + app: memcached \ No newline at end of file diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml new file mode 100644 index 0000000000..4c4a472238 --- /dev/null +++ b/k8s/rabbitmq.yaml @@ -0,0 +1,183 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: rabbitmq +spec: + replicas: 1 + revisionHistoryLimit: 2 + serviceName: rabbitmq + selector: + matchLabels: + app: rabbitmq + template: + metadata: + labels: + app: rabbitmq + spec: + # ------------------------------------------------------- + # Node Affinity + # ------------------------------------------------------- + nodeSelector: + doks.digitalocean.com/node-pool: pool-apollo-hperf + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - datatracker + topologyKey: "kubernetes.io/hostname" + # ------------------------------------------------------- + securityContext: + runAsNonRoot: true + initContainers: + # ----------------------------------------------------- + # Init RabbitMQ data + # ----------------------------------------------------- + - name: init-rabbitmq + image: busybox:stable + command: + - "sh" + - "-c" + - "mkdir -p -m700 /mnt/rabbitmq && chown 100:101 /mnt/rabbitmq" + securityContext: + runAsNonRoot: false + runAsUser: 0 + readOnlyRootFilesystem: true + volumeMounts: + - name: "rabbitmq-data" + mountPath: "/mnt" + containers: + # ----------------------------------------------------- + # RabbitMQ Container + # ----------------------------------------------------- + - image: "ghcr.io/ietf-tools/datatracker-mq:3.12-alpine" + imagePullPolicy: Always + name: rabbitmq + ports: + - name: amqp + containerPort: 5672 + protocol: TCP + volumeMounts: + - name: rabbitmq-data + mountPath: /var/lib/rabbitmq + subPath: "rabbitmq" + - name: rabbitmq-tmp + mountPath: /tmp + - name: rabbitmq-config + mountPath: "/etc/rabbitmq" + livenessProbe: + exec: + command: ["rabbitmq-diagnostics", "-q", "ping"] + periodSeconds: 30 + timeoutSeconds: 5 + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: ["rabbitmq-diagnostics", "-q", "ping"] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + # rabbitmq image sets up uid/gid 100/101 + runAsUser: 100 + runAsGroup: 101 + volumes: + - name: rabbitmq-data + # TODO: TODO TODO + - name: rabbitmq-tmp + emptyDir: + sizeLimit: "50Mi" + - name: rabbitmq-config + configMap: + name: "rabbitmq-configmap" + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: rabbitmq-configmap +data: + definitions.json: |- + { + "permissions": [ + { + "configure": ".*", + "read": ".*", + "user": "datatracker", + "vhost": "dt", + "write": ".*" + } + ], + "users": [ + { + "hashing_algorithm": "rabbit_password_hashing_sha256", + "limits": {}, + "name": "datatracker", + "password_hash": "HJxcItcpXtBN+R/CH7dUelfKBOvdUs3AWo82SBw2yLMSguzb", + "tags": [] + } + ], + "vhosts": [ + { + "limits": [], + "metadata": { + "description": "", + "tags": [] + }, + "name": "dt" + } + ] + } + rabbitmq.conf: |- + # prevent guest from logging in over tcp + loopback_users.guest = true + + # load saved definitions + load_definitions = /etc/rabbitmq/definitions.json + + # Ensure that enough disk is available to flush to disk. To do this, need to limit the + # memory available to the container to something reasonable. See + # https://www.rabbitmq.com/production-checklist.html#monitoring-and-resource-usage + # for recommendations. + + # 1-1.5 times the memory available to the container is adequate for disk limit + disk_free_limit.absolute = 6000MB + + # This should be ~40% of the memory available to the container. Use an + # absolute number because relative will be proprtional to the full machine + # memory. + vm_memory_high_watermark.absolute = 1600MB + + # Logging + log.file = false + log.console = true + log.console.level = info + log.console.formatter = json +--- +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq +spec: + type: ClusterIP + clusterIP: None # headless service + ports: + - port: 5672 + targetPort: amqp + protocol: TCP + name: amqp + selector: + app: rabbitmq \ No newline at end of file diff --git a/k8s/settings_local.py b/k8s/settings_local.py new file mode 100644 index 0000000000..53609afa79 --- /dev/null +++ b/k8s/settings_local.py @@ -0,0 +1,259 @@ +# Copyright The IETF Trust 2007-2024, All Rights Reserved +# -*- coding: utf-8 -*- + +from base64 import b64decode +from email.utils import parseaddr +import json + +from ietf import __release_hash__ +from ietf.settings import * # pyflakes:ignore + + +def _remove_whitespace_and_b64decode(s): + """Helper to strip out whitespace and base64 decode""" + return b64decode("".join(s.split())) + + +def _multiline_to_list(s): + """Helper to split at newlines and conver to list""" + return [item.strip() for item in s.split("\n")] + + +# Default to "development". Production _must_ set DATATRACKER_SERVER_MODE="production" in the env! +SERVER_MODE = os.environ.get("DATATRACKER_SERVER_MODE", "development") + +# Secrets +_SECRET_KEY = os.environ.get("DATATRACKER_DJANGO_SECRET_KEY", None) +if _SECRET_KEY is not None: + SECRET_KEY = _SECRET_KEY +else: + raise RuntimeError("DATATRACKER_DJANGO_SECRET_KEY must be set") + +_NOMCOM_APP_SECRET_B64 = os.environ.get("DATATRACKER_NOMCOM_APP_SECRET_B64", None) +if _NOMCOM_APP_SECRET_B64 is not None: + NOMCOM_APP_SECRET = _remove_whitespace_and_b64decode(_NOMCOM_APP_SECRET_B64) +else: + raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set") + +_IANA_SYNC_PASSWORD = os.environ.get("DATATRACKER_IANA_SYNC_PASSWORD", None) +if _IANA_SYNC_PASSWORD is not None: + IANA_SYNC_PASSWORD = _IANA_SYNC_PASSWORD +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 +else: + raise RuntimeError("DATATRACKER_YOUTUBE_API_KEY must be set") + +_GITHUB_BACKUP_API_KEY = os.environ.get("DATATRACKER_GITHUB_BACKUP_API_KEY", None) +if _GITHUB_BACKUP_API_KEY is not None: + GITHUB_BACKUP_API_KEY = _GITHUB_BACKUP_API_KEY +else: + raise RuntimeError("DATATRACKER_GITHUB_BACKUP_API_KEY must be set") + +_API_KEY_TYPE = os.environ.get("DATATRACKER_API_KEY_TYPE", None) +if _API_KEY_TYPE is not None: + API_KEY_TYPE = _API_KEY_TYPE +else: + raise RuntimeError("DATATRACKER_API_KEY_TYPE must be set") + +_API_PUBLIC_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PUBLIC_KEY_PEM_B64", None) +if _API_PUBLIC_KEY_PEM_B64 is not None: + API_PUBLIC_KEY_PEM = _remove_whitespace_and_b64decode(_API_PUBLIC_KEY_PEM_B64) +else: + raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set") + +_API_PRIVATE_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PRIVATE_KEY_PEM_B64", None) +if _API_PRIVATE_KEY_PEM_B64 is not None: + API_PRIVATE_KEY_PEM = _remove_whitespace_and_b64decode(_API_PRIVATE_KEY_PEM_B64) +else: + raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") + +# Set DEBUG if DATATRACKER_DEBUG env var is the word "true" +DEBUG = os.environ.get("DATATRACKER_DEBUG", "false").lower() == "true" + +# DATATRACKER_ALLOWED_HOSTS env var is a comma-separated list of allowed hosts +_allowed_hosts_str = os.environ.get("DATATRACKER_ALLOWED_HOSTS", None) +if _allowed_hosts_str is not None: + ALLOWED_HOSTS = _multiline_to_list(_allowed_hosts_str) + +DATABASES = { + "default": { + "HOST": os.environ.get("DATATRACKER_DBHOST", "db"), + "PORT": os.environ.get("DATATRACKER_DBPORT", "5432"), + "NAME": os.environ.get("DATATRACKER_DBNAME", "datatracker"), + "ENGINE": "django.db.backends.postgresql", + "USER": os.environ.get("DATATRACKER_DBUSER", "django"), + "PASSWORD": os.environ.get("DATATRACKER_DBPASS", ""), + }, +} + +# DATATRACKER_ADMINS is a newline-delimited list of addresses parseable by email.utils.parseaddr +_admins_str = os.environ.get("DATATRACKER_ADMINS", None) +if _admins_str is not None: + ADMINS = [parseaddr(admin) for admin in _multiline_to_list(_admins_str)] +else: + raise RuntimeError("DATATRACKER_ADMINS must be set") + +USING_DEBUG_EMAIL_SERVER = os.environ.get("DATATRACKER_EMAIL_DEBUG", "false").lower() == "true" +EMAIL_HOST = os.environ.get("DATATRACKER_EMAIL_HOST", "localhost") +EMAIL_PORT = int(os.environ.get("DATATRACKER_EMAIL_PORT", "2025")) + +_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", "rabbitmq"), + password=_celery_password, + queue=os.environ.get("RABBITMQ_QUEUE", "dt") +) + +IANA_SYNC_USERNAME = "ietfsync" +IANA_SYNC_CHANGES_URL = "https://datatracker.iana.org:4443/data-tracker/changes" +IANA_SYNC_PROTOCOLS_URL = "http://www.iana.org/protocols/" + +RFC_EDITOR_NOTIFICATION_URL = "http://www.rfc-editor.org/parser/parser.php" + +STATS_REGISTRATION_ATTENDEES_JSON_URL = 'https://registration.ietf.org/{number}/attendees/?apikey=redacted' + +#FIRST_CUTOFF_DAYS = 12 +#SECOND_CUTOFF_DAYS = 12 +#SUBMISSION_CUTOFF_DAYS = 26 +#SUBMISSION_CORRECTION_DAYS = 57 +MEETING_MATERIALS_SUBMISSION_CUTOFF_DAYS = 26 +MEETING_MATERIALS_SUBMISSION_CORRECTION_DAYS = 54 + +HTPASSWD_COMMAND = "/usr/bin/htpasswd2" + +_MEETECHO_CLIENT_ID = os.environ.get("DATATRACKER_MEETECHO_CLIENT_ID", None) +_MEETECHO_CLIENT_SECRET = os.environ.get("DATATRACKER_MEETECHO_CLIENT_SECRET", None) +if _MEETECHO_CLIENT_ID is not None and _MEETECHO_CLIENT_SECRET is not None: + MEETECHO_API_CONFIG = { + "api_base": os.environ.get( + "DATATRACKER_MEETECHO_API_BASE", + "https://meetings.conf.meetecho.com/api/v1/", + ), + "client_id": _MEETECHO_CLIENT_ID, + "client_secret": _MEETECHO_CLIENT_SECRET, + "request_timeout": 3.01, # python-requests doc recommend slightly > a multiple of 3 seconds + } +else: + raise RuntimeError( + "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set" + ) + +_APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) +if _APP_API_TOKENS_JSON is not None: + APP_API_TOKENS = json.loads(_APP_API_TOKENS_JSON) +else: + APP_API_TOKENS = {} + +EMAIL_COPY_TO = "" + +# Until we teach the datatracker to look beyond cloudflare for this check +IDSUBMIT_MAX_DAILY_SAME_SUBMITTER = 5000 + +# Leave DATATRACKER_MATOMO_SITE_ID unset to disable Matomo reporting +if "DATATRACKER_MATOMO_SITE_ID" in os.environ: + MATOMO_DOMAIN_PATH = os.environ.get("DATATRACKER_MATOMO_DOMAIN_PATH", "analytics.ietf.org") + MATOMO_SITE_ID = os.environ.get("DATATRACKER_MATOMO_SITE_ID") + MATOMO_DISABLE_COOKIES = True + +# Leave DATATRACKER_SCOUT_KEY unset to disable Scout APM agent +_SCOUT_KEY = os.environ.get("DATATRACKER_SCOUT_KEY", None) +if _SCOUT_KEY is not None: + if SERVER_MODE == "production": + PROD_PRE_APPS = ["scout_apm.django", ] + else: + DEV_PRE_APPS = ["scout_apm.django", ] + SCOUT_MONITOR = True + SCOUT_KEY = _SCOUT_KEY + SCOUT_NAME = os.environ.get("DATATRACKER_SCOUT_NAME", "Datatracker") + SCOUT_ERRORS_ENABLED = True + SCOUT_SHUTDOWN_MESSAGE_ENABLED = False + SCOUT_CORE_AGENT_SOCKET_PATH = "tcp://{host}:{port}".format( + host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "localhost"), + port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "6590"), + ) + SCOUT_CORE_AGENT_DOWNLOAD = False + SCOUT_CORE_AGENT_LAUNCH = False + SCOUT_REVISION_SHA = __release_hash__[:7] + +# Path to the email alias lists. Used by ietf.utils.aliases +DRAFT_ALIASES_PATH = "/a/postfix/draft-aliases" +DRAFT_VIRTUAL_PATH = "/a/postfix/draft-virtual" +GROUP_ALIASES_PATH = "/a/postfix/group-aliases" +GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual" + +STATIC_URL = os.environ.get("DATATRACKER_STATIC_URL", None) +if STATIC_URL is None: + from ietf import __version__ + STATIC_URL = f"https://static.ietf.org/dt/{__version__}/" + +# Set these to the same as "production" in settings.py, whether production mode or not +MEDIA_ROOT = "/a/www/www6s/lib/dt/media/" +MEDIA_URL = "https://www.ietf.org/lib/dt/media/" +PHOTOS_DIRNAME = "photo" +PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME + +# Normally only set for debug, but needed until we have a real FS +DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') + +# Binaries that are different in the docker image +DE_GFM_BINARY = "/usr/local/bin/de-gfm" +IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" + +# Duplicating production cache from settings.py and using it whether we're in production mode or not +MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") +from ietf import __version__ +CACHES = { + "default": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + "VERSION": __version__, + "KEY_PREFIX": "ietf:dt", + "KEY_FUNCTION": lambda key, key_prefix, version: ( + f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" + ), + }, + "sessions": { + "BACKEND": "ietf.utils.cache.LenientMemcacheCache", + "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt", + }, + "htmlized": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/htmlized", + "OPTIONS": { + "MAX_ENTRIES": 100000, # 100,000 + }, + }, + "pdfized": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/pdfized", + "OPTIONS": { + "MAX_ENTRIES": 100000, # 100,000 + }, + }, + "slowpages": { + "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", + "LOCATION": "/a/cache/datatracker/slowpages", + "OPTIONS": { + "MAX_ENTRIES": 5000, + }, + }, +} + +_csrf_trusted_origins_str = os.environ.get("DATATRACKER_CSRF_TRUSTED_ORIGINS") +if _csrf_trusted_origins_str is not None: + CSRF_TRUSTED_ORIGINS = _multiline_to_list(_csrf_trusted_origins_str) From 0a3bb9e3813c7bc53250b57d7f1e90b3d2dfeeb1 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 4 May 2024 15:02:11 -0400 Subject: [PATCH 081/846] refactor: move node affinity to upstream --- k8s/datatracker.yaml | 20 +------------------- k8s/rabbitmq.yaml | 18 ------------------ 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 9f59c28c87..b2a443db30 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -1,7 +1,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: deployment + name: datatracker spec: replicas: 1 revisionHistoryLimit: 2 @@ -15,24 +15,6 @@ spec: labels: app: datatracker spec: - # ------------------------------------------------------- - # Node Affinity - # ------------------------------------------------------- - nodeSelector: - doks.digitalocean.com/node-pool: pool-apollo-hperf - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - mailarchive - topologyKey: "kubernetes.io/hostname" - # ------------------------------------------------------- securityContext: runAsNonRoot: true containers: diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml index 4c4a472238..c5a823ac2a 100644 --- a/k8s/rabbitmq.yaml +++ b/k8s/rabbitmq.yaml @@ -14,24 +14,6 @@ spec: labels: app: rabbitmq spec: - # ------------------------------------------------------- - # Node Affinity - # ------------------------------------------------------- - nodeSelector: - doks.digitalocean.com/node-pool: pool-apollo-hperf - affinity: - podAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - datatracker - topologyKey: "kubernetes.io/hostname" - # ------------------------------------------------------- securityContext: runAsNonRoot: true initContainers: From 24309c2b04e76f598ca99f073a8ceca0c0d4b44c Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 4 May 2024 18:51:18 -0400 Subject: [PATCH 082/846] refactor: move nfs entry upstream --- k8s/datatracker.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index b2a443db30..f63a7004d1 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -64,11 +64,8 @@ spec: runAsUser: 1000 runAsGroup: 1000 volumes: + # To be overriden with the actual shared volume - name: dt-vol - nfs: - server: 10.108.0.18 - path: "/mnt/datatracker" - readOnly: false - name: dt-tmp emptyDir: sizeLimit: "2Gi" From 05bd47cbad4c8cb3e98cd3188c342ec1274615cb Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 4 May 2024 19:38:42 -0400 Subject: [PATCH 083/846] chore: add rabbitmq vol claim template --- k8s/kustomization.yaml | 2 +- k8s/rabbitmq.yaml | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/k8s/kustomization.yaml b/k8s/kustomization.yaml index 61df222ebd..021dfe7981 100644 --- a/k8s/kustomization.yaml +++ b/k8s/kustomization.yaml @@ -1,5 +1,5 @@ namespace: datatracker -namePrefix: datatracker- +namePrefix: dt- configMapGenerator: - name: files-cfgmap files: diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml index c5a823ac2a..4655771213 100644 --- a/k8s/rabbitmq.yaml +++ b/k8s/rabbitmq.yaml @@ -76,7 +76,8 @@ spec: runAsGroup: 101 volumes: - name: rabbitmq-data - # TODO: TODO TODO + persistentVolumeClaim: + claimName: "rabbitmq-data-vol" - name: rabbitmq-tmp emptyDir: sizeLimit: "50Mi" @@ -86,6 +87,16 @@ spec: dnsPolicy: ClusterFirst restartPolicy: Always terminationGracePeriodSeconds: 30 + volumeClaimTemplates: + - metadata: + name: rabbitmq-data-vol + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + # storageClassName: "" --- apiVersion: v1 kind: ConfigMap From d075404fdb78f86f09bb0ad8bec326f0f651a604 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 4 May 2024 20:15:02 -0400 Subject: [PATCH 084/846] refactor: add beat + celery deployments --- k8s/beat.yaml | 61 +++++++++++++++++++++++++++++++ k8s/celery.yaml | 80 +++++++++++++++++++++++++++++++++++++++++ k8s/datatracker.yaml | 81 ++---------------------------------------- k8s/django-config.yaml | 77 +++++++++++++++++++++++++++++++++++++++ k8s/kustomization.yaml | 3 ++ k8s/memcached.yaml | 39 ++++++++++++++++++++ 6 files changed, 263 insertions(+), 78 deletions(-) create mode 100644 k8s/beat.yaml create mode 100644 k8s/celery.yaml create mode 100644 k8s/django-config.yaml diff --git a/k8s/beat.yaml b/k8s/beat.yaml new file mode 100644 index 0000000000..7099fec76e --- /dev/null +++ b/k8s/beat.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: beat +spec: + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: beat + strategy: + type: Recreate + template: + metadata: + labels: + app: beat + spec: + securityContext: + runAsNonRoot: true + containers: + - name: beat + image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" + imagePullPolicy: Always + ports: + - containerPort: 8000 + name: http + protocol: TCP + volumeMounts: + - name: dt-vol + mountPath: /a + - name: dt-tmp + mountPath: /tmp + - name: dt-cfg + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + env: + - name: "CONTAINER_ROLE" + value: "beat" + envFrom: + - configMapRef: + name: django-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 + volumes: + # To be overriden with the actual shared volume + - name: dt-vol + - name: dt-tmp + emptyDir: + sizeLimit: "2Gi" + - name: dt-cfg + configMap: + name: files-cfgmap + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/k8s/celery.yaml b/k8s/celery.yaml new file mode 100644 index 0000000000..0c6bbf4758 --- /dev/null +++ b/k8s/celery.yaml @@ -0,0 +1,80 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: celery +spec: + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: celery + strategy: + type: Recreate + template: + metadata: + labels: + app: celery + spec: + securityContext: + runAsNonRoot: true + containers: + # ----------------------------------------------------- + # ScoutAPM Container + # ----------------------------------------------------- + - name: scoutapm + image: "scoutapp/scoutapm:version-1.4.0" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - "sh" + - "-c" + - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + securityContext: + readOnlyRootFilesystem: true + runAsUser: 65534 # "nobody" user by default + runAsGroup: 65534 # "nogroup" group by default + # ----------------------------------------------------- + # Celery Container + # ----------------------------------------------------- + - name: celery + image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" + imagePullPolicy: Always + ports: + - containerPort: 8000 + name: http + protocol: TCP + volumeMounts: + - name: dt-vol + mountPath: /a + - name: dt-tmp + mountPath: /tmp + - name: dt-cfg + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + env: + - name: "CONTAINER_ROLE" + value: "celery" + envFrom: + - configMapRef: + name: django-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 + volumes: + # To be overriden with the actual shared volume + - name: dt-vol + - name: dt-tmp + emptyDir: + sizeLimit: "2Gi" + - name: dt-cfg + configMap: + name: files-cfgmap + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index f63a7004d1..6a832fb8b7 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -52,6 +52,9 @@ spec: - name: dt-cfg mountPath: /workspace/ietf/settings_local.py subPath: settings_local.py + env: + - name: "CONTAINER_ROLE" + value: "datatracker" envFrom: - configMapRef: name: django-config @@ -77,84 +80,6 @@ spec: terminationGracePeriodSeconds: 30 --- apiVersion: v1 -kind: ConfigMap -metadata: - name: django-config -data: - # n.b., these are debug values / non-secret secrets - DATATRACKER_SERVER_MODE: "development" # development for staging, production for production - DATATRACKER_ADMINS: |- - Robert Sparks - Ryan Cross - Kesara Rathnayake - Jennifer Richards - Nicolas Giard - DATATRACKER_ALLOWED_HOSTS: ".ietf.org" # newline-separated list also allowed - # DATATRACKER_DATATRACKER_DEBUG: "false" - - # DB access details - needs to be filled in - # DATATRACKER_DBHOST: "db" - # DATATRACKER_DBPORT: "5432" - # DATATRACKER_DBNAME: "datatracker" - # DATATRACKER_DBUSER: "django" # secret - # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret - - DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret - - # Set this to point testing / staging at the production statics server until we - # sort that out - # DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" - - # DATATRACKER_EMAIL_DEBUG: "true" - - # Outgoing email details - # DATATRACKER_EMAIL_HOST: "localhost" # defaults to localhost - # DATATRACKER_EMAIL_PORT: "2025" # defaults to 2025 - - # The value here is the default from settings.py (i.e., not actually secret) - 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 - - # API key configuration - DATATRACKER_API_KEY_TYPE: "ES265" - # secret - value here is the default from settings.py (i.e., not actually secret) - DATATRACKER_API_PUBLIC_KEY_PEM_B64: |- - Ci0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS - 29aSXpqMERBUWNEUWdBRXFWb2pzYW9mREpTY3VNSk4rdHNodW15Tk01TUUKZ2Fyel - ZQcWtWb3ZtRjZ5RTdJSi9kdjRGY1YrUUtDdEovck9TOGUzNlk4WkFFVll1dWtoZXM - weVoxdz09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo= - # secret - value here is the default from settings.py (i.e., not actually secret) - DATATRACKER_API_PRIVATE_KEY_PEM_B64: |- - Ci0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQpNSUdIQWdFQU1CTUdCeXFHU000O - UFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdvSTZMSmtvcEtxOFhySGk5ClFxR1 - F2RTRBODNURllqcUx6KzhnVUxZZWNzcWhSQU5DQUFTcFdpT3hxaDhNbEp5NHdrMzY - yeUc2Ykkwemt3U0IKcXZOVStxUldpK1lYcklUc2duOTIvZ1Z4WDVBb0swbitzNUx4 - N2ZwanhrQVJWaTY2U0Y2elRKblgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= - - # DATATRACKER_MEETECHO_API_BASE: "https://meetings.conf.meetecho.com/api/v1/" - DATATRACKER_MEETECHO_CLIENT_ID: "this-is-the-meetecho-client-id" # secret - DATATRACKER_MEETECHO_CLIENT_SECRET: "this-is-the-meetecho-client-secret" # secret - - # DATATRACKER_MATOMO_SITE_ID: "7" # must be present to enable Matomo - # DATATRACKER_MATOMO_DOMAIN_PATH: "analytics.ietf.org" - - CELERY_PASSWORD: "this-is-a-secret" # secret - - DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret - - # use this to override default - one entry per line - # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- - # https://datatracker.staging.ietf.org - - # Scout configuration - DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" - DATATRACKER_SCOUT_NAME: "StagingDatatracker" ---- -apiVersion: v1 kind: Service metadata: name: datatracker diff --git a/k8s/django-config.yaml b/k8s/django-config.yaml new file mode 100644 index 0000000000..1e27a32f02 --- /dev/null +++ b/k8s/django-config.yaml @@ -0,0 +1,77 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: django-config +data: + # n.b., these are debug values / non-secret secrets + DATATRACKER_SERVER_MODE: "development" # development for staging, production for production + DATATRACKER_ADMINS: |- + Robert Sparks + Ryan Cross + Kesara Rathnayake + Jennifer Richards + Nicolas Giard + DATATRACKER_ALLOWED_HOSTS: ".ietf.org" # newline-separated list also allowed + # DATATRACKER_DATATRACKER_DEBUG: "false" + + # DB access details - needs to be filled in + # DATATRACKER_DBHOST: "db" + # DATATRACKER_DBPORT: "5432" + # DATATRACKER_DBNAME: "datatracker" + # DATATRACKER_DBUSER: "django" # secret + # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret + + DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret + + # Set this to point testing / staging at the production statics server until we + # sort that out + # DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" + + # DATATRACKER_EMAIL_DEBUG: "true" + + # Outgoing email details + # DATATRACKER_EMAIL_HOST: "localhost" # defaults to localhost + # DATATRACKER_EMAIL_PORT: "2025" # defaults to 2025 + + # The value here is the default from settings.py (i.e., not actually secret) + 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 + + # API key configuration + DATATRACKER_API_KEY_TYPE: "ES265" + # secret - value here is the default from settings.py (i.e., not actually secret) + DATATRACKER_API_PUBLIC_KEY_PEM_B64: |- + Ci0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS + 29aSXpqMERBUWNEUWdBRXFWb2pzYW9mREpTY3VNSk4rdHNodW15Tk01TUUKZ2Fyel + ZQcWtWb3ZtRjZ5RTdJSi9kdjRGY1YrUUtDdEovck9TOGUzNlk4WkFFVll1dWtoZXM + weVoxdz09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo= + # secret - value here is the default from settings.py (i.e., not actually secret) + DATATRACKER_API_PRIVATE_KEY_PEM_B64: |- + Ci0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQpNSUdIQWdFQU1CTUdCeXFHU000O + UFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdvSTZMSmtvcEtxOFhySGk5ClFxR1 + F2RTRBODNURllqcUx6KzhnVUxZZWNzcWhSQU5DQUFTcFdpT3hxaDhNbEp5NHdrMzY + yeUc2Ykkwemt3U0IKcXZOVStxUldpK1lYcklUc2duOTIvZ1Z4WDVBb0swbitzNUx4 + N2ZwanhrQVJWaTY2U0Y2elRKblgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= + + # DATATRACKER_MEETECHO_API_BASE: "https://meetings.conf.meetecho.com/api/v1/" + DATATRACKER_MEETECHO_CLIENT_ID: "this-is-the-meetecho-client-id" # secret + DATATRACKER_MEETECHO_CLIENT_SECRET: "this-is-the-meetecho-client-secret" # secret + + # DATATRACKER_MATOMO_SITE_ID: "7" # must be present to enable Matomo + # DATATRACKER_MATOMO_DOMAIN_PATH: "analytics.ietf.org" + + CELERY_PASSWORD: "this-is-a-secret" # secret + + DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret + + # use this to override default - one entry per line + # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- + # https://datatracker.staging.ietf.org + + # Scout configuration + DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" + DATATRACKER_SCOUT_NAME: "StagingDatatracker" \ No newline at end of file diff --git a/k8s/kustomization.yaml b/k8s/kustomization.yaml index 021dfe7981..3f09ce65a9 100644 --- a/k8s/kustomization.yaml +++ b/k8s/kustomization.yaml @@ -5,6 +5,9 @@ configMapGenerator: files: - settings_local.py resources: + - beat.yaml + - celery.yaml - datatracker.yaml + - django-config.yaml - memcached.yaml - rabbitmq.yaml \ No newline at end of file diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index 93665c9cf8..f34876718f 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -1,3 +1,42 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: memcached +spec: + replicas: 1 + revisionHistoryLimit: 2 + serviceName: memcached + selector: + matchLabels: + app: memcached + template: + metadata: + labels: + app: memcached + spec: + securityContext: + runAsNonRoot: true + containers: + - image: "memcached:1.6-alpine" + imagePullPolicy: IfNotPresent + args: ["-m", "1024"] + name: memcached + ports: + - name: memcached + containerPort: 11211 + protocol: TCP + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + # memcached image sets up uid/gid 11211 + runAsUser: 11211 + runAsGroup: 11211 + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service From 867360e96f15d7d84b80b23579de86be90efc39f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 9 May 2024 15:24:39 -0300 Subject: [PATCH 085/846] ci: k8s fixup (#7401) * ci: remove stray serviceName * ci: volumeClaimTemplate name -> volumeMount, not volume * ci: datatracker listens on containerPort 8000 * ci: services/containers have dt- prefix * chore: adjust indent for k8s yaml * ci: use a secret for CELERY_PASSWORD * fix: touched wrong CELERY_PASSWORD setting * ci: get rid of the celery pw secretGenerator * ci: use DB_PASS instead of DBPASS (etc) for k8s * ci: Fill in django-config.yaml from env vars * ci: add vault-mappings.txt * ci: use $CELERY_PASSWORD in rabbitmq.yaml * ci: moving vault-mappings.txt out of this repo * Revert "ci: Fill in django-config.yaml from env vars" This reverts commit 75cd181deb390d3ab21d6887b091d66c80e1d18e. * Revert "ci: use $CELERY_PASSWORD in rabbitmq.yaml" This reverts commit f251f9920d07c65413f72fd165cc06acd562c2c7. * ci: parameterize db OPTIONS setting --- .editorconfig | 6 + k8s/beat.yaml | 2 +- k8s/celery.yaml | 2 +- k8s/datatracker.yaml | 188 +++++++++++----------- k8s/django-config.yaml | 12 +- k8s/kustomization.yaml | 2 +- k8s/memcached.yaml | 3 +- k8s/rabbitmq.yaml | 351 ++++++++++++++++++++--------------------- k8s/settings_local.py | 17 +- 9 files changed, 294 insertions(+), 289 deletions(-) diff --git a/.editorconfig b/.editorconfig index 35c9168a28..4e5b304b6a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -55,4 +55,10 @@ insert_final_newline = false # --------------------------------------------------------- # Use 2-space indents [helm/**.yaml] +indent_size = 2 + +# Settings for Kubernetes yaml +# --------------------------------------------------------- +# Use 2-space indents +[k8s/**.yaml] indent_size = 2 \ No newline at end of file diff --git a/k8s/beat.yaml b/k8s/beat.yaml index 7099fec76e..3400b21cbf 100644 --- a/k8s/beat.yaml +++ b/k8s/beat.yaml @@ -58,4 +58,4 @@ spec: name: files-cfgmap dnsPolicy: ClusterFirst restartPolicy: Always - terminationGracePeriodSeconds: 30 \ No newline at end of file + terminationGracePeriodSeconds: 30 diff --git a/k8s/celery.yaml b/k8s/celery.yaml index 0c6bbf4758..407f21e66d 100644 --- a/k8s/celery.yaml +++ b/k8s/celery.yaml @@ -77,4 +77,4 @@ spec: name: files-cfgmap dnsPolicy: ClusterFirst restartPolicy: Always - terminationGracePeriodSeconds: 30 \ No newline at end of file + terminationGracePeriodSeconds: 30 diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 6a832fb8b7..7ca92ba99e 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -1,94 +1,94 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: datatracker -spec: - replicas: 1 - revisionHistoryLimit: 2 - selector: - matchLabels: - app: datatracker - strategy: - type: Recreate - template: - metadata: - labels: - app: datatracker - spec: - securityContext: - runAsNonRoot: true - containers: - # ----------------------------------------------------- - # ScoutAPM Container - # ----------------------------------------------------- - - name: scoutapm - image: "scoutapp/scoutapm:version-1.4.0" - imagePullPolicy: IfNotPresent - livenessProbe: - exec: - command: - - "sh" - - "-c" - - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" - securityContext: - readOnlyRootFilesystem: true - runAsUser: 65534 # "nobody" user by default - runAsGroup: 65534 # "nogroup" group by default - # ----------------------------------------------------- - # Datatracker Container - # ----------------------------------------------------- - - name: datatracker - image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" - imagePullPolicy: Always - ports: - - containerPort: 80 - name: http - protocol: TCP - volumeMounts: - - name: dt-vol - mountPath: /a - - name: dt-tmp - mountPath: /tmp - - name: dt-cfg - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - env: - - name: "CONTAINER_ROLE" - value: "datatracker" - envFrom: - - configMapRef: - name: django-config - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - runAsUser: 1000 - runAsGroup: 1000 - volumes: - # To be overriden with the actual shared volume - - name: dt-vol - - name: dt-tmp - emptyDir: - sizeLimit: "2Gi" - - name: dt-cfg - configMap: - name: files-cfgmap - dnsPolicy: ClusterFirst - restartPolicy: Always - terminationGracePeriodSeconds: 30 ---- -apiVersion: v1 -kind: Service -metadata: - name: datatracker -spec: - type: ClusterIP - ports: - - port: 80 - targetPort: http - protocol: TCP - name: http - selector: - app: datatracker \ No newline at end of file +apiVersion: apps/v1 +kind: Deployment +metadata: + name: datatracker +spec: + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: datatracker + strategy: + type: Recreate + template: + metadata: + labels: + app: datatracker + spec: + securityContext: + runAsNonRoot: true + containers: + # ----------------------------------------------------- + # ScoutAPM Container + # ----------------------------------------------------- + - name: scoutapm + image: "scoutapp/scoutapm:version-1.4.0" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - "sh" + - "-c" + - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" + securityContext: + readOnlyRootFilesystem: true + runAsUser: 65534 # "nobody" user by default + runAsGroup: 65534 # "nogroup" group by default + # ----------------------------------------------------- + # Datatracker Container + # ----------------------------------------------------- + - name: datatracker + image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" + imagePullPolicy: Always + ports: + - containerPort: 8000 + name: http + protocol: TCP + volumeMounts: + - name: dt-vol + mountPath: /a + - name: dt-tmp + mountPath: /tmp + - name: dt-cfg + mountPath: /workspace/ietf/settings_local.py + subPath: settings_local.py + env: + - name: "CONTAINER_ROLE" + value: "datatracker" + envFrom: + - configMapRef: + name: django-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 1000 + runAsGroup: 1000 + volumes: + # To be overriden with the actual shared volume + - name: dt-vol + - name: dt-tmp + emptyDir: + sizeLimit: "2Gi" + - name: dt-cfg + configMap: + name: files-cfgmap + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 +--- +apiVersion: v1 +kind: Service +metadata: + name: datatracker +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: datatracker diff --git a/k8s/django-config.yaml b/k8s/django-config.yaml index 1e27a32f02..e6f5b3ca8f 100644 --- a/k8s/django-config.yaml +++ b/k8s/django-config.yaml @@ -15,11 +15,11 @@ data: # DATATRACKER_DATATRACKER_DEBUG: "false" # DB access details - needs to be filled in - # DATATRACKER_DBHOST: "db" - # DATATRACKER_DBPORT: "5432" - # DATATRACKER_DBNAME: "datatracker" - # DATATRACKER_DBUSER: "django" # secret - # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret + # DATATRACKER_DB_HOST: "db" + # DATATRACKER_DB_PORT: "5432" + # DATATRACKER_DB_NAME: "datatracker" + # DATATRACKER_DB_USER: "django" # secret + # DATATRACKER_DB_PASS: "RkTkDPFnKpko" # secret DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret @@ -74,4 +74,4 @@ data: # 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/kustomization.yaml b/k8s/kustomization.yaml index 3f09ce65a9..e618bb630d 100644 --- a/k8s/kustomization.yaml +++ b/k8s/kustomization.yaml @@ -10,4 +10,4 @@ resources: - datatracker.yaml - django-config.yaml - memcached.yaml - - rabbitmq.yaml \ No newline at end of file + - rabbitmq.yaml diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index f34876718f..56efc235ec 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -5,7 +5,6 @@ metadata: spec: replicas: 1 revisionHistoryLimit: 2 - serviceName: memcached selector: matchLabels: app: memcached @@ -50,4 +49,4 @@ spec: protocol: TCP name: memcached selector: - app: memcached \ No newline at end of file + app: memcached diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml index 4655771213..132ca79ded 100644 --- a/k8s/rabbitmq.yaml +++ b/k8s/rabbitmq.yaml @@ -1,176 +1,175 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: rabbitmq -spec: - replicas: 1 - revisionHistoryLimit: 2 - serviceName: rabbitmq - selector: - matchLabels: - app: rabbitmq - template: - metadata: - labels: - app: rabbitmq - spec: - securityContext: - runAsNonRoot: true - initContainers: - # ----------------------------------------------------- - # Init RabbitMQ data - # ----------------------------------------------------- - - name: init-rabbitmq - image: busybox:stable - command: - - "sh" - - "-c" - - "mkdir -p -m700 /mnt/rabbitmq && chown 100:101 /mnt/rabbitmq" - securityContext: - runAsNonRoot: false - runAsUser: 0 - readOnlyRootFilesystem: true - volumeMounts: - - name: "rabbitmq-data" - mountPath: "/mnt" - containers: - # ----------------------------------------------------- - # RabbitMQ Container - # ----------------------------------------------------- - - image: "ghcr.io/ietf-tools/datatracker-mq:3.12-alpine" - imagePullPolicy: Always - name: rabbitmq - ports: - - name: amqp - containerPort: 5672 - protocol: TCP - volumeMounts: - - name: rabbitmq-data - mountPath: /var/lib/rabbitmq - subPath: "rabbitmq" - - name: rabbitmq-tmp - mountPath: /tmp - - name: rabbitmq-config - mountPath: "/etc/rabbitmq" - livenessProbe: - exec: - command: ["rabbitmq-diagnostics", "-q", "ping"] - periodSeconds: 30 - timeoutSeconds: 5 - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: ["rabbitmq-diagnostics", "-q", "ping"] - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - # rabbitmq image sets up uid/gid 100/101 - runAsUser: 100 - runAsGroup: 101 - volumes: - - name: rabbitmq-data - persistentVolumeClaim: - claimName: "rabbitmq-data-vol" - - name: rabbitmq-tmp - emptyDir: - sizeLimit: "50Mi" - - name: rabbitmq-config - configMap: - name: "rabbitmq-configmap" - dnsPolicy: ClusterFirst - restartPolicy: Always - terminationGracePeriodSeconds: 30 - volumeClaimTemplates: - - metadata: - name: rabbitmq-data-vol - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 8Gi - # storageClassName: "" ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: rabbitmq-configmap -data: - definitions.json: |- - { - "permissions": [ - { - "configure": ".*", - "read": ".*", - "user": "datatracker", - "vhost": "dt", - "write": ".*" - } - ], - "users": [ - { - "hashing_algorithm": "rabbit_password_hashing_sha256", - "limits": {}, - "name": "datatracker", - "password_hash": "HJxcItcpXtBN+R/CH7dUelfKBOvdUs3AWo82SBw2yLMSguzb", - "tags": [] - } - ], - "vhosts": [ - { - "limits": [], - "metadata": { - "description": "", - "tags": [] - }, - "name": "dt" - } - ] - } - rabbitmq.conf: |- - # prevent guest from logging in over tcp - loopback_users.guest = true - - # load saved definitions - load_definitions = /etc/rabbitmq/definitions.json - - # Ensure that enough disk is available to flush to disk. To do this, need to limit the - # memory available to the container to something reasonable. See - # https://www.rabbitmq.com/production-checklist.html#monitoring-and-resource-usage - # for recommendations. - - # 1-1.5 times the memory available to the container is adequate for disk limit - disk_free_limit.absolute = 6000MB - - # This should be ~40% of the memory available to the container. Use an - # absolute number because relative will be proprtional to the full machine - # memory. - vm_memory_high_watermark.absolute = 1600MB - - # Logging - log.file = false - log.console = true - log.console.level = info - log.console.formatter = json ---- -apiVersion: v1 -kind: Service -metadata: - name: rabbitmq -spec: - type: ClusterIP - clusterIP: None # headless service - ports: - - port: 5672 - targetPort: amqp - protocol: TCP - name: amqp - selector: - app: rabbitmq \ No newline at end of file +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: rabbitmq +spec: + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: rabbitmq + template: + metadata: + labels: + app: rabbitmq + spec: + securityContext: + runAsNonRoot: true + initContainers: + # ----------------------------------------------------- + # Init RabbitMQ data + # ----------------------------------------------------- + - name: init-rabbitmq + image: busybox:stable + command: + - "sh" + - "-c" + - "mkdir -p -m700 /mnt/rabbitmq && chown 100:101 /mnt/rabbitmq" + securityContext: + runAsNonRoot: false + runAsUser: 0 + readOnlyRootFilesystem: true + volumeMounts: + - name: "rabbitmq-data" + mountPath: "/mnt" + containers: + # ----------------------------------------------------- + # RabbitMQ Container + # ----------------------------------------------------- + - image: "ghcr.io/ietf-tools/datatracker-mq:3.12-alpine" + imagePullPolicy: Always + name: rabbitmq + ports: + - name: amqp + containerPort: 5672 + protocol: TCP + volumeMounts: + - name: rabbitmq-data + mountPath: /var/lib/rabbitmq + subPath: "rabbitmq" + - name: rabbitmq-tmp + mountPath: /tmp + - name: rabbitmq-config + mountPath: "/etc/rabbitmq" + env: + - name: "CELERY_PASSWORD" + value: "this-is-a-secret" + livenessProbe: + exec: + command: ["rabbitmq-diagnostics", "-q", "ping"] + periodSeconds: 30 + timeoutSeconds: 5 + startupProbe: + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 60 + exec: + command: ["rabbitmq-diagnostics", "-q", "ping"] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + # rabbitmq image sets up uid/gid 100/101 + runAsUser: 100 + runAsGroup: 101 + volumes: + - name: rabbitmq-tmp + emptyDir: + sizeLimit: "50Mi" + - name: rabbitmq-config + configMap: + name: "rabbitmq-configmap" + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 + volumeClaimTemplates: + - metadata: + name: rabbitmq-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + # storageClassName: "" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: rabbitmq-configmap +data: + definitions.json: |- + { + "permissions": [ + { + "configure": ".*", + "read": ".*", + "user": "datatracker", + "vhost": "dt", + "write": ".*" + } + ], + "users": [ + { + "hashing_algorithm": "rabbit_password_hashing_sha256", + "limits": {}, + "name": "datatracker", + "password_hash": "HJxcItcpXtBN+R/CH7dUelfKBOvdUs3AWo82SBw2yLMSguzb", + "tags": [] + } + ], + "vhosts": [ + { + "limits": [], + "metadata": { + "description": "", + "tags": [] + }, + "name": "dt" + } + ] + } + rabbitmq.conf: |- + # prevent guest from logging in over tcp + loopback_users.guest = true + + # load saved definitions + load_definitions = /etc/rabbitmq/definitions.json + + # Ensure that enough disk is available to flush to disk. To do this, need to limit the + # memory available to the container to something reasonable. See + # https://www.rabbitmq.com/production-checklist.html#monitoring-and-resource-usage + # for recommendations. + + # 1-1.5 times the memory available to the container is adequate for disk limit + disk_free_limit.absolute = 6000MB + + # This should be ~40% of the memory available to the container. Use an + # absolute number because relative will be proprtional to the full machine + # memory. + vm_memory_high_watermark.absolute = 1600MB + + # Logging + log.file = false + log.console = true + log.console.level = info + log.console.formatter = json +--- +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq +spec: + type: ClusterIP + clusterIP: None # headless service + ports: + - port: 5672 + targetPort: amqp + protocol: TCP + name: amqp + selector: + app: rabbitmq diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 53609afa79..00d0cae781 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -87,12 +87,13 @@ def _multiline_to_list(s): DATABASES = { "default": { - "HOST": os.environ.get("DATATRACKER_DBHOST", "db"), - "PORT": os.environ.get("DATATRACKER_DBPORT", "5432"), - "NAME": os.environ.get("DATATRACKER_DBNAME", "datatracker"), + "HOST": os.environ.get("DATATRACKER_DB_HOST", "db"), + "PORT": os.environ.get("DATATRACKER_DB_PORT", "5432"), + "NAME": os.environ.get("DATATRACKER_DB_NAME", "datatracker"), "ENGINE": "django.db.backends.postgresql", - "USER": os.environ.get("DATATRACKER_DBUSER", "django"), - "PASSWORD": os.environ.get("DATATRACKER_DBPASS", ""), + "USER": os.environ.get("DATATRACKER_DB_USER", "django"), + "PASSWORD": os.environ.get("DATATRACKER_DB_PASS", ""), + "OPTIONS": json.loads(os.environ.get("DATATRACKER_DB_OPTS_JSON", "{}")), }, } @@ -111,7 +112,7 @@ def _multiline_to_list(s): 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", "rabbitmq"), + host=os.environ.get("RABBITMQ_HOSTNAME", "dt-rabbitmq"), password=_celery_password, queue=os.environ.get("RABBITMQ_QUEUE", "dt") ) @@ -212,8 +213,8 @@ def _multiline_to_list(s): IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" # Duplicating production cache from settings.py and using it whether we're in production mode or not -MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") -MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") +MEMCACHED_HOST = os.environ.get("DT_MEMCACHED_SERVICE_HOST", "127.0.0.1") +MEMCACHED_PORT = os.environ.get("DT_MEMCACHED_SERVICE_PORT", "11211") from ietf import __version__ CACHES = { "default": { From 7e56b2e923a2f1a489ab0717ae7f589fab75e9e2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 10 May 2024 11:17:24 -0300 Subject: [PATCH 086/846] ci: drop helm chart GHA step --- .github/workflows/build.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3ac2441a84..bd65da036c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -248,17 +248,6 @@ jobs: push: true tags: ghcr.io/ietf-tools/datatracker:${{ env.PKG_VERSION }} - - name: Package and Push Chart - env: - VERSION: 2.0.${{ github.run_number }} - run: | - echo "Setting version ${{ env.PKG_VERSION }}..." - sed -i -r -e "s|^version: .*$|version: '${{ env.PKG_VERSION }}'|" -e "s|^appVersion: .*$|appVersion: '${{ env.PKG_VERSION }}'|" helm/Chart.yaml - helm plugin install https://github.com/chartmuseum/helm-push.git - helm repo add chartmuseum https://charts.ietf.org - helm cm-push --version="${{ env.PKG_VERSION }}" --username="${{ secrets.HELM_REPO_USERNAME }}" --password="${{ secrets.HELM_REPO_PASSWORD }}" helm/ chartmuseum - helm repo remove chartmuseum - - name: Update CHANGELOG id: changelog uses: Requarks/changelog-action@v1 From dd46a8af6f0998e0717d141f104cea70fe560577 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 10 May 2024 11:39:43 -0300 Subject: [PATCH 087/846] ci: use ietfa uid/gid for datatracker user (#7407) * ci: use ietfa uid/gid for datatracker user * chore: add comment --- dev/build/Dockerfile | 5 +++-- k8s/datatracker.yaml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index d5578be3df..3d317f1416 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -3,8 +3,9 @@ LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive -RUN groupadd -g 1000 datatracker && \ - useradd -c "Datatracker User" -u 1000 -g datatracker -m -s /bin/false datatracker +# uid 498 = wwwrun and gid 496 = www on ietfa +RUN groupadd -g 496 datatracker && \ + useradd -c "Datatracker User" -u 498 -g datatracker -m -s /bin/false datatracker RUN apt-get purge -y imagemagick imagemagick-6-common diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 7ca92ba99e..303741daf1 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -64,8 +64,8 @@ spec: drop: - ALL readOnlyRootFilesystem: true - runAsUser: 1000 - runAsGroup: 1000 + runAsUser: 498 # wwwrun uid on ietfa + runAsGroup: 496 # www group on ietfa volumes: # To be overriden with the actual shared volume - name: dt-vol From 3a4939cc0bd00fd4e70d6f795df791eed9ed656a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 10 May 2024 20:15:36 -0300 Subject: [PATCH 088/846] ci: collect memcached metrics (#7410) * ci: collect memcached metrics * ci: use nobody/nobody for metrics container --- k8s/memcached.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index 56efc235ec..ba7c663634 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -16,6 +16,21 @@ spec: securityContext: runAsNonRoot: true containers: + - image: "quay.io/prometheus/memcached-exporter:v0.14.3" + imagePullPolicy: IfNotPresent + name: memcached-exporter + ports: + - name: metrics + containerPort: 9150 + protocol: TCP + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsUser: 65534 # nobody + runAsGroup: 65534 # nobody - image: "memcached:1.6-alpine" imagePullPolicy: IfNotPresent args: ["-m", "1024"] @@ -41,6 +56,8 @@ apiVersion: v1 kind: Service metadata: name: memcached + annotations: + k8s.grafana.com/scrape: "yes" spec: type: ClusterIP ports: @@ -48,5 +65,9 @@ spec: targetPort: memcached protocol: TCP name: memcached + - port: 9150 + targetPort: metrics + protocol: TCP + name: metrics selector: app: memcached From 8b3d330bff7681330fb0ff2ade8fed19fa8e4ca7 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 10 May 2024 20:42:42 -0300 Subject: [PATCH 089/846] ci: metrics.portName annotation --- k8s/memcached.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index ba7c663634..56f55d9b71 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -58,6 +58,7 @@ metadata: name: memcached annotations: k8s.grafana.com/scrape: "yes" + k8s.grafana.com/metrics.portName: "metrics" spec: type: ClusterIP ports: From 49a3cdc43c56fed14d4c5f39b8da4e20fe6c7c3b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 10 May 2024 21:00:38 -0300 Subject: [PATCH 090/846] ci: "true" --- k8s/memcached.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/memcached.yaml b/k8s/memcached.yaml index 56f55d9b71..e94066c9e0 100644 --- a/k8s/memcached.yaml +++ b/k8s/memcached.yaml @@ -57,7 +57,7 @@ kind: Service metadata: name: memcached annotations: - k8s.grafana.com/scrape: "yes" + k8s.grafana.com/scrape: "true" # this is not a bool k8s.grafana.com/metrics.portName: "metrics" spec: type: ClusterIP From c1a7a60eb92c312a523fa03d030bf3de0d33c8af Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 13 May 2024 11:43:32 -0300 Subject: [PATCH 091/846] ci: handle b64-encoded APP_API_TOKENS --- k8s/settings_local.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 00d0cae781..91bfe69e3d 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -151,7 +151,16 @@ def _multiline_to_list(s): "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set" ) -_APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) +# For APP_API_TOKENS, ccept either base64-encoded JSON or raw JSON, but not both +if "DATATRACKER_APP_API_TOKENS_JSON_B64" in os.environ: + if "DATATRACKER_APP_API_TOKENS_JSON" in os.environ: + raise RuntimeError( + "Only one of DATATRACKER_APP_API_TOKENS_JSON and DATATRACKER_APP_API_TOKENS_JSON_B64 may be set" + ) + _APP_API_TOKENS_JSON = b64decode(os.environ.get("DATATRACKER_APP_API_TOKENS_JSON_B64")) +else: + _APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) + if _APP_API_TOKENS_JSON is not None: APP_API_TOKENS = json.loads(_APP_API_TOKENS_JSON) else: From 5486345ab0fb111505793e116741c0bd7b37bfb9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 13 May 2024 11:44:30 -0300 Subject: [PATCH 092/846] ci: remove unnecessary helper b64decode defaults to validate=false, which discards chars outside the base64 alphabet. That includes whitespace. --- k8s/settings_local.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 91bfe69e3d..3c77551a9d 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -9,11 +9,6 @@ from ietf.settings import * # pyflakes:ignore -def _remove_whitespace_and_b64decode(s): - """Helper to strip out whitespace and base64 decode""" - return b64decode("".join(s.split())) - - def _multiline_to_list(s): """Helper to split at newlines and conver to list""" return [item.strip() for item in s.split("\n")] @@ -31,7 +26,7 @@ def _multiline_to_list(s): _NOMCOM_APP_SECRET_B64 = os.environ.get("DATATRACKER_NOMCOM_APP_SECRET_B64", None) if _NOMCOM_APP_SECRET_B64 is not None: - NOMCOM_APP_SECRET = _remove_whitespace_and_b64decode(_NOMCOM_APP_SECRET_B64) + NOMCOM_APP_SECRET = b64decode(_NOMCOM_APP_SECRET_B64) else: raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set") @@ -67,13 +62,13 @@ def _multiline_to_list(s): _API_PUBLIC_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PUBLIC_KEY_PEM_B64", None) if _API_PUBLIC_KEY_PEM_B64 is not None: - API_PUBLIC_KEY_PEM = _remove_whitespace_and_b64decode(_API_PUBLIC_KEY_PEM_B64) + API_PUBLIC_KEY_PEM = b64decode(_API_PUBLIC_KEY_PEM_B64) else: raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set") _API_PRIVATE_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PRIVATE_KEY_PEM_B64", None) if _API_PRIVATE_KEY_PEM_B64 is not None: - API_PRIVATE_KEY_PEM = _remove_whitespace_and_b64decode(_API_PRIVATE_KEY_PEM_B64) + API_PRIVATE_KEY_PEM = b64decode(_API_PRIVATE_KEY_PEM_B64) else: raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") From 212a915bd38ae51e2e6a1cd7932afc09fdbd2038 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 13 May 2024 11:55:45 -0300 Subject: [PATCH 093/846] ci: don't set APP_API_TOKENS in django-config --- k8s/django-config.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/k8s/django-config.yaml b/k8s/django-config.yaml index e6f5b3ca8f..9ece6fa9ee 100644 --- a/k8s/django-config.yaml +++ b/k8s/django-config.yaml @@ -66,7 +66,9 @@ data: CELERY_PASSWORD: "this-is-a-secret" # secret - DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret + # Only one of these may be set + # DATATRACKER_APP_API_TOKENS_JSON_B64: "e30K" # secret + # DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret # use this to override default - one entry per line # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- From b744f2b3181386084a8a9aac9423c7d55a8274df Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 13 May 2024 13:15:31 -0300 Subject: [PATCH 094/846] chore: switch back to uid/gid=1000 --- dev/build/Dockerfile | 4 ++-- k8s/datatracker.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index 3d317f1416..12f73300dd 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -4,8 +4,8 @@ LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive # uid 498 = wwwrun and gid 496 = www on ietfa -RUN groupadd -g 496 datatracker && \ - useradd -c "Datatracker User" -u 498 -g datatracker -m -s /bin/false datatracker +RUN groupadd -g 1000 datatracker && \ + useradd -c "Datatracker User" -u 1000 -g datatracker -m -s /bin/false datatracker RUN apt-get purge -y imagemagick imagemagick-6-common diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 303741daf1..7ca92ba99e 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -64,8 +64,8 @@ spec: drop: - ALL readOnlyRootFilesystem: true - runAsUser: 498 # wwwrun uid on ietfa - runAsGroup: 496 # www group on ietfa + runAsUser: 1000 + runAsGroup: 1000 volumes: # To be overriden with the actual shared volume - name: dt-vol From 38b0b2c0352ba94932691574552a6bf2ed83da07 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 13 May 2024 17:51:52 -0300 Subject: [PATCH 095/846] feat: get tool versions without VersionInfo model (#7393) (#7403) * chore: remove update_external_command_info call * feat: get tool version without VersionInfo * chore: Remove VersionInfo model * chore: Migration to remove VersionInfo * fix: handle errors better; ignore stderr --- bin/daily | 3 -- bin/dump-to-names-json | 2 +- ietf/name/fixtures/names.json | 44 ------------------- .../commands/generate_name_fixture.py | 3 +- ietf/submit/checkers.py | 24 ++++++---- ietf/submit/tests.py | 4 +- ietf/utils/__init__.py | 30 ++++++++++++- ietf/utils/admin.py | 7 --- .../commands/update_external_command_info.py | 41 ----------------- .../migrations/0002_delete_versioninfo.py | 16 +++++++ ietf/utils/models.py | 9 ---- ietf/utils/resources.py | 20 +-------- 12 files changed, 66 insertions(+), 137 deletions(-) delete mode 100644 ietf/utils/management/commands/update_external_command_info.py create mode 100644 ietf/utils/migrations/0002_delete_versioninfo.py diff --git a/bin/daily b/bin/daily index 8211e1e237..6557a89222 100755 --- a/bin/daily +++ b/bin/daily @@ -24,9 +24,6 @@ $DTDIR/bin/hourly source $DTDIR/env/bin/activate -# Update our information about the current version of some commands we use -$DTDIR/ietf/manage.py update_external_command_info - # Get IANA-registered yang models #YANG_IANA_DIR=$(python -c 'import ietf.settings; print ietf.settings.SUBMIT_YANG_IANA_MODEL_DIR') # Hardcode the rsync target to avoid any unwanted deletes: diff --git a/bin/dump-to-names-json b/bin/dump-to-names-json index 9c7dfac07d..20d4e0f951 100644 --- a/bin/dump-to-names-json +++ b/bin/dump-to-names-json @@ -10,7 +10,7 @@ set -x ietf/manage.py dumpdata --indent 1 doc.State doc.BallotType doc.StateType \ - mailtrigger.MailTrigger mailtrigger.Recipient name utils.VersionInfo \ + mailtrigger.MailTrigger mailtrigger.Recipient name \ group.GroupFeatures stats.CountryAlias dbtemplate.DBTemplate \ | jq --sort-keys "sort_by(.model, .pk)" \ | jq '[.[] | select(.model!="dbtemplate.dbtemplate" or .pk==354)]' > ietf/name/fixtures/names.json diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 35679dcaa1..913c6c987e 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -16789,49 +16789,5 @@ }, "model": "stats.countryalias", "pk": 303 - }, - { - "fields": { - "command": "xym", - "switch": "--version", - "time": "2024-03-21T07:06:23.405Z", - "used": true, - "version": "xym 0.7.0" - }, - "model": "utils.versioninfo", - "pk": 1 - }, - { - "fields": { - "command": "pyang", - "switch": "--version", - "time": "2024-03-21T07:06:23.755Z", - "used": true, - "version": "pyang 2.6.0" - }, - "model": "utils.versioninfo", - "pk": 2 - }, - { - "fields": { - "command": "yanglint", - "switch": "--version", - "time": "2024-03-21T07:06:23.773Z", - "used": true, - "version": "yanglint SO 1.9.2" - }, - "model": "utils.versioninfo", - "pk": 3 - }, - { - "fields": { - "command": "xml2rfc", - "switch": "--version", - "time": "2024-03-21T07:06:24.609Z", - "used": true, - "version": "xml2rfc 3.20.1" - }, - "model": "utils.versioninfo", - "pk": 4 } ] diff --git a/ietf/name/management/commands/generate_name_fixture.py b/ietf/name/management/commands/generate_name_fixture.py index bbf33e600e..ef30e54c73 100644 --- a/ietf/name/management/commands/generate_name_fixture.py +++ b/ietf/name/management/commands/generate_name_fixture.py @@ -77,7 +77,6 @@ def output(seq): from ietf.mailtrigger.models import MailTrigger, Recipient from ietf.meeting.models import BusinessConstraint from ietf.stats.models import CountryAlias - from ietf.utils.models import VersionInfo # Grab all ietf.name.models for n in dir(ietf.name.models): @@ -87,7 +86,7 @@ def output(seq): model_objects[model_name(item)] = list(item.objects.all().order_by('pk')) for m in ( BallotType, State, StateType, GroupFeatures, MailTrigger, Recipient, - CountryAlias, VersionInfo, BusinessConstraint ): + CountryAlias, BusinessConstraint ): model_objects[model_name(m)] = list(m.objects.all().order_by('pk')) for m in ( DBTemplate, ): diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 5822f155f5..d29e2a2355 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -14,8 +14,8 @@ import debug # pyflakes:ignore +from ietf.utils import tool_version from ietf.utils.log import log, assertion -from ietf.utils.models import VersionInfo from ietf.utils.pipe import pipe from ietf.utils.test_runner import set_coverage_checking @@ -177,8 +177,10 @@ def check_file_txt(self, path): model_list = list(set(model_list)) command = "xym" - cmd_version = VersionInfo.objects.get(command=command).version - message = "%s:\n%s\n\n" % (cmd_version, out.replace('\n\n','\n').strip() if code == 0 else err) + message = "{version}:\n{output}\n\n".format( + version=tool_version[command], + output=out.replace('\n\n', '\n').strip() if code == 0 else err, + ) results.append({ "name": name, @@ -209,7 +211,6 @@ def check_file_txt(self, path): # pyang cmd_template = settings.SUBMIT_PYANG_COMMAND command = [ w for w in cmd_template.split() if not '=' in w ][0] - cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(libs=modpath, model=path) venv_path = os.environ.get('VIRTUAL_ENV') or os.path.join(os.getcwd(), 'env') venv_bin = os.path.join(venv_path, 'bin') @@ -238,14 +239,17 @@ def check_file_txt(self, path): except ValueError: pass #passed = passed and code == 0 # For the submission tool. Yang checks always pass - message += "%s: %s:\n%s\n" % (cmd_version, cmd_template, out+"No validation errors\n" if (code == 0 and len(err) == 0) else out+err) + message += "{version}: {template}:\n{output}\n".format( + version=tool_version[command], + template=cmd_template, + output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, + ) # yanglint set_coverage_checking(False) # we can't count the following as it may or may not be run, depending on setup if settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY): cmd_template = settings.SUBMIT_YANGLINT_COMMAND command = [ w for w in cmd_template.split() if not '=' in w ][0] - cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, cataloglib=settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ) @@ -264,7 +268,11 @@ def check_file_txt(self, path): except ValueError: pass #passed = passed and code == 0 # For the submission tool. Yang checks always pass - message += "%s: %s:\n%s\n" % (cmd_version, cmd_template, out+"No validation errors\n" if (code == 0 and len(err) == 0) else out+err) + message += "{version}: {template}:\n{output}\n".format( + version=tool_version[command], + template=cmd_template, + output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, + ) set_coverage_checking(True) else: errors += 1 @@ -293,4 +301,4 @@ def check_file_txt(self, path): items = [ e for res in results for e in res["items"] ] info['items'] = items info['code']['yang'] = model_list - return passed, message, errors, warnings, info \ No newline at end of file + return passed, message, errors, warnings, info diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 08b898c13a..58a47aef8b 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -49,9 +49,9 @@ from ietf.submit.forms import SubmissionBaseUploadForm, SubmissionAutoUploadForm from ietf.submit.models import Submission, Preapproval, SubmissionExtResource from ietf.submit.tasks import cancel_stale_submissions, process_and_accept_uploaded_submission_task +from ietf.utils import tool_version from ietf.utils.accesstoken import generate_access_token from ietf.utils.mail import outbox, get_payload_text -from ietf.utils.models import VersionInfo from ietf.utils.test_utils import login_testing_unauthorized, TestCase from ietf.utils.timezone import date_today from ietf.utils.draft import PlaintextDraft @@ -1854,7 +1854,7 @@ def test_submit_invalid_yang(self): # m = q('#yang-validation-message').text() for command in ['xym', 'pyang', 'yanglint']: - version = VersionInfo.objects.get(command=command).version + version = tool_version[command] if command != 'yanglint' or (settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY)): self.assertIn(version, m) self.assertIn("draft-yang-testing-invalid-00.txt", m) diff --git a/ietf/utils/__init__.py b/ietf/utils/__init__.py index 7f1df97602..6a7787955b 100644 --- a/ietf/utils/__init__.py +++ b/ietf/utils/__init__.py @@ -1 +1,29 @@ -# Copyright The IETF Trust 2007, All Rights Reserved +# Copyright The IETF Trust 2007-2024, All Rights Reserved +import subprocess + + +class _ToolVersionManager: + _known = [ + "pyang", + "xml2rfc", + "xym", + "yanglint", + ] + _versions = dict() + + def __getitem__(self, item): + if item not in self._known: + return "Unknown" + elif item not in self._versions: + try: + self._versions[item] = subprocess.run( + [item, "--version"], + capture_output=True, + check=True, + ).stdout.decode().strip() + except subprocess.CalledProcessError: + return "Unknown" + return self._versions[item] + + +tool_version = _ToolVersionManager() diff --git a/ietf/utils/admin.py b/ietf/utils/admin.py index fa1ebb7081..6c1c8726e1 100644 --- a/ietf/utils/admin.py +++ b/ietf/utils/admin.py @@ -5,8 +5,6 @@ from django.contrib import admin from django.utils.encoding import force_str -from ietf.utils.models import VersionInfo - def name(obj): if hasattr(obj, 'abbrev'): return obj.abbrev() @@ -58,8 +56,3 @@ class DumpInfoAdmin(admin.ModelAdmin): list_display = ['date', 'host', 'tz'] list_filter = ['date'] admin.site.register(DumpInfo, DumpInfoAdmin) - -class VersionInfoAdmin(admin.ModelAdmin): - list_display = ['command', 'switch', 'version', 'time', ] -admin.site.register(VersionInfo, VersionInfoAdmin) - diff --git a/ietf/utils/management/commands/update_external_command_info.py b/ietf/utils/management/commands/update_external_command_info.py deleted file mode 100644 index e9e24f000d..0000000000 --- a/ietf/utils/management/commands/update_external_command_info.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright The IETF Trust 2017-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import sys - -from textwrap import dedent - -from django.core.management.base import BaseCommand - -import debug # pyflakes:ignore - -from ietf.utils.models import VersionInfo -from ietf.utils.pipe import pipe - -class Command(BaseCommand): - """ - Update the version information for external commands used by the datatracker. - - Iterates through the entries in the VersionInfo table, runs the relevant - command, and updates the version string with the result. - - """ - - help = dedent(__doc__).strip() - - def handle(self, *filenames, **options): - for c in VersionInfo.objects.filter(used=True): - cmd = "%s %s" % (c.command, c.switch) - code, out, err = pipe(cmd) - out = out.decode('utf-8') - err = err.decode('utf-8') - if code != 0: - sys.stderr.write("Command '%s' returned %s: \n%s\n%s\n" % (cmd, code, out, err)) - else: - c.version = (out.strip()+'\n'+err.strip()).strip() - if options.get('verbosity', 1) > 1: - sys.stdout.write( - "Command: %s\n" - " Version: %s\n" % (cmd, c.version)) - c.save() diff --git a/ietf/utils/migrations/0002_delete_versioninfo.py b/ietf/utils/migrations/0002_delete_versioninfo.py new file mode 100644 index 0000000000..2835bb017b --- /dev/null +++ b/ietf/utils/migrations/0002_delete_versioninfo.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.11 on 2024-05-03 21:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("utils", "0001_initial"), + ] + + operations = [ + migrations.DeleteModel( + name="VersionInfo", + ), + ] diff --git a/ietf/utils/models.py b/ietf/utils/models.py index 0915537fd8..21af5766e9 100644 --- a/ietf/utils/models.py +++ b/ietf/utils/models.py @@ -9,15 +9,6 @@ class DumpInfo(models.Model): host = models.CharField(max_length=128) tz = models.CharField(max_length=32, default='UTC') -class VersionInfo(models.Model): - time = models.DateTimeField(auto_now=True) - command = models.CharField(max_length=32) - switch = models.CharField(max_length=16) - version = models.CharField(max_length=64) - used = models.BooleanField(default=True) - class Meta: - verbose_name_plural = 'VersionInfo' - class ForeignKey(models.ForeignKey): "A local ForeignKey proxy which provides the on_delete value required under Django 2.0." def __init__(self, to, on_delete=models.CASCADE, **kwargs): diff --git a/ietf/utils/resources.py b/ietf/utils/resources.py index 6d61c5e2ed..1252cfef14 100644 --- a/ietf/utils/resources.py +++ b/ietf/utils/resources.py @@ -12,7 +12,7 @@ from django.contrib.contenttypes.models import ContentType from ietf import api -from ietf.utils.models import DumpInfo, VersionInfo +from ietf.utils.models import DumpInfo class UserResource(ModelResource): @@ -43,21 +43,3 @@ class Meta: "host": ALL, } api.utils.register(DumpInfoResource()) - - -class VersionInfoResource(ModelResource): - class Meta: - queryset = VersionInfo.objects.all() - serializer = api.Serializer() - cache = SimpleCache() - #resource_name = 'versioninfo' - ordering = ['id', ] - filtering = { - "id": ALL, - "time": ALL, - "command": ALL, - "switch": ALL, - "version": ALL, - "used": ALL, - } -api.utils.register(VersionInfoResource()) From 635ca28ec1412f095dac09077719071cdf406dfb Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Mon, 13 May 2024 21:40:13 -0400 Subject: [PATCH 096/846] chore: remove helm stuff --- .github/workflows/build.yml | 2 +- helm/.helmignore | 23 - helm/Chart.yaml | 23 - helm/settings_local.py | 259 ------- helm/templates/_helpers.tpl | 179 ----- helm/templates/configmap.yaml | 69 -- helm/templates/deployments/beat.yaml | 75 -- helm/templates/deployments/celery.yaml | 90 --- helm/templates/deployments/datatracker.yaml | 90 --- helm/templates/deployments/memcached.yaml | 74 -- helm/templates/hpa.yaml | 32 - helm/templates/ingress.yaml | 61 -- helm/templates/persistentvolumeclaims.yaml | 43 -- helm/templates/rbac/beat-serviceaccount.yaml | 12 - .../templates/rbac/celery-serviceaccount.yaml | 12 - .../rbac/datatracker-serviceaccount.yaml | 12 - .../rbac/memcached-serviceaccount.yaml | 12 - .../rbac/rabbitmq-serviceaccount.yaml | 12 - helm/templates/services/datatracker.yaml | 21 - helm/templates/services/memcached.yaml | 21 - helm/templates/services/rabbitmq.yaml | 22 - helm/templates/statefulsets/rabbitmq.yaml | 87 --- helm/values.yaml | 645 ------------------ 23 files changed, 1 insertion(+), 1875 deletions(-) delete mode 100644 helm/.helmignore delete mode 100644 helm/Chart.yaml delete mode 100644 helm/settings_local.py delete mode 100644 helm/templates/_helpers.tpl delete mode 100644 helm/templates/configmap.yaml delete mode 100644 helm/templates/deployments/beat.yaml delete mode 100644 helm/templates/deployments/celery.yaml delete mode 100644 helm/templates/deployments/datatracker.yaml delete mode 100644 helm/templates/deployments/memcached.yaml delete mode 100644 helm/templates/hpa.yaml delete mode 100644 helm/templates/ingress.yaml delete mode 100644 helm/templates/persistentvolumeclaims.yaml delete mode 100644 helm/templates/rbac/beat-serviceaccount.yaml delete mode 100644 helm/templates/rbac/celery-serviceaccount.yaml delete mode 100644 helm/templates/rbac/datatracker-serviceaccount.yaml delete mode 100644 helm/templates/rbac/memcached-serviceaccount.yaml delete mode 100644 helm/templates/rbac/rabbitmq-serviceaccount.yaml delete mode 100644 helm/templates/services/datatracker.yaml delete mode 100644 helm/templates/services/memcached.yaml delete mode 100644 helm/templates/services/rabbitmq.yaml delete mode 100644 helm/templates/statefulsets/rabbitmq.yaml delete mode 100644 helm/values.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd65da036c..4181beef4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -220,7 +220,7 @@ jobs: .devcontainer .github .vscode - helm + k8s playwright svn-history docker-compose.yml diff --git a/helm/.helmignore b/helm/.helmignore deleted file mode 100644 index 691fa13d6a..0000000000 --- a/helm/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ \ No newline at end of file diff --git a/helm/Chart.yaml b/helm/Chart.yaml deleted file mode 100644 index 844087fa69..0000000000 --- a/helm/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v2 -name: datatracker -description: The day-to-day front-end to the IETF database for people who work on IETF standards. -home: https://datatracker.ietf.org -sources: - - https://github.com/ietf-tools/datatracker -maintainers: - - name: IETF Tools Team - email: tools-discuss@ietf.org - url: https://github.com/ietf-tools - -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.0.0" \ No newline at end of file diff --git a/helm/settings_local.py b/helm/settings_local.py deleted file mode 100644 index 53609afa79..0000000000 --- a/helm/settings_local.py +++ /dev/null @@ -1,259 +0,0 @@ -# Copyright The IETF Trust 2007-2024, All Rights Reserved -# -*- coding: utf-8 -*- - -from base64 import b64decode -from email.utils import parseaddr -import json - -from ietf import __release_hash__ -from ietf.settings import * # pyflakes:ignore - - -def _remove_whitespace_and_b64decode(s): - """Helper to strip out whitespace and base64 decode""" - return b64decode("".join(s.split())) - - -def _multiline_to_list(s): - """Helper to split at newlines and conver to list""" - return [item.strip() for item in s.split("\n")] - - -# Default to "development". Production _must_ set DATATRACKER_SERVER_MODE="production" in the env! -SERVER_MODE = os.environ.get("DATATRACKER_SERVER_MODE", "development") - -# Secrets -_SECRET_KEY = os.environ.get("DATATRACKER_DJANGO_SECRET_KEY", None) -if _SECRET_KEY is not None: - SECRET_KEY = _SECRET_KEY -else: - raise RuntimeError("DATATRACKER_DJANGO_SECRET_KEY must be set") - -_NOMCOM_APP_SECRET_B64 = os.environ.get("DATATRACKER_NOMCOM_APP_SECRET_B64", None) -if _NOMCOM_APP_SECRET_B64 is not None: - NOMCOM_APP_SECRET = _remove_whitespace_and_b64decode(_NOMCOM_APP_SECRET_B64) -else: - raise RuntimeError("DATATRACKER_NOMCOM_APP_SECRET_B64 must be set") - -_IANA_SYNC_PASSWORD = os.environ.get("DATATRACKER_IANA_SYNC_PASSWORD", None) -if _IANA_SYNC_PASSWORD is not None: - IANA_SYNC_PASSWORD = _IANA_SYNC_PASSWORD -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 -else: - raise RuntimeError("DATATRACKER_YOUTUBE_API_KEY must be set") - -_GITHUB_BACKUP_API_KEY = os.environ.get("DATATRACKER_GITHUB_BACKUP_API_KEY", None) -if _GITHUB_BACKUP_API_KEY is not None: - GITHUB_BACKUP_API_KEY = _GITHUB_BACKUP_API_KEY -else: - raise RuntimeError("DATATRACKER_GITHUB_BACKUP_API_KEY must be set") - -_API_KEY_TYPE = os.environ.get("DATATRACKER_API_KEY_TYPE", None) -if _API_KEY_TYPE is not None: - API_KEY_TYPE = _API_KEY_TYPE -else: - raise RuntimeError("DATATRACKER_API_KEY_TYPE must be set") - -_API_PUBLIC_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PUBLIC_KEY_PEM_B64", None) -if _API_PUBLIC_KEY_PEM_B64 is not None: - API_PUBLIC_KEY_PEM = _remove_whitespace_and_b64decode(_API_PUBLIC_KEY_PEM_B64) -else: - raise RuntimeError("DATATRACKER_API_PUBLIC_KEY_PEM_B64 must be set") - -_API_PRIVATE_KEY_PEM_B64 = os.environ.get("DATATRACKER_API_PRIVATE_KEY_PEM_B64", None) -if _API_PRIVATE_KEY_PEM_B64 is not None: - API_PRIVATE_KEY_PEM = _remove_whitespace_and_b64decode(_API_PRIVATE_KEY_PEM_B64) -else: - raise RuntimeError("DATATRACKER_API_PRIVATE_KEY_PEM_B64 must be set") - -# Set DEBUG if DATATRACKER_DEBUG env var is the word "true" -DEBUG = os.environ.get("DATATRACKER_DEBUG", "false").lower() == "true" - -# DATATRACKER_ALLOWED_HOSTS env var is a comma-separated list of allowed hosts -_allowed_hosts_str = os.environ.get("DATATRACKER_ALLOWED_HOSTS", None) -if _allowed_hosts_str is not None: - ALLOWED_HOSTS = _multiline_to_list(_allowed_hosts_str) - -DATABASES = { - "default": { - "HOST": os.environ.get("DATATRACKER_DBHOST", "db"), - "PORT": os.environ.get("DATATRACKER_DBPORT", "5432"), - "NAME": os.environ.get("DATATRACKER_DBNAME", "datatracker"), - "ENGINE": "django.db.backends.postgresql", - "USER": os.environ.get("DATATRACKER_DBUSER", "django"), - "PASSWORD": os.environ.get("DATATRACKER_DBPASS", ""), - }, -} - -# DATATRACKER_ADMINS is a newline-delimited list of addresses parseable by email.utils.parseaddr -_admins_str = os.environ.get("DATATRACKER_ADMINS", None) -if _admins_str is not None: - ADMINS = [parseaddr(admin) for admin in _multiline_to_list(_admins_str)] -else: - raise RuntimeError("DATATRACKER_ADMINS must be set") - -USING_DEBUG_EMAIL_SERVER = os.environ.get("DATATRACKER_EMAIL_DEBUG", "false").lower() == "true" -EMAIL_HOST = os.environ.get("DATATRACKER_EMAIL_HOST", "localhost") -EMAIL_PORT = int(os.environ.get("DATATRACKER_EMAIL_PORT", "2025")) - -_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", "rabbitmq"), - password=_celery_password, - queue=os.environ.get("RABBITMQ_QUEUE", "dt") -) - -IANA_SYNC_USERNAME = "ietfsync" -IANA_SYNC_CHANGES_URL = "https://datatracker.iana.org:4443/data-tracker/changes" -IANA_SYNC_PROTOCOLS_URL = "http://www.iana.org/protocols/" - -RFC_EDITOR_NOTIFICATION_URL = "http://www.rfc-editor.org/parser/parser.php" - -STATS_REGISTRATION_ATTENDEES_JSON_URL = 'https://registration.ietf.org/{number}/attendees/?apikey=redacted' - -#FIRST_CUTOFF_DAYS = 12 -#SECOND_CUTOFF_DAYS = 12 -#SUBMISSION_CUTOFF_DAYS = 26 -#SUBMISSION_CORRECTION_DAYS = 57 -MEETING_MATERIALS_SUBMISSION_CUTOFF_DAYS = 26 -MEETING_MATERIALS_SUBMISSION_CORRECTION_DAYS = 54 - -HTPASSWD_COMMAND = "/usr/bin/htpasswd2" - -_MEETECHO_CLIENT_ID = os.environ.get("DATATRACKER_MEETECHO_CLIENT_ID", None) -_MEETECHO_CLIENT_SECRET = os.environ.get("DATATRACKER_MEETECHO_CLIENT_SECRET", None) -if _MEETECHO_CLIENT_ID is not None and _MEETECHO_CLIENT_SECRET is not None: - MEETECHO_API_CONFIG = { - "api_base": os.environ.get( - "DATATRACKER_MEETECHO_API_BASE", - "https://meetings.conf.meetecho.com/api/v1/", - ), - "client_id": _MEETECHO_CLIENT_ID, - "client_secret": _MEETECHO_CLIENT_SECRET, - "request_timeout": 3.01, # python-requests doc recommend slightly > a multiple of 3 seconds - } -else: - raise RuntimeError( - "DATATRACKER_MEETECHO_CLIENT_ID and DATATRACKER_MEETECHO_CLIENT_SECRET must be set" - ) - -_APP_API_TOKENS_JSON = os.environ.get("DATATRACKER_APP_API_TOKENS_JSON", None) -if _APP_API_TOKENS_JSON is not None: - APP_API_TOKENS = json.loads(_APP_API_TOKENS_JSON) -else: - APP_API_TOKENS = {} - -EMAIL_COPY_TO = "" - -# Until we teach the datatracker to look beyond cloudflare for this check -IDSUBMIT_MAX_DAILY_SAME_SUBMITTER = 5000 - -# Leave DATATRACKER_MATOMO_SITE_ID unset to disable Matomo reporting -if "DATATRACKER_MATOMO_SITE_ID" in os.environ: - MATOMO_DOMAIN_PATH = os.environ.get("DATATRACKER_MATOMO_DOMAIN_PATH", "analytics.ietf.org") - MATOMO_SITE_ID = os.environ.get("DATATRACKER_MATOMO_SITE_ID") - MATOMO_DISABLE_COOKIES = True - -# Leave DATATRACKER_SCOUT_KEY unset to disable Scout APM agent -_SCOUT_KEY = os.environ.get("DATATRACKER_SCOUT_KEY", None) -if _SCOUT_KEY is not None: - if SERVER_MODE == "production": - PROD_PRE_APPS = ["scout_apm.django", ] - else: - DEV_PRE_APPS = ["scout_apm.django", ] - SCOUT_MONITOR = True - SCOUT_KEY = _SCOUT_KEY - SCOUT_NAME = os.environ.get("DATATRACKER_SCOUT_NAME", "Datatracker") - SCOUT_ERRORS_ENABLED = True - SCOUT_SHUTDOWN_MESSAGE_ENABLED = False - SCOUT_CORE_AGENT_SOCKET_PATH = "tcp://{host}:{port}".format( - host=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_HOST", "localhost"), - port=os.environ.get("DATATRACKER_SCOUT_CORE_AGENT_PORT", "6590"), - ) - SCOUT_CORE_AGENT_DOWNLOAD = False - SCOUT_CORE_AGENT_LAUNCH = False - SCOUT_REVISION_SHA = __release_hash__[:7] - -# Path to the email alias lists. Used by ietf.utils.aliases -DRAFT_ALIASES_PATH = "/a/postfix/draft-aliases" -DRAFT_VIRTUAL_PATH = "/a/postfix/draft-virtual" -GROUP_ALIASES_PATH = "/a/postfix/group-aliases" -GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual" - -STATIC_URL = os.environ.get("DATATRACKER_STATIC_URL", None) -if STATIC_URL is None: - from ietf import __version__ - STATIC_URL = f"https://static.ietf.org/dt/{__version__}/" - -# Set these to the same as "production" in settings.py, whether production mode or not -MEDIA_ROOT = "/a/www/www6s/lib/dt/media/" -MEDIA_URL = "https://www.ietf.org/lib/dt/media/" -PHOTOS_DIRNAME = "photo" -PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME - -# Normally only set for debug, but needed until we have a real FS -DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') - -# Binaries that are different in the docker image -DE_GFM_BINARY = "/usr/local/bin/de-gfm" -IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits" - -# Duplicating production cache from settings.py and using it whether we're in production mode or not -MEMCACHED_HOST = os.environ.get("MEMCACHED_SERVICE_HOST", "127.0.0.1") -MEMCACHED_PORT = os.environ.get("MEMCACHED_SERVICE_PORT", "11211") -from ietf import __version__ -CACHES = { - "default": { - "BACKEND": "ietf.utils.cache.LenientMemcacheCache", - "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", - "VERSION": __version__, - "KEY_PREFIX": "ietf:dt", - "KEY_FUNCTION": lambda key, key_prefix, version: ( - f"{key_prefix}:{version}:{sha384(str(key).encode('utf8')).hexdigest()}" - ), - }, - "sessions": { - "BACKEND": "ietf.utils.cache.LenientMemcacheCache", - "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", - # No release-specific VERSION setting. - "KEY_PREFIX": "ietf:dt", - }, - "htmlized": { - "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", - "LOCATION": "/a/cache/datatracker/htmlized", - "OPTIONS": { - "MAX_ENTRIES": 100000, # 100,000 - }, - }, - "pdfized": { - "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", - "LOCATION": "/a/cache/datatracker/pdfized", - "OPTIONS": { - "MAX_ENTRIES": 100000, # 100,000 - }, - }, - "slowpages": { - "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", - "LOCATION": "/a/cache/datatracker/slowpages", - "OPTIONS": { - "MAX_ENTRIES": 5000, - }, - }, -} - -_csrf_trusted_origins_str = os.environ.get("DATATRACKER_CSRF_TRUSTED_ORIGINS") -if _csrf_trusted_origins_str is not None: - CSRF_TRUSTED_ORIGINS = _multiline_to_list(_csrf_trusted_origins_str) diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl deleted file mode 100644 index 503b3f1bb8..0000000000 --- a/helm/templates/_helpers.tpl +++ /dev/null @@ -1,179 +0,0 @@ -{{/* - Expand the name of the chart. - */}} -{{- define "datatracker.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "datatracker.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create a fully qualified datatracker name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.datatracker.fullname" -}} -{{- if .Values.datatracker.fullnameOverride -}} -{{- .Values.datatracker.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.datatracker.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified celery name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.celery.fullname" -}} -{{- if .Values.celery.fullnameOverride -}} -{{- .Values.celery.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.celery.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.celery.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified celery name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.beat.fullname" -}} -{{- if .Values.beat.fullnameOverride -}} -{{- .Values.beat.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.beat.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.beat.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified rabbitmq name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.rabbitmq.fullname" -}} -{{- if .Values.rabbitmq.fullnameOverride -}} -{{- .Values.rabbitmq.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.rabbitmq.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified memcached name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "datatracker.memcached.fullname" -}} -{{- if .Values.memcached.fullnameOverride -}} -{{- .Values.memcached.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.memcached.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "datatracker.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "datatracker.commonLabels" -}} -helm.sh/chart: {{ include "datatracker.chart" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/part-of: {{ include "datatracker.name" . | default "datatracker" }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "datatracker.selectorLabels" -}} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "datatracker.serviceAccountName.datatracker" -}} -{{- if .Values.serviceAccounts.datatracker.create -}} - {{ default (include "datatracker.datatracker.fullname" .) .Values.serviceAccounts.datatracker.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.datatracker.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.celery" -}} -{{- if .Values.serviceAccounts.celery.create -}} - {{ default (include "datatracker.celery.fullname" .) .Values.serviceAccounts.celery.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.celery.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.beat" -}} -{{- if .Values.serviceAccounts.beat.create -}} - {{ default (include "datatracker.beat.fullname" .) .Values.serviceAccounts.beat.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.beat.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.rabbitmq" -}} -{{- if .Values.serviceAccounts.rabbitmq.create -}} - {{ default (include "datatracker.rabbitmq.fullname" .) .Values.serviceAccounts.rabbitmq.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.rabbitmq.name }} -{{- end -}} -{{- end }} - -{{- define "datatracker.serviceAccountName.memcached" -}} -{{- if .Values.serviceAccounts.memcached.create -}} - {{ default (include "datatracker.memcached.fullname" .) .Values.serviceAccounts.memcached.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.memcached.name }} -{{- end -}} -{{- end }} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml deleted file mode 100644 index 06cda4a04b..0000000000 --- a/helm/templates/configmap.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: django-configmap -data: - settings_local.py: |- - {{- .Files.Get "settings_local.py" | nindent 4 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: rabbitmq-configmap -data: - definitions.json: |- - { - "permissions": [ - { - "configure": ".*", - "read": ".*", - "user": "datatracker", - "vhost": "dt", - "write": ".*" - } - ], - "users": [ - { - "hashing_algorithm": "rabbit_password_hashing_sha256", - "limits": {}, - "name": "datatracker", - "password_hash": "HJxcItcpXtBN+R/CH7dUelfKBOvdUs3AWo82SBw2yLMSguzb", - "tags": [] - } - ], - "vhosts": [ - { - "limits": [], - "metadata": { - "description": "", - "tags": [] - }, - "name": "dt" - } - ] - } - rabbitmq.conf: |- - # prevent guest from logging in over tcp - loopback_users.guest = true - - # load saved definitions - load_definitions = /etc/rabbitmq/definitions.json - - # Ensure that enough disk is available to flush to disk. To do this, need to limit the - # memory available to the container to something reasonable. See - # https://www.rabbitmq.com/production-checklist.html#monitoring-and-resource-usage - # for recommendations. - - # 1-1.5 times the memory available to the container is adequate for disk limit - disk_free_limit.absolute = 6000MB - - # This should be ~40% of the memory available to the container. Use an - # absolute number because relative will be proprtional to the full machine - # memory. - vm_memory_high_watermark.absolute = 1600MB - - # Logging - log.file = false - log.console = true - log.console.level = info - log.console.formatter = json diff --git a/helm/templates/deployments/beat.yaml b/helm/templates/deployments/beat.yaml deleted file mode 100644 index 83347481cd..0000000000 --- a/helm/templates/deployments/beat.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.beat.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.beat.name }} -spec: - {{- $podValues := .Values.beat }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - app.kubernetes.io/name: {{ $podValues.name }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - app.kubernetes.io/name: {{ $podValues.name }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.beat" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ default $.Values.datatracker.image.repository $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" - imagePullPolicy: {{ default "IfNotPresent" (default $.Values.datatracker.image.imagePullPolicy $podValues.image.imagePullPolicy) }} - env: - - name: "CONTAINER_ROLE" - value: "beat" - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/helm/templates/deployments/celery.yaml b/helm/templates/deployments/celery.yaml deleted file mode 100644 index 5c824aa2d0..0000000000 --- a/helm/templates/deployments/celery.yaml +++ /dev/null @@ -1,90 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.celery.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.celery.name }} -spec: - {{- $podValues := .Values.celery }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - app.kubernetes.io/name: {{ $podValues.name }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - app.kubernetes.io/name: {{ $podValues.name }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.celery" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - {{- if .Values.scoutapm }} - - name: "scoutapm" - image: "{{ .Values.scoutapm.image.repository }}:{{ default "latest" .Values.scoutapm.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.scoutapm.image.imagePullPolicy }} - livenessProbe: - exec: - command: - - "sh" - - "-c" - - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" - securityContext: - readOnlyRootFilesystem: {{ default true .Values.scoutapm.readOnlyRootFilesystem }} - runAsUser: {{ default 65534 .Values.scoutapm.runAsUser }} # "nobody" user by default - runAsGroup: {{ default 65534 .Values.scoutapm.runAsGroup }} # "nogroup" group by default - {{- end }} - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ default $.Values.datatracker.image.repository $podValues.image.repository }}:{{ default .Chart.AppVersion (default $.Values.datatracker.image.tag $podValues.image.tag) }}" - imagePullPolicy: {{ default "IfNotPresent" (default $.Values.datatracker.image.imagePullPolicy $podValues.image.imagePullPolicy) }} - env: - - name: "CONTAINER_ROLE" - value: "celery" - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/helm/templates/deployments/datatracker.yaml b/helm/templates/deployments/datatracker.yaml deleted file mode 100644 index acd54af97a..0000000000 --- a/helm/templates/deployments/datatracker.yaml +++ /dev/null @@ -1,90 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.datatracker.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.datatracker.name }} -spec: - {{- $podValues := .Values.datatracker }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - app.kubernetes.io/name: {{ $podValues.name }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - app.kubernetes.io/name: {{ $podValues.name }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.datatracker" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - {{- if .Values.scoutapm }} - - name: "scoutapm" - image: "{{ .Values.scoutapm.image.repository }}:{{ default "latest" .Values.scoutapm.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" .Values.scoutapm.image.imagePullPolicy }} - livenessProbe: - exec: - command: - - "sh" - - "-c" - - "./core-agent probe --tcp 0.0.0.0:6590 | grep -q 'Agent found'" - securityContext: - readOnlyRootFilesystem: {{ default true .Values.scoutapm.readOnlyRootFilesystem }} - runAsUser: {{ default 65534 .Values.scoutapm.runAsUser }} # "nobody" user by default - runAsGroup: {{ default 65534 .Values.scoutapm.runAsGroup }} # "nogroup" group by default - {{- end }} - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default .Chart.AppVersion $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} - env: - - name: "CONTAINER_ROLE" - value: "datatracker" - {{- if $.Values.env }} - {{- range $key, $val := $.Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8000 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/helm/templates/deployments/memcached.yaml b/helm/templates/deployments/memcached.yaml deleted file mode 100644 index 7bf21c1d79..0000000000 --- a/helm/templates/deployments/memcached.yaml +++ /dev/null @@ -1,74 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "datatracker.memcached.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.memcached.name }} -spec: - {{- $podValues := .Values.memcached }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - app.kubernetes.io/name: {{ $podValues.name }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - app.kubernetes.io/name: {{ $podValues.name }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.memcached" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" - args: ["-m", "$(MEMCACHED_MEM_LIMIT)"] - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.imagePullPolicy }} - env: - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: memcached - containerPort: 11211 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml deleted file mode 100644 index 646000bdcb..0000000000 --- a/helm/templates/hpa.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "datatracker.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "datatracker.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml deleted file mode 100644 index 3b1a9febc5..0000000000 --- a/helm/templates/ingress.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.datatracker.ingress.enabled -}} -{{- $fullName := include "datatracker.fullname" . -}} -{{- $svcPort := .Values.datatracker.service.port -}} -{{- if and .Values.datatracker.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.datatracker.ingress.annotations "kubernetes.io/ingress.class" .Values.datatracker.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.datatracker.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.datatracker.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.datatracker.ingress.className }} - {{- end }} - {{- if .Values.datatracker.ingress.tls }} - tls: - {{- range .Values.datatracker.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.datatracker.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/helm/templates/persistentvolumeclaims.yaml b/helm/templates/persistentvolumeclaims.yaml deleted file mode 100644 index 412de9d02d..0000000000 --- a/helm/templates/persistentvolumeclaims.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: "datatracker-shared-volume-claim" - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.datatracker.name }} -spec: - {{- with .Values.persistentVolumes.datatrackerSharedVolume }} - storageClassName: {{ .storageClassName | quote }} - {{- if .volumeName }} - volumeName: {{ .volumeName | quote }} - {{- end }} - accessModes: - {{- range .accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .storage | quote }} - {{- end }} ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: "rabbitmq-data-claim" - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.rabbitmq.name }} -spec: - {{- with .Values.persistentVolumes.rabbitmqDataVolume }} - storageClassName: {{ .storageClassName | quote }} - {{- if .volumeName }} - volumeName: {{ .volumeName | quote }} - {{- end }} - accessModes: - {{- range .accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .storage | quote }} - {{- end }} diff --git a/helm/templates/rbac/beat-serviceaccount.yaml b/helm/templates/rbac/beat-serviceaccount.yaml deleted file mode 100644 index 9834013756..0000000000 --- a/helm/templates/rbac/beat-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.beat.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.beat" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.serviceAccounts.beat.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} diff --git a/helm/templates/rbac/celery-serviceaccount.yaml b/helm/templates/rbac/celery-serviceaccount.yaml deleted file mode 100644 index e27673e385..0000000000 --- a/helm/templates/rbac/celery-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.celery.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.celery" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.serviceAccounts.celery.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} diff --git a/helm/templates/rbac/datatracker-serviceaccount.yaml b/helm/templates/rbac/datatracker-serviceaccount.yaml deleted file mode 100644 index d64f1523da..0000000000 --- a/helm/templates/rbac/datatracker-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.datatracker.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.datatracker" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.serviceAccounts.datatracker.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} diff --git a/helm/templates/rbac/memcached-serviceaccount.yaml b/helm/templates/rbac/memcached-serviceaccount.yaml deleted file mode 100644 index cc8d1a1212..0000000000 --- a/helm/templates/rbac/memcached-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.memcached.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.memcached" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.serviceAccounts.memcached.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} diff --git a/helm/templates/rbac/rabbitmq-serviceaccount.yaml b/helm/templates/rbac/rabbitmq-serviceaccount.yaml deleted file mode 100644 index 58c89b2dcf..0000000000 --- a/helm/templates/rbac/rabbitmq-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.rabbitmq.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "datatracker.serviceAccountName.rabbitmq" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.serviceAccounts.rabbitmq.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end -}} diff --git a/helm/templates/services/datatracker.yaml b/helm/templates/services/datatracker.yaml deleted file mode 100644 index 201f5a3b4b..0000000000 --- a/helm/templates/services/datatracker.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{include "datatracker.fullname" .}} - labels: {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.datatracker.service.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: - type: {{.Values.datatracker.service.type}} - ports: - - port: {{ default "80" .Values.datatracker.service.port}} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "datatracker.selectorLabels" . | nindent 4}} - app.kubernetes.io/name: {{ .Values.datatracker.name }} diff --git a/helm/templates/services/memcached.yaml b/helm/templates/services/memcached.yaml deleted file mode 100644 index 572c382b5b..0000000000 --- a/helm/templates/services/memcached.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: memcached - labels: {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.memcached.service.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: - type: {{.Values.memcached.service.type}} - ports: - - port: {{ default "11211" .Values.memcached.service.port}} - targetPort: memcached - protocol: TCP - name: memcached - selector: - {{- include "datatracker.selectorLabels" . | nindent 4}} - app.kubernetes.io/name: {{ .Values.memcached.name }} diff --git a/helm/templates/services/rabbitmq.yaml b/helm/templates/services/rabbitmq.yaml deleted file mode 100644 index e67cb31694..0000000000 --- a/helm/templates/services/rabbitmq.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: rabbitmq - labels: {{- include "datatracker.commonLabels" . | nindent 4 }} - {{- with .Values.rabbitmq.service.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: - type: {{.Values.rabbitmq.service.type}} - clusterIP: None # headless service - ports: - - port: {{ default "5672" .Values.rabbitmq.service.port}} - targetPort: amqp - protocol: TCP - name: amqp - selector: - {{- include "datatracker.selectorLabels" . | nindent 4}} - app.kubernetes.io/name: {{ .Values.rabbitmq.name }} diff --git a/helm/templates/statefulsets/rabbitmq.yaml b/helm/templates/statefulsets/rabbitmq.yaml deleted file mode 100644 index 6cb2cc8367..0000000000 --- a/helm/templates/statefulsets/rabbitmq.yaml +++ /dev/null @@ -1,87 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ include "datatracker.rabbitmq.fullname" . }} - labels: - {{- include "datatracker.commonLabels" . | nindent 4 }} - app.kubernetes.io/name: {{ .Values.rabbitmq.name }} -spec: - {{- $podValues := .Values.rabbitmq }} - replicas: {{ $podValues.replicaCount }} - revisionHistoryLimit: {{ $podValues.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "datatracker.selectorLabels" . | nindent 6 }} - app.kubernetes.io/name: {{ $podValues.name }} - template: - metadata: - labels: - {{- include "datatracker.selectorLabels" . | nindent 8 }} - app.kubernetes.io/name: {{ $podValues.name }} - spec: - {{- with $podValues.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "datatracker.serviceAccountName.rabbitmq" . }} - securityContext: - {{- toYaml $podValues.podSecurityContext | nindent 8 }} - initContainers: - - name: init-rabbitmq - image: busybox:stable - command: - - "sh" - - "-c" - - "mkdir -p -m700 /mnt/rabbitmq && chown 100:101 /mnt/rabbitmq" - securityContext: - runAsNonRoot: false - runAsUser: 0 - readOnlyRootFilesystem: true - volumeMounts: - - name: "rabbitmq-data" - mountPath: "/mnt" - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml $podValues.securityContext | nindent 12 }} - image: "{{ $podValues.image.repository }}:{{ default "latest" $podValues.image.tag }}" - imagePullPolicy: {{ default "IfNotPresent" $podValues.image.pullPolicy }} - env: - {{- if .Values.env }} - {{- range $key, $val := .Values.env }} - - name: {{ $key | quote }} - value: {{ $val | quote }} - {{- end }} - {{- end }} - {{- with $podValues.volumeMounts }} - volumeMounts: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: amqp - containerPort: 5672 - protocol: TCP - livenessProbe: - {{- toYaml $podValues.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml $podValues.readinessProbe | nindent 12 }} - startupProbe: - {{- toYaml $podValues.startupProbe | nindent 12 }} - resources: - {{- toYaml $podValues.resources | nindent 12 }} - {{- with $podValues.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $podValues.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml deleted file mode 100644 index aa5bbaf30c..0000000000 --- a/helm/values.yaml +++ /dev/null @@ -1,645 +0,0 @@ -# Default values for datatracker. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -## Define serviceAccount names for components. Defaults to component's fully qualified name. -## -serviceAccounts: - datatracker: - create: true - name: datatracker - annotations: {} - celery: - create: true - name: celery - annotations: {} - beat: - create: true - name: beat - annotations: {} - rabbitmq: - create: true - name: rabbitmq - annotations: {} - memcached: - create: true - name: memcached - annotations: {} - -# ------------------------------------------------------------- -# DATATRACKER -# ------------------------------------------------------------- - -datatracker: - name: datatracker - image: - repository: "ghcr.io/ietf-tools/datatracker" - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: datatracker.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -# livenessProbe: -# httpGet: -# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint -# path: /submit/tool-instructions/ -# port: http - - podAnnotations: {} - podLabels: {} - -#readinessProbe: -# httpGet: -# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint -# path: /submit/tool-instructions/ -# port: http - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - podSecurityContext: - runAsNonRoot: true - - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - runAsUser: 1000 - runAsGroup: 1000 - - service: - type: ClusterIP - port: 80 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -# startupProbe: -# initialDelaySeconds: 15 -# periodSeconds: 5 -# timeoutSeconds: 5 -# successThreshold: 1 -# failureThreshold: 60 -# httpGet: -# # /submit/tool-instructions/ just happens to be cheap until we get a real health endpoint -# path: /submit/tool-instructions/ -# port: http - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: datatracker-shared-volume - persistentVolumeClaim: - claimName: "datatracker-shared-volume-claim" - - name: datatracker-tmp - emptyDir: - sizeLimit: "2Gi" - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: datatracker-shared-volume - mountPath: /a - - name: datatracker-tmp - mountPath: /tmp - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# CELERY -# ------------------------------------------------------------- - -celery: - name: celery - image: {} - # defaults to datatracker settings if not specified separately - #repository: "ghcr.io/ietf-tools/datatracker" - #pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: ["celery", "-A", "ietf", "inspect", "ping"] - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - podSecurityContext: - runAsNonRoot: true - - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - runAsUser: 1000 - runAsGroup: 1000 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: ["celery", "-A", "ietf", "inspect", "ping"] - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: datatracker-shared-volume - persistentVolumeClaim: - claimName: "datatracker-shared-volume-claim" - - name: celery-tmp - emptyDir: - sizeLimit: "2Gi" - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: datatracker-shared-volume - mountPath: /a - - name: celery-tmp - mountPath: /tmp - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# BEAT -# ------------------------------------------------------------- - -beat: - name: beat - image: {} - # defaults to datatracker settings if not specified separately - # repository: "ghcr.io/ietf-tools/datatracker" - # pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - # tag: "v1.1.0" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: ["celery", "-A", "ietf", "inspect", "ping"] - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - podSecurityContext: - runAsNonRoot: true - - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - runAsUser: 1000 - runAsGroup: 1000 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: ["celery", "-A", "ietf", "inspect", "ping"] - - # Additional volumes on the output Deployment definition. - volumes: - - name: settings-local-volume - configMap: - name: django-configmap - - name: datatracker-shared-volume - persistentVolumeClaim: - claimName: "datatracker-shared-volume-claim" - - name: beat-tmp - emptyDir: - sizeLimit: "2Gi" - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: settings-local-volume - mountPath: /workspace/ietf/settings_local.py - subPath: settings_local.py - readOnly: true - - name: datatracker-shared-volume - mountPath: /a - - name: beat-tmp - mountPath: /tmp - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# RABBITMQ -# ------------------------------------------------------------- - -rabbitmq: - name: "rabbitmq" - image: - repository: "ghcr.io/ietf-tools/datatracker-mq" - pullPolicy: IfNotPresent - tag: "3.12-alpine" - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - livenessProbe: - exec: - command: ["rabbitmq-diagnostics", "-q", "ping"] - periodSeconds: 30 - timeoutSeconds: 5 - - podAnnotations: {} - podLabels: {} - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - podSecurityContext: - runAsNonRoot: true - - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - # rabbitmq image sets up uid/gid 100/101 - runAsUser: 100 - runAsGroup: 101 - - service: - type: ClusterIP - port: 5672 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - startupProbe: - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 60 - exec: - command: ["rabbitmq-diagnostics", "-q", "ping"] - - # Additional volumes on the output Deployment definition. - volumes: - - name: "rabbitmq-data" - persistentVolumeClaim: - claimName: "rabbitmq-data-claim" - - name: "rabbitmq-config" - configMap: - name: "rabbitmq-configmap" - - name: "rabbitmq-tmp" - emptyDir: - sizeLimit: 50Mi - # - name: foo - # secret: - # secretName: mysecret - # optional: false - - # Additional volumeMounts on the output Deployment definition. - volumeMounts: - - name: "rabbitmq-data" - mountPath: "/var/lib/rabbitmq" - subPath: "rabbitmq" - - name: "rabbitmq-config" - mountPath: "/etc/rabbitmq" - - name: "rabbitmq-tmp" - mountPath: "/tmp" - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# MEMCACHED -# ------------------------------------------------------------- - -memcached: - name: memcached - image: - repository: "memcached" - pullPolicy: IfNotPresent - tag: "1.6-alpine" - - imagePullSecrets: [] - nameOverride: "" - fullnameOverride: "" - - podAnnotations: {} - podLabels: {} - - replicaCount: 1 - - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - podSecurityContext: - runAsNonRoot: true - - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - # memcached image sets up uid/gid 11211 - runAsUser: 11211 - runAsGroup: 11211 - - service: - type: ClusterIP - port: 11211 - - serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - - tolerations: [] - - nodeSelector: {} - - affinity: {} - -# ------------------------------------------------------------- -# SCOUT APM SETTINGS -# ------------------------------------------------------------- -# Set this to enable a Scout APM Core Agent sidecar -scoutapm: - image: - repository: "scoutapp/scoutapm" - tag: "version-1.4.0" - -# ------------------------------------------------------------- -# PERSISTENT VOLUMES -# ------------------------------------------------------------- - -persistentVolumes: - datatrackerSharedVolume: - # Note: This is the /a shared volume - volumeName: "datatracker-shared-volume" - accessModes: - - "ReadWriteMany" # or ReadWriteOnce and force datatracker/celery/beat to a single node - storageClassName: "" # Empty string means do not use default storage class - storage: "600Gi" # actual PersistentVolume must be at least this big or the PVC will not bind - - rabbitmqDataVolume: - volumeName: "rabbitmq-data-volume" - accessModes: - - "ReadWriteOnce" - storageClassName: "" # Empty string means do not use default storage class - storage: "8Gi" # actual PersistentVolume must be at least this big or the PVC will not bind - -# ------------------------------------------------------------- -# COMMON -# ------------------------------------------------------------- - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -env: - # n.b., these are debug values / non-secret secrets - DATATRACKER_SERVER_MODE: "development" # development for staging, production for production - DATATRACKER_ADMINS: |- - Robert Sparks - Ryan Cross - Kesara Rathnayake - Jennifer Richards - Nicolas Giard - DATATRACKER_ALLOWED_HOSTS: ".ietf.org" # newline-separated list also allowed - # DATATRACKER_DATATRACKER_DEBUG: "false" - - # DB access details - needs to be filled in - # DATATRACKER_DBHOST: "db" - # DATATRACKER_DBPORT: "5432" - # DATATRACKER_DBNAME: "datatracker" - # DATATRACKER_DBUSER: "django" # secret - # DATATRACKER_DBPASS: "RkTkDPFnKpko" # secret - - DATATRACKER_DJANGO_SECRET_KEY: "PDwXboUq!=hPjnrtG2=ge#N$Dwy+wn@uivrugwpic8mxyPfHk" # secret - - # Set this to point testing / staging at the production statics server until we - # sort that out - # DATATRACKER_STATIC_URL: "https://static.ietf.org/dt/12.10.0/" - - # DATATRACKER_EMAIL_DEBUG: "true" - - # Outgoing email details - # DATATRACKER_EMAIL_HOST: "localhost" # defaults to localhost - # DATATRACKER_EMAIL_PORT: "2025" # defaults to 2025 - - # The value here is the default from settings.py (i.e., not actually secret) - 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 - - # API key configuration - DATATRACKER_API_KEY_TYPE: "ES265" - # secret - value here is the default from settings.py (i.e., not actually secret) - DATATRACKER_API_PUBLIC_KEY_PEM_B64: |- - Ci0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS - 29aSXpqMERBUWNEUWdBRXFWb2pzYW9mREpTY3VNSk4rdHNodW15Tk01TUUKZ2Fyel - ZQcWtWb3ZtRjZ5RTdJSi9kdjRGY1YrUUtDdEovck9TOGUzNlk4WkFFVll1dWtoZXM - weVoxdz09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo= - # secret - value here is the default from settings.py (i.e., not actually secret) - DATATRACKER_API_PRIVATE_KEY_PEM_B64: |- - Ci0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQpNSUdIQWdFQU1CTUdCeXFHU000O - UFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdvSTZMSmtvcEtxOFhySGk5ClFxR1 - F2RTRBODNURllqcUx6KzhnVUxZZWNzcWhSQU5DQUFTcFdpT3hxaDhNbEp5NHdrMzY - yeUc2Ykkwemt3U0IKcXZOVStxUldpK1lYcklUc2duOTIvZ1Z4WDVBb0swbitzNUx4 - N2ZwanhrQVJWaTY2U0Y2elRKblgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= - - # DATATRACKER_MEETECHO_API_BASE: "https://meetings.conf.meetecho.com/api/v1/" - DATATRACKER_MEETECHO_CLIENT_ID: "this-is-the-meetecho-client-id" # secret - DATATRACKER_MEETECHO_CLIENT_SECRET: "this-is-the-meetecho-client-secret" # secret - - # DATATRACKER_MATOMO_SITE_ID: "7" # must be present to enable Matomo - # DATATRACKER_MATOMO_DOMAIN_PATH: "analytics.ietf.org" - - CELERY_PASSWORD: "this-is-a-secret" # secret - - DATATRACKER_APP_API_TOKENS_JSON: "{}" # secret - - # use this to override default - one entry per line - # DATATRACKER_CSRF_TRUSTED_ORIGINS: |- - # https://datatracker.staging.ietf.org - - # Scout configuration - DATATRACKER_SCOUT_KEY: "this-is-the-scout-key" - DATATRACKER_SCOUT_NAME: "StagingDatatracker" - - MEMCACHED_MEM_LIMIT: "1024" From 6cb0fa5ed40629c51c8a619773957ff6163d88a9 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Mon, 13 May 2024 21:42:21 -0400 Subject: [PATCH 097/846] chore: Remove helm config from .editorconfig --- .editorconfig | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.editorconfig b/.editorconfig index 4e5b304b6a..7e5ce6236a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -51,14 +51,8 @@ indent_size = 2 [ietf/**.html] insert_final_newline = false -# Settings for Helm chart yaml -# --------------------------------------------------------- -# Use 2-space indents -[helm/**.yaml] -indent_size = 2 - # Settings for Kubernetes yaml # --------------------------------------------------------- # Use 2-space indents [k8s/**.yaml] -indent_size = 2 \ No newline at end of file +indent_size = 2 From c0a12fa8b2d168db71b758847458e4444c5f2016 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 14 May 2024 11:08:18 -0300 Subject: [PATCH 098/846] chore(deps): fix requirements.txt versions (#7414) * not ready for django-stubs==5 * pin types-pytz to match existing pytz pin --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9231e400a7..94afc9c855 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ django-markup>=1.5 # Limited use - need to reconcile against direct use of ma django-oidc-provider>=0.8.1 # 0.8 dropped Django 2 support django-referrer-policy>=1.0 django-simple-history>=3.0.0 -django-stubs>=4.2.7 # The django-stubs version used determines the the mypy version indicated below +django-stubs>=4.2.7,<5 # The django-stubs version used determines the the mypy version indicated below django-tastypie>=0.14.5 # Version must be locked in sync with version of Django django-vite>=2.0.2,<3 django-widget-tweaks>=1.4.12 @@ -57,6 +57,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>=1.6 # from TastyPie pytz==2022.2.1 # Pinned as changes need to be vetted for their effect on Meeting fields +types-pytz==2022.2.1 # match pytz version requests>=2.31.0 types-requests>=2.27.1 requests-mock>=1.9.3 From 235ac8b2a619ecfa61873eae7a608d328958c17a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 14 May 2024 20:46:12 -0300 Subject: [PATCH 099/846] refactor: idnits2 mgmt cmds -> tasks (#7421) * feat: tasks for generate_idnits2_rfc* mgmt cmds * chore: create periodic tasks * chore: remove mgmt cmds from bin/hourly * test: test new tasks * chore: remove now-unused scripts * refactor: unitize Idnits2SupportTests --- bin/hourly | 3 -- .../commands/generate_idnits2_rfc_status.py | 23 ----------- .../generate_idnits2_rfcs_obsoleted.py | 23 ----------- ietf/doc/tasks.py | 24 +++++++++++ ietf/doc/tests.py | 30 ++++++++++---- ietf/doc/tests_tasks.py | 40 ++++++++++++++++--- .../management/commands/periodic_tasks.py | 20 ++++++++++ 7 files changed, 101 insertions(+), 62 deletions(-) delete mode 100644 ietf/doc/management/commands/generate_idnits2_rfc_status.py delete mode 100644 ietf/doc/management/commands/generate_idnits2_rfcs_obsoleted.py diff --git a/bin/hourly b/bin/hourly index 9478bec119..81638fa543 100755 --- a/bin/hourly +++ b/bin/hourly @@ -24,9 +24,6 @@ ID=/a/ietfdata/doc/draft/repository DERIVED=/a/ietfdata/derived DOWNLOAD=/a/www/www6s/download -$DTDIR/ietf/manage.py generate_idnits2_rfc_status -$DTDIR/ietf/manage.py generate_idnits2_rfcs_obsoleted - CHARTER=/a/www/ietf-ftp/charter wget -q https://datatracker.ietf.org/wg/1wg-charters-by-acronym.txt -O $CHARTER/1wg-charters-by-acronym.txt wget -q https://datatracker.ietf.org/wg/1wg-charters.txt -O $CHARTER/1wg-charters.txt diff --git a/ietf/doc/management/commands/generate_idnits2_rfc_status.py b/ietf/doc/management/commands/generate_idnits2_rfc_status.py deleted file mode 100644 index 45be188018..0000000000 --- a/ietf/doc/management/commands/generate_idnits2_rfc_status.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright The IETF Trust 2021 All Rights Reserved - -import os - -from django.conf import settings -from django.core.management.base import BaseCommand - -from ietf.doc.utils import generate_idnits2_rfc_status -from ietf.utils.log import log - -class Command(BaseCommand): - help = ('Generate the rfc_status blob used by idnits2') - - def handle(self, *args, **options): - filename=os.path.join(settings.DERIVED_DIR,'idnits2-rfc-status') - blob = generate_idnits2_rfc_status() - try: - bytes = blob.encode('utf-8') - with open(filename,'wb') as f: - f.write(bytes) - except Exception as e: - log('failed to write idnits2-rfc-status: '+str(e)) - raise e diff --git a/ietf/doc/management/commands/generate_idnits2_rfcs_obsoleted.py b/ietf/doc/management/commands/generate_idnits2_rfcs_obsoleted.py deleted file mode 100644 index 8bd122e87e..0000000000 --- a/ietf/doc/management/commands/generate_idnits2_rfcs_obsoleted.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright The IETF Trust 2021 All Rights Reserved - -import os - -from django.conf import settings -from django.core.management.base import BaseCommand - -from ietf.doc.utils import generate_idnits2_rfcs_obsoleted -from ietf.utils.log import log - -class Command(BaseCommand): - help = ('Generate the rfcs-obsoleted file used by idnits2') - - def handle(self, *args, **options): - filename=os.path.join(settings.DERIVED_DIR,'idnits2-rfcs-obsoleted') - blob = generate_idnits2_rfcs_obsoleted() - try: - bytes = blob.encode('utf-8') - with open(filename,'wb') as f: - f.write(bytes) - except Exception as e: - log('failed to write idnits2-rfcs-obsoleted: '+str(e)) - raise e diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index a2e83e9e26..b189a68275 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -6,6 +6,9 @@ import debug # pyflakes:ignore from celery import shared_task +from pathlib import Path + +from django.conf import settings from ietf.utils import log from ietf.utils.timezone import datetime_today @@ -21,6 +24,7 @@ send_expire_warning_for_draft, ) from .models import Document +from .utils import generate_idnits2_rfc_status, generate_idnits2_rfcs_obsoleted @shared_task @@ -54,3 +58,23 @@ def expire_ids_task(): def notify_expirations_task(notify_days=14): for doc in get_soon_to_expire_drafts(notify_days): send_expire_warning_for_draft(doc) + + +@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") + except Exception as e: + log.log(f"failed to write idnits2-rfc-status: {e}") + + +@shared_task +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") + except Exception as e: + log.log(f"failed to write idnits2-rfcs-obsoleted: {e}") diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 4f5492e6cb..e6a50937a5 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -20,7 +20,6 @@ from collections import defaultdict from zoneinfo import ZoneInfo -from django.core.management import call_command from django.urls import reverse as urlreverse from django.conf import settings from django.forms import Form @@ -45,7 +44,14 @@ StatusChangeFactory, DocExtResourceFactory, RgDraftFactory, BcpFactory) from ietf.doc.forms import NotifyForm from ietf.doc.fields import SearchableDocumentsField -from ietf.doc.utils import create_ballot_if_not_open, investigate_fragment, uppercase_std_abbreviated_name, DraftAliasGenerator +from ietf.doc.utils import ( + create_ballot_if_not_open, + investigate_fragment, + uppercase_std_abbreviated_name, + DraftAliasGenerator, + generate_idnits2_rfc_status, + generate_idnits2_rfcs_obsoleted, +) from ietf.group.models import Group, Role from ietf.group.factories import GroupFactory, RoleFactory from ietf.ipr.factories import HolderIprDisclosureFactory @@ -2831,32 +2837,40 @@ def test_markdown_and_text(self): class Idnits2SupportTests(TestCase): settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['DERIVED_DIR'] - def test_obsoleted(self): + def test_generate_idnits2_rfcs_obsoleted(self): rfc = WgRfcFactory(rfc_number=1001) WgRfcFactory(rfc_number=1003,relations=[('obs',rfc)]) rfc = WgRfcFactory(rfc_number=1005) WgRfcFactory(rfc_number=1007,relations=[('obs',rfc)]) + blob = generate_idnits2_rfcs_obsoleted() + self.assertEqual(blob, b'1001 1003\n1005 1007\n'.decode("utf8")) + def test_obsoleted(self): url = urlreverse('ietf.doc.views_doc.idnits2_rfcs_obsoleted') r = self.client.get(url) self.assertEqual(r.status_code, 404) - call_command('generate_idnits2_rfcs_obsoleted') + # value written is arbitrary, expect it to be passed through + (Path(settings.DERIVED_DIR) / "idnits2-rfcs-obsoleted").write_bytes(b'1001 1003\n1005 1007\n') url = urlreverse('ietf.doc.views_doc.idnits2_rfcs_obsoleted') r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(r.content, b'1001 1003\n1005 1007\n') - def test_rfc_status(self): + def test_generate_idnits2_rfc_status(self): for slug in ('bcp', 'ds', 'exp', 'hist', 'inf', 'std', 'ps', 'unkn'): WgRfcFactory(std_level_id=slug) + blob = generate_idnits2_rfc_status().replace("\n", "") + self.assertEqual(blob[6312-1], "O") + + def test_rfc_status(self): url = urlreverse('ietf.doc.views_doc.idnits2_rfc_status') r = self.client.get(url) self.assertEqual(r.status_code,404) - call_command('generate_idnits2_rfc_status') + # value written is arbitrary, expect it to be passed through + (Path(settings.DERIVED_DIR) / "idnits2-rfc-status").write_bytes(b'1001 1003\n1005 1007\n') r = self.client.get(url) self.assertEqual(r.status_code,200) - blob = unicontent(r).replace('\n','') - self.assertEqual(blob[6312-1],'O') + self.assertEqual(r.content, b'1001 1003\n1005 1007\n') def test_idnits2_state(self): rfc = WgRfcFactory() diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 931ed438dc..8915a6c5aa 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -1,15 +1,24 @@ # Copyright The IETF Trust 2024, All Rights Reserved import mock +from pathlib import Path + +from django.conf import settings + from ietf.utils.test_utils import TestCase from ietf.utils.timezone import datetime_today from .factories import DocumentFactory from .models import Document -from .tasks import expire_ids_task, notify_expirations_task - +from .tasks import ( + expire_ids_task, + generate_idnits2_rfcs_obsoleted_task, + generate_idnits2_rfc_status_task, + notify_expirations_task, +) class TaskTests(TestCase): + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ["DERIVED_DIR"] @mock.patch("ietf.doc.tasks.in_draft_expire_freeze") @mock.patch("ietf.doc.tasks.get_expired_drafts") @@ -35,10 +44,10 @@ def test_expire_ids_task( Document.objects.filter(pk=doc.pk), Document.objects.filter(pk=other_doc.pk), ] - + # call task expire_ids_task() - + # check results self.assertTrue(in_draft_expire_freeze_mock.called) self.assertEqual(expirable_drafts_mock.call_count, 2) @@ -50,7 +59,7 @@ def test_expire_ids_task( # test that an exception is raised in_draft_expire_freeze_mock.side_effect = RuntimeError - with self.assertRaises(RuntimeError):( + with self.assertRaises(RuntimeError): ( expire_ids_task()) @mock.patch("ietf.doc.tasks.send_expire_warning_for_draft") @@ -61,3 +70,24 @@ def test_notify_expirations_task(self, get_drafts_mock, send_warning_mock): notify_expirations_task() self.assertEqual(send_warning_mock.call_count, 1) self.assertEqual(send_warning_mock.call_args[0], ("sentinel",)) + + @mock.patch("ietf.doc.tasks.generate_idnits2_rfc_status") + def test_generate_idnits2_rfc_status_task(self, mock_generate): + mock_generate.return_value = "dåtå" + generate_idnits2_rfc_status_task() + self.assertEqual(mock_generate.call_count, 1) + self.assertEqual( + "dåtå".encode("utf8"), + (Path(settings.DERIVED_DIR) / "idnits2-rfc-status").read_bytes(), + ) + + @mock.patch("ietf.doc.tasks.generate_idnits2_rfcs_obsoleted") + def test_generate_idnits2_rfcs_obsoleted_task(self, mock_generate): + mock_generate.return_value = "dåtå" + generate_idnits2_rfcs_obsoleted_task() + self.assertEqual(mock_generate.call_count, 1) + self.assertEqual( + "dåtå".encode("utf8"), + (Path(settings.DERIVED_DIR) / "idnits2-rfcs-obsoleted").read_bytes(), + ) + diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index e359382839..429cb4e14f 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -181,6 +181,26 @@ def create_default_tasks(self): ) ) + PeriodicTask.objects.get_or_create( + name="Generate idnits2 rfcs-obsoleted blob", + task="ietf.doc.tasks.generate_idnits2_rfcs_obsoleted_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["hourly"], + description="Generate the rfcs-obsoleted file used by idnits", + ), + ) + + PeriodicTask.objects.get_or_create( + name="Generate idnits2 rfc-status blob", + task="ietf.doc.tasks.generate_idnits2_rfc_status_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["hourly"], + description="Generate the rfc_status blob used by idnits", + ), + ) + def show_tasks(self): for label, crontab in self.crontabs.items(): tasks = PeriodicTask.objects.filter(crontab=crontab).order_by( From 48e0aa23f5e9faa45d3ffb4ec0bfb2c8e1924846 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 14 May 2024 20:47:40 -0300 Subject: [PATCH 100/846] refactor: clean up logging (#7419) * fix: log to stdout/stderr in json format * chore: remove UTILS_LOGGER_LEVELS This is not used (there _is_ a setting for the django.security logger in settings_local.py on production, but it is redundant with the settings.LOGGING configuration and is not doing anything). * chore: revert to debug_console django logging * chore: log.log to syslog via datatracker logger * chore: remove unused imports --------- Co-authored-by: Robert Sparks --- ietf/settings.py | 44 ++++++++--------- ietf/utils/log.py | 49 ++----------------- ietf/utils/management/commands/showloggers.py | 13 +---- requirements.txt | 1 + 4 files changed, 28 insertions(+), 79 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index cd8c0700a1..534c23d0d7 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -236,7 +236,7 @@ def skip_unreadable_post(record): # 'loggers': { 'django': { - 'handlers': ['debug_console', 'mail_admins'], + 'handlers': ['debug_console', 'mail_admins',], 'level': 'INFO', }, 'django.request': { @@ -248,13 +248,17 @@ def skip_unreadable_post(record): 'level': 'INFO', }, 'django.security': { - 'handlers': ['debug_console', ], + 'handlers': ['debug_console', ], + 'level': 'INFO', + }, + 'oidc_provider': { + 'handlers': ['debug_console', ], + 'level': 'DEBUG', + }, + 'datatracker': { + 'handlers': ['syslog'], 'level': 'INFO', }, - 'oidc_provider': { - 'handlers': ['debug_console', ], - 'level': 'DEBUG', - }, }, # # No logger filters @@ -263,14 +267,7 @@ def skip_unreadable_post(record): 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', - 'formatter': 'plain', - }, - 'syslog': { - 'level': 'DEBUG', - 'class': 'logging.handlers.SysLogHandler', - 'facility': 'user', - 'formatter': 'plain', - 'address': '/dev/log', + 'formatter': 'json', }, 'debug_console': { # Active only when DEBUG=True @@ -284,6 +281,13 @@ def skip_unreadable_post(record): 'class': 'logging.StreamHandler', 'formatter': 'django.server', }, + 'syslog': { + 'level': 'DEBUG', + 'class': 'logging.handlers.SysLogHandler', + 'facility': 'user', + 'formatter': 'plain', + 'address': '/dev/log', + }, 'mail_admins': { 'level': 'ERROR', 'filters': [ @@ -325,18 +329,12 @@ def skip_unreadable_post(record): 'style': '{', 'format': '{levelname}: {name}:{lineno}: {message}', }, + 'json' : { + '()': 'pythonjsonlogger.jsonlogger.JsonFormatter' + } }, } -# This should be overridden by settings_local for any logger where debug (or -# other) custom log settings are wanted. Use "ietf/manage.py showloggers -l" -# to show registered loggers. The content here should match the levels above -# and is shown as an example: -UTILS_LOGGER_LEVELS: Dict[str, str] = { -# 'django': 'INFO', -# 'django.server': 'INFO', -} - # End logging # ------------------------------------------------------------------------ diff --git a/ietf/utils/log.py b/ietf/utils/log.py index d5a54e5516..2a068ade9a 100644 --- a/ietf/utils/log.py +++ b/ietf/utils/log.py @@ -9,37 +9,10 @@ import os.path import traceback -from typing import Callable # pyflakes:ignore - -try: - import syslog - logfunc = syslog.syslog # type: Callable -except ImportError: # import syslog will fail on Windows boxes - logging.basicConfig(filename='tracker.log',level=logging.INFO) - logfunc = logging.info - pass - from django.conf import settings import debug # pyflakes:ignore -formatter = logging.Formatter('{levelname}: {name}:{lineno}: {message}', style='{') -for name, level in settings.UTILS_LOGGER_LEVELS.items(): - logger = logging.getLogger(name) - if not logger.hasHandlers(): - debug.say(' Adding handlers to logger %s' % logger.name) - - handlers = [ - logging.StreamHandler(), - logging.handlers.SysLogHandler(address='/dev/log', - facility=logging.handlers.SysLogHandler.LOG_USER), - ] - for h in handlers: - h.setFormatter(formatter) - h.setLevel(level) - logger.addHandler(h) - debug.say(" Setting %s logging level to %s" % (logger.name, level)) - logger.setLevel(level) def getclass(frame): cls = None @@ -56,20 +29,9 @@ def getcaller(): return (pmodule, pclass, pfunction, pfile, pline) def log(msg, e=None): - "Uses syslog by preference. Logs the given calling point and message." - global logfunc - def _flushfunc(): - pass - _logfunc = logfunc - if settings.SERVER_MODE == 'test': - if getattr(settings, 'show_logging', False) is True: - _logfunc = debug.say - _flushfunc = sys.stdout.flush # pyflakes:ignore (intentional redefinition) - else: + "Logs the given calling point and message to the logging framework's datatracker handler at severity INFO" + if settings.SERVER_MODE == 'test' and not getattr(settings, 'show_logging',False): return - elif settings.DEBUG == True: - _logfunc = debug.say - _flushfunc = sys.stdout.flush # pyflakes:ignore (intentional redefinition) if not isinstance(msg, str): msg = msg.encode('unicode_escape') try: @@ -82,11 +44,8 @@ def _flushfunc(): where = " in " + func + "()" except IndexError: file, line, where = "/", 0, "" - _flushfunc() - _logfunc("ietf%s(%d)%s: %s" % (file, line, where, msg)) - -logger = logging.getLogger('django') + logging.getLogger("datatracker").info(msg=msg, extra = {"file":file, "line":line, "where":where}) def exc_parts(): @@ -124,6 +83,7 @@ def assertion(statement, state=True, note=None): This acts like an assertion. It uses the django logger in order to send the failed assertion and a backtrace as for an internal server error. """ + logger = logging.getLogger("django") # Note this is a change - before this would have gone to "django" frame = inspect.currentframe().f_back value = eval(statement, frame.f_globals, frame.f_locals) if bool(value) != bool(state): @@ -148,6 +108,7 @@ def assertion(statement, state=True, note=None): def unreachable(date="(unknown)"): "Raises an assertion or sends traceback to admins if executed." + logger = logging.getLogger("django") frame = inspect.currentframe().f_back if settings.DEBUG is True or settings.SERVER_MODE == 'test': raise AssertionError("Arrived at code in %s() which was marked unreachable on %s." % (frame.f_code.co_name, date)) diff --git a/ietf/utils/management/commands/showloggers.py b/ietf/utils/management/commands/showloggers.py index 3de9db0c06..b79da9ce26 100644 --- a/ietf/utils/management/commands/showloggers.py +++ b/ietf/utils/management/commands/showloggers.py @@ -11,18 +11,7 @@ import debug # pyflakes:ignore class Command(BaseCommand): - """ - Display a list or tree representation of python loggers. - - Add a UTILS_LOGGER_LEVELS setting in settings_local.py to configure - non-default logging levels for any registered logger, for instance: - - UTILS_LOGGER_LEVELS = { - 'oicd_provider': 'DEBUG', - 'urllib3.connection': 'DEBUG', - } - - """ + """Display a list or tree representation of python loggers""" help = dedent(__doc__).strip() diff --git a/requirements.txt b/requirements.txt index 94afc9c855..8187c1cebf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -53,6 +53,7 @@ pyopenssl>=22.0.0 # Used by urllib3.contrib, which is used by PyQuery but not pyquery>=1.4.3 python-dateutil>=2.8.2 types-python-dateutil>=2.8.2 +python-json-logger>=2.0.7 python-magic==0.4.18 # Versions beyond the yanked .19 and .20 introduce form failures pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache python-mimeparse>=1.6 # from TastyPie From a4e0354090945e9f38eda5a64a96810163d667d7 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 14 May 2024 20:53:31 -0300 Subject: [PATCH 101/846] feat: get tool versions without VersionInfo model (#7418) * feat: get tool versions without VersionInfo model * chore: remove update_external_command_info call * feat: get tool version without VersionInfo * chore: Remove VersionInfo model * chore: Migration to remove VersionInfo * fix: handle errors better; ignore stderr * fix: type annotation --- bin/daily | 3 -- bin/dump-to-names-json | 2 +- ietf/name/fixtures/names.json | 44 ------------------- .../commands/generate_name_fixture.py | 3 +- ietf/submit/checkers.py | 24 ++++++---- ietf/submit/tests.py | 4 +- ietf/utils/__init__.py | 30 ++++++++++++- ietf/utils/admin.py | 7 --- .../commands/update_external_command_info.py | 41 ----------------- .../migrations/0002_delete_versioninfo.py | 16 +++++++ ietf/utils/models.py | 9 ---- ietf/utils/resources.py | 20 +-------- 12 files changed, 66 insertions(+), 137 deletions(-) delete mode 100644 ietf/utils/management/commands/update_external_command_info.py create mode 100644 ietf/utils/migrations/0002_delete_versioninfo.py diff --git a/bin/daily b/bin/daily index 8211e1e237..6557a89222 100755 --- a/bin/daily +++ b/bin/daily @@ -24,9 +24,6 @@ $DTDIR/bin/hourly source $DTDIR/env/bin/activate -# Update our information about the current version of some commands we use -$DTDIR/ietf/manage.py update_external_command_info - # Get IANA-registered yang models #YANG_IANA_DIR=$(python -c 'import ietf.settings; print ietf.settings.SUBMIT_YANG_IANA_MODEL_DIR') # Hardcode the rsync target to avoid any unwanted deletes: diff --git a/bin/dump-to-names-json b/bin/dump-to-names-json index 9c7dfac07d..20d4e0f951 100644 --- a/bin/dump-to-names-json +++ b/bin/dump-to-names-json @@ -10,7 +10,7 @@ set -x ietf/manage.py dumpdata --indent 1 doc.State doc.BallotType doc.StateType \ - mailtrigger.MailTrigger mailtrigger.Recipient name utils.VersionInfo \ + mailtrigger.MailTrigger mailtrigger.Recipient name \ group.GroupFeatures stats.CountryAlias dbtemplate.DBTemplate \ | jq --sort-keys "sort_by(.model, .pk)" \ | jq '[.[] | select(.model!="dbtemplate.dbtemplate" or .pk==354)]' > ietf/name/fixtures/names.json diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 35679dcaa1..913c6c987e 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -16789,49 +16789,5 @@ }, "model": "stats.countryalias", "pk": 303 - }, - { - "fields": { - "command": "xym", - "switch": "--version", - "time": "2024-03-21T07:06:23.405Z", - "used": true, - "version": "xym 0.7.0" - }, - "model": "utils.versioninfo", - "pk": 1 - }, - { - "fields": { - "command": "pyang", - "switch": "--version", - "time": "2024-03-21T07:06:23.755Z", - "used": true, - "version": "pyang 2.6.0" - }, - "model": "utils.versioninfo", - "pk": 2 - }, - { - "fields": { - "command": "yanglint", - "switch": "--version", - "time": "2024-03-21T07:06:23.773Z", - "used": true, - "version": "yanglint SO 1.9.2" - }, - "model": "utils.versioninfo", - "pk": 3 - }, - { - "fields": { - "command": "xml2rfc", - "switch": "--version", - "time": "2024-03-21T07:06:24.609Z", - "used": true, - "version": "xml2rfc 3.20.1" - }, - "model": "utils.versioninfo", - "pk": 4 } ] diff --git a/ietf/name/management/commands/generate_name_fixture.py b/ietf/name/management/commands/generate_name_fixture.py index bbf33e600e..ef30e54c73 100644 --- a/ietf/name/management/commands/generate_name_fixture.py +++ b/ietf/name/management/commands/generate_name_fixture.py @@ -77,7 +77,6 @@ def output(seq): from ietf.mailtrigger.models import MailTrigger, Recipient from ietf.meeting.models import BusinessConstraint from ietf.stats.models import CountryAlias - from ietf.utils.models import VersionInfo # Grab all ietf.name.models for n in dir(ietf.name.models): @@ -87,7 +86,7 @@ def output(seq): model_objects[model_name(item)] = list(item.objects.all().order_by('pk')) for m in ( BallotType, State, StateType, GroupFeatures, MailTrigger, Recipient, - CountryAlias, VersionInfo, BusinessConstraint ): + CountryAlias, BusinessConstraint ): model_objects[model_name(m)] = list(m.objects.all().order_by('pk')) for m in ( DBTemplate, ): diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 5822f155f5..d29e2a2355 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -14,8 +14,8 @@ import debug # pyflakes:ignore +from ietf.utils import tool_version from ietf.utils.log import log, assertion -from ietf.utils.models import VersionInfo from ietf.utils.pipe import pipe from ietf.utils.test_runner import set_coverage_checking @@ -177,8 +177,10 @@ def check_file_txt(self, path): model_list = list(set(model_list)) command = "xym" - cmd_version = VersionInfo.objects.get(command=command).version - message = "%s:\n%s\n\n" % (cmd_version, out.replace('\n\n','\n').strip() if code == 0 else err) + message = "{version}:\n{output}\n\n".format( + version=tool_version[command], + output=out.replace('\n\n', '\n').strip() if code == 0 else err, + ) results.append({ "name": name, @@ -209,7 +211,6 @@ def check_file_txt(self, path): # pyang cmd_template = settings.SUBMIT_PYANG_COMMAND command = [ w for w in cmd_template.split() if not '=' in w ][0] - cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(libs=modpath, model=path) venv_path = os.environ.get('VIRTUAL_ENV') or os.path.join(os.getcwd(), 'env') venv_bin = os.path.join(venv_path, 'bin') @@ -238,14 +239,17 @@ def check_file_txt(self, path): except ValueError: pass #passed = passed and code == 0 # For the submission tool. Yang checks always pass - message += "%s: %s:\n%s\n" % (cmd_version, cmd_template, out+"No validation errors\n" if (code == 0 and len(err) == 0) else out+err) + message += "{version}: {template}:\n{output}\n".format( + version=tool_version[command], + template=cmd_template, + output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, + ) # yanglint set_coverage_checking(False) # we can't count the following as it may or may not be run, depending on setup if settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY): cmd_template = settings.SUBMIT_YANGLINT_COMMAND command = [ w for w in cmd_template.split() if not '=' in w ][0] - cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, cataloglib=settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ) @@ -264,7 +268,11 @@ def check_file_txt(self, path): except ValueError: pass #passed = passed and code == 0 # For the submission tool. Yang checks always pass - message += "%s: %s:\n%s\n" % (cmd_version, cmd_template, out+"No validation errors\n" if (code == 0 and len(err) == 0) else out+err) + message += "{version}: {template}:\n{output}\n".format( + version=tool_version[command], + template=cmd_template, + output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, + ) set_coverage_checking(True) else: errors += 1 @@ -293,4 +301,4 @@ def check_file_txt(self, path): items = [ e for res in results for e in res["items"] ] info['items'] = items info['code']['yang'] = model_list - return passed, message, errors, warnings, info \ No newline at end of file + return passed, message, errors, warnings, info diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 08b898c13a..58a47aef8b 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -49,9 +49,9 @@ from ietf.submit.forms import SubmissionBaseUploadForm, SubmissionAutoUploadForm from ietf.submit.models import Submission, Preapproval, SubmissionExtResource from ietf.submit.tasks import cancel_stale_submissions, process_and_accept_uploaded_submission_task +from ietf.utils import tool_version from ietf.utils.accesstoken import generate_access_token from ietf.utils.mail import outbox, get_payload_text -from ietf.utils.models import VersionInfo from ietf.utils.test_utils import login_testing_unauthorized, TestCase from ietf.utils.timezone import date_today from ietf.utils.draft import PlaintextDraft @@ -1854,7 +1854,7 @@ def test_submit_invalid_yang(self): # m = q('#yang-validation-message').text() for command in ['xym', 'pyang', 'yanglint']: - version = VersionInfo.objects.get(command=command).version + version = tool_version[command] if command != 'yanglint' or (settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY)): self.assertIn(version, m) self.assertIn("draft-yang-testing-invalid-00.txt", m) diff --git a/ietf/utils/__init__.py b/ietf/utils/__init__.py index 7f1df97602..fbe55eb043 100644 --- a/ietf/utils/__init__.py +++ b/ietf/utils/__init__.py @@ -1 +1,29 @@ -# Copyright The IETF Trust 2007, All Rights Reserved +# Copyright The IETF Trust 2007-2024, All Rights Reserved +import subprocess + + +class _ToolVersionManager: + _known = [ + "pyang", + "xml2rfc", + "xym", + "yanglint", + ] + _versions: dict[str, str] = dict() + + def __getitem__(self, item): + if item not in self._known: + return "Unknown" + elif item not in self._versions: + try: + self._versions[item] = subprocess.run( + [item, "--version"], + capture_output=True, + check=True, + ).stdout.decode().strip() + except subprocess.CalledProcessError: + return "Unknown" + return self._versions[item] + + +tool_version = _ToolVersionManager() diff --git a/ietf/utils/admin.py b/ietf/utils/admin.py index fa1ebb7081..6c1c8726e1 100644 --- a/ietf/utils/admin.py +++ b/ietf/utils/admin.py @@ -5,8 +5,6 @@ from django.contrib import admin from django.utils.encoding import force_str -from ietf.utils.models import VersionInfo - def name(obj): if hasattr(obj, 'abbrev'): return obj.abbrev() @@ -58,8 +56,3 @@ class DumpInfoAdmin(admin.ModelAdmin): list_display = ['date', 'host', 'tz'] list_filter = ['date'] admin.site.register(DumpInfo, DumpInfoAdmin) - -class VersionInfoAdmin(admin.ModelAdmin): - list_display = ['command', 'switch', 'version', 'time', ] -admin.site.register(VersionInfo, VersionInfoAdmin) - diff --git a/ietf/utils/management/commands/update_external_command_info.py b/ietf/utils/management/commands/update_external_command_info.py deleted file mode 100644 index e9e24f000d..0000000000 --- a/ietf/utils/management/commands/update_external_command_info.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright The IETF Trust 2017-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import sys - -from textwrap import dedent - -from django.core.management.base import BaseCommand - -import debug # pyflakes:ignore - -from ietf.utils.models import VersionInfo -from ietf.utils.pipe import pipe - -class Command(BaseCommand): - """ - Update the version information for external commands used by the datatracker. - - Iterates through the entries in the VersionInfo table, runs the relevant - command, and updates the version string with the result. - - """ - - help = dedent(__doc__).strip() - - def handle(self, *filenames, **options): - for c in VersionInfo.objects.filter(used=True): - cmd = "%s %s" % (c.command, c.switch) - code, out, err = pipe(cmd) - out = out.decode('utf-8') - err = err.decode('utf-8') - if code != 0: - sys.stderr.write("Command '%s' returned %s: \n%s\n%s\n" % (cmd, code, out, err)) - else: - c.version = (out.strip()+'\n'+err.strip()).strip() - if options.get('verbosity', 1) > 1: - sys.stdout.write( - "Command: %s\n" - " Version: %s\n" % (cmd, c.version)) - c.save() diff --git a/ietf/utils/migrations/0002_delete_versioninfo.py b/ietf/utils/migrations/0002_delete_versioninfo.py new file mode 100644 index 0000000000..2835bb017b --- /dev/null +++ b/ietf/utils/migrations/0002_delete_versioninfo.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.11 on 2024-05-03 21:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("utils", "0001_initial"), + ] + + operations = [ + migrations.DeleteModel( + name="VersionInfo", + ), + ] diff --git a/ietf/utils/models.py b/ietf/utils/models.py index 0915537fd8..21af5766e9 100644 --- a/ietf/utils/models.py +++ b/ietf/utils/models.py @@ -9,15 +9,6 @@ class DumpInfo(models.Model): host = models.CharField(max_length=128) tz = models.CharField(max_length=32, default='UTC') -class VersionInfo(models.Model): - time = models.DateTimeField(auto_now=True) - command = models.CharField(max_length=32) - switch = models.CharField(max_length=16) - version = models.CharField(max_length=64) - used = models.BooleanField(default=True) - class Meta: - verbose_name_plural = 'VersionInfo' - class ForeignKey(models.ForeignKey): "A local ForeignKey proxy which provides the on_delete value required under Django 2.0." def __init__(self, to, on_delete=models.CASCADE, **kwargs): diff --git a/ietf/utils/resources.py b/ietf/utils/resources.py index 6d61c5e2ed..1252cfef14 100644 --- a/ietf/utils/resources.py +++ b/ietf/utils/resources.py @@ -12,7 +12,7 @@ from django.contrib.contenttypes.models import ContentType from ietf import api -from ietf.utils.models import DumpInfo, VersionInfo +from ietf.utils.models import DumpInfo class UserResource(ModelResource): @@ -43,21 +43,3 @@ class Meta: "host": ALL, } api.utils.register(DumpInfoResource()) - - -class VersionInfoResource(ModelResource): - class Meta: - queryset = VersionInfo.objects.all() - serializer = api.Serializer() - cache = SimpleCache() - #resource_name = 'versioninfo' - ordering = ['id', ] - filtering = { - "id": ALL, - "time": ALL, - "command": ALL, - "switch": ALL, - "version": ALL, - "used": ALL, - } -api.utils.register(VersionInfoResource()) From 46a00acefc249ac879a4c1cb876c9a1b5fd2ed98 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 14 May 2024 20:56:14 -0300 Subject: [PATCH 102/846] refactor: sync to RFC Editor queue via celery (#7415) * feat: rfc_editor_queue_updates_task * refactor: use rfc_editor_queue_updates_task() * chore: remove now-unused scripts * test: test new task * chore: de-lint --- ietf/bin/rfc-editor-index-updates | 110 ------------------------------ ietf/bin/rfc-editor-queue-updates | 44 ------------ ietf/sync/tasks.py | 28 ++++++++ ietf/sync/tests.py | 30 ++++++++ ietf/sync/views.py | 19 +----- 5 files changed, 61 insertions(+), 170 deletions(-) delete mode 100755 ietf/bin/rfc-editor-index-updates delete mode 100755 ietf/bin/rfc-editor-queue-updates diff --git a/ietf/bin/rfc-editor-index-updates b/ietf/bin/rfc-editor-index-updates deleted file mode 100755 index c3e8f1f462..0000000000 --- a/ietf/bin/rfc-editor-index-updates +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python - -# This script requires that the proper virtual python environment has been -# invoked before start - -import datetime -import io -import os -import requests -import sys -import syslog -import traceback - -# boilerplate -basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) -sys.path = [ basedir ] + sys.path -os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" - -# Before invoking django -syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) - -import django -django.setup() - -from django.conf import settings -from optparse import OptionParser -from django.core.mail import mail_admins - -from ietf.doc.utils import rebuild_reference_relations -from ietf.utils.log import log -from ietf.utils.pipe import pipe -from ietf.utils.timezone import date_today - -import ietf.sync.rfceditor - - -parser = OptionParser() -parser.add_option("-d", dest="skip_date", - help="To speed up processing skip RFCs published before this date (default is one year ago)", metavar="YYYY-MM-DD") - -options, args = parser.parse_args() - -skip_date = date_today() - datetime.timedelta(days=365) -if options.skip_date: - skip_date = datetime.datetime.strptime(options.skip_date, "%Y-%m-%d").date() - -log("Updating document metadata from RFC index going back to %s, from %s" % (skip_date, settings.RFC_EDITOR_INDEX_URL)) - - -try: - response = requests.get( - settings.RFC_EDITOR_INDEX_URL, - timeout=30, # seconds - ) -except requests.Timeout as exc: - log(f'GET request timed out retrieving RFC editor index: {exc}') - sys.exit(1) - - -rfc_index_xml = response.text -index_data = ietf.sync.rfceditor.parse_index(io.StringIO(rfc_index_xml)) - -try: - response = requests.get( - settings.RFC_EDITOR_ERRATA_JSON_URL, - timeout=30, # seconds - ) -except requests.Timeout as exc: - log(f'GET request timed out retrieving RFC editor errata: {exc}') - sys.exit(1) -errata_data = response.json() - -if len(index_data) < ietf.sync.rfceditor.MIN_INDEX_RESULTS: - log("Not enough index entries, only %s" % len(index_data)) - sys.exit(1) - -if len(errata_data) < ietf.sync.rfceditor.MIN_ERRATA_RESULTS: - log("Not enough errata entries, only %s" % len(errata_data)) - sys.exit(1) - -new_rfcs = [] -for rfc_number, changes, doc, rfc_published in ietf.sync.rfceditor.update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=skip_date): - if rfc_published: - new_rfcs.append(doc) - - for c in changes: - log("RFC%s, %s: %s" % (rfc_number, doc.name, c)) - -sys.exit(0) - -# This can be called while processing a notifying POST from the RFC Editor -# Spawn a child to sync the rfcs and calculate new reference relationships -# so that the POST - -newpid = os.fork() - -if newpid == 0: - try: - pipe("%s -a %s %s" % (settings.RSYNC_BINARY,settings.RFC_TEXT_RSYNC_SOURCE,settings.RFC_PATH)) - for rfc in new_rfcs: - rebuild_reference_relations(rfc) - log("Updated references for %s"%rfc.name) - except: - subject = "Exception in updating references for new rfcs: %s : %s" % (sys.exc_info()[0],sys.exc_info()[1]) - msg = "%s\n%s\n----\n%s"%(sys.exc_info()[0],sys.exc_info()[1],traceback.format_tb(sys.exc_info()[2])) - mail_admins(subject,msg,fail_silently=True) - log(subject) - os._exit(0) -else: - sys.exit(0) diff --git a/ietf/bin/rfc-editor-queue-updates b/ietf/bin/rfc-editor-queue-updates deleted file mode 100755 index b441e50ebc..0000000000 --- a/ietf/bin/rfc-editor-queue-updates +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python - -import io -import os -import requests -import sys - -# boilerplate -basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) -sys.path = [ basedir ] + sys.path -os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" - -import django -django.setup() - -from django.conf import settings - -from ietf.sync.rfceditor import parse_queue, MIN_QUEUE_RESULTS, update_drafts_from_queue -from ietf.utils.log import log - -log("Updating RFC Editor queue states from %s" % settings.RFC_EDITOR_QUEUE_URL) - -try: - response = requests.get( - settings.RFC_EDITOR_QUEUE_URL, - timeout=30, # seconds - ) -except requests.Timeout as exc: - log(f'GET request timed out retrieving RFC editor queue: {exc}') - sys.exit(1) -drafts, warnings = parse_queue(io.StringIO(response.text)) -for w in warnings: - log(u"Warning: %s" % w) - -if len(drafts) < MIN_QUEUE_RESULTS: - log("Not enough results, only %s" % len(drafts)) - sys.exit(1) - -changed, warnings = update_drafts_from_queue(drafts) -for w in warnings: - log(u"Warning: %s" % w) - -for c in changed: - log(u"Updated %s" % c) diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index bc1218601f..53e23d7913 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -13,6 +13,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.utils import log from ietf.utils.timezone import date_today @@ -70,6 +71,33 @@ def rfc_editor_index_update_task(full_index=False): log.log("RFC%s, %s: %s" % (rfc_number, doc.name, c)) +@shared_task +def rfc_editor_queue_updates_task(): + log.log(f"Updating RFC Editor queue states from {settings.RFC_EDITOR_QUEUE_URL}") + try: + response = requests.get( + settings.RFC_EDITOR_QUEUE_URL, + timeout=30, # seconds + ) + except requests.Timeout as exc: + log.log(f"GET request timed out retrieving RFC editor queue: {exc}") + return # failed + drafts, warnings = parse_queue(io.StringIO(response.text)) + for w in warnings: + log.log(f"Warning: {w}") + + if len(drafts) < MIN_QUEUE_RESULTS: + log.log("Not enough results, only %s" % len(drafts)) + return # failed + + changed, warnings = update_drafts_from_queue(drafts) + for w in warnings: + log.log(f"Warning: {w}") + + for c in changed: + log.log(f"Updated {c}") + + @shared_task def iana_changes_update_task(): # compensate to avoid we ask for something that happened now and then diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index db56190954..b0cdf863f0 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -886,6 +886,36 @@ def json(self): tasks.rfc_editor_index_update_task(full_index=False) self.assertFalse(update_docs_mock.called) + @override_settings(RFC_EDITOR_QUEUE_URL="https://rfc-editor.example.com/queue/") + @mock.patch("ietf.sync.tasks.update_drafts_from_queue") + @mock.patch("ietf.sync.tasks.parse_queue") + def test_rfc_editor_queue_updates_task(self, mock_parse, mock_update): + # test a request timeout + self.requests_mock.get("https://rfc-editor.example.com/queue/", exc=requests.exceptions.Timeout) + tasks.rfc_editor_queue_updates_task() + self.assertFalse(mock_parse.called) + self.assertFalse(mock_update.called) + + # now return a value rather than an exception + self.requests_mock.get("https://rfc-editor.example.com/queue/", text="the response") + + # mock returning < MIN_QUEUE_RESULTS values - treated as an error, so no update takes place + mock_parse.return_value = ([n for n in range(rfceditor.MIN_QUEUE_RESULTS - 1)], ["a warning"]) + tasks.rfc_editor_queue_updates_task() + self.assertEqual(mock_parse.call_count, 1) + self.assertEqual(mock_parse.call_args[0][0].read(), "the response") + self.assertFalse(mock_update.called) + mock_parse.reset_mock() + + # mock returning +. MIN_QUEUE_RESULTS - should succeed + mock_parse.return_value = ([n for n in range(rfceditor.MIN_QUEUE_RESULTS)], ["a warning"]) + mock_update.return_value = ([1,2,3], ["another warning"]) + tasks.rfc_editor_queue_updates_task() + self.assertEqual(mock_parse.call_count, 1) + self.assertEqual(mock_parse.call_args[0][0].read(), "the response") + self.assertEqual(mock_update.call_count, 1) + self.assertEqual(mock_update.call_args, mock.call([n for n in range(rfceditor.MIN_QUEUE_RESULTS)])) + @override_settings(IANA_SYNC_CHANGES_URL="https://iana.example.com/sync/") @mock.patch("ietf.sync.tasks.iana.update_history_with_changes") @mock.patch("ietf.sync.tasks.iana.parse_changes_json") diff --git a/ietf/sync/views.py b/ietf/sync/views.py index 788e982f7c..da407e1efd 100644 --- a/ietf/sync/views.py +++ b/ietf/sync/views.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- import datetime -import subprocess import os import json @@ -79,30 +78,18 @@ def notify(request, org, notification): raise Http404 if request.method == "POST": - def runscript(name): - python = os.path.join(os.path.dirname(settings.BASE_DIR), "env", "bin", "python") - cmd = [python, os.path.join(SYNC_BIN_PATH, name)] - cmdstring = " ".join(cmd) - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate() - out = out.decode('utf-8') - err = err.decode('utf-8') - if p.returncode: - log("Subprocess error %s when running '%s': %s %s" % (p.returncode, cmd, err, out)) - raise subprocess.CalledProcessError(p.returncode, cmdstring, "\n".join([err, out])) - if notification == "index": log("Queuing RFC Editor index sync from notify view POST") tasks.rfc_editor_index_update_task.delay() + elif notification == "queue": + log("Queuing RFC Editor queue sync from notify view POST") + tasks.rfc_editor_queue_updates_task.delay() elif notification == "changes": log("Queuing IANA changes sync from notify view POST") tasks.iana_changes_update_task.delay() elif notification == "protocols": log("Queuing IANA protocols sync from notify view POST") tasks.iana_protocols_update_task.delay() - elif notification == "queue": - log("Running sync script from notify view POST") - runscript("rfc-editor-queue-updates") return HttpResponse("OK", content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET) From c9f35987bce1ee50d8bb88b24b5c7d8bb6b855b5 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 May 2024 14:04:47 -0300 Subject: [PATCH 103/846] refactor: expire last calls via celery (#7417) * feat: expire_last_calls_task * feat: create periodic task for last calls * test: test new task * chore: remove expire-last-calls script --- bin/daily | 4 --- ietf/bin/expire-last-calls | 34 ------------------- ietf/doc/tasks.py | 12 +++++++ ietf/doc/tests_tasks.py | 25 +++++++++++++- .../management/commands/periodic_tasks.py | 10 ++++++ 5 files changed, 46 insertions(+), 39 deletions(-) delete mode 100755 ietf/bin/expire-last-calls diff --git a/bin/daily b/bin/daily index 6557a89222..997b9c7d76 100755 --- a/bin/daily +++ b/bin/daily @@ -40,9 +40,5 @@ $DTDIR/ietf/manage.py populate_yang_model_dirs -v0 # Re-run yang checks on active documents $DTDIR/ietf/manage.py run_yang_model_checks -v0 -# Expire last calls -# Enable when removed from /a/www/ietf-datatracker/scripts/Cron-runner: -$DTDIR/ietf/bin/expire-last-calls - # Purge older PersonApiKeyEvents $DTDIR/ietf/manage.py purge_old_personal_api_key_events 14 diff --git a/ietf/bin/expire-last-calls b/ietf/bin/expire-last-calls deleted file mode 100755 index 83b565e192..0000000000 --- a/ietf/bin/expire-last-calls +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -# This script requires that the proper virtual python environment has been -# invoked before start - -import os -import sys -import syslog - -# boilerplate -basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) -sys.path = [ basedir ] + sys.path -os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" - -virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py") -if os.path.exists(virtualenv_activation): - execfile(virtualenv_activation, dict(__file__=virtualenv_activation)) - -syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) - -import django -django.setup() - -# ---------------------------------------------------------------------- - -from ietf.doc.lastcall import get_expired_last_calls, expire_last_call - -drafts = get_expired_last_calls() -for doc in drafts: - try: - expire_last_call(doc) - syslog.syslog("Expired last call for %s (id=%s)" % (doc.file_tag(), doc.pk)) - except Exception as e: - syslog.syslog(syslog.LOG_ERR, "ERROR: Failed to expire last call for %s (id=%s)" % (doc.file_tag(), doc.pk)) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index b189a68275..d1cf6656a3 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -23,6 +23,7 @@ get_soon_to_expire_drafts, send_expire_warning_for_draft, ) +from .lastcall import get_expired_last_calls, expire_last_call from .models import Document from .utils import generate_idnits2_rfc_status, generate_idnits2_rfcs_obsoleted @@ -61,6 +62,17 @@ def notify_expirations_task(notify_days=14): @shared_task +def expire_last_calls_task(): + for doc in get_expired_last_calls(): + try: + expire_last_call(doc) + except Exception: + 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 def generate_idnits2_rfc_status_task(): outpath = Path(settings.DERIVED_DIR) / "idnits2-rfc-status" blob = generate_idnits2_rfc_status() diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 8915a6c5aa..3eeae2b34d 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -12,6 +12,7 @@ from .models import Document from .tasks import ( expire_ids_task, + expire_last_calls_task, generate_idnits2_rfcs_obsoleted_task, generate_idnits2_rfc_status_task, notify_expirations_task, @@ -71,6 +72,29 @@ def test_notify_expirations_task(self, get_drafts_mock, send_warning_mock): self.assertEqual(send_warning_mock.call_count, 1) self.assertEqual(send_warning_mock.call_args[0], ("sentinel",)) + @mock.patch("ietf.doc.tasks.expire_last_call") + @mock.patch("ietf.doc.tasks.get_expired_last_calls") + def test_expire_last_calls_task(self, mock_get_expired, mock_expire): + docs = DocumentFactory.create_batch(3) + mock_get_expired.return_value = docs + expire_last_calls_task() + self.assertTrue(mock_get_expired.called) + self.assertEqual(mock_expire.call_count, 3) + 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() + mock_expire.side_effect = ValueError + expire_last_calls_task() + self.assertTrue(mock_get_expired.called) + self.assertEqual(mock_expire.call_count, 3) + 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])) + @mock.patch("ietf.doc.tasks.generate_idnits2_rfc_status") def test_generate_idnits2_rfc_status_task(self, mock_generate): mock_generate.return_value = "dåtå" @@ -90,4 +114,3 @@ def test_generate_idnits2_rfcs_obsoleted_task(self, mock_generate): "dåtå".encode("utf8"), (Path(settings.DERIVED_DIR) / "idnits2-rfcs-obsoleted").read_bytes(), ) - diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index 429cb4e14f..a4357cab13 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -141,6 +141,16 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Expire Last Calls", + task="ietf.doc.tasks.expire_last_calls_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["daily"], + description="Move docs whose last call has expired to their next states", + ), + ) + PeriodicTask.objects.get_or_create( name="Sync with IANA changes", task="ietf.sync.tasks.iana_changes_update_task", From c59d6122d9ae9f9770ac6d6273cc36a238849b85 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 May 2024 15:25:15 -0300 Subject: [PATCH 104/846] refactor: send_nomcom_reminders via celery task (#7424) * refactor: send_reminders.py -> celery task * chore: add PeriodicTask * chore: remove management command and tests --- .../management/commands/send_reminders.py | 37 ----------------- ietf/nomcom/tasks.py | 10 +++++ ietf/nomcom/tests.py | 40 ++++++++++++------- ietf/nomcom/utils.py | 24 +++++++++++ .../management/commands/periodic_tasks.py | 10 +++++ 5 files changed, 70 insertions(+), 51 deletions(-) delete mode 100644 ietf/nomcom/management/commands/send_reminders.py create mode 100644 ietf/nomcom/tasks.py diff --git a/ietf/nomcom/management/commands/send_reminders.py b/ietf/nomcom/management/commands/send_reminders.py deleted file mode 100644 index bc10425430..0000000000 --- a/ietf/nomcom/management/commands/send_reminders.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright The IETF Trust 2013-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import syslog - -from django.core.management.base import BaseCommand - -from ietf.nomcom.models import NomCom, NomineePosition -from ietf.nomcom.utils import send_accept_reminder_to_nominee,send_questionnaire_reminder_to_nominee -from ietf.utils.timezone import date_today - - -def log(message): - syslog.syslog(message) - -def is_time_to_send(nomcom,send_date,nomination_date): - if nomcom.reminder_interval: - days_passed = (send_date - nomination_date).days - return days_passed > 0 and days_passed % nomcom.reminder_interval == 0 - else: - return bool(nomcom.reminderdates_set.filter(date=send_date)) - -class Command(BaseCommand): - help = ("Send acceptance and questionnaire reminders to nominees") - - def handle(self, *args, **options): - for nomcom in NomCom.objects.filter(group__state__slug='active'): - nps = NomineePosition.objects.filter(nominee__nomcom=nomcom,nominee__duplicated__isnull=True) - for nominee_position in nps.pending(): - if is_time_to_send(nomcom, date_today(), nominee_position.time.date()): - send_accept_reminder_to_nominee(nominee_position) - log('Sent accept reminder to %s' % nominee_position.nominee.email.address) - for nominee_position in nps.accepted().without_questionnaire_response(): - if is_time_to_send(nomcom, date_today(), nominee_position.time.date()): - send_questionnaire_reminder_to_nominee(nominee_position) - log('Sent questionnaire reminder to %s' % nominee_position.nominee.email.address) diff --git a/ietf/nomcom/tasks.py b/ietf/nomcom/tasks.py new file mode 100644 index 0000000000..3d063a6b26 --- /dev/null +++ b/ietf/nomcom/tasks.py @@ -0,0 +1,10 @@ +# Copyright The IETF Trust 2024, All Rights Reserved + +from celery import shared_task + +from .utils import send_reminders + + +@shared_task +def send_nomcom_reminders_task(): + send_reminders() diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index 9a615c91d1..8f94cc7fc5 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -40,14 +40,14 @@ NomineePositionStateName, Feedback, FeedbackTypeName, \ Nomination, FeedbackLastSeen, TopicFeedbackLastSeen, ReminderDates, \ NomCom -from ietf.nomcom.management.commands.send_reminders import Command, is_time_to_send from ietf.nomcom.factories import NomComFactory, FeedbackFactory, TopicFactory, \ 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 + decorate_volunteers_with_qualifications, send_reminders, _is_time_to_send_reminder from ietf.person.factories import PersonFactory, EmailFactory from ietf.person.models import Email, Person from ietf.stats.models import MeetingRegistration @@ -1207,36 +1207,41 @@ def tearDown(self): teardown_test_public_keys_dir(self) super().tearDown() - def test_is_time_to_send(self): + def test_is_time_to_send_reminder(self): self.nomcom.reminder_interval = 4 today = date_today() - self.assertTrue(is_time_to_send(self.nomcom,today+datetime.timedelta(days=4),today)) + self.assertTrue( + _is_time_to_send_reminder(self.nomcom, today + datetime.timedelta(days=4), today) + ) for delta in range(4): - self.assertFalse(is_time_to_send(self.nomcom,today+datetime.timedelta(days=delta),today)) + self.assertFalse( + _is_time_to_send_reminder( + self.nomcom, today + datetime.timedelta(days=delta), today + ) + ) self.nomcom.reminder_interval = None - self.assertFalse(is_time_to_send(self.nomcom,today,today)) + self.assertFalse(_is_time_to_send_reminder(self.nomcom, today, today)) self.nomcom.reminderdates_set.create(date=today) - self.assertTrue(is_time_to_send(self.nomcom,today,today)) + self.assertTrue(_is_time_to_send_reminder(self.nomcom, today, today)) - def test_command(self): - c = Command() - messages_before=len(outbox) + def test_send_reminders(self): + messages_before = len(outbox) self.nomcom.reminder_interval = 3 self.nomcom.save() - c.handle(None,None) + send_reminders() self.assertEqual(len(outbox), messages_before + 2) self.assertIn('nominee1@example.org', outbox[-1]['To']) self.assertIn('please complete', outbox[-1]['Subject']) self.assertIn('nominee1@example.org', outbox[-2]['To']) self.assertIn('please accept', outbox[-2]['Subject']) - messages_before=len(outbox) + messages_before = len(outbox) self.nomcom.reminder_interval = 4 self.nomcom.save() - c.handle(None,None) + send_reminders() self.assertEqual(len(outbox), messages_before + 1) self.assertIn('nominee2@example.org', outbox[-1]['To']) self.assertIn('please accept', outbox[-1]['Subject']) - + def test_remind_accept_view(self): url = reverse('ietf.nomcom.views.send_reminder_mail', kwargs={'year': NOMCOM_YEAR,'type':'accept'}) login_testing_unauthorized(self, CHAIR_USER, url) @@ -3048,3 +3053,10 @@ def test_reclassify_feedback_unrelated(self): self.assertEqual(fb.type_id, 'junk') self.assertEqual(Feedback.objects.filter(type='read').count(), 0) self.assertEqual(Feedback.objects.filter(type='junk').count(), 1) + + +class TaskTests(TestCase): + @mock.patch("ietf.nomcom.tasks.send_reminders") + def test_send_nomcom_reminders_task(self, mock_send): + send_nomcom_reminders_task() + self.assertEqual(mock_send.call_count, 1) diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index 53e775deb9..ab155ef1d5 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -747,3 +747,27 @@ def ingest_feedback_email(message: bytes, year: int): email_original_message=message, ) from err log("Received nomcom email from %s" % feedback.author) + + +def _is_time_to_send_reminder(nomcom, send_date, nomination_date): + if nomcom.reminder_interval: + days_passed = (send_date - nomination_date).days + return days_passed > 0 and days_passed % nomcom.reminder_interval == 0 + else: + return bool(nomcom.reminderdates_set.filter(date=send_date)) + + +def send_reminders(): + from .models import NomCom, NomineePosition + for nomcom in NomCom.objects.filter(group__state__slug="active"): + nps = NomineePosition.objects.filter( + nominee__nomcom=nomcom, nominee__duplicated__isnull=True + ) + for nominee_position in nps.pending(): + if _is_time_to_send_reminder(nomcom, date_today(), nominee_position.time.date()): + send_accept_reminder_to_nominee(nominee_position) + log(f"Sent accept reminder to {nominee_position.nominee.email.address}") + for nominee_position in nps.accepted().without_questionnaire_response(): + if _is_time_to_send_reminder(nomcom, date_today(), nominee_position.time.date()): + send_questionnaire_reminder_to_nominee(nominee_position) + log(f"Sent questionnaire reminder to {nominee_position.nominee.email.address}") diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index a4357cab13..52f4932ed8 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -211,6 +211,16 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Send NomCom reminders", + task="ietf.nomcom.tasks.send_nomcom_reminders_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["daily"], + description="Send acceptance and questionnaire reminders to nominees", + ), + ) + def show_tasks(self): for label, crontab in self.crontabs.items(): tasks = PeriodicTask.objects.filter(crontab=crontab).order_by( From 06b99fa64b1f4bff532794c1e8007b314a97a4f2 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 May 2024 16:13:47 -0300 Subject: [PATCH 105/846] chore: remove unused import --- ietf/utils/management/commands/patch_libraries.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ietf/utils/management/commands/patch_libraries.py b/ietf/utils/management/commands/patch_libraries.py index 2ada67a280..d9ae11097b 100644 --- a/ietf/utils/management/commands/patch_libraries.py +++ b/ietf/utils/management/commands/patch_libraries.py @@ -1,6 +1,5 @@ # Copyright The IETF Trust 2024, All Rights Reserved import django -import os from django.conf import settings from django.core.management.base import BaseCommand, CommandError From 1c3825bdec1079de1b0f32cc0174f71857a0298b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 May 2024 18:25:59 -0300 Subject: [PATCH 106/846] test: ensure logs only go to console during tests --- ietf/settings_test.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 3f69f0ae38..962628514a 100755 --- a/ietf/settings_test.py +++ b/ietf/settings_test.py @@ -60,3 +60,36 @@ def __getitem__(self, item): TEMPLATES[0]['OPTIONS']['context_processors'] = [ p for p in TEMPLATES[0]['OPTIONS']['context_processors'] if not p in DEV_TEMPLATE_CONTEXT_PROCESSORS ] # pyflakes:ignore REQUEST_PROFILE_STORE_ANONYMOUS_SESSIONS = False + +# Override loggers with a safer set in case things go to the log during testing. Specifically, +# make sure there are no syslog loggers that might send things to a real syslog. +LOGGING["loggers"] = { + 'django': { + 'handlers': ['debug_console'], + 'level': 'INFO', + }, + 'django.request': { + 'handlers': ['debug_console'], + 'level': 'ERROR', + }, + 'django.server': { + 'handlers': ['django.server'], + 'level': 'INFO', + }, + 'django.security': { + 'handlers': ['debug_console', ], + 'level': 'INFO', + }, + 'oidc_provider': { + 'handlers': ['debug_console', ], + 'level': 'DEBUG', + }, + 'datatracker': { + 'handlers': ['debug_console'], + 'level': 'INFO', + }, + 'celery': { + 'handlers': ['debug_console'], + 'level': 'INFO', + }, +} From 0d68646fdceb762f8ca1e1250629a7d5f2ff6750 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 May 2024 20:47:00 -0300 Subject: [PATCH 107/846] chore: suppress pyflakes check --- ietf/settings_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 962628514a..024512a8db 100755 --- a/ietf/settings_test.py +++ b/ietf/settings_test.py @@ -63,7 +63,7 @@ def __getitem__(self, item): # Override loggers with a safer set in case things go to the log during testing. Specifically, # make sure there are no syslog loggers that might send things to a real syslog. -LOGGING["loggers"] = { +LOGGING["loggers"] = { # pyflakes:ignore 'django': { 'handlers': ['debug_console'], 'level': 'INFO', From d9c6ae7b7e5581edc2342fe9f6cc511fba14e1fd Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 16 May 2024 12:55:23 -0300 Subject: [PATCH 108/846] chore: remove syslog handler from settings.py (#7427) System-level integration like this really needs to be in settings_local. This was causing problems when running in the dev environment. --- ietf/settings.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index e3aa351ed0..91c1ef205d 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -252,7 +252,7 @@ def skip_unreadable_post(record): 'level': 'INFO', }, 'django.security': { - 'handlers': ['debug_console', ], + 'handlers': ['debug_console', ], 'level': 'INFO', }, 'oidc_provider': { @@ -260,11 +260,11 @@ def skip_unreadable_post(record): 'level': 'DEBUG', }, 'datatracker': { - 'handlers': ['syslog'], + 'handlers': ['debug_console'], 'level': 'INFO', }, 'celery': { - 'handlers': ['syslog'], + 'handlers': ['debug_console'], 'level': 'INFO', }, }, @@ -289,13 +289,6 @@ def skip_unreadable_post(record): 'class': 'logging.StreamHandler', 'formatter': 'django.server', }, - 'syslog': { - 'level': 'DEBUG', - 'class': 'logging.handlers.SysLogHandler', - 'facility': 'user', - 'formatter': 'plain', - 'address': '/dev/log', - }, 'mail_admins': { 'level': 'ERROR', 'filters': [ From ffb9eb12ffefbd9e4cd2cb601b3e7d2ebb357d1e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 16 May 2024 13:37:29 -0300 Subject: [PATCH 109/846] refactor: generate I-D bibxml files via celery (#7426) * refactor: task to generate_draft_bibxml_files * test: test task/utility methods * chore: add periodic task * chore: remove generate_draft_bibxml_files.py * chore: further prune /bin/hourly --- bin/hourly | 18 ---- .../commands/generate_draft_bibxml_files.py | 84 ----------------- ietf/doc/tasks.py | 31 ++++++- ietf/doc/tests_tasks.py | 90 ++++++++++++++++++- ietf/doc/tests_utils.py | 53 ++++++++++- ietf/doc/utils.py | 17 ++++ .../management/commands/periodic_tasks.py | 10 +++ 7 files changed, 195 insertions(+), 108 deletions(-) delete mode 100644 ietf/doc/management/commands/generate_draft_bibxml_files.py diff --git a/bin/hourly b/bin/hourly index 81638fa543..f6d5048baa 100755 --- a/bin/hourly +++ b/bin/hourly @@ -5,33 +5,15 @@ # This script is expected to be triggered by cron from # /etc/cron.d/datatracker export LANG=en_US.UTF-8 -export PYTHONIOENCODING=utf-8 # Make sure we stop if something goes wrong: program=${0##*/} trap 'echo "$program($LINENO): Command failed with error code $? ([$$] $0 $*)"; exit 1' ERR -DTDIR=/a/www/ietf-datatracker/web -cd $DTDIR/ - -# Set up the virtual environment -source $DTDIR/env/bin/activate - logger -p user.info -t cron "Running $DTDIR/bin/hourly" -# Generate some static files -ID=/a/ietfdata/doc/draft/repository -DERIVED=/a/ietfdata/derived -DOWNLOAD=/a/www/www6s/download - CHARTER=/a/www/ietf-ftp/charter wget -q https://datatracker.ietf.org/wg/1wg-charters-by-acronym.txt -O $CHARTER/1wg-charters-by-acronym.txt wget -q https://datatracker.ietf.org/wg/1wg-charters.txt -O $CHARTER/1wg-charters.txt -# Regenerate the last week of bibxml-ids -$DTDIR/ietf/manage.py generate_draft_bibxml_files - -# Create and update group wikis -#$DTDIR/ietf/manage.py create_group_wikis - # exit 0 diff --git a/ietf/doc/management/commands/generate_draft_bibxml_files.py b/ietf/doc/management/commands/generate_draft_bibxml_files.py deleted file mode 100644 index eda67c401b..0000000000 --- a/ietf/doc/management/commands/generate_draft_bibxml_files.py +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright The IETF Trust 2012-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import datetime -import io -import os -import re -import sys - -from django.conf import settings -from django.core.management.base import BaseCommand -from django.utils import timezone - -import debug # pyflakes:ignore - -from ietf.doc.models import NewRevisionDocEvent -from ietf.doc.utils import bibxml_for_draft - -DEFAULT_DAYS = 7 - -class Command(BaseCommand): - help = ('Generate draft bibxml files for xml2rfc references, placing them in the ' - 'directory configured in settings.BIBXML_BASE_PATH: %s. ' - 'By default, generate files as needed for new Internet-Draft revisions from the ' - 'last %s days.' % (settings.BIBXML_BASE_PATH, DEFAULT_DAYS)) - - def add_arguments(self, parser): - parser.add_argument('--all', action='store_true', default=False, help="Process all documents, not only recent submissions") - parser.add_argument('--days', type=int, default=DEFAULT_DAYS, help="Look submissions from the last DAYS days, instead of %s" % DEFAULT_DAYS) - - def say(self, msg): - if self.verbosity > 0: - sys.stdout.write(msg) - sys.stdout.write('\n') - - def note(self, msg): - if self.verbosity > 1: - sys.stdout.write(msg) - sys.stdout.write('\n') - - def mutter(self, msg): - if self.verbosity > 2: - sys.stdout.write(msg) - sys.stdout.write('\n') - - def write(self, fn, new): - # normalize new - new = re.sub(r'\r\n?', r'\n', new) - try: - with io.open(fn, encoding='utf-8') as f: - old = f.read() - except IOError: - old = "" - if old.strip() != new.strip(): - self.note('Writing %s' % os.path.basename(fn)) - with io.open(fn, "w", encoding='utf-8') as f: - f.write(new) - - def handle(self, *args, **options): - self.verbosity = options.get("verbosity", 1) - process_all = options.get("all") - days = options.get("days") - # - bibxmldir = os.path.join(settings.BIBXML_BASE_PATH, 'bibxml-ids') - if not os.path.exists(bibxmldir): - os.makedirs(bibxmldir) - # - if process_all: - doc_events = NewRevisionDocEvent.objects.filter(type='new_revision', doc__type_id='draft') - else: - start = timezone.now() - datetime.timedelta(days=days) - doc_events = NewRevisionDocEvent.objects.filter(type='new_revision', doc__type_id='draft', time__gte=start) - doc_events = doc_events.order_by('time') - - for e in doc_events: - self.mutter('%s %s' % (e.time, e.doc.name)) - try: - doc = e.doc - bibxml = bibxml_for_draft(doc, e.rev) - ref_rev_file_name = os.path.join(bibxmldir, 'reference.I-D.%s-%s.xml' % (doc.name, e.rev)) - self.write(ref_rev_file_name, bibxml) - except Exception as ee: - sys.stderr.write('\n%s-%s: %s\n' % (doc.name, doc.rev, ee)) diff --git a/ietf/doc/tasks.py b/ietf/doc/tasks.py index d1cf6656a3..209db035a4 100644 --- a/ietf/doc/tasks.py +++ b/ietf/doc/tasks.py @@ -9,6 +9,7 @@ from pathlib import Path from django.conf import settings +from django.utils import timezone from ietf.utils import log from ietf.utils.timezone import datetime_today @@ -24,8 +25,13 @@ send_expire_warning_for_draft, ) from .lastcall import get_expired_last_calls, expire_last_call -from .models import Document -from .utils import generate_idnits2_rfc_status, generate_idnits2_rfcs_obsoleted +from .models import Document, NewRevisionDocEvent +from .utils import ( + generate_idnits2_rfc_status, + generate_idnits2_rfcs_obsoleted, + update_or_create_draft_bibxml_file, + ensure_draft_bibxml_path_exists, +) @shared_task @@ -90,3 +96,24 @@ def generate_idnits2_rfcs_obsoleted_task(): outpath.write_text(blob, encoding="utf8") except Exception as e: log.log(f"failed to write idnits2-rfcs-obsoleted: {e}") + + +@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. + """ + ensure_draft_bibxml_path_exists() + doc_events = NewRevisionDocEvent.objects.filter( + type="new_revision", + doc__type_id="draft", + ).order_by("time") + if not process_all: + 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) + except Exception as err: + log.log(f"Error generating bibxml for {event.doc.name}-{event.rev}: {err}") diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 3eeae2b34d..51a8556e69 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -1,18 +1,21 @@ # Copyright The IETF Trust 2024, All Rights Reserved +import datetime import mock from pathlib import Path from django.conf import settings +from django.utils import timezone from ietf.utils.test_utils import TestCase from ietf.utils.timezone import datetime_today -from .factories import DocumentFactory -from .models import Document +from .factories import DocumentFactory, NewRevisionDocEventFactory +from .models import Document, NewRevisionDocEvent from .tasks import ( expire_ids_task, expire_last_calls_task, + generate_draft_bibxml_files_task, generate_idnits2_rfcs_obsoleted_task, generate_idnits2_rfc_status_task, notify_expirations_task, @@ -114,3 +117,86 @@ def test_generate_idnits2_rfcs_obsoleted_task(self, mock_generate): "dåtå".encode("utf8"), (Path(settings.DERIVED_DIR) / "idnits2-rfcs-obsoleted").read_bytes(), ) + + @mock.patch("ietf.doc.tasks.ensure_draft_bibxml_path_exists") + @mock.patch("ietf.doc.tasks.update_or_create_draft_bibxml_file") + def test_generate_draft_bibxml_files_task(self, mock_create, mock_ensure_path): + now = timezone.now() + very_old_event = NewRevisionDocEventFactory( + time=now - datetime.timedelta(days=1000), rev="17" + ) + old_event = NewRevisionDocEventFactory( + time=now - datetime.timedelta(days=8), rev="03" + ) + young_event = NewRevisionDocEventFactory( + time=now - datetime.timedelta(days=6), rev="06" + ) + # a couple that should always be ignored + NewRevisionDocEventFactory( + time=now - datetime.timedelta(days=6), rev="09", doc__type_id="rfc" # not a draft + ) + NewRevisionDocEventFactory( + type="changed_document", # not a "new_revision" type + time=now - datetime.timedelta(days=6), + rev="09", + doc__type_id="rfc", + ) + + # Get rid of the "00" events created by the factories -- they're just noise for this test + NewRevisionDocEvent.objects.filter(rev="00").delete() + + # 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(young_event.doc, young_event.rev)] + ) + mock_create.reset_mock() + mock_ensure_path.reset_mock() + + # shorter lookback + generate_draft_bibxml_files_task(days=5) + self.assertTrue(mock_ensure_path.called) + self.assertCountEqual(mock_create.call_args_list, []) + mock_create.reset_mock() + mock_ensure_path.reset_mock() + + # longer lookback + generate_draft_bibxml_files_task(days=9) + self.assertTrue(mock_ensure_path.called) + self.assertCountEqual( + mock_create.call_args_list, + [ + mock.call(young_event.doc, young_event.rev), + mock.call(old_event.doc, old_event.rev), + ], + ) + mock_create.reset_mock() + mock_ensure_path.reset_mock() + + # everything + generate_draft_bibxml_files_task(process_all=True) + self.assertTrue(mock_ensure_path.called) + self.assertCountEqual( + mock_create.call_args_list, + [ + mock.call(young_event.doc, young_event.rev), + mock.call(old_event.doc, old_event.rev), + mock.call(very_old_event.doc, very_old_event.rev), + ], + ) + mock_create.reset_mock() + mock_ensure_path.reset_mock() + + # everything should still be tried, even if there's an exception + mock_create.side_effect = RuntimeError + generate_draft_bibxml_files_task(process_all=True) + self.assertTrue(mock_ensure_path.called) + self.assertCountEqual( + mock_create.call_args_list, + [ + mock.call(young_event.doc, young_event.rev), + mock.call(old_event.doc, old_event.rev), + mock.call(very_old_event.doc, very_old_event.rev), + ], + ) diff --git a/ietf/doc/tests_utils.py b/ietf/doc/tests_utils.py index 248ac345af..f610fe3d76 100644 --- a/ietf/doc/tests_utils.py +++ b/ietf/doc/tests_utils.py @@ -2,8 +2,10 @@ import datetime import debug # pyflakes:ignore -from unittest.mock import patch +from pathlib import Path +from unittest.mock import call, patch +from django.conf import settings from django.db import IntegrityError from django.test.utils import override_settings from django.utils import timezone @@ -16,7 +18,8 @@ from ietf.doc.factories import DocumentFactory, WgRfcFactory, WgDraftFactory from ietf.doc.models import State, DocumentActionHolder, DocumentAuthor from ietf.doc.utils import (update_action_holders, add_state_change_event, update_documentauthors, - fuzzy_find_documents, rebuild_reference_relations, build_file_urls) + fuzzy_find_documents, rebuild_reference_relations, build_file_urls, + ensure_draft_bibxml_path_exists, update_or_create_draft_bibxml_file) from ietf.utils.draft import Draft, PlaintextDraft from ietf.utils.xmldraft import XMLDraft @@ -484,3 +487,49 @@ def test_xml_and_plaintext(self, mock_init, mock_get_refs, mock_plaintext_init): (self.updated.name, 'updates'), ] ) + + +class DraftBibxmlTests(TestCase): + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ["BIBXML_BASE_PATH"] + + def test_ensure_draft_bibxml_path_exists(self): + expected = Path(settings.BIBXML_BASE_PATH) / "bibxml-ids" + self.assertFalse(expected.exists()) + ensure_draft_bibxml_path_exists() + self.assertTrue(expected.is_dir()) # false if does not exist or is not dir + + @patch("ietf.doc.utils.bibxml_for_draft", return_value="This\ris\nmy\r\nbibxml") + def test_create_draft_bibxml_file(self, mock): + bibxml_path = Path(settings.BIBXML_BASE_PATH) / "bibxml-ids" + bibxml_path.mkdir(exist_ok=False) # expect to start with a clean slate + + doc = DocumentFactory() + ref_path = bibxml_path / f"reference.I-D.{doc.name}-26.xml" # we're pretending it's rev 26 + + update_or_create_draft_bibxml_file(doc, "26") + self.assertEqual(mock.call_count, 1) + self.assertEqual(mock.call_args, call(doc, "26")) + self.assertEqual(ref_path.read_text(), "This\nis\nmy\nbibxml") + + @patch("ietf.doc.utils.bibxml_for_draft", return_value="This\ris\nmy\r\nbibxml") + def test_update_draft_bibxml_file(self, mock): + bibxml_path = Path(settings.BIBXML_BASE_PATH) / "bibxml-ids" + bibxml_path.mkdir(exist_ok=False) # expect to start with a clean slate + + doc = DocumentFactory() + ref_path = bibxml_path / f"reference.I-D.{doc.name}-26.xml" # we're pretending it's rev 26 + ref_path.write_text("Old data") + + # should replace it + update_or_create_draft_bibxml_file(doc, "26") + self.assertEqual(mock.call_count, 1) + self.assertEqual(mock.call_args, call(doc, "26")) + self.assertEqual(ref_path.read_text(), "This\nis\nmy\nbibxml") + + # should leave it alone if it differs only by leading/trailing whitespace + mock.reset_mock() + mock.return_value = " \n This\nis\nmy\nbibxml " + update_or_create_draft_bibxml_file(doc, "26") + self.assertEqual(mock.call_count, 1) + self.assertEqual(mock.call_args, call(doc, "26")) + self.assertEqual(ref_path.read_text(), "This\nis\nmy\nbibxml") diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index ddf6e015e0..c3d7552f24 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -1413,3 +1413,20 @@ def investigate_fragment(name_fragment): unverifiable_collections=unverifiable_collections, unexpected=unexpected, ) + + +def update_or_create_draft_bibxml_file(doc, rev): + log.assertion("doc.type_id == 'draft'") + normalized_bibxml = re.sub(r"\r\n?", r"\n", bibxml_for_draft(doc, rev)) + ref_rev_file_path = Path(settings.BIBXML_BASE_PATH) / "bibxml-ids" / f"reference.I-D.{doc.name}-{rev}.xml" + try: + existing_bibxml = ref_rev_file_path.read_text(encoding="utf8") + except IOError: + existing_bibxml = "" + if normalized_bibxml.strip() != existing_bibxml.strip(): + log.log(f"Writing {ref_rev_file_path}") + ref_rev_file_path.write_text(normalized_bibxml, encoding="utf8") + + +def ensure_draft_bibxml_path_exists(): + (Path(settings.BIBXML_BASE_PATH) / "bibxml-ids").mkdir(exist_ok=True) diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index 52f4932ed8..c1a409ed8d 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -221,6 +221,16 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Generate I-D bibxml files", + task="ietf.doc.tasks.generate_draft_bibxml_files_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["hourly"], + description="Generate draft bibxml files for the last week's drafts", + ), + ) + def show_tasks(self): for label, crontab in self.crontabs.items(): tasks = PeriodicTask.objects.filter(crontab=crontab).order_by( From a5f44dfafc53a43d4ca13e49e3b31ac20c0d701b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 16 May 2024 16:59:52 -0300 Subject: [PATCH 110/846] refactor: generate 1wg-charters files via celery (#7428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: move helpers to utils.py * feat: task to generate 1wg-charters files * refactor: use 1wg-charter files in views * chore: create periodic task + slight renaming * chore: remove wgets from bin/hourly * test: refactor tests for new task/views * fix: fix bug uncovered by tests * chore: remove unused imports * fix: clean whitespace in draft titles * fix: return verbatim bytes for charter views * chore: remove now-empty /bin/hourly 🎉 --- bin/daily | 3 - bin/hourly | 19 ---- ietf/doc/views_charter.py | 4 +- ietf/group/tasks.py | 33 ++++++ ietf/group/tests_info.py | 71 +++++++++--- ietf/group/utils.py | 69 +++++++++++- ietf/group/views.py | 102 ++++-------------- .../group/group_entry_with_charter.txt | 2 +- .../management/commands/periodic_tasks.py | 10 ++ 9 files changed, 186 insertions(+), 127 deletions(-) delete mode 100755 bin/hourly create mode 100644 ietf/group/tasks.py diff --git a/bin/daily b/bin/daily index 997b9c7d76..6adb16794d 100755 --- a/bin/daily +++ b/bin/daily @@ -17,9 +17,6 @@ cd $DTDIR/ logger -p user.info -t cron "Running $DTDIR/bin/daily" -# Run the hourly jobs first -$DTDIR/bin/hourly - # Set up the virtual environment source $DTDIR/env/bin/activate diff --git a/bin/hourly b/bin/hourly deleted file mode 100755 index f6d5048baa..0000000000 --- a/bin/hourly +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Hourly datatracker jobs -# -# This script is expected to be triggered by cron from -# /etc/cron.d/datatracker -export LANG=en_US.UTF-8 - -# Make sure we stop if something goes wrong: -program=${0##*/} -trap 'echo "$program($LINENO): Command failed with error code $? ([$$] $0 $*)"; exit 1' ERR - -logger -p user.info -t cron "Running $DTDIR/bin/hourly" - -CHARTER=/a/www/ietf-ftp/charter -wget -q https://datatracker.ietf.org/wg/1wg-charters-by-acronym.txt -O $CHARTER/1wg-charters-by-acronym.txt -wget -q https://datatracker.ietf.org/wg/1wg-charters.txt -O $CHARTER/1wg-charters.txt - -# exit 0 diff --git a/ietf/doc/views_charter.py b/ietf/doc/views_charter.py index d44a675f68..f8748d2126 100644 --- a/ietf/doc/views_charter.py +++ b/ietf/doc/views_charter.py @@ -37,8 +37,8 @@ from ietf.doc.mails import email_state_changed, email_charter_internal_review from ietf.group.mails import email_admin_re_charter from ietf.group.models import Group, ChangeStateGroupEvent, MilestoneGroupEvent -from ietf.group.utils import save_group_in_history, save_milestone_in_history, can_manage_all_groups_of_type -from ietf.group.views import fill_in_charter_info +from ietf.group.utils import save_group_in_history, save_milestone_in_history, can_manage_all_groups_of_type, \ + fill_in_charter_info from ietf.ietfauth.utils import has_role, role_required from ietf.name.models import GroupStateName from ietf.person.models import Person diff --git a/ietf/group/tasks.py b/ietf/group/tasks.py new file mode 100644 index 0000000000..c35674ac39 --- /dev/null +++ b/ietf/group/tasks.py @@ -0,0 +1,33 @@ +# Copyright The IETF Trust 2024, All Rights Reserved +# +# Celery task definitions +# +from celery import shared_task +from pathlib import Path + +from django.conf import settings +from django.template.loader import render_to_string + +from .models import Group +from .utils import fill_in_charter_info, fill_in_wg_drafts, fill_in_wg_roles + + +@shared_task +def generate_wg_charters_files_task(): + areas = Group.objects.filter(type="area", state="active").order_by("name") + groups = Group.objects.filter(type="wg", state="active").exclude(parent=None).order_by("acronym") + for group in groups: + fill_in_charter_info(group) + fill_in_wg_roles(group) + fill_in_wg_drafts(group) + for area in areas: + area.groups = [g for g in groups if g.parent_id == area.pk] + charter_path = Path(settings.CHARTER_PATH) + (charter_path / "1wg-charters.txt").write_text( + render_to_string("group/1wg-charters.txt", {"areas": areas}), + encoding="utf8", + ) + (charter_path / "1wg-charters-by-acronym.txt").write_text( + render_to_string("group/1wg-charters-by-acronym.txt", {"groups": groups}), + encoding="utf8", + ) diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 6ecac7d347..42171bd1ba 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -34,6 +34,7 @@ DatedGroupMilestoneFactory, DatelessGroupMilestoneFactory) from ietf.group.forms import GroupForm from ietf.group.models import Group, GroupEvent, GroupMilestone, GroupStateTransitions, Role +from ietf.group.tasks import generate_wg_charters_files_task from ietf.group.utils import save_group_in_history, setup_default_community_list_for_group from ietf.meeting.factories import SessionFactory from ietf.name.models import DocTagName, GroupStateName, GroupTypeName, ExtResourceName, RoleName @@ -117,10 +118,6 @@ def test_wg_summaries(self): chair = Email.objects.filter(role__group=group, role__name="chair")[0] - ( - Path(settings.CHARTER_PATH) / f"{group.charter.name}-{group.charter.rev}.txt" - ).write_text("This is a charter.") - url = urlreverse('ietf.group.views.wg_summary_area', kwargs=dict(group_type="wg")) r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -136,23 +133,65 @@ def test_wg_summaries(self): self.assertContains(r, group.name) self.assertContains(r, chair.address) - url = urlreverse('ietf.group.views.wg_charters', kwargs=dict(group_type="wg")) + def test_wg_charters(self): + # file does not exist = 404 + url = urlreverse("ietf.group.views.wg_charters", kwargs=dict(group_type="wg")) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + + # should return expected file with expected encoding + wg_path = Path(settings.CHARTER_PATH) / "1wg-charters.txt" + wg_path.write_text("This is a charters file with an é") r = self.client.get(url) self.assertEqual(r.status_code, 200) - self.assertContains(r, group.acronym) - self.assertContains(r, group.name) - self.assertContains(r, group.ad_role().person.plain_name()) - self.assertContains(r, chair.address) - self.assertContains(r, "This is a charter.") + self.assertEqual(r.charset, "UTF-8") + self.assertEqual(r.content.decode("utf8"), "This is a charters file with an é") + + # non-wg request = 404 even if the file exists + url = urlreverse("ietf.group.views.wg_charters", kwargs=dict(group_type="rg")) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) - url = urlreverse('ietf.group.views.wg_charters_by_acronym', kwargs=dict(group_type="wg")) + def test_wg_charters_by_acronym(self): + url = urlreverse("ietf.group.views.wg_charters_by_acronym", kwargs=dict(group_type="wg")) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + + wg_path = Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt" + wg_path.write_text("This is a charters file with an é") r = self.client.get(url) self.assertEqual(r.status_code, 200) - self.assertContains(r, group.acronym) - self.assertContains(r, group.name) - self.assertContains(r, group.ad_role().person.plain_name()) - self.assertContains(r, chair.address) - self.assertContains(r, "This is a charter.") + self.assertEqual(r.charset, "UTF-8") + self.assertEqual(r.content.decode("utf8"), "This is a charters file with an é") + + # non-wg request = 404 even if the file exists + url = urlreverse("ietf.group.views.wg_charters_by_acronym", kwargs=dict(group_type="rg")) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + + def test_generate_wg_charters_files_task(self): + group = CharterFactory(group__type_id='wg',group__parent=GroupFactory(type_id='area')).group + RoleFactory(group=group,name_id='chair',person=PersonFactory()) + RoleFactory(group=group,name_id='ad',person=PersonFactory()) + chair = Email.objects.filter(role__group=group, role__name="chair")[0] + ( + Path(settings.CHARTER_PATH) / f"{group.charter.name}-{group.charter.rev}.txt" + ).write_text("This is a charter.") + + generate_wg_charters_files_task() + wg_charters_contents = (Path(settings.CHARTER_PATH) / "1wg-charters.txt").read_text(encoding="utf8") + self.assertIn(group.acronym, wg_charters_contents) + self.assertIn(group.name, wg_charters_contents) + self.assertIn(group.ad_role().person.plain_name(), wg_charters_contents) + self.assertIn(chair.address, wg_charters_contents) + self.assertIn("This is a charter.", wg_charters_contents) + + wg_charters_by_acronym_contents = (Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt").read_text(encoding="utf8") + self.assertIn(group.acronym, wg_charters_by_acronym_contents) + self.assertIn(group.name, wg_charters_by_acronym_contents) + self.assertIn(group.ad_role().person.plain_name(), wg_charters_by_acronym_contents) + self.assertIn(chair.address, wg_charters_by_acronym_contents) + self.assertIn("This is a charter.", wg_charters_by_acronym_contents) def test_chartering_groups(self): group = CharterFactory(group__type_id='wg',group__parent=GroupFactory(type_id='area'),states=[('charter','intrev')]).group diff --git a/ietf/group/utils.py b/ietf/group/utils.py index f9c2aa15bf..51696eb39b 100644 --- a/ietf/group/utils.py +++ b/ietf/group/utils.py @@ -15,13 +15,13 @@ from ietf.community.models import CommunityList, SearchRule from ietf.community.utils import reset_name_contains_index_for_rule, can_manage_community_list -from ietf.doc.models import Document, State +from ietf.doc.models import Document, State, RelatedDocument from ietf.group.models import Group, RoleHistory, Role, GroupFeatures, GroupEvent from ietf.ietfauth.utils import has_role from ietf.name.models import GroupTypeName, RoleName from ietf.person.models import Email from ietf.review.utils import can_manage_review_requests_for_team -from ietf.utils import log +from ietf.utils import log, markdown from ietf.utils.history import get_history_object_for, copy_many_to_many_for_history from ietf.doc.templatetags.ietf_filters import is_valid_url from functools import reduce @@ -450,3 +450,68 @@ def role_holder_emails(): address__startswith="unknown-email-" ) return emails.filter(person__role__in=roles).distinct() + + +def fill_in_charter_info(group, include_drafts=False): + group.areadirector = getattr(group.ad_role(),'email',None) + + personnel = {} + for r in Role.objects.filter(group=group).order_by('person__name').select_related("email", "person", "name"): + if r.name_id not in personnel: + personnel[r.name_id] = [] + personnel[r.name_id].append(r) + + if group.parent and group.parent.type_id == "area" and group.ad_role() and "ad" not in personnel: + ad_roles = list(Role.objects.filter(group=group.parent, name="ad", person=group.ad_role().person)) + if ad_roles: + personnel["ad"] = ad_roles + + group.personnel = [] + for role_name_slug, roles in personnel.items(): + label = roles[0].name.name + if len(roles) > 1: + if label.endswith("y"): + label = label[:-1] + "ies" + else: + label += "s" + + group.personnel.append((role_name_slug, label, roles)) + + group.personnel.sort(key=lambda t: t[2][0].name.order) + + milestone_state = "charter" if group.state_id == "proposed" else "active" + group.milestones = group.groupmilestone_set.filter(state=milestone_state) + if group.uses_milestone_dates: + group.milestones = group.milestones.order_by('resolved', 'due') + else: + group.milestones = group.milestones.order_by('resolved', 'order') + + if group.charter: + group.charter_text = get_charter_text(group) + else: + group.charter_text = "Not chartered yet." + group.charter_html = markdown.markdown(group.charter_text) + + +def fill_in_wg_roles(group): + def get_roles(slug, default): + for role_slug, label, roles in group.personnel: + if slug == role_slug: + return roles + return default + + group.chairs = get_roles("chair", []) + ads = get_roles("ad", []) + group.areadirector = ads[0] if ads else None + group.techadvisors = get_roles("techadv", []) + group.editors = get_roles("editor", []) + group.secretaries = get_roles("secr", []) + + +def fill_in_wg_drafts(group): + group.drafts = Document.objects.filter(type_id="draft", group=group).order_by("name") + group.rfcs = Document.objects.filter(type_id="rfc", group=group).order_by("rfc_number") + for rfc in group.rfcs: + # TODO: remote_field? + rfc.remote_field = RelatedDocument.objects.filter(source=rfc,relationship_id__in=['obs','updates']).distinct() + rfc.invrel = RelatedDocument.objects.filter(target=rfc,relationship_id__in=['obs','updates']).distinct() diff --git a/ietf/group/views.py b/ietf/group/views.py index 636871d901..7ad6e5bf02 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -41,9 +41,10 @@ import math import re import json +import types from collections import OrderedDict, defaultdict -import types +from pathlib import Path from simple_history.utils import update_change_reason from django import forms @@ -75,12 +76,12 @@ from ietf.group.mails import email_admin_re_charter, email_personnel_change, email_comment from ietf.group.models import ( Group, Role, GroupEvent, GroupStateTransitions, ChangeStateGroupEvent, GroupFeatures, AppealArtifact ) -from ietf.group.utils import (get_charter_text, can_manage_all_groups_of_type, +from ietf.group.utils import (can_manage_all_groups_of_type, milestone_reviewer_for_group_type, can_provide_status_update, can_manage_materials, group_attribute_change_desc, construct_group_menu_context, get_group_materials, save_group_in_history, can_manage_group, update_role_set, - get_group_or_404, setup_default_community_list_for_group, ) + get_group_or_404, setup_default_community_list_for_group, fill_in_charter_info) # from ietf.ietfauth.utils import has_role, is_authorized_in_group from ietf.mailtrigger.utils import gather_relevant_expansions @@ -132,70 +133,9 @@ def roles(group, role_name): return Role.objects.filter(group=group, name=role_name).select_related("email", "person") -def fill_in_charter_info(group, include_drafts=False): - group.areadirector = getattr(group.ad_role(),'email',None) - - personnel = {} - for r in Role.objects.filter(group=group).order_by('person__name').select_related("email", "person", "name"): - if r.name_id not in personnel: - personnel[r.name_id] = [] - personnel[r.name_id].append(r) - - if group.parent and group.parent.type_id == "area" and group.ad_role() and "ad" not in personnel: - ad_roles = list(Role.objects.filter(group=group.parent, name="ad", person=group.ad_role().person)) - if ad_roles: - personnel["ad"] = ad_roles - - group.personnel = [] - for role_name_slug, roles in personnel.items(): - label = roles[0].name.name - if len(roles) > 1: - if label.endswith("y"): - label = label[:-1] + "ies" - else: - label += "s" - - group.personnel.append((role_name_slug, label, roles)) - - group.personnel.sort(key=lambda t: t[2][0].name.order) - - milestone_state = "charter" if group.state_id == "proposed" else "active" - group.milestones = group.groupmilestone_set.filter(state=milestone_state) - if group.uses_milestone_dates: - group.milestones = group.milestones.order_by('resolved', 'due') - else: - group.milestones = group.milestones.order_by('resolved', 'order') - - if group.charter: - group.charter_text = get_charter_text(group) - else: - group.charter_text = "Not chartered yet." - group.charter_html = markdown.markdown(group.charter_text) - def extract_last_name(role): return role.person.name_parts()[3] -def fill_in_wg_roles(group): - def get_roles(slug, default): - for role_slug, label, roles in group.personnel: - if slug == role_slug: - return roles - return default - - group.chairs = get_roles("chair", []) - ads = get_roles("ad", []) - group.areadirector = ads[0] if ads else None - group.techadvisors = get_roles("techadv", []) - group.editors = get_roles("editor", []) - group.secretaries = get_roles("secr", []) - -def fill_in_wg_drafts(group): - group.drafts = Document.objects.filter(type_id="draft", group=group).order_by("name") - group.rfcs = Document.objects.filter(type_id="rfc", group=group).order_by("rfc_number") - for rfc in group.rfcs: - # TODO: remote_field? - rfc.remote_field = RelatedDocument.objects.filter(source=rfc,relationship_id__in=['obs','updates']).distinct() - rfc.invrel = RelatedDocument.objects.filter(target=rfc,relationship_id__in=['obs','updates']).distinct() def check_group_email_aliases(): pattern = re.compile(r'expand-(.*?)(-\w+)@.*? +(.*)$') @@ -241,34 +181,28 @@ def wg_summary_acronym(request, group_type): 'groups': groups }, content_type='text/plain; charset=UTF-8') -@cache_page ( 60 * 60, cache="slowpages" ) + def wg_charters(request, group_type): if group_type != "wg": raise Http404 - areas = Group.objects.filter(type="area", state="active").order_by("name") - for area in areas: - area.groups = Group.objects.filter(parent=area, type="wg", state="active").order_by("name") - for group in area.groups: - fill_in_charter_info(group) - fill_in_wg_roles(group) - fill_in_wg_drafts(group) - return render(request, 'group/1wg-charters.txt', - { 'areas': areas }, - content_type='text/plain; charset=UTF-8') + fpath = Path(settings.CHARTER_PATH) / "1wg-charters.txt" + try: + content = fpath.read_bytes() + except IOError: + raise Http404 + return HttpResponse(content, content_type="text/plain; charset=UTF-8") + -@cache_page ( 60 * 60, cache="slowpages" ) def wg_charters_by_acronym(request, group_type): if group_type != "wg": raise Http404 + fpath = Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt" + try: + content = fpath.read_bytes() + except IOError: + raise Http404 + return HttpResponse(content, content_type="text/plain; charset=UTF-8") - groups = Group.objects.filter(type="wg", state="active").exclude(parent=None).order_by("acronym") - for group in groups: - fill_in_charter_info(group) - fill_in_wg_roles(group) - fill_in_wg_drafts(group) - return render(request, 'group/1wg-charters-by-acronym.txt', - { 'groups': groups }, - content_type='text/plain; charset=UTF-8') def active_groups(request, group_type=None): diff --git a/ietf/templates/group/group_entry_with_charter.txt b/ietf/templates/group/group_entry_with_charter.txt index 50a40a9afd..846cc395b8 100644 --- a/ietf/templates/group/group_entry_with_charter.txt +++ b/ietf/templates/group/group_entry_with_charter.txt @@ -37,7 +37,7 @@ Goals and Milestones: {% for milestone in group.milestones %} {% if milestone.resolved %}{{ milestone.resolved }} {% else %}{{ milestone.due|date:"M Y" }}{% endif %} - {{ milestone.desc }} {% endfor %} Internet-Drafts: -{% for document in group.drafts %} - {{ document.title }} [{{ document.name }}-{{ document.rev }}] ({{ document.pages }} pages) +{% for document in group.drafts %} - {{ document.title|clean_whitespace }} [{{ document.name }}-{{ document.rev }}] ({{ document.pages }} pages) {% endfor %} {% if group.rfcs %}Requests for Comments: {% for document in group.rfcs %} {{ document.name.upper }}: {{ document.title}} ({{ document.pages }} pages){% for r in document.rel %} diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index c1a409ed8d..792eb0068b 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -221,6 +221,16 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Generate WG charter files", + task="ietf.group.tasks.generate_wg_charters_files_task", + defaults=dict( + enabled=False, + crontab=self.crontabs["hourly"], + description="Update 1wg-charters.txt and 1wg-charters-by-acronym.txt", + ), + ) + PeriodicTask.objects.get_or_create( name="Generate I-D bibxml files", task="ietf.doc.tasks.generate_draft_bibxml_files_task", From d344f5fd3c0a6db28fa1aadd1c68a538d3a45b50 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 16 May 2024 16:34:38 -0400 Subject: [PATCH 111/846] ci: fix deploy-to-container script --- dev/deploy-to-container/cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/deploy-to-container/cli.js b/dev/deploy-to-container/cli.js index 2912c98fdf..4aee7ba1ed 100644 --- a/dev/deploy-to-container/cli.js +++ b/dev/deploy-to-container/cli.js @@ -3,7 +3,7 @@ import Docker from 'dockerode' import path from 'path' import fs from 'fs-extra' -import tar from 'tar' +import * as tar from 'tar' import yargs from 'yargs/yargs' import { hideBin } from 'yargs/helpers' import slugify from 'slugify' From 6f4459f6c4b2bd468f3e4d6ebb6bce525f724327 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 17 May 2024 01:53:01 -0400 Subject: [PATCH 112/846] ci: update build.yml workflow --- .github/workflows/build.yml | 64 ------------------------------------- 1 file changed, 64 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4181beef4a..0c68d5d05c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,11 +22,6 @@ on: default: false required: true type: boolean - legacySandbox: - description: 'Deploy to Legacy Sandbox' - default: false - required: false - type: boolean skiptests: description: 'Skip Tests' default: false @@ -407,62 +402,3 @@ jobs: DEBIAN_FRONTEND: noninteractive run: | docker image prune -a -f - - legacySandbox: - name: Deploy to Legacy Sandbox - if: ${{ !failure() && !cancelled() && github.event.inputs.legacySandbox == 'true' }} - needs: [prepare, release] - runs-on: [self-hosted, legacy-sandbox-server] - environment: - name: legacy-sandbox - url: "https://sandbox.ietf.org" - env: - PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} - - steps: - - name: Download a Release Artifact - uses: actions/download-artifact@v4.1.7 - with: - name: release-${{ env.PKG_VERSION }} - path: /a/www/ietf-datatracker/main.dev.${{ github.run_number }} - - - name: Extract Release - env: - DEBIAN_FRONTEND: noninteractive - working-directory: /a/www/ietf-datatracker/main.dev.${{ github.run_number }} - run: | - echo "Extracting release tarball..." - tar xzf release.tar.gz - echo "Deleting release tarball..." - rm -rf release.tar.gz - - - name: Setup Environment - env: - DEBIAN_FRONTEND: noninteractive - working-directory: /a/www/ietf-datatracker/main.dev.${{ github.run_number }} - run: | - echo "Copying settings from previous deploy..." - cp ../web/ietf/settings_local.py ietf/ - rsync -a ../web/test/ test/ - echo "Installing Python dependencies..." - python3.9 -mvenv env - source env/bin/activate - pip install -r requirements.txt - pip freeze > frozen-requirements.txt - echo "Collecting static..." - ietf/manage.py collectstatic - echo "Running checks..." - ietf/manage.py check - - - name: Update Docker Containers - env: - DEBIAN_FRONTEND: noninteractive - working-directory: /a/docker/datatracker - run: | - echo "Pulling latest docker images..." - docker image tag ghcr.io/ietf-tools/datatracker-celery:latest datatracker-celery-fallback - docker image tag ghcr.io/ietf-tools/datatracker-mq:latest datatracker-mq-fallback - docker-compose pull - # echo "Shutting down containers..." - # docker-compose down -t 300 - From ff633dc4d5ac30088913cc6e09cffea4f38dea41 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 18 May 2024 00:15:50 -0400 Subject: [PATCH 113/846] ci: Update build.yml --- .github/workflows/build.yml | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c68d5d05c..99c6c9ab34 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,6 +17,11 @@ on: default: true required: true type: boolean + deploy: + description: 'Deploy to Staging / Prod' + default: false + required: true + type: boolean sandboxNoDbRefresh: description: 'Sandbox Disable Daily DB Refresh' default: false @@ -402,3 +407,39 @@ jobs: DEBIAN_FRONTEND: noninteractive run: | docker image prune -a -f + + # ----------------------------------------------------------------- + # STAGING + # ----------------------------------------------------------------- + staging: + name: Deploy to Staging + if: ${{ !failure() && !cancelled() && github.event.inputs.deploy == 'true' }} + needs: [prepare, release] + runs-on: ubuntu-latest + environment: + name: staging + env: + PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} + + steps: + - name: Deploy to staging + run: | + curl -X POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: Bearer ${{ secrets.GH_INFRA_K8S_TOKEN }}" ${{ secrets.GHA_K8S_DEPLOY_API }} -d '{"ref":"main", "inputs": { "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}" }}' + + # ----------------------------------------------------------------- + # PROD + # ----------------------------------------------------------------- + prod: + name: Deploy to Production + if: ${{ !failure() && !cancelled() && github.event.inputs.deploy == 'true' }} + needs: [staging] + runs-on: ubuntu-latest + environment: + name: production + env: + PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} + + steps: + - name: Deploy to production + run: | + curl -X POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: Bearer ${{ secrets.GH_INFRA_K8S_TOKEN }}" ${{ secrets.GHA_K8S_DEPLOY_API }} -d '{"ref":"main", "inputs": { "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "appVersion":"${{ env.PKG_VERSION }}" }}' From 8315c665bd28a97fa799d98b2f7eff69c5ceae72 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 20 May 2024 10:21:52 -0300 Subject: [PATCH 114/846] feat: copy 1wg-charters files into place (#7431) * feat: copy 1wg-charters* into other places * test: update test * test: test no-copy operation * style: Black * fix: Skip copy if dest is a non-dir * chore: de-lint --- ietf/group/tasks.py | 34 ++++++++++++++++-- ietf/group/tests_info.py | 77 +++++++++++++++++++++++++++++++++++----- ietf/settings.py | 1 + 3 files changed, 101 insertions(+), 11 deletions(-) diff --git a/ietf/group/tasks.py b/ietf/group/tasks.py index c35674ac39..f7717616d1 100644 --- a/ietf/group/tasks.py +++ b/ietf/group/tasks.py @@ -2,12 +2,16 @@ # # Celery task definitions # +import shutil + from celery import shared_task from pathlib import Path from django.conf import settings from django.template.loader import render_to_string +from ietf.utils import log + from .models import Group from .utils import fill_in_charter_info, fill_in_wg_drafts, fill_in_wg_roles @@ -15,7 +19,11 @@ @shared_task def generate_wg_charters_files_task(): areas = Group.objects.filter(type="area", state="active").order_by("name") - groups = Group.objects.filter(type="wg", state="active").exclude(parent=None).order_by("acronym") + groups = ( + Group.objects.filter(type="wg", state="active") + .exclude(parent=None) + .order_by("acronym") + ) for group in groups: fill_in_charter_info(group) fill_in_wg_roles(group) @@ -23,11 +31,31 @@ def generate_wg_charters_files_task(): for area in areas: area.groups = [g for g in groups if g.parent_id == area.pk] charter_path = Path(settings.CHARTER_PATH) - (charter_path / "1wg-charters.txt").write_text( + charters_file = charter_path / "1wg-charters.txt" + charters_file.write_text( render_to_string("group/1wg-charters.txt", {"areas": areas}), encoding="utf8", ) - (charter_path / "1wg-charters-by-acronym.txt").write_text( + charters_by_acronym_file = charter_path / "1wg-charters-by-acronym.txt" + charters_by_acronym_file.write_text( render_to_string("group/1wg-charters-by-acronym.txt", {"groups": groups}), encoding="utf8", ) + + charter_copy_dest = getattr(settings, "CHARTER_COPY_PATH", None) + if charter_copy_dest is not None: + if not Path(charter_copy_dest).is_dir(): + log.log( + f"Error copying 1wg-charter files to {charter_copy_dest}: it does not exist or is not a directory" + ) + else: + try: + shutil.copy2(charters_file, charter_copy_dest) + except IOError as err: + log.log(f"Error copying {charters_file} to {charter_copy_dest}: {err}") + try: + shutil.copy2(charters_by_acronym_file, charter_copy_dest) + except IOError as err: + log.log( + f"Error copying {charters_by_acronym_file} to {charter_copy_dest}: {err}" + ) diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 42171bd1ba..777671db9d 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -17,6 +17,7 @@ from django.conf import settings from django.test import RequestFactory +from django.test.utils import override_settings from django.urls import reverse as urlreverse from django.urls import NoReverseMatch from django.utils import timezone @@ -57,7 +58,7 @@ def pklist(docs): return [ str(doc.pk) for doc in docs.all() ] class GroupPagesTests(TestCase): - settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH'] + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH', 'CHARTER_COPY_PATH'] def test_active_groups(self): area = GroupFactory.create(type_id='area') @@ -170,28 +171,88 @@ def test_wg_charters_by_acronym(self): self.assertEqual(r.status_code, 404) def test_generate_wg_charters_files_task(self): - group = CharterFactory(group__type_id='wg',group__parent=GroupFactory(type_id='area')).group - RoleFactory(group=group,name_id='chair',person=PersonFactory()) - RoleFactory(group=group,name_id='ad',person=PersonFactory()) + group = CharterFactory( + group__type_id="wg", group__parent=GroupFactory(type_id="area") + ).group + RoleFactory(group=group, name_id="chair", person=PersonFactory()) + RoleFactory(group=group, name_id="ad", person=PersonFactory()) chair = Email.objects.filter(role__group=group, role__name="chair")[0] ( Path(settings.CHARTER_PATH) / f"{group.charter.name}-{group.charter.rev}.txt" - ).write_text("This is a charter.") + ).write_text("This is a charter.") generate_wg_charters_files_task() - wg_charters_contents = (Path(settings.CHARTER_PATH) / "1wg-charters.txt").read_text(encoding="utf8") + wg_charters_contents = (Path(settings.CHARTER_PATH) / "1wg-charters.txt").read_text( + encoding="utf8" + ) self.assertIn(group.acronym, wg_charters_contents) self.assertIn(group.name, wg_charters_contents) self.assertIn(group.ad_role().person.plain_name(), wg_charters_contents) self.assertIn(chair.address, wg_charters_contents) self.assertIn("This is a charter.", wg_charters_contents) - - wg_charters_by_acronym_contents = (Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt").read_text(encoding="utf8") + wg_charters_copy = ( + Path(settings.CHARTER_COPY_PATH) / "1wg-charters.txt" + ).read_text(encoding="utf8") + self.assertEqual(wg_charters_copy, wg_charters_contents) + + wg_charters_by_acronym_contents = ( + Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt" + ).read_text(encoding="utf8") self.assertIn(group.acronym, wg_charters_by_acronym_contents) self.assertIn(group.name, wg_charters_by_acronym_contents) self.assertIn(group.ad_role().person.plain_name(), wg_charters_by_acronym_contents) self.assertIn(chair.address, wg_charters_by_acronym_contents) self.assertIn("This is a charter.", wg_charters_by_acronym_contents) + wg_charters_by_acronymcopy = ( + Path(settings.CHARTER_COPY_PATH) / "1wg-charters-by-acronym.txt" + ).read_text(encoding="utf8") + self.assertEqual(wg_charters_by_acronymcopy, wg_charters_by_acronym_contents) + + def test_generate_wg_charters_files_task_without_copy(self): + """Test disabling charter file copying + + Note that these tests mostly check that errors are not encountered. Because they unset + the CHARTER_COPY_PATH or set it to a non-directory destination, it's not clear where to + look to see whether the files were (incorrectly) copied somewhere. + """ + group = CharterFactory( + group__type_id="wg", group__parent=GroupFactory(type_id="area") + ).group + ( + Path(settings.CHARTER_PATH) / f"{group.charter.name}-{group.charter.rev}.txt" + ).write_text("This is a charter.") + + # No directory set + with override_settings(): + del settings.CHARTER_COPY_PATH + generate_wg_charters_files_task() + # n.b., CHARTER_COPY_PATH is set again outside the with block + self.assertTrue((Path(settings.CHARTER_PATH) / "1wg-charters.txt").exists()) + self.assertFalse((Path(settings.CHARTER_COPY_PATH) / "1wg-charters.txt").exists()) + self.assertTrue( + (Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt").exists() + ) + self.assertFalse( + (Path(settings.CHARTER_COPY_PATH) / "1wg-charters-by-acronym.txt").exists() + ) + (Path(settings.CHARTER_PATH) / "1wg-charters.txt").unlink() + (Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt").unlink() + + # Set to a file, not a directory + not_a_dir = Path(settings.CHARTER_COPY_PATH) / "not-a-dir.txt" + not_a_dir.write_text("Not a dir") + with override_settings(CHARTER_COPY_PATH=str(not_a_dir)): + generate_wg_charters_files_task() + # n.b., CHARTER_COPY_PATH is set again outside the with block + self.assertTrue((Path(settings.CHARTER_PATH) / "1wg-charters.txt").exists()) + self.assertFalse((Path(settings.CHARTER_COPY_PATH) / "1wg-charters.txt").exists()) + self.assertTrue( + (Path(settings.CHARTER_PATH) / "1wg-charters-by-acronym.txt").exists() + ) + self.assertFalse( + (Path(settings.CHARTER_COPY_PATH) / "1wg-charters-by-acronym.txt").exists() + ) + self.assertEqual(not_a_dir.read_text(), "Not a dir") def test_chartering_groups(self): group = CharterFactory(group__type_id='wg',group__parent=GroupFactory(type_id='area'),states=[('charter','intrev')]).group diff --git a/ietf/settings.py b/ietf/settings.py index 91c1ef205d..8bb264bd67 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -670,6 +670,7 @@ def skip_unreadable_post(record): INTERNET_DRAFT_PDF_PATH = '/a/www/ietf-datatracker/pdf/' RFC_PATH = '/a/www/ietf-ftp/rfc/' CHARTER_PATH = '/a/ietfdata/doc/charter/' +CHARTER_COPY_PATH = '/a/www/ietf-ftp/ietf' # copy 1wg-charters files here if set BOFREQ_PATH = '/a/ietfdata/doc/bofreq/' CONFLICT_REVIEW_PATH = '/a/ietfdata/doc/conflict-review' STATUS_CHANGE_PATH = '/a/ietfdata/doc/status-change' From c290525b5c7b465fc3f168495e59d33747973799 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Tue, 21 May 2024 23:50:41 -0400 Subject: [PATCH 115/846] ci: use gha cache for docker builds --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99c6c9ab34..5d5233656a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -247,6 +247,8 @@ jobs: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/ietf-tools/datatracker:${{ env.PKG_VERSION }} + cache-from: type=gha + cache-to: type=gha,mode=max - name: Update CHANGELOG id: changelog From d5009ee79438683b0a80a2dd84198cf9c94e7773 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 22 May 2024 19:23:27 -0300 Subject: [PATCH 116/846] feat: discourage URLs in Person names (#7453) * feat: disallow @ and : in name/ascii @ has long been disallowed via validation in the views and "/" has been disallowed for the name field via a validator. This adds @ and : to the validator and applies it to the name, plain, ascii, and ascii_short fields. This should apply everywhere we use a ModelForm. * test: update test * chore: migration --- ...2_alter_historicalperson_ascii_and_more.py | 82 +++++++++++++++++++ ietf/person/models.py | 14 ++-- ietf/person/tests.py | 8 +- 3 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 ietf/person/migrations/0002_alter_historicalperson_ascii_and_more.py diff --git a/ietf/person/migrations/0002_alter_historicalperson_ascii_and_more.py b/ietf/person/migrations/0002_alter_historicalperson_ascii_and_more.py new file mode 100644 index 0000000000..98d5da75d6 --- /dev/null +++ b/ietf/person/migrations/0002_alter_historicalperson_ascii_and_more.py @@ -0,0 +1,82 @@ +# Generated by Django 4.2.13 on 2024-05-22 18:50 + +from django.db import migrations, models +import ietf.person.models + + +class Migration(migrations.Migration): + + dependencies = [ + ("person", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="historicalperson", + name="ascii", + field=models.CharField( + help_text="Name as rendered in ASCII (Latin, unaccented) characters.", + max_length=255, + validators=[ietf.person.models.name_character_validator], + verbose_name="Full Name (ASCII)", + ), + ), + migrations.AlterField( + model_name="historicalperson", + name="ascii_short", + field=models.CharField( + blank=True, + help_text="Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).", + max_length=32, + null=True, + validators=[ietf.person.models.name_character_validator], + verbose_name="Abbreviated Name (ASCII)", + ), + ), + migrations.AlterField( + model_name="historicalperson", + name="plain", + field=models.CharField( + blank=True, + default="", + help_text="Use this if you have a Spanish double surname. Don't use this for nicknames, and don't use it unless you've actually observed that the datatracker shows your name incorrectly.", + max_length=64, + validators=[ietf.person.models.name_character_validator], + verbose_name="Plain Name correction (Unicode)", + ), + ), + migrations.AlterField( + model_name="person", + name="ascii", + field=models.CharField( + help_text="Name as rendered in ASCII (Latin, unaccented) characters.", + max_length=255, + validators=[ietf.person.models.name_character_validator], + verbose_name="Full Name (ASCII)", + ), + ), + migrations.AlterField( + model_name="person", + name="ascii_short", + field=models.CharField( + blank=True, + help_text="Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).", + max_length=32, + null=True, + validators=[ietf.person.models.name_character_validator], + verbose_name="Abbreviated Name (ASCII)", + ), + ), + migrations.AlterField( + model_name="person", + name="plain", + field=models.CharField( + blank=True, + default="", + help_text="Use this if you have a Spanish double surname. Don't use this for nicknames, and don't use it unless you've actually observed that the datatracker shows your name incorrectly.", + max_length=64, + validators=[ietf.person.models.name_character_validator], + verbose_name="Plain Name correction (Unicode)", + ), + ), + ] diff --git a/ietf/person/models.py b/ietf/person/models.py index 0bb2b149e1..0c25152361 100644 --- a/ietf/person/models.py +++ b/ietf/person/models.py @@ -37,8 +37,12 @@ def name_character_validator(value): - if '/' in value: - raise ValidationError('Name cannot contain "/" character.') + disallowed = "@:/" + found = set(disallowed).intersection(value) + if len(found) > 0: + raise ValidationError( + f"This name cannot contain the characters {', '.join(disallowed)}" + ) class Person(models.Model): @@ -48,11 +52,11 @@ class Person(models.Model): # The normal unicode form of the name. This must be # set to the same value as the ascii-form if equal. name = models.CharField("Full Name (Unicode)", max_length=255, db_index=True, help_text="Preferred long form of name.", validators=[name_character_validator]) - plain = models.CharField("Plain Name correction (Unicode)", max_length=64, default='', blank=True, help_text="Use this if you have a Spanish double surname. Don't use this for nicknames, and don't use it unless you've actually observed that the datatracker shows your name incorrectly.") + plain = models.CharField("Plain Name correction (Unicode)", max_length=64, default='', blank=True, help_text="Use this if you have a Spanish double surname. Don't use this for nicknames, and don't use it unless you've actually observed that the datatracker shows your name incorrectly.", validators=[name_character_validator]) # The normal ascii-form of the name. - ascii = models.CharField("Full Name (ASCII)", max_length=255, help_text="Name as rendered in ASCII (Latin, unaccented) characters.") + ascii = models.CharField("Full Name (ASCII)", max_length=255, help_text="Name as rendered in ASCII (Latin, unaccented) characters.", validators=[name_character_validator]) # The short ascii-form of the name. Also in alias table if non-null - ascii_short = models.CharField("Abbreviated Name (ASCII)", max_length=32, null=True, blank=True, help_text="Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).") + ascii_short = models.CharField("Abbreviated Name (ASCII)", max_length=32, null=True, blank=True, help_text="Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).", validators=[name_character_validator]) pronouns_selectable = jsonfield.JSONCharField("Pronouns", max_length=120, blank=True, null=True, default=list ) pronouns_freetext = models.CharField(" ", max_length=30, null=True, blank=True, help_text="Optionally provide your personal pronouns. These will be displayed on your public profile page and alongside your name in Meetecho and, in future, other systems. Select any number of the checkboxes OR provide a custom string up to 30 characters.") biography = models.TextField(blank=True, help_text="Short biography for use on leadership pages. Use plain text or reStructuredText markup.") diff --git a/ietf/person/tests.py b/ietf/person/tests.py index be3cfc0562..e5bc855a29 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -246,9 +246,11 @@ def test_cdn_photo_url_cdn_off(self): self.assertNotIn('cdn-cgi/photo',p.cdn_photo_url()) def test_invalid_name_characters_rejected(self): - slash_person = PersonFactory.build(name='I have a /', user=None) # build() does not save the new object - with self.assertRaises(ValidationError): - slash_person.full_clean() # calls validators (save() does *not*) + for disallowed in "/:@": + # build() does not save the new object + person_with_bad_name = PersonFactory.build(name=f"I have a {disallowed}", user=None) + with self.assertRaises(ValidationError, msg=f"Name with a {disallowed} char should be rejected"): + person_with_bad_name.full_clean() # calls validators (save() does *not*) class PersonUtilsTests(TestCase): From 720f31b6ba53ec44353e0794c67b21a9216c2853 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 23 May 2024 10:55:21 -0500 Subject: [PATCH 117/846] feat: Add disclaimer banner for unadopted I-Ds and non-IETF RFCs (#6786) * feat: Add disclaimer banners for unadopted I-Ds and non-IETF RFCs Fixes #6539 * Fixes * Add test * Use BofreqFactory * Fix disclaimer logic * fix: Wording changes from stream owners * fix: Only insert when there isn't a space before or after (#6821) * fix: Only insert when there isn't a space before or after. * Fix @cabo's issue * fix: Remove debug info from template (#6897) Fixes #6895 * fix: remove link to Warren's draft from disclaimer text (#7429) --------- Co-authored-by: Lars Eggert --- ietf/doc/templatetags/ietf_filters.py | 25 +++++++++++++++++ ietf/doc/templatetags/tests_ietf_filters.py | 31 +++++++++++++++++++-- ietf/static/js/ietf.js | 2 +- ietf/templates/doc/disclaimer.html | 28 +++++++++++++++++++ ietf/templates/doc/document_draft.html | 1 + ietf/templates/doc/document_info.html | 5 +++- ietf/templates/doc/document_rfc.html | 1 + 7 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 ietf/templates/doc/disclaimer.html diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 35c79ac28d..35f9f91b43 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -933,3 +933,28 @@ def url_for_path(path): return f"{settings.IETF_ID_ARCHIVE_URL}{path.name}" else: return "#" + + +@register.filter +def is_in_stream(doc): + """ + Check if the doc is in one of the states in it stream that + indicate that is actually adopted, i.e., part of the stream. + (There are various "candidate" states that necessitate this + filter.) + """ + if not doc.stream: + return False + stream = doc.stream.slug + state = doc.get_state_slug(f"draft-stream-{doc.stream.slug}") + if not state: + return True + if stream == "ietf": + return state not in ["wg-cand", "c-adopt"] + elif stream == "irtf": + return state != "candidat" + elif stream == "iab": + return state not in ["candidat", "diff-org"] + elif stream == "editorial": + return True + return False diff --git a/ietf/doc/templatetags/tests_ietf_filters.py b/ietf/doc/templatetags/tests_ietf_filters.py index 72796abeb2..f018b7d9b3 100644 --- a/ietf/doc/templatetags/tests_ietf_filters.py +++ b/ietf/doc/templatetags/tests_ietf_filters.py @@ -7,9 +7,20 @@ IndividualDraftFactory, CharterFactory, NewRevisionDocEventFactory, + StatusChangeFactory, + RgDraftFactory, + EditorialDraftFactory, + WgDraftFactory, + ConflictReviewFactory, + BofreqFactory, + StatementFactory, ) from ietf.doc.models import DocEvent -from ietf.doc.templatetags.ietf_filters import urlize_ietf_docs, is_valid_url +from ietf.doc.templatetags.ietf_filters import ( + urlize_ietf_docs, + is_valid_url, + is_in_stream, +) from ietf.person.models import Person from ietf.utils.test_utils import TestCase @@ -19,13 +30,28 @@ class IetfFiltersTests(TestCase): + def test_is_in_stream(self): + for draft in [ + IndividualDraftFactory(), + CharterFactory(), + StatusChangeFactory(), + ConflictReviewFactory(), + StatementFactory(), + BofreqFactory(), + ]: + self.assertFalse(is_in_stream(draft)) + for draft in [RgDraftFactory(), WgDraftFactory(), EditorialDraftFactory()]: + self.assertTrue(is_in_stream(draft)) + for stream in ["iab", "ietf", "irtf", "ise", "editorial"]: + self.assertTrue(is_in_stream(IndividualDraftFactory(stream_id=stream))) + def test_is_valid_url(self): cases = [(settings.IDTRACKER_BASE_URL, True), ("not valid", False)] for url, result in cases: self.assertEqual(is_valid_url(url), result) def test_urlize_ietf_docs(self): - rfc = WgRfcFactory(rfc_number=123456,std_level_id="bcp") + rfc = WgRfcFactory(rfc_number=123456, std_level_id="bcp") rfc.save_with_history( [ DocEvent.objects.create( @@ -57,7 +83,6 @@ def test_urlize_ietf_docs(self): cases = [ ("no change", "no change"), - # TODO: rework subseries when we add them # ("bCp123456", 'bCp123456'), # ("Std 00123456", 'Std 00123456'), diff --git a/ietf/static/js/ietf.js b/ietf/static/js/ietf.js index 215d80553c..74fd39a85f 100644 --- a/ietf/static/js/ietf.js +++ b/ietf/static/js/ietf.js @@ -57,7 +57,7 @@ $(document) var text = $(this) .text(); // insert some at strategic places - var newtext = text.replace(/([@._+])/g, "$1"); + var newtext = text.replace(/(\S)([@._+])(\S)/g, "$1$2$3"); if (newtext === text) { return; } diff --git a/ietf/templates/doc/disclaimer.html b/ietf/templates/doc/disclaimer.html new file mode 100644 index 0000000000..31ce6c397e --- /dev/null +++ b/ietf/templates/doc/disclaimer.html @@ -0,0 +1,28 @@ +{# Copyright The IETF Trust 2016-2023, All Rights Reserved #} +{% load origin %} +{% load ietf_filters %} +{% origin %} +{% if doc.type_id == "rfc" %} + {% if doc.stream.slug != "ietf" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} + + {% endif %} +{% elif doc|is_in_stream %} + {% if doc.stream.slug != "ietf" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} + + {% endif %} +{% else %} + +{% endif %} \ No newline at end of file diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index 0dc64e9f3a..befbc759f1 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -27,6 +27,7 @@ {% origin %} {{ top|safe }} {% include "doc/revisions_list.html" with document_html=document_html %} + {% include "doc/disclaimer.html" with document_html=document_html %}
    {% if doc.rev != latest_rev %}
    The information below is for an old version of the document.
    diff --git a/ietf/templates/doc/document_info.html b/ietf/templates/doc/document_info.html index e30656e165..97cd49cf7e 100644 --- a/ietf/templates/doc/document_info.html +++ b/ietf/templates/doc/document_info.html @@ -63,7 +63,7 @@ {% if doc.became_rfc %} This is an older version of an Internet-Draft that was ultimately published as {{doc.became_rfc.name|prettystdname}}. {% elif snapshot and doc.rev != latest_rev %} - This is an older version of an Internet-Draft whose latest revision state is "{{ doc.doc.get_state }}". + This is an older version of an Internet-Draft whose latest revision state is "{{ doc.doc.get_state }}". {% else %} {% if snapshot and doc.rev == latest_rev %}{{ doc.doc.get_state }}{% else %}{{ doc.get_state }}{% endif %} Internet-Draft {% if submission %}({{ submission|safe }}){% endif %} @@ -75,6 +75,9 @@ Expired & archived {% endif %} + {% if document_html %} + {% include "doc/disclaimer.html" with document_html=document_html %} + {% endif %} {% if document_html %} diff --git a/ietf/templates/doc/document_rfc.html b/ietf/templates/doc/document_rfc.html index b25d434de9..7612ef8910 100644 --- a/ietf/templates/doc/document_rfc.html +++ b/ietf/templates/doc/document_rfc.html @@ -22,6 +22,7 @@ {% block content %} {% origin %} {{ top|safe }} + {% include "doc/disclaimer.html" with document_html=document_html %}
    {% include "doc/document_info.html" %} From a1a30974ea0074a78648e6f74b4a8e0c4ee87a95 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 24 May 2024 11:29:42 -0300 Subject: [PATCH 118/846] fix: compare ext with leading '.' (#7458) This allows an exception to be raised if submission files are missing, leading to a server error. That's not pretty, but is better than ignoring the fail. --- ietf/submit/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index a19c42ecf8..770352b4cd 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -661,7 +661,7 @@ def move_files_to_repository(submission): os.link(dest, ftp_dest) elif dest.exists(): log.log("Intended to move '%s' to '%s', but found source missing while destination exists.") - elif ext in submission.file_types.split(','): + elif f".{ext}" in submission.file_types.split(','): raise ValueError("Intended to move '%s' to '%s', but found source and destination missing.") From 1a2996e5f6fc9440a0df96dba5d64b9667cbfd04 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 24 May 2024 11:30:01 -0300 Subject: [PATCH 119/846] feat: expire submissions after 14 days (#7461) * feat: expire submissions after 14 days * test: update test_cancel_stale_submissions --- ietf/settings.py | 3 +++ ietf/submit/tasks.py | 19 ++++++++++++++++-- ietf/submit/tests.py | 47 ++++++++++++++++++++++++++++++++++++-------- 3 files changed, 59 insertions(+), 10 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index 8bb264bd67..95a8ad4e45 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -817,6 +817,9 @@ def skip_unreadable_post(record): # Max time to allow for validation before a submission is subject to cancellation IDSUBMIT_MAX_VALIDATION_TIME = datetime.timedelta(minutes=20) +# Age at which a submission expires if not posted +IDSUBMIT_EXPIRATION_AGE = datetime.timedelta(days=14) + IDSUBMIT_MANUAL_STAGING_DIR = '/tmp/' IDSUBMIT_FILE_TYPES = ( diff --git a/ietf/submit/tasks.py b/ietf/submit/tasks.py index 382bff7fae..9a13268bce 100644 --- a/ietf/submit/tasks.py +++ b/ietf/submit/tasks.py @@ -37,19 +37,34 @@ def process_and_accept_uploaded_submission_task(submission_id): @shared_task def cancel_stale_submissions(): now = timezone.now() - stale_submissions = Submission.objects.filter( + # first check for submissions gone stale awaiting validation + stale_unvalidated_submissions = Submission.objects.filter( state_id='validating', ).annotate( submitted_at=Min('submissionevent__time'), ).filter( submitted_at__lt=now - settings.IDSUBMIT_MAX_VALIDATION_TIME, ) - for subm in stale_submissions: + for subm in stale_unvalidated_submissions: age = now - subm.submitted_at log.log(f'Canceling stale submission (id={subm.id}, age={age})') cancel_submission(subm) create_submission_event(None, subm, 'Submission canceled: validation checks took too long') + # now check for expired submissions + expired_submissions = Submission.objects.exclude( + state_id__in=["posted", "cancel"], + ).annotate( + submitted_at=Min("submissionevent__time"), + ).filter( + submitted_at__lt=now - settings.IDSUBMIT_EXPIRATION_AGE, + ) + for subm in expired_submissions: + age = now - subm.submitted_at + log.log(f'Canceling expired submission (id={subm.id}, age={age})') + cancel_submission(subm) + create_submission_event(None, subm, 'Submission canceled: expired without being posted') + @shared_task(bind=True) def poke(self): diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 58a47aef8b..618f237e4d 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -42,7 +42,7 @@ from ietf.group.utils import setup_default_community_list_for_group from ietf.meeting.models import Meeting from ietf.meeting.factories import MeetingFactory -from ietf.name.models import FormalLanguageName +from ietf.name.models import DraftSubmissionStateName, FormalLanguageName from ietf.person.models import Person from ietf.person.factories import UserFactory, PersonFactory, EmailFactory from ietf.submit.factories import SubmissionFactory, SubmissionExtResourceFactory @@ -3136,28 +3136,59 @@ def test_status_of_validating_submission(self): self.assertContains(r, s.name) self.assertContains(r, 'This submission is being processed and validated.', status_code=200) - @override_settings(IDSUBMIT_MAX_VALIDATION_TIME=datetime.timedelta(minutes=30)) + @override_settings( + IDSUBMIT_MAX_VALIDATION_TIME=datetime.timedelta(minutes=30), + IDSUBMIT_EXPIRATION_AGE=datetime.timedelta(minutes=90), + ) def test_cancel_stale_submissions(self): + # these will be lists of (Submission, "state_id") pairs + submissions_to_skip = [] + submissions_to_cancel = [] + + # submissions in the validating state fresh_submission = SubmissionFactory(state_id='validating') fresh_submission.submissionevent_set.create( desc='fake created event', time=timezone.now() - datetime.timedelta(minutes=15), ) + submissions_to_skip.append((fresh_submission, "validating")) + stale_submission = SubmissionFactory(state_id='validating') stale_submission.submissionevent_set.create( desc='fake created event', time=timezone.now() - datetime.timedelta(minutes=30, seconds=1), ) + submissions_to_cancel.append((stale_submission, "validating")) + + # submissions in other states + for state in DraftSubmissionStateName.objects.filter(used=True).exclude(slug="validating"): + to_skip = SubmissionFactory(state_id=state.pk) + to_skip.submissionevent_set.create( + desc="fake created event", + time=timezone.now() - datetime.timedelta(minutes=45), # would be canceled if it were "validating" + ) + submissions_to_skip.append((to_skip, state.pk)) + to_expire = SubmissionFactory(state_id=state.pk) + to_expire.submissionevent_set.create( + desc="fake created event", + time=timezone.now() - datetime.timedelta(minutes=90, seconds=1), + ) + if state.pk in ["posted", "cancel"]: + submissions_to_skip.append((to_expire, state.pk)) # these ones should not be expired regardless of age + else: + submissions_to_cancel.append(((to_expire, state.pk))) cancel_stale_submissions() - fresh_submission = Submission.objects.get(pk=fresh_submission.pk) - self.assertEqual(fresh_submission.state_id, 'validating') - self.assertEqual(fresh_submission.submissionevent_set.count(), 1) + for _subm, original_state_id in submissions_to_skip: + subm = Submission.objects.get(pk=_subm.pk) + self.assertEqual(subm.state_id, original_state_id) + self.assertEqual(subm.submissionevent_set.count(), 1) - stale_submission = Submission.objects.get(pk=stale_submission.pk) - self.assertEqual(stale_submission.state_id, 'cancel') - self.assertEqual(stale_submission.submissionevent_set.count(), 2) + for _subm, _ in submissions_to_cancel: + subm = Submission.objects.get(pk=_subm.pk) + self.assertEqual(subm.state_id, "cancel") + self.assertEqual(subm.submissionevent_set.count(), 2) class ApiSubmitTests(BaseSubmitTestCase): From b951c80a4d67801f44485bd4600f915738b87b9f Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 24 May 2024 16:34:41 -0400 Subject: [PATCH 120/846] chore: update app-init.sh with linux host chown check --- docker/scripts/app-init.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker/scripts/app-init.sh b/docker/scripts/app-init.sh index c8286b2429..29fe9a9138 100755 --- a/docker/scripts/app-init.sh +++ b/docker/scripts/app-init.sh @@ -2,6 +2,12 @@ WORKSPACEDIR="/workspace" +# Handle Linux host mounting the workspace dir as root +if [ ! -O "$WORKSPACEDIR/ietf" ]; then + sudo chown -R dev:dev $WORKSPACEDIR +fi + +# Start rsyslog service sudo service rsyslog start &>/dev/null # Add /workspace as a safe git directory From 96902bf3b89783606a8037789565e1006f391038 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 24 May 2024 16:41:19 -0400 Subject: [PATCH 121/846] chore: fix app-init.sh chown check --- docker/scripts/app-init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/scripts/app-init.sh b/docker/scripts/app-init.sh index 29fe9a9138..b96b88f1f5 100755 --- a/docker/scripts/app-init.sh +++ b/docker/scripts/app-init.sh @@ -3,7 +3,7 @@ WORKSPACEDIR="/workspace" # Handle Linux host mounting the workspace dir as root -if [ ! -O "$WORKSPACEDIR/ietf" ]; then +if [ ! -O "${WORKSPACEDIR}/ietf" ]; then sudo chown -R dev:dev $WORKSPACEDIR fi From 3c13db45fd6b8eaaf88427d1da01761abab4e5de Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 24 May 2024 18:36:58 -0300 Subject: [PATCH 122/846] fix: validate form in login() (#7435) * fix: validate form in login() * refactor: custom LoginView subclass for logins Preserves old behavior, but avoids some hacks. * test: reverse with strings, not view refs * chore: remove unused imports * fix: restore logout() call --- ietf/ietfauth/tests.py | 53 +++++++++++------------- ietf/ietfauth/urls.py | 2 +- ietf/ietfauth/views.py | 94 ++++++++++++++++++++++-------------------- 3 files changed, 75 insertions(+), 74 deletions(-) diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py index 29afa56d78..56b4638f6b 100644 --- a/ietf/ietfauth/tests.py +++ b/ietf/ietfauth/tests.py @@ -50,8 +50,6 @@ from ietf.utils.timezone import date_today -import ietf.ietfauth.views - if os.path.exists(settings.HTPASSWD_COMMAND): skip_htpasswd_command = False skip_message = "" @@ -83,30 +81,30 @@ def tearDown(self): super().tearDown() def test_index(self): - self.assertEqual(self.client.get(urlreverse(ietf.ietfauth.views.index)).status_code, 200) + self.assertEqual(self.client.get(urlreverse("ietf.ietfauth.views.index")).status_code, 200) def test_login_and_logout(self): PersonFactory(user__username='plain') # try logging in without a next - r = self.client.get(urlreverse(ietf.ietfauth.views.login)) + r = self.client.get(urlreverse("ietf.ietfauth.views.login")) self.assertEqual(r.status_code, 200) - r = self.client.post(urlreverse(ietf.ietfauth.views.login), {"username":"plain", "password":"plain+password"}) + r = self.client.post(urlreverse("ietf.ietfauth.views.login"), {"username":"plain", "password":"plain+password"}) self.assertEqual(r.status_code, 302) - self.assertEqual(urlsplit(r["Location"])[2], urlreverse(ietf.ietfauth.views.profile)) + self.assertEqual(urlsplit(r["Location"])[2], urlreverse("ietf.ietfauth.views.profile")) # try logging out r = self.client.post(urlreverse('django.contrib.auth.views.logout'), {}) self.assertEqual(r.status_code, 200) self.assertNotContains(r, "accounts/logout") - r = self.client.get(urlreverse(ietf.ietfauth.views.profile)) + r = self.client.get(urlreverse("ietf.ietfauth.views.profile")) self.assertEqual(r.status_code, 302) - self.assertEqual(urlsplit(r["Location"])[2], urlreverse(ietf.ietfauth.views.login)) + self.assertEqual(urlsplit(r["Location"])[2], urlreverse("ietf.ietfauth.views.login")) # try logging in with a next - r = self.client.post(urlreverse(ietf.ietfauth.views.login) + "?next=/foobar", {"username":"plain", "password":"plain+password"}) + r = self.client.post(urlreverse("ietf.ietfauth.views.login") + "?next=/foobar", {"username":"plain", "password":"plain+password"}) self.assertEqual(r.status_code, 302) self.assertEqual(urlsplit(r["Location"])[2], "/foobar") @@ -137,19 +135,19 @@ def _test_login(url): # try with a trivial next _test_login("/") # try with a next that requires login - _test_login(urlreverse(ietf.ietfauth.views.profile)) + _test_login(urlreverse("ietf.ietfauth.views.profile")) def test_login_with_different_email(self): person = PersonFactory(user__username='plain') email = EmailFactory(person=person) # try logging in without a next - r = self.client.get(urlreverse(ietf.ietfauth.views.login)) + r = self.client.get(urlreverse("ietf.ietfauth.views.login")) self.assertEqual(r.status_code, 200) - r = self.client.post(urlreverse(ietf.ietfauth.views.login), {"username":email, "password":"plain+password"}) + r = self.client.post(urlreverse("ietf.ietfauth.views.login"), {"username":email, "password":"plain+password"}) self.assertEqual(r.status_code, 302) - self.assertEqual(urlsplit(r["Location"])[2], urlreverse(ietf.ietfauth.views.profile)) + self.assertEqual(urlsplit(r["Location"])[2], urlreverse("ietf.ietfauth.views.profile")) def extract_confirm_url(self, confirm_email): # dig out confirm_email link @@ -176,7 +174,7 @@ def username_in_htpasswd_file(self, username): # For the lowered barrier to account creation period, we are disabling this kind of failure # def test_create_account_failure(self): - # url = urlreverse(ietf.ietfauth.views.create_account) + # url = urlreverse("ietf.ietfauth.views.create_account") # # get # r = self.client.get(url) @@ -195,7 +193,7 @@ def test_create_account_failure_template(self): self.assertTrue("Additional Assistance Required" in r) def register(self, email): - url = urlreverse(ietf.ietfauth.views.create_account) + url = urlreverse("ietf.ietfauth.views.create_account") # register email empty_outbox() @@ -240,7 +238,7 @@ def test_create_existing_account(self): note = get_payload_text(outbox[-1]) self.assertIn(email, note) self.assertIn("A datatracker account for that email already exists", note) - self.assertIn(urlreverse(ietf.ietfauth.views.password_reset), note) + self.assertIn(urlreverse("ietf.ietfauth.views.password_reset"), note) def test_ietfauth_profile(self): EmailFactory(person__user__username='plain') @@ -249,7 +247,7 @@ def test_ietfauth_profile(self): username = "plain" email_address = Email.objects.filter(person__user__username=username).first().address - url = urlreverse(ietf.ietfauth.views.profile) + url = urlreverse("ietf.ietfauth.views.profile") login_testing_unauthorized(self, username, url) @@ -400,7 +398,7 @@ def test_ietfauth_profile(self): def test_email_case_insensitive_protection(self): EmailFactory(address="TestAddress@example.net") person = PersonFactory() - url = urlreverse(ietf.ietfauth.views.profile) + url = urlreverse("ietf.ietfauth.views.profile") login_testing_unauthorized(self, person.user.username, url) data = { @@ -441,7 +439,7 @@ def test_nomcom_dressing_on_profile(self): def test_reset_password(self): - url = urlreverse(ietf.ietfauth.views.password_reset) + url = urlreverse("ietf.ietfauth.views.password_reset") email = 'someone@example.com' password = 'foobar' @@ -507,7 +505,7 @@ def test_reset_password(self): self.assertEqual(len(outbox), 1) confirm_url = self.extract_confirm_url(outbox[-1]) - r = self.client.post(urlreverse(ietf.ietfauth.views.login), {'username': email, 'password': password}) + r = self.client.post(urlreverse("ietf.ietfauth.views.login"), {'username': email, 'password': password}) r = self.client.get(confirm_url) self.assertEqual(r.status_code, 404) @@ -589,7 +587,7 @@ def test_review_overview(self): availability="unavailable", ) - url = urlreverse(ietf.ietfauth.views.review_overview) + url = urlreverse("ietf.ietfauth.views.review_overview") login_testing_unauthorized(self, reviewer.user.username, url) @@ -633,10 +631,9 @@ def test_htpasswd_file_with_htpasswd_binary(self): def test_change_password(self): - - chpw_url = urlreverse(ietf.ietfauth.views.change_password) - prof_url = urlreverse(ietf.ietfauth.views.profile) - login_url = urlreverse(ietf.ietfauth.views.login) + chpw_url = urlreverse("ietf.ietfauth.views.change_password") + prof_url = urlreverse("ietf.ietfauth.views.profile") + login_url = urlreverse("ietf.ietfauth.views.login") redir_url = '%s?next=%s' % (login_url, chpw_url) # get without logging in @@ -681,9 +678,9 @@ def test_change_password(self): def test_change_username(self): - chun_url = urlreverse(ietf.ietfauth.views.change_username) - prof_url = urlreverse(ietf.ietfauth.views.profile) - login_url = urlreverse(ietf.ietfauth.views.login) + chun_url = urlreverse("ietf.ietfauth.views.change_username") + prof_url = urlreverse("ietf.ietfauth.views.profile") + login_url = urlreverse("ietf.ietfauth.views.login") redir_url = '%s?next=%s' % (login_url, chun_url) # get without logging in diff --git a/ietf/ietfauth/urls.py b/ietf/ietfauth/urls.py index 30e639ad65..7493fe5c97 100644 --- a/ietf/ietfauth/urls.py +++ b/ietf/ietfauth/urls.py @@ -14,7 +14,7 @@ url(r'^confirmnewemail/(?P[^/]+)/$', views.confirm_new_email), url(r'^create/$', views.create_account), url(r'^create/confirm/(?P[^/]+)/$', views.confirm_account), - url(r'^login/$', views.login), + url(r'^login/$', views.AnyEmailLoginView.as_view(), name="ietf.ietfauth.views.login"), url(r'^logout/$', LogoutView.as_view(), name="django.contrib.auth.views.logout"), url(r'^password/$', views.change_password), url(r'^profile/$', views.profile), diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 8c61b8356a..7c3f72108e 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -45,7 +45,7 @@ from django import forms from django.contrib import messages from django.conf import settings -from django.contrib.auth import update_session_auth_hash, logout, authenticate +from django.contrib.auth import logout, update_session_auth_hash from django.contrib.auth.decorators import login_required from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.hashers import identify_hasher @@ -752,53 +752,57 @@ def change_username(request): return render(request, 'registration/change_username.html', {'form': form}) - -def login(request, extra_context=None): - """ - This login function is a wrapper around django's login() for the purpose - of providing a notification if the user's password has been cleared. The - warning will be triggered if the password field has been set to something - which is not recognized as a valid password hash. +class AnyEmailAuthenticationForm(AuthenticationForm): + """AuthenticationForm that allows any email address as the username + + Also performs a check for a cleared password field and provides a helpful error message + if that applies to the user attempting to log in. """ - - if request.method == "POST": - form = AuthenticationForm(request, data=request.POST) - username = form.data.get('username') - user = User.objects.filter(username__iexact=username).first() # Consider _never_ actually looking for the User username and only looking at Email - if not user: - # try to find user ID from the email address + _unauthenticated_user = None + + def clean_username(self): + username = self.cleaned_data.get("username", None) + if username is None: + raise self.get_invalid_login_error() + user = User.objects.filter(username__iexact=username).first() + if user is None: email = Email.objects.filter(address=username).first() - if email and email.person and email.person.user: - u2 = email.person.user - # be conservative, only accept this if login is valid - if u2: - pw = form.data.get('password') - au = authenticate(request, username=u2.username, password=pw) - if au: - # kludge to change the querydict - q2 = request.POST.copy() - q2['username'] = u2.username - request.POST = q2 - user = u2 - # - if user: - try: - identify_hasher(user.password) + if email and email.person: + user = email.person.user # might be None + if user is None: + raise self.get_invalid_login_error() + self._unauthenticated_user = user # remember this for the clean() method + return user.username + + def clean(self): + if self._unauthenticated_user is not None: + try: + identify_hasher(self._unauthenticated_user.password) except ValueError: - extra_context = {"alert": - "Note: Your password has been cleared because " - "of possible password leakage. " - "Please use the password reset link below " - "to set a new password for your account.", - } - response = LoginView.as_view(extra_context=extra_context)(request) - if isinstance(response, HttpResponseRedirect) and user and user.is_authenticated: - try: - user.person - except Person.DoesNotExist: - logout(request) - response = render(request, 'registration/missing_person.html') - return response + self.add_error( + "password", + 'Your password has been cleared because of possible password leakage. ' + 'Please use the "Forgot your password?" button below to set a new password ' + 'for your account.', + ) + return super().clean() + + +class AnyEmailLoginView(LoginView): + """LoginView that allows any email address as the username + + Redirects to the missing_person page instead of logging in if the user does not have a Person + """ + form_class = AnyEmailAuthenticationForm + + def form_valid(self, form): + """Security check complete. Log the user in if they have a Person.""" + user = form.get_user() # user has authenticated at this point + if not hasattr(user, "person"): + logout(self.request) # should not be logged in yet, but just in case... + return render(self.request, "registration/missing_person.html") + return super().form_valid(form) + @login_required @person_required From 79f858b7d753dff438375376de7148c426147419 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 01:29:35 -0400 Subject: [PATCH 123/846] chore(deps): bump codecov/codecov-action from 4.3.1 to 4.4.1 (#7470) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.1 to 4.4.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4.3.1...v4.4.1) --- updated-dependencies: - dependency-name: codecov/codecov-action 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/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f6d54b14bb..1c44bb6f20 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,7 +59,7 @@ jobs: path: geckodriver.log - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v4.3.1 + uses: codecov/codecov-action@v4.4.1 with: files: coverage.xml From 08e953995a04f8940c75b9bfc2cfad71ee15faee Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 May 2024 12:34:55 -0300 Subject: [PATCH 124/846] feat: better reject null characters in forms (#7472) * feat: subclass ModelMultipleChoiceField to reject nuls * refactor: Use custom ModelMultipleChoiceField * fix: handle value=None --- ietf/doc/views_ballot.py | 3 ++- ietf/doc/views_draft.py | 9 +++++---- ietf/doc/views_review.py | 4 ++-- ietf/doc/views_search.py | 3 ++- ietf/liaisons/forms.py | 8 ++++---- ietf/meeting/forms.py | 12 +++++++++--- ietf/nomcom/forms.py | 9 +++++---- ietf/secr/sreq/forms.py | 5 +++-- ietf/submit/forms.py | 3 ++- ietf/utils/fields.py | 19 ++++++++++++++++++- 10 files changed, 52 insertions(+), 23 deletions(-) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 9b0ccdcead..ff51921569 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -38,6 +38,7 @@ from ietf.message.utils import infer_message from ietf.name.models import BallotPositionName, DocTypeName from ietf.person.models import Person +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.mail import send_mail_text, send_mail_preformatted from ietf.utils.decorators import require_api_key from ietf.utils.response import permission_denied @@ -931,7 +932,7 @@ def approve_ballot(request, name): class ApproveDownrefsForm(forms.Form): - checkboxes = forms.ModelMultipleChoiceField( + checkboxes = ModelMultipleChoiceField( widget = forms.CheckboxSelectMultiple, queryset = RelatedDocument.objects.none(), ) diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index 1deca4503c..30175491da 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -52,6 +52,7 @@ from ietf.utils.mail import send_mail, send_mail_message, on_behalf_of from ietf.utils.textupload import get_cleaned_text_file_content from ietf.utils import log +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.response import permission_denied from ietf.utils.timezone import datetime_today, DEADLINE_TZINFO @@ -390,9 +391,9 @@ def replaces(request, name): )) class SuggestedReplacesForm(forms.Form): - replaces = forms.ModelMultipleChoiceField(queryset=Document.objects.all(), - label="Suggestions", required=False, widget=forms.CheckboxSelectMultiple, - help_text="Select only the documents that are replaced by this document") + replaces = ModelMultipleChoiceField(queryset=Document.objects.all(), + label="Suggestions", required=False, widget=forms.CheckboxSelectMultiple, + help_text="Select only the documents that are replaced by this document") comment = forms.CharField(label="Optional comment", widget=forms.Textarea, required=False, strip=False) def __init__(self, suggested, *args, **kwargs): @@ -1601,7 +1602,7 @@ class ChangeStreamStateForm(forms.Form): new_state = forms.ModelChoiceField(queryset=State.objects.filter(used=True), label='State' ) weeks = forms.IntegerField(label='Expected weeks in state',required=False) comment = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional comment for the document history.", strip=False) - tags = forms.ModelMultipleChoiceField(queryset=DocTagName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False) + tags = ModelMultipleChoiceField(queryset=DocTagName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False) def __init__(self, *args, **kwargs): doc = kwargs.pop("doc") diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index 646b51b09c..bb9e56742d 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -52,7 +52,7 @@ from ietf.utils.textupload import get_cleaned_text_file_content from ietf.utils.mail import send_mail_message from ietf.mailtrigger.utils import gather_address_lists -from ietf.utils.fields import MultiEmailField +from ietf.utils.fields import ModelMultipleChoiceField, MultiEmailField from ietf.utils.http import is_ajax from ietf.utils.response import permission_denied from ietf.utils.timezone import date_today, DEADLINE_TZINFO @@ -68,7 +68,7 @@ def clean_doc_revision(doc, rev): return rev class RequestReviewForm(forms.ModelForm): - team = forms.ModelMultipleChoiceField(queryset=Group.objects.all(), widget=forms.CheckboxSelectMultiple) + team = ModelMultipleChoiceField(queryset=Group.objects.all(), widget=forms.CheckboxSelectMultiple) deadline = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={ "autoclose": "1", "start-date": "+0d" }) class Meta: diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index 422e38f7dd..2ef4ee83e6 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -69,6 +69,7 @@ from ietf.person.models import Person from ietf.person.utils import get_active_ads from ietf.utils.draft_search import normalize_draftname +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.log import log from ietf.doc.utils_search import prepare_document_table, doc_type, doc_state, doc_type_name, AD_WORKLOAD from ietf.ietfauth.utils import has_role @@ -100,7 +101,7 @@ class SearchForm(forms.Form): ("ad", "AD"), ("-ad", "AD (desc)"), ), required=False, widget=forms.HiddenInput) - doctypes = forms.ModelMultipleChoiceField(queryset=DocTypeName.objects.filter(used=True).exclude(slug__in=('draft', 'rfc', 'bcp', 'std', 'fyi', 'liai-att')).order_by('name'), required=False) + doctypes = ModelMultipleChoiceField(queryset=DocTypeName.objects.filter(used=True).exclude(slug__in=('draft', 'rfc', 'bcp', 'std', 'fyi', 'liai-att')).order_by('name'), required=False) def __init__(self, *args, **kwargs): super(SearchForm, self).__init__(*args, **kwargs) diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index 0a6974e5bb..1d91041b25 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -32,7 +32,7 @@ from ietf.person.models import Email from ietf.person.fields import SearchableEmailField from ietf.doc.models import Document -from ietf.utils.fields import DatepickerDateField +from ietf.utils.fields import DatepickerDateField, ModelMultipleChoiceField from ietf.utils.timezone import date_today, datetime_from_date, DEADLINE_TZINFO from functools import reduce @@ -200,7 +200,7 @@ def get_results(self): return results -class CustomModelMultipleChoiceField(forms.ModelMultipleChoiceField): +class CustomModelMultipleChoiceField(ModelMultipleChoiceField): '''If value is a QuerySet, return it as is (for use in widget.render)''' def prepare_value(self, value): if isinstance(value, QuerySetAny): @@ -215,12 +215,12 @@ def prepare_value(self, value): class LiaisonModelForm(forms.ModelForm): '''Specify fields which require a custom widget or that are not part of the model. ''' - from_groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),label='Groups',required=False) + from_groups = ModelMultipleChoiceField(queryset=Group.objects.all(),label='Groups',required=False) from_groups.widget.attrs["class"] = "select2-field" from_groups.widget.attrs['data-minimum-input-length'] = 0 from_contact = forms.EmailField() # type: Union[forms.EmailField, SearchableEmailField] to_contacts = forms.CharField(label="Contacts", widget=forms.Textarea(attrs={'rows':'3', }), strip=False) - to_groups = forms.ModelMultipleChoiceField(queryset=Group.objects,label='Groups',required=False) + to_groups = ModelMultipleChoiceField(queryset=Group.objects,label='Groups',required=False) to_groups.widget.attrs["class"] = "select2-field" to_groups.widget.attrs['data-minimum-input-length'] = 0 deadline = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1" }, label='Deadline', required=True) diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index 2cec669db9..b31ffb6cd7 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -28,7 +28,13 @@ from ietf.message.models import Message from ietf.name.models import TimeSlotTypeName, SessionPurposeName from ietf.person.models import Person -from ietf.utils.fields import DatepickerDateField, DurationField, MultiEmailField, DatepickerSplitDateTimeWidget +from ietf.utils.fields import ( + DatepickerDateField, + DatepickerSplitDateTimeWidget, + DurationField, + ModelMultipleChoiceField, + MultiEmailField, +) from ietf.utils.validators import ( validate_file_size, validate_mime_type, validate_file_extension, validate_no_html_frame) @@ -551,7 +557,7 @@ class SwapTimeslotsForm(forms.Form): queryset=TimeSlot.objects.none(), # default to none, fill in when we have a meeting widget=forms.TextInput, ) - rooms = forms.ModelMultipleChoiceField( + rooms = ModelMultipleChoiceField( required=True, queryset=Room.objects.none(), # default to none, fill in when we have a meeting widget=CsvModelPkInput, @@ -617,7 +623,7 @@ class TimeSlotCreateForm(forms.Form): ) duration = TimeSlotDurationField() show_location = forms.BooleanField(required=False, initial=True) - locations = forms.ModelMultipleChoiceField( + locations = ModelMultipleChoiceField( queryset=Room.objects.none(), widget=forms.CheckboxSelectMultiple, ) diff --git a/ietf/nomcom/forms.py b/ietf/nomcom/forms.py index 7db5009121..5987b22637 100644 --- a/ietf/nomcom/forms.py +++ b/ietf/nomcom/forms.py @@ -21,6 +21,7 @@ from ietf.person.models import Email from ietf.person.fields import (SearchableEmailField, SearchableEmailsField, SearchablePersonField, SearchablePersonsField ) +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.mail import send_mail from ietf.mailtrigger.utils import gather_address_lists @@ -719,9 +720,9 @@ def set_nomcom(self, nomcom, person, instances=None): required= self.feedback_type.slug != 'comment', help_text='Hold down "Control", or "Command" on a Mac, to select more than one.') if self.feedback_type.slug == 'comment': - self.fields['topic'] = forms.ModelMultipleChoiceField(queryset=self.nomcom.topic_set.all(), - help_text='Hold down "Control" or "Command" on a Mac, to select more than one.', - required=False,) + self.fields['topic'] = ModelMultipleChoiceField(queryset=self.nomcom.topic_set.all(), + help_text='Hold down "Control" or "Command" on a Mac, to select more than one.', + required=False,) else: self.fields['position'] = forms.ModelChoiceField(queryset=Position.objects.get_by_nomcom(self.nomcom).filter(is_open=True), label="Position") self.fields['searched_email'] = SearchableEmailField(only_users=False,help_text="Try to find the candidate you are classifying with this field first. Only use the name and email fields below if this search does not find the candidate.",label="Candidate",required=False) @@ -847,7 +848,7 @@ class Meta: class NominationResponseCommentForm(forms.Form): comments = forms.CharField(widget=forms.Textarea,required=False,help_text="Any comments provided will be encrypted and will only be visible to the NomCom.", strip=False) -class NomcomVolunteerMultipleChoiceField(forms.ModelMultipleChoiceField): +class NomcomVolunteerMultipleChoiceField(ModelMultipleChoiceField): def label_from_instance(self, obj): year = obj.year() return f'Volunteer for the {year}/{year+1} Nominating Committee' diff --git a/ietf/secr/sreq/forms.py b/ietf/secr/sreq/forms.py index 1100bc7c8a..4a0f449b2a 100644 --- a/ietf/secr/sreq/forms.py +++ b/ietf/secr/sreq/forms.py @@ -13,6 +13,7 @@ from ietf.meeting.models import ResourceAssociation, Constraint from ietf.person.fields import SearchablePersonsField from ietf.person.models import Person +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.html import clean_text_field from ietf.utils import log @@ -57,7 +58,7 @@ def __init__(self,*args,**kwargs): self.fields['group'].widget.choices = choices -class NameModelMultipleChoiceField(forms.ModelMultipleChoiceField): +class NameModelMultipleChoiceField(ModelMultipleChoiceField): def label_from_instance(self, name): return name.desc @@ -159,7 +160,7 @@ def __init__(self, group, meeting, data=None, *args, **kwargs): self.fields['resources'].widget = forms.MultipleHiddenInput() self.fields['timeranges'].widget = forms.MultipleHiddenInput() # and entirely replace bethere - no need to support searching if input is hidden - self.fields['bethere'] = forms.ModelMultipleChoiceField( + self.fields['bethere'] = ModelMultipleChoiceField( widget=forms.MultipleHiddenInput, required=False, queryset=Person.objects.all(), ) diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py index f857ac9fd8..4e5644b36e 100644 --- a/ietf/submit/forms.py +++ b/ietf/submit/forms.py @@ -39,6 +39,7 @@ from ietf.submit.parsers.xml_parser import XMLParser from ietf.utils import log from ietf.utils.draft import PlaintextDraft +from ietf.utils.fields import ModelMultipleChoiceField from ietf.utils.text import normalize_text from ietf.utils.timezone import date_today from ietf.utils.xmldraft import InvalidXMLError, XMLDraft, XMLParseError @@ -793,7 +794,7 @@ class EditSubmissionForm(forms.ModelForm): rev = forms.CharField(label='Revision', max_length=2, required=True) document_date = forms.DateField(required=True) pages = forms.IntegerField(required=True) - formal_languages = forms.ModelMultipleChoiceField(queryset=FormalLanguageName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False) + formal_languages = ModelMultipleChoiceField(queryset=FormalLanguageName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False) abstract = forms.CharField(widget=forms.Textarea, required=True, strip=False) note = forms.CharField(label=mark_safe('Comment to the Secretariat'), widget=forms.Textarea, required=False, strip=False) diff --git a/ietf/utils/fields.py b/ietf/utils/fields.py index 95d8a2aa7e..3e6f56d45e 100644 --- a/ietf/utils/fields.py +++ b/ietf/utils/fields.py @@ -14,7 +14,7 @@ from django import forms from django.db import models # pyflakes:ignore -from django.core.validators import validate_email +from django.core.validators import ProhibitNullCharactersValidator, validate_email from django.core.exceptions import ValidationError from django.utils.dateparse import parse_duration @@ -353,3 +353,20 @@ def update_dimension_fields(self, *args, **kwargs): super().update_dimension_fields(*args, **kwargs) except FileNotFoundError: pass # don't do anything if the file has gone missing + + +class ModelMultipleChoiceField(forms.ModelMultipleChoiceField): + """ModelMultipleChoiceField that rejects null characters cleanly""" + validate_no_nulls = ProhibitNullCharactersValidator() + + def clean(self, value): + try: + for item in value: + self.validate_no_nulls(item) + except TypeError: + # A TypeError probably means value is not iterable, which most commonly comes up + # with None as a value. If it's something more exotic, we don't know how to test + # for null characters anyway. Either way, trust the superclass clean() method to + # handle it. + pass + return super().clean(value) From 39d471d3ac63f2e90b842847a682ea47be3df4e0 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 28 May 2024 10:35:29 -0500 Subject: [PATCH 125/846] fix: better chatlog and polls links (#7466) --- ietf/templates/meeting/session_details_panel.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/templates/meeting/session_details_panel.html b/ietf/templates/meeting/session_details_panel.html index df0f57cae0..d053ba1c1c 100644 --- a/ietf/templates/meeting/session_details_panel.html +++ b/ietf/templates/meeting/session_details_panel.html @@ -137,8 +137,8 @@

    Chatlog and polls

    {% url 'ietf.doc.views_doc.document_main' name=pres.document.name as url %} {% endfor %} From 1cdfd97937bfa8e2447d8876642749a37ebcf894 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 May 2024 15:22:27 -0300 Subject: [PATCH 126/846] fix: abort if output-dir is not a dir (#7478) --- ietf/bin/aliases-from-json.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ietf/bin/aliases-from-json.py b/ietf/bin/aliases-from-json.py index 72fcb469f7..a0c383a1ac 100644 --- a/ietf/bin/aliases-from-json.py +++ b/ietf/bin/aliases-from-json.py @@ -61,6 +61,13 @@ def generate_files(records, adest, vdest, postconfirm, vdomain): shutil.move(vpath, vdest) +def directory_path(val): + p = Path(val) + if p.is_dir(): + return p + else: + raise argparse.ArgumentTypeError(f"{p} is not a directory") + if __name__ == "__main__": parser = argparse.ArgumentParser( description="Convert a JSON stream of draft alias definitions into alias / virtual alias files." @@ -73,7 +80,7 @@ def generate_files(records, adest, vdest, postconfirm, vdomain): parser.add_argument( "--output-dir", default="./", - type=Path, + type=directory_path, help="Destination for output files.", ) parser.add_argument( @@ -87,8 +94,6 @@ def generate_files(records, adest, vdest, postconfirm, vdomain): help=f"Virtual domain (defaults to {VDOMAIN}_", ) args = parser.parse_args() - if not args.output_dir.is_dir(): - sys.stderr.write("Error: output-dir must be a directory") data = json.load(sys.stdin) generate_files( data["aliases"], From f01ef0c9157988cf62e625da0cad06cb7ddb631a Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Wed, 29 May 2024 14:47:49 +1200 Subject: [PATCH 127/846] Adding Linux Docker Desktop install docs --- docker/README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index bc9af7c212..2e4b50d8ff 100644 --- a/docker/README.md +++ b/docker/README.md @@ -6,7 +6,7 @@ > See the [IETF Tools Windows Dev guide](https://github.com/ietf-tools/.github/blob/main/docs/windows-dev.md) on how to get started when using Windows. -2. On Linux, you must also install [Docker Compose](https://docs.docker.com/compose/install/). Docker Desktop for Mac and Windows already include Docker Compose. +2. On Linux, you must [install Docker Compose manually](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually) and not install Docker Desktop. On Mac and Windows install Docker Desktop which already includes Docker Compose. 2. If you have a copy of the datatracker code checked out already, simply `cd` to the top-level directory. @@ -183,3 +183,18 @@ The content of the source files will be copied into the target `.ics` files. Mak ### Missing assets in the data folder Because including all assets in the image would significantly increase the file size, they are not included by default. You can however fetch them by running the **Fetch assets via rsync** task in VS Code or run manually the script `docker/scripts/app-rsync-extras.sh` + + +### Linux file permissions leaking to the host system + +If on the host filesystem you have permissions that look like this, + +```bash +$ ls -la +total 4624 +drwxrwxr-x 2 100999 100999 4096 May 25 07:56 bin +drwxrwxr-x 5 100999 100999 4096 May 25 07:56 client +(etc...) +``` + +Try uninstalling Docker Desktop and installing Docker Compose manually. The Docker Compose bundled with Docker Desktop is incompatible with our software. See also [Rootless Docker: file ownership changes #3343](https://github.com/lando/lando/issues/3343), [Docker context desktop-linux has container permission issues #75](https://github.com/docker/desktop-linux/issues/75). \ No newline at end of file From 020bdeb0585eb65624677951a97392091ce40ac7 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 May 2024 10:23:49 -0300 Subject: [PATCH 128/846] feat: purge_personal_api_key_events() task (#7485) * feat: purge_personal_api_key_events() task * feat: log number of events purged * test: test new task * fix: name task properly * chore: create daily PeriodicTask * chore: remove old management command * chore: remove tests of old command * test: finish removing now-empty tests.py --- bin/daily | 3 - .../purge_old_personal_api_key_events.py | 64 --------- ietf/person/management/commands/tests.py | 122 ------------------ ietf/person/tasks.py | 20 +++ ietf/person/tests.py | 19 ++- .../management/commands/periodic_tasks.py | 11 ++ 6 files changed, 48 insertions(+), 191 deletions(-) delete mode 100644 ietf/person/management/commands/purge_old_personal_api_key_events.py delete mode 100644 ietf/person/management/commands/tests.py create mode 100644 ietf/person/tasks.py diff --git a/bin/daily b/bin/daily index 6adb16794d..b4ea339958 100755 --- a/bin/daily +++ b/bin/daily @@ -36,6 +36,3 @@ $DTDIR/ietf/manage.py populate_yang_model_dirs -v0 # Re-run yang checks on active documents $DTDIR/ietf/manage.py run_yang_model_checks -v0 - -# Purge older PersonApiKeyEvents -$DTDIR/ietf/manage.py purge_old_personal_api_key_events 14 diff --git a/ietf/person/management/commands/purge_old_personal_api_key_events.py b/ietf/person/management/commands/purge_old_personal_api_key_events.py deleted file mode 100644 index 66b9d2c33e..0000000000 --- a/ietf/person/management/commands/purge_old_personal_api_key_events.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright The IETF Trust 2021, All Rights Reserved -# -*- coding: utf-8 -*- - -from datetime import timedelta -from django.core.management.base import BaseCommand, CommandError -from django.db.models import Max, Min -from django.utils import timezone - -from ietf.person.models import PersonApiKeyEvent - - -class Command(BaseCommand): - help = 'Purge PersonApiKeyEvent instances older than KEEP_DAYS days' - - def add_arguments(self, parser): - parser.add_argument('keep_days', type=int, - help='Delete events older than this many days') - parser.add_argument('-n', '--dry-run', action='store_true', default=False, - help="Don't delete events, just show what would be done") - - - def handle(self, *args, **options): - keep_days = options['keep_days'] - dry_run = options['dry_run'] - verbosity = options.get("verbosity", 1) - - def _format_count(count, unit='day'): - return '{} {}{}'.format(count, unit, ('' if count == 1 else 's')) - - if keep_days < 0: - raise CommandError('Negative keep_days not allowed ({} was specified)'.format(keep_days)) - - if verbosity > 1: - self.stdout.write('purge_old_personal_api_key_events: Finding events older than {}\n'.format(_format_count(keep_days))) - if dry_run: - self.stdout.write('Dry run requested, records will not be deleted\n') - self.stdout.flush() - - now = timezone.now() - old_events = PersonApiKeyEvent.objects.filter( - time__lt=now - timedelta(days=keep_days) - ) - - stats = old_events.aggregate(Min('time'), Max('time')) - old_count = old_events.count() - if old_count == 0: - if verbosity > 1: - self.stdout.write('No events older than {} found\n'.format(_format_count(keep_days))) - return - - oldest_date = stats['time__min'] - oldest_ago = now - oldest_date - newest_date = stats['time__max'] - newest_ago = now - newest_date - - action_fmt = 'Would delete {}\n' if dry_run else 'Deleting {}\n' - if verbosity > 1: - self.stdout.write(action_fmt.format(_format_count(old_count, 'event'))) - self.stdout.write(' Oldest at {} ({} ago)\n'.format(oldest_date, _format_count(oldest_ago.days))) - self.stdout.write(' Most recent at {} ({} ago)\n'.format(newest_date, _format_count(newest_ago.days))) - self.stdout.flush() - - if not dry_run: - old_events.delete() diff --git a/ietf/person/management/commands/tests.py b/ietf/person/management/commands/tests.py deleted file mode 100644 index 38d770a588..0000000000 --- a/ietf/person/management/commands/tests.py +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright The IETF Trust 2021, All Rights Reserved -# -*- coding: utf-8 -*- - -import datetime -from io import StringIO - -from django.core.management import call_command, CommandError -from django.utils import timezone - -from ietf.person.factories import PersonApiKeyEventFactory -from ietf.person.models import PersonApiKeyEvent, PersonEvent -from ietf.utils.test_utils import TestCase - - -class CommandTests(TestCase): - @staticmethod - def _call_command(command_name, *args, **options): - out = StringIO() - options['stdout'] = out - call_command(command_name, *args, **options) - return out.getvalue() - - def _assert_purge_results(self, cmd_output, expected_delete_count, expected_kept_events): - self.assertNotIn('Dry run requested', cmd_output) - if expected_delete_count == 0: - delete_text = 'No events older than' - else: - delete_text = 'Deleting {} event'.format(expected_delete_count) - self.assertIn(delete_text, cmd_output) - self.assertCountEqual( - PersonApiKeyEvent.objects.all(), - expected_kept_events, - 'Wrong events were deleted' - ) - - def _assert_purge_dry_run_results(self, cmd_output, expected_delete_count, expected_kept_events): - self.assertIn('Dry run requested', cmd_output) - if expected_delete_count == 0: - delete_text = 'No events older than' - else: - delete_text = 'Would delete {} event'.format(expected_delete_count) - self.assertIn(delete_text, cmd_output) - self.assertCountEqual( - PersonApiKeyEvent.objects.all(), - expected_kept_events, - 'Events were deleted when dry-run option was used' - ) - - def test_purge_old_personal_api_key_events(self): - keep_days = 10 - - # Remember how many PersonEvents were present so we can verify they're cleaned up properly. - personevents_before = PersonEvent.objects.count() - - now = timezone.now() - # The first of these events will be timestamped a fraction of a second more than keep_days - # days ago by the time we call the management command, so will just barely chosen for purge. - old_events = [ - PersonApiKeyEventFactory(time=now - datetime.timedelta(days=n)) - for n in range(keep_days, 2 * keep_days + 1) - ] - num_old_events = len(old_events) - - recent_events = [ - PersonApiKeyEventFactory(time=now - datetime.timedelta(days=n)) - for n in range(0, keep_days) - ] - # We did not create recent_event timestamped exactly keep_days ago because it would - # be treated as an old_event by the management command. Create an event a few seconds - # on the "recent" side of keep_days old to test the threshold. - recent_events.append( - PersonApiKeyEventFactory( - time=now + datetime.timedelta(seconds=3) - datetime.timedelta(days=keep_days) - ) - ) - num_recent_events = len(recent_events) - - # call with dry run - output = self._call_command('purge_old_personal_api_key_events', str(keep_days), '--dry-run', '-v2') - self._assert_purge_dry_run_results(output, num_old_events, old_events + recent_events) - - # call for real - output = self._call_command('purge_old_personal_api_key_events', str(keep_days), '-v2') - self._assert_purge_results(output, num_old_events, recent_events) - self.assertEqual(PersonEvent.objects.count(), personevents_before + num_recent_events, - 'PersonEvents were not cleaned up properly') - - # repeat - there should be nothing left to delete - output = self._call_command('purge_old_personal_api_key_events', '--dry-run', str(keep_days), '-v2') - self._assert_purge_dry_run_results(output, 0, recent_events) - - output = self._call_command('purge_old_personal_api_key_events', str(keep_days), '-v2') - self._assert_purge_results(output, 0, recent_events) - self.assertEqual(PersonEvent.objects.count(), personevents_before + num_recent_events, - 'PersonEvents were not cleaned up properly') - - # and now delete the remaining events - output = self._call_command('purge_old_personal_api_key_events', '0', '-v2') - self._assert_purge_results(output, num_recent_events, []) - self.assertEqual(PersonEvent.objects.count(), personevents_before, - 'PersonEvents were not cleaned up properly') - - def test_purge_old_personal_api_key_events_rejects_invalid_arguments(self): - """The purge_old_personal_api_key_events command should reject invalid arguments""" - event = PersonApiKeyEventFactory(time=timezone.now() - datetime.timedelta(days=30)) - - with self.assertRaises(CommandError): - self._call_command('purge_old_personal_api_key_events') - - with self.assertRaises(CommandError): - self._call_command('purge_old_personal_api_key_events', '-15') - - with self.assertRaises(CommandError): - self._call_command('purge_old_personal_api_key_events', '15.3') - - with self.assertRaises(CommandError): - self._call_command('purge_old_personal_api_key_events', '15', '15') - - with self.assertRaises(CommandError): - self._call_command('purge_old_personal_api_key_events', 'abc', '15') - - self.assertCountEqual(PersonApiKeyEvent.objects.all(), [event]) diff --git a/ietf/person/tasks.py b/ietf/person/tasks.py new file mode 100644 index 0000000000..221b718f2f --- /dev/null +++ b/ietf/person/tasks.py @@ -0,0 +1,20 @@ +# Copyright The IETF Trust 2024, All Rights Reserved +# +# Celery task definitions +# +import datetime + +from celery import shared_task +from django.utils import timezone + +from ietf.utils import log +from .models import PersonApiKeyEvent + + +@shared_task +def purge_personal_api_key_events_task(keep_days): + keep_since = timezone.now() - datetime.timedelta(days=keep_days) + old_events = PersonApiKeyEvent.objects.filter(time__lt=keep_since) + count = len(old_events) + old_events.delete() + log.log(f"Deleted {count} PersonApiKeyEvents older than {keep_since}") diff --git a/ietf/person/tests.py b/ietf/person/tests.py index e5bc855a29..9da201b707 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -4,6 +4,7 @@ import datetime import json +import mock from io import StringIO, BytesIO from PIL import Image @@ -25,8 +26,9 @@ 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 -from ietf.person.factories import EmailFactory, PersonFactory -from ietf.person.models import Person, Alias +from ietf.person.factories import EmailFactory, PersonFactory, PersonApiKeyEventFactory +from ietf.person.models import Person, Alias, PersonApiKeyEvent +from ietf.person.tasks import purge_personal_api_key_events_task from ietf.person.utils import (merge_persons, determine_merge_order, send_merge_notification, handle_users, get_extra_primary, dedupe_aliases, move_related_objects, merge_nominees, handle_reviewer_settings, get_dots) @@ -450,3 +452,16 @@ def test_dots(self): self.assertEqual(get_dots(ncmember),['nomcom']) ncchair = RoleFactory(group__acronym='nomcom2020',group__type_id='nomcom',name_id='chair').person self.assertEqual(get_dots(ncchair),['nomcom']) + + +class TaskTests(TestCase): + @mock.patch("ietf.person.tasks.log.log") + def test_purge_personal_api_key_events_task(self, mock_log): + now = timezone.now() + old_event = PersonApiKeyEventFactory(time=now - datetime.timedelta(days=1, minutes=1)) + young_event = PersonApiKeyEventFactory(time=now - datetime.timedelta(days=1, minutes=-1)) + purge_personal_api_key_events_task(keep_days=1) + self.assertFalse(PersonApiKeyEvent.objects.filter(pk=old_event.pk).exists()) + self.assertTrue(PersonApiKeyEvent.objects.filter(pk=young_event.pk).exists()) + self.assertTrue(mock_log.called) + self.assertIn("Deleted 1", mock_log.call_args[0][0]) diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index 792eb0068b..5595bbcbf1 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -241,6 +241,17 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Purge old personal API key events", + task="ietf.person.tasks.purge_personal_api_key_events_task", + kwargs=json.dumps(dict(keep_days=14)), + defaults=dict( + enabled=False, + crontab=self.crontabs["daily"], + description="Purge PersonApiKeyEvent instances older than 14 days", + ), + ) + def show_tasks(self): for label, crontab in self.crontabs.items(): tasks = PeriodicTask.objects.filter(crontab=crontab).order_by( From 2ccc230ce7feaa448f39e7ab1c8d161a0aeeca23 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 May 2024 10:31:25 -0300 Subject: [PATCH 129/846] feat: send_apikey_usage_emails_task() (#7486) * feat: send_apikey_usage_emails_task * chore: update test to use task instead of cmd * chore: add PeriodicTask * chore: remove old command + empty management dir * chore: remove now-empty bin/weekly * refactor: only consider keys that might have events --------- Co-authored-by: Robert Sparks --- bin/weekly | 22 -------- ietf/ietfauth/management/__init__.py | 0 ietf/ietfauth/management/commands/__init__.py | 0 .../commands/send_apikey_usage_emails.py | 52 ------------------- ietf/ietfauth/tests.py | 9 ++-- ietf/person/tasks.py | 41 ++++++++++++++- .../management/commands/periodic_tasks.py | 11 ++++ 7 files changed, 54 insertions(+), 81 deletions(-) delete mode 100755 bin/weekly delete mode 100644 ietf/ietfauth/management/__init__.py delete mode 100644 ietf/ietfauth/management/commands/__init__.py delete mode 100644 ietf/ietfauth/management/commands/send_apikey_usage_emails.py diff --git a/bin/weekly b/bin/weekly deleted file mode 100755 index 8e01c273ca..0000000000 --- a/bin/weekly +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Weekly datatracker jobs. -# -# This script is expected to be triggered by cron from -# /etc/cron.d/datatracker -export LANG=en_US.UTF-8 -export PYTHONIOENCODING=utf-8 - -DTDIR=/a/www/ietf-datatracker/web -cd $DTDIR/ - -# Set up the virtual environment -source $DTDIR/env/bin/activate - -logger -p user.info -t cron "Running $DTDIR/bin/weekly" - - -# Send out weekly summaries of apikey usage - -$DTDIR/ietf/manage.py send_apikey_usage_emails - diff --git a/ietf/ietfauth/management/__init__.py b/ietf/ietfauth/management/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ietf/ietfauth/management/commands/__init__.py b/ietf/ietfauth/management/commands/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ietf/ietfauth/management/commands/send_apikey_usage_emails.py b/ietf/ietfauth/management/commands/send_apikey_usage_emails.py deleted file mode 100644 index d3fce1bcc2..0000000000 --- a/ietf/ietfauth/management/commands/send_apikey_usage_emails.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright The IETF Trust 2017-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import datetime - -from textwrap import dedent - -from django.conf import settings -from django.core.management.base import BaseCommand -from django.utils import timezone - -import debug # pyflakes:ignore - -from ietf.person.models import PersonalApiKey, PersonApiKeyEvent -from ietf.utils.mail import send_mail - - -class Command(BaseCommand): - """ - Send out emails to all persons who have personal API keys about usage. - - Usage is show over the given period, where the default period is 7 days. - """ - - help = dedent(__doc__).strip() - - def add_arguments(self, parser): - parser.add_argument('-d', '--days', dest='days', type=int, default=7, - help='The period over which to show usage.') - - def handle(self, *filenames, **options): - """ - """ - - self.verbosity = int(options.get('verbosity')) - days = options.get('days') - - keys = PersonalApiKey.objects.filter(valid=True) - for key in keys: - earliest = timezone.now() - datetime.timedelta(days=days) - events = PersonApiKeyEvent.objects.filter(key=key, time__gt=earliest) - count = events.count() - events = events[:32] - if count: - key_name = key.hash()[:8] - subject = "API key usage for key '%s' for the last %s days" %(key_name, days) - to = key.person.email_address() - frm = settings.DEFAULT_FROM_EMAIL - send_mail(None, to, frm, subject, 'utils/apikey_usage_report.txt', {'person':key.person, - 'days':days, 'key':key, 'key_name':key_name, 'count':count, 'events':events, } ) - diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py index 56b4638f6b..503c091a85 100644 --- a/ietf/ietfauth/tests.py +++ b/ietf/ietfauth/tests.py @@ -41,6 +41,7 @@ from ietf.nomcom.factories import NomComFactory from ietf.person.factories import PersonFactory, EmailFactory, UserFactory, PersonalApiKeyFactory from ietf.person.models import Person, Email, PersonalApiKey +from ietf.person.tasks import send_apikey_usage_emails_task from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory from ietf.review.models import ReviewWish, UnavailablePeriod from ietf.stats.models import MeetingRegistration @@ -853,9 +854,6 @@ def test_apikey_errors(self): key2.delete() def test_send_apikey_report(self): - from ietf.ietfauth.management.commands.send_apikey_usage_emails import Command - from ietf.utils.mail import outbox, empty_outbox - person = RoleFactory(name_id='secr', group__acronym='secretariat').person url = urlreverse('ietf.ietfauth.views.apikey_create') @@ -880,9 +878,8 @@ def test_send_apikey_report(self): date = str(date_today()) empty_outbox() - cmd = Command() - cmd.handle(verbosity=0, days=7) - + send_apikey_usage_emails_task(days=7) + self.assertEqual(len(outbox), len(endpoints)) for mail in outbox: body = get_payload_text(mail) diff --git a/ietf/person/tasks.py b/ietf/person/tasks.py index 221b718f2f..f0c979fa26 100644 --- a/ietf/person/tasks.py +++ b/ietf/person/tasks.py @@ -5,11 +5,50 @@ import datetime from celery import shared_task + +from django.conf import settings from django.utils import timezone from ietf.utils import log -from .models import PersonApiKeyEvent +from ietf.utils.mail import send_mail +from .models import PersonalApiKey, PersonApiKeyEvent + +@shared_task +def send_apikey_usage_emails_task(days): + """Send usage emails to Persons who have API keys""" + earliest = timezone.now() - datetime.timedelta(days=days) + keys = PersonalApiKey.objects.filter( + valid=True, + personapikeyevent__time__gt=earliest, + ).distinct() + for key in keys: + events = PersonApiKeyEvent.objects.filter(key=key, time__gt=earliest) + count = events.count() + events = events[:32] + if count: + key_name = key.hash()[:8] + subject = "API key usage for key '%s' for the last %s days" % ( + key_name, + days, + ) + to = key.person.email_address() + frm = settings.DEFAULT_FROM_EMAIL + send_mail( + None, + to, + frm, + subject, + "utils/apikey_usage_report.txt", + { + "person": key.person, + "days": days, + "key": key, + "key_name": key_name, + "count": count, + "events": events, + }, + ) @shared_task def purge_personal_api_key_events_task(keep_days): diff --git a/ietf/utils/management/commands/periodic_tasks.py b/ietf/utils/management/commands/periodic_tasks.py index 5595bbcbf1..7f0c988dcd 100644 --- a/ietf/utils/management/commands/periodic_tasks.py +++ b/ietf/utils/management/commands/periodic_tasks.py @@ -241,6 +241,17 @@ def create_default_tasks(self): ), ) + PeriodicTask.objects.get_or_create( + name="Send personal API key usage emails", + task="ietf.person.tasks.send_apikey_usage_emails_task", + kwargs=json.dumps(dict(days=7)), + defaults=dict( + enabled=False, + crontab=self.crontabs["weekly"], + description="Send personal API key usage summary emails for the past week", + ), + ) + PeriodicTask.objects.get_or_create( name="Purge old personal API key events", task="ietf.person.tasks.purge_personal_api_key_events_task", From 99b852805ba6f8ef9dc728f9f0cf4a8be75258a1 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Fri, 31 May 2024 08:14:52 -0700 Subject: [PATCH 130/846] fix: handle registration is_nomcom_volunteer = false correctly (#7484) Co-authored-by: Robert Sparks --- ietf/api/tests.py | 16 +++++++++++----- ietf/api/views.py | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index c4e627c52e..66bc7a3be7 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -30,7 +30,7 @@ from ietf.group.factories import RoleFactory from ietf.meeting.factories import MeetingFactory, SessionFactory from ietf.meeting.models import Session -from ietf.nomcom.models import Volunteer, NomCom +from ietf.nomcom.models import Volunteer from ietf.nomcom.factories import NomComFactory, nomcom_kwargs_for_year from ietf.person.factories import PersonFactory, random_faker, EmailFactory from ietf.person.models import Email, User @@ -828,7 +828,7 @@ def test_api_new_meeting_registration_nomcom_volunteer(self): 'reg_type': 'onsite', 'ticket_type': '', 'checkedin': 'False', - 'is_nomcom_volunteer': 'True', + 'is_nomcom_volunteer': 'False', } person = PersonFactory() reg['email'] = person.email().address @@ -842,16 +842,22 @@ def test_api_new_meeting_registration_nomcom_volunteer(self): # create appropriate group and nomcom objects nomcom = NomComFactory.create(is_accepting_volunteers=True, **nomcom_kwargs_for_year(year)) url = urlreverse('ietf.api.views.api_new_meeting_registration') - r = self.client.post(url, reg) - self.assertContains(r, 'Invalid apikey', status_code=403) oidcp = PersonFactory(user__is_staff=True) # Make sure 'oidcp' has an acceptable role RoleFactory(name_id='robot', person=oidcp, email=oidcp.email(), group__acronym='secretariat') key = PersonalApiKey.objects.create(person=oidcp, endpoint=url) reg['apikey'] = key.hash() + + # first test is_nomcom_volunteer False r = self.client.post(url, reg) - nomcom = NomCom.objects.last() self.assertContains(r, "Accepted, New registration", status_code=202) + # assert no Volunteers exists + self.assertEqual(Volunteer.objects.count(), 0) + + # test is_nomcom_volunteer True + reg['is_nomcom_volunteer'] = 'True' + r = self.client.post(url, reg) + self.assertContains(r, "Accepted, Updated registration", status_code=202) # assert Volunteer exists self.assertEqual(Volunteer.objects.count(), 1) volunteer = Volunteer.objects.last() diff --git a/ietf/api/views.py b/ietf/api/views.py index 6f97efbdb8..3c3ea0d5a9 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -212,7 +212,7 @@ def err(code, text): response += ", Email sent" # handle nomcom volunteer - if data['is_nomcom_volunteer'] and object.person: + if request.POST.get('is_nomcom_volunteer', 'false').lower() == 'true' and object.person: try: nomcom = NomCom.objects.get(is_accepting_volunteers=True) except (NomCom.DoesNotExist, NomCom.MultipleObjectsReturned): From ac3813f1af7323f56cb111d6a5db15529079e1fa Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 4 Jun 2024 12:38:54 -0500 Subject: [PATCH 131/846] fix: improve warnings on ballot issue view. Fixes #7490. (#7491) --- ietf/doc/tests_ballot.py | 35 ++++++++++++++++++++- ietf/doc/views_ballot.py | 3 +- ietf/templates/doc/ballot/writeupnotes.html | 7 ++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index 9c9287dab2..e18b2abfd9 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -32,7 +32,7 @@ from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.mail import outbox, empty_outbox, get_payload_text from ietf.utils.text import unwrap -from ietf.utils.timezone import date_today +from ietf.utils.timezone import date_today, datetime_today class EditPositionTests(TestCase): @@ -529,6 +529,7 @@ def test_issue_ballot_warn_if_early(self): login_testing_unauthorized(self, "secretary", url) # expect warning about issuing a ballot before IETF Last Call is done + # No last call has yet been issued r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) @@ -536,6 +537,38 @@ def test_issue_ballot_warn_if_early(self): self.assertTrue(q('[class=text-danger]:contains("not completed IETF Last Call")')) self.assertTrue(q('[type=submit]:contains("Save")')) + # Last call exists but hasn't expired + LastCallDocEvent.objects.create( + doc=draft, + expires=datetime_today()+datetime.timedelta(days=14), + by=Person.objects.get(name="(System)") + ) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('[class=text-danger]:contains("not completed IETF Last Call")')) + + # Last call exists and has expired + LastCallDocEvent.objects.filter(doc=draft).update(expires=datetime_today()-datetime.timedelta(days=2)) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertFalse(q('[class=text-danger]:contains("not completed IETF Last Call")')) + + for state_slug in ["lc", "watching", "ad-eval"]: + draft.set_state(State.objects.get(type="draft-iesg",slug=state_slug)) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('[class=text-danger]:contains("It would be unexpected to issue a ballot while in this state.")')) + + draft.set_state(State.objects.get(type="draft-iesg",slug="writeupw")) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertFalse(q('[class=text-danger]:contains("It would be unexpected to issue a ballot while in this state.")')) + + def test_edit_approval_text(self): ad = Person.objects.get(user__username="ad") draft = WgDraftFactory(ad=ad,states=[('draft','active'),('draft-iesg','iesg-eva')],intended_std_level_id='ps',group__parent=Group.objects.get(acronym='farfut')) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index ff51921569..02b55249d6 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -687,7 +687,8 @@ def ballot_writeupnotes(request, name): dict(doc=doc, back_url=doc.get_absolute_url(), ballot_issued=bool(doc.latest_event(type="sent_ballot_announcement")), - ballot_issue_danger=bool(prev_state.slug in ['ad-eval', 'lc']), + warn_lc = not doc.docevent_set.filter(lastcalldocevent__expires__date__lt=date_today(DEADLINE_TZINFO)).exists(), + warn_unexpected_state= prev_state if bool(prev_state.slug in ['watching', 'ad-eval', 'lc']) else None, ballot_writeup_form=form, need_intended_status=need_intended_status, )) diff --git a/ietf/templates/doc/ballot/writeupnotes.html b/ietf/templates/doc/ballot/writeupnotes.html index 925387d28d..8e985c15c7 100644 --- a/ietf/templates/doc/ballot/writeupnotes.html +++ b/ietf/templates/doc/ballot/writeupnotes.html @@ -15,11 +15,16 @@

    {% bootstrap_form ballot_writeup_form %}
    Technical summary, Working Group summary, document quality, personnel, IANA note. This text will be appended to all announcements and messages to the IRTF or RFC Editor. - {% if ballot_issue_danger %} + {% if warn_lc %}

    This document has not completed IETF Last Call. Please do not issue the ballot early without good reason.

    {% endif %} + {% if warn_unexpected_state %} +

    + This document is in an IESG state of "{{warn_unexpected_state}}". It would be unexpected to issue a ballot while in this state. +

    + {% endif %}

    {% endif %} - {% if doc.time %} + {% if review_req.doc.time %} @@ -104,7 +104,10 @@ I-D last updated {% endif %} From 603938a9b6438ce78caea13272e61c0e15546478 Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Sat, 15 Mar 2025 05:19:12 -0400 Subject: [PATCH 470/846] chore: Add IETF to "Last Call Expired" email Subject (#8675) No need to change the test. Fixes: #8526 --- ietf/doc/mails.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/mails.py b/ietf/doc/mails.py index c1e2074bc0..ddecbb6b54 100644 --- a/ietf/doc/mails.py +++ b/ietf/doc/mails.py @@ -568,7 +568,7 @@ def email_last_call_expired(doc): send_mail(None, addrs.to, "DraftTracker Mail System ", - "Last Call Expired: %s" % doc.file_tag(), + "IETF Last Call Expired: %s" % doc.file_tag(), "doc/mail/change_notice.txt", dict(text=text, doc=doc, From 9eb5b2fa8e25c68ec927b82008d61c8e38be354c Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Sat, 15 Mar 2025 05:23:16 -0400 Subject: [PATCH 471/846] fix(agenda): always render session row if rendering a new date row when filtering (#8672) --- client/agenda/AgendaScheduleList.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 905677b4da..ab0f6e0184 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -253,6 +253,7 @@ const meetingEvents = computed(() => { // -> Add date row const itemDate = DateTime.fromISO(item.adjustedStartDate) + let willRenderDateRow = false if (itemDate.toISODate() !== acc.lastDate) { acc.result.push({ id: item.id, @@ -262,12 +263,13 @@ const meetingEvents = computed(() => { date: itemDate.toLocaleString(DateTime.DATE_HUGE), cssClasses: 'agenda-table-display-day' }) + willRenderDateRow = true } acc.lastDate = itemDate.toISODate() // -> Add session header row const typeName = `${item.type}-${item.slotName}` - if (item.type === 'regular' && acc.lastTypeName !== typeName) { + if (item.type === 'regular' && (acc.lastTypeName !== typeName || willRenderDateRow)) { acc.result.push({ key: `sesshd-${item.id}`, displayType: 'session-head', From 4bf1b938724abb775a5e9532740934dfa9a4dc40 Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 15 Mar 2025 05:38:23 -0400 Subject: [PATCH 472/846] fix: Set Review Type Name for IETF Last Call (#8678) --- ietf/name/fixtures/names.json | 4 ++-- ietf/name/migrations/0015_last_call_name.py | 22 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 ietf/name/migrations/0015_last_call_name.py diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 8f1262b4cf..96273fbc35 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -2628,7 +2628,7 @@ "used": true }, "model": "doc.state", - "pk": 182 + "pk": 181 }, { "fields": { @@ -13210,7 +13210,7 @@ { "fields": { "desc": "", - "name": "Last Call", + "name": "IETF Last Call", "order": 2, "used": true }, diff --git a/ietf/name/migrations/0015_last_call_name.py b/ietf/name/migrations/0015_last_call_name.py new file mode 100644 index 0000000000..ac210a274f --- /dev/null +++ b/ietf/name/migrations/0015_last_call_name.py @@ -0,0 +1,22 @@ +# Copyright 2025, IETF Trust + +from django.db import migrations + + +def forward(apps, schema_editor): + ReviewTypeName = apps.get_model("name", "ReviewTypeName") + ReviewTypeName.objects.filter(slug="lc").update(name="IETF Last Call") + +def reverse(apps, schema_editor): + ReviewTypeName = apps.get_model("name", "ReviewTypeName") + ReviewTypeName.objects.filter(slug="lc").update(name="Last Call") + +class Migration(migrations.Migration): + + dependencies = [ + ("name", "0014_change_legacy_stream_desc"), + ] + + operations = [ + migrations.RunPython(forward, reverse) + ] From 44bb285836e032acb15d38febc82f4495a6dd9e8 Mon Sep 17 00:00:00 2001 From: Jim Fenton Date: Sun, 16 Mar 2025 14:37:56 +0700 Subject: [PATCH 473/846] fix: use correct variable to decide to show meeting notes (#8674) * fix: use correct variable to decide to show session notes * Correct number of lines for selftests * fix: adjust test to match --------- Co-authored-by: Robert Sparks --- ietf/meeting/tests_views.py | 28 +++++++++++-------- .../meeting/session_details_panel.html | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 519f5f7c2d..59d7e49f7f 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -424,37 +424,41 @@ def test_meeting_agenda(self): self.assertEqual(r.status_code, 200) def test_session_recordings_via_factories(self): - session = SessionFactory(meeting__type_id="ietf", meeting__date=date_today()-datetime.timedelta(days=180)) + session = SessionFactory(meeting__type_id="ietf", meeting__date=date_today()-datetime.timedelta(days=180), meeting__number=str(random.randint(108,150))) self.assertEqual(session.meetecho_recording_name, "") self.assertEqual(len(session.recordings()), 0) url = urlreverse("ietf.meeting.views.session_details", kwargs=dict(num=session.meeting.number, acronym=session.group.acronym)) r = self.client.get(url) q = PyQuery(r.content) # debug.show("q(f'#notes_and_recordings_{session.pk}')") - self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 1) - link = q(f"#notes_and_recordings_{session.pk} tr a") - self.assertEqual(len(link), 1) - self.assertEqual(link[0].attrib['href'], str(session.session_recording_url())) + self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 2) + links = q(f"#notes_and_recordings_{session.pk} tr a") + self.assertEqual(len(links), 2) + self.assertEqual(links[0].attrib['href'], str(session.notes_url())) + self.assertEqual(links[1].attrib['href'], str(session.session_recording_url())) session.meetecho_recording_name = 'my_test_session_name' session.save() r = self.client.get(url) q = PyQuery(r.content) - self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 1) + self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 2) links = q(f"#notes_and_recordings_{session.pk} tr a") - self.assertEqual(len(links), 1) - self.assertEqual(links[0].attrib['href'], session.session_recording_url()) + self.assertEqual(len(links), 2) + self.assertEqual(links[0].attrib['href'], str(session.notes_url())) + self.assertEqual(links[1].attrib['href'], str(session.session_recording_url())) new_recording_url = "https://www.youtube.com/watch?v=jNQXAC9IVRw" new_recording_title = "Me at the zoo" create_recording(session, new_recording_url, new_recording_title) r = self.client.get(url) q = PyQuery(r.content) - self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 2) + self.assertEqual(len(q(f"#notes_and_recordings_{session.pk} tr")), 3) links = q(f"#notes_and_recordings_{session.pk} tr a") - self.assertEqual(len(links), 2) - self.assertEqual(links[0].attrib['href'], new_recording_url) - self.assertIn(new_recording_title, links[0].text_content()) + self.assertEqual(len(links), 3) + self.assertEqual(links[0].attrib['href'], str(session.notes_url())) + self.assertEqual(links[1].attrib['href'], new_recording_url) + self.assertIn(new_recording_title, links[1].text_content()) + self.assertEqual(links[2].attrib['href'], str(session.session_recording_url())) #debug.show("q(f'#notes_and_recordings_{session_pk}')") def test_delete_recordings(self): diff --git a/ietf/templates/meeting/session_details_panel.html b/ietf/templates/meeting/session_details_panel.html index 9b7a192f05..87d9e3d672 100644 --- a/ietf/templates/meeting/session_details_panel.html +++ b/ietf/templates/meeting/session_details_panel.html @@ -310,7 +310,7 @@

    Notes and recordings

    - {{ pres.document.title }} - ({{ pres.document.name }}) + {{ pres.document.title }} + ( as json )
    From da0a217a8cb8ea27598ce8ab83e4661235ffdf6f Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 6 Jun 2024 15:10:24 -0300 Subject: [PATCH 133/846] feat: use surname/initials for author name (#7510) * feat: use surname/initials for author name * test: test new method * fix: handle case where author name is empty --- ietf/templates/submit/announce_to_lists.txt | 2 +- ietf/templates/submit/approval_request.txt | 2 +- ietf/templates/submit/manual_post_request.txt | 2 +- ietf/templates/submit/submission_status.html | 2 +- ietf/templates/submit/submitter_form.html | 14 +++--- ietf/utils/tests.py | 45 +++++++++++++++++++ ietf/utils/xmldraft.py | 25 ++++++++++- 7 files changed, 81 insertions(+), 11 deletions(-) diff --git a/ietf/templates/submit/announce_to_lists.txt b/ietf/templates/submit/announce_to_lists.txt index d7a3739af6..cf1c8b325b 100644 --- a/ietf/templates/submit/announce_to_lists.txt +++ b/ietf/templates/submit/announce_to_lists.txt @@ -1,7 +1,7 @@ {% autoescape off %}{% filter wordwrap:78 %}Internet-Draft {{ submission.name }}-{{ submission.rev }}.txt is now available.{% if submission.group %} It is a work item of the {{ submission.group.name }} ({{ submission.group.acronym|upper }}){% if submission.group.type.name %} {{ submission.group.type.name }}{% endif %} of the {% if submission.group.type_id == "rg" %}IRTF{% else %}IETF{% endif %}.{% endif %}{% endfilter %} Title: {{ submission.title }} - Author{{ submission.authors|pluralize:",s" }}: {% if submission.authors|length == 1 %} {% endif %}{% for author in submission.authors %}{{ author.name }}{% if not forloop.last %} + Author{{ submission.authors|pluralize:",s" }}: {% if submission.authors|length == 1 %} {% endif %}{% for author in submission.authors %}{% firstof author.name author.affiliation "Unknown" %}{% if not forloop.last %} {% endif %}{% endfor %} Name: {{ submission.name }}-{{ submission.rev }}.txt Pages: {{ submission.pages }} diff --git a/ietf/templates/submit/approval_request.txt b/ietf/templates/submit/approval_request.txt index 9186e556fc..7b9609a129 100644 --- a/ietf/templates/submit/approval_request.txt +++ b/ietf/templates/submit/approval_request.txt @@ -24,7 +24,7 @@ To approve the Internet-Draft, go to this URL (note: you need to login to be abl Authors: -{% for author in submission.authors %} {{ author.name }}{% if author.email %} <{{ author.email }}>{% endif%} +{% for author in submission.authors %} {% if author.name or author.affiliation %}{% firstof author.name author.affiliation %} {% endif %}{% if author.email %}<{{ author.email }}>{% endif %} {% endfor %} {% endautoescape %} diff --git a/ietf/templates/submit/manual_post_request.txt b/ietf/templates/submit/manual_post_request.txt index 7b515fbeb0..7fe19e9a23 100644 --- a/ietf/templates/submit/manual_post_request.txt +++ b/ietf/templates/submit/manual_post_request.txt @@ -33,7 +33,7 @@ I-D Submission Tool URL: Authors: -{% for author in submission.authors %} {{ author.name }}{% if author.email %} <{{ author.email }}>{% endif%} +{% for author in submission.authors %} {% if author.name or author.affiliation %}{% firstof author.name author.affiliation %} {% endif %}{% if author.email %}<{{ author.email }}>{% endif %} {% endfor %} Comment to the secretariat: diff --git a/ietf/templates/submit/submission_status.html b/ietf/templates/submit/submission_status.html index 733b4217a0..cdc5dd4007 100644 --- a/ietf/templates/submit/submission_status.html +++ b/ietf/templates/submit/submission_status.html @@ -285,7 +285,7 @@

    Meta-data from the submission

    Author {{ forloop.counter }} - {{ author.name }} + {% if author.name %}{{ author.name }}{% endif %} {% if author.email %}<{{ author.email|linkify }}>{% endif %}
    {% if author.affiliation %} diff --git a/ietf/templates/submit/submitter_form.html b/ietf/templates/submit/submitter_form.html index 1cf77260ee..65b9ba5094 100644 --- a/ietf/templates/submit/submitter_form.html +++ b/ietf/templates/submit/submitter_form.html @@ -11,12 +11,14 @@

    Submitter

    {% load ietf_filters %} {% for author in submission.authors %} - + {% if author.name %} + + {% endif %} {% endfor %} {% bootstrap_form_errors submitter_form %} {% bootstrap_field submitter_form.name %} diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index 4ac2732ed8..08adefc826 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -486,6 +486,51 @@ def test_parse_docname(self): ("-01", None), ) + def test_render_author_name(self): + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element("author", fullname="Joanna Q. Public")), + "Joanna Q. Public", + ) + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element( + "author", + fullname="Joanna Q. Public", + asciiFullname="Not the Same at All", + )), + "Joanna Q. Public", + ) + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element( + "author", + fullname="Joanna Q. Public", + initials="J. Q.", + surname="Public-Private", + )), + "Joanna Q. Public", + ) + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element( + "author", + initials="J. Q.", + surname="Public", + )), + "J. Q. Public", + ) + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element( + "author", + surname="Public", + )), + "Public", + ) + self.assertEqual( + XMLDraft.render_author_name(lxml.etree.Element( + "author", + initials="J. Q.", + )), + "J. Q.", + ) + class NameTests(TestCase): diff --git a/ietf/utils/xmldraft.py b/ietf/utils/xmldraft.py index 3a9ac02b1d..c39c4d0a06 100644 --- a/ietf/utils/xmldraft.py +++ b/ietf/utils/xmldraft.py @@ -179,6 +179,29 @@ def get_creation_date(self): # abstract = self.xmlroot.findtext('front/abstract') # return abstract.strip() if abstract else '' + @staticmethod + def render_author_name(author_elt): + """Get a displayable name for an author, if possible + + Based on TextWriter.render_author_name() from xml2rfc. If fullname is present, uses that. + If not, uses either initials + surname or just surname. Finally, returns None because this + author is evidently an organization, not a person. + + Does not involve ascii* attributes because rfc7991 requires fullname if any of those are + present. + """ + # Use fullname attribute, if present + fullname = author_elt.attrib.get("fullname", "").strip() + if fullname: + return fullname + surname = author_elt.attrib.get("surname", "").strip() + initials = author_elt.attrib.get("initials", "").strip() + if surname or initials: + # This allows the possibility that only initials are used, which is a bit nonsensical + # but seems to be technically allowed by RFC 7991. + return f"{initials} {surname}".strip() + return None + def get_author_list(self): """Get detailed author list @@ -197,7 +220,7 @@ def get_author_list(self): for author in self.xmlroot.findall('front/author'): info = { - 'name': author.attrib.get('fullname'), + 'name': self.render_author_name(author), 'email': author.findtext('address/email'), 'affiliation': author.findtext('organization'), } From c5aaab74b86975664157f72d27a1f93533e6908b Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 6 Jun 2024 13:11:54 -0500 Subject: [PATCH 134/846] fix: mailman3 links for nonwg lists (#7507) --- ietf/group/views.py | 2 +- ietf/mailinglists/admin.py | 4 +- ietf/mailinglists/factories.py | 1 + .../0004_nonwgmailinglist_domain.py | 59 +++++++++++++++++++ ietf/mailinglists/models.py | 3 +- ietf/mailinglists/resources.py | 1 + ietf/mailinglists/tests.py | 2 + ietf/settings.py | 2 +- 8 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 ietf/mailinglists/migrations/0004_nonwgmailinglist_domain.py diff --git a/ietf/group/views.py b/ietf/group/views.py index 7ad6e5bf02..0c37cca3a0 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -313,7 +313,7 @@ def active_wgs(request): if group.list_subscribe.startswith('http'): group.list_subscribe_url = group.list_subscribe elif group.list_email.endswith('@ietf.org'): - group.list_subscribe_url = MAILING_LIST_INFO_URL % {'list_addr':group.list_email.split('@')[0]} + group.list_subscribe_url = MAILING_LIST_INFO_URL % {'list_addr':group.list_email.split('@')[0].lower(),'domain':'ietf.org'} else: group.list_subscribe_url = "mailto:"+group.list_subscribe diff --git a/ietf/mailinglists/admin.py b/ietf/mailinglists/admin.py index 51b906053f..081ee6477c 100644 --- a/ietf/mailinglists/admin.py +++ b/ietf/mailinglists/admin.py @@ -8,8 +8,8 @@ class NonWgMailingListAdmin(admin.ModelAdmin): - list_display = ('id', 'name', 'description') - search_fields = ('name',) + list_display = ('id', 'name', 'domain', 'description') + search_fields = ('name', 'domain') admin.site.register(NonWgMailingList, NonWgMailingListAdmin) diff --git a/ietf/mailinglists/factories.py b/ietf/mailinglists/factories.py index 1a3b0ffa1f..3be5770d76 100644 --- a/ietf/mailinglists/factories.py +++ b/ietf/mailinglists/factories.py @@ -11,6 +11,7 @@ class Meta: model = NonWgMailingList name = factory.Sequence(lambda n: "list-name-%s" % n) + domain = factory.Sequence(lambda n: "domain-%s.org" % n) description = factory.Faker('sentence', nb_words=10) diff --git a/ietf/mailinglists/migrations/0004_nonwgmailinglist_domain.py b/ietf/mailinglists/migrations/0004_nonwgmailinglist_domain.py new file mode 100644 index 0000000000..b977313a87 --- /dev/null +++ b/ietf/mailinglists/migrations/0004_nonwgmailinglist_domain.py @@ -0,0 +1,59 @@ +# Generated by Django 4.2.13 on 2024-06-05 17:51 + +from django.db import migrations, models +from django.db.models.functions import Lower + +IAB_NAMES = ["iab", "iab-stream"] +RFCED_NAMES = [ + "auth48archive", + "rfc-dist", + "rfc-editor-rfi", + "rfc-interest", + "rpat", + "rsab", +] +IRTF_NAMES = [ + "anrp-select", + "anrw-sc", + "anrw-tpc", + "crypto-panel", + "dtn-interest", + "irsg", + "irtf-announce", + "smart", + "teaching", + "travel-grants-commitee", +] + + +def forward(apps, schema_editor): + NonWgMailingList = apps.get_model("mailinglists", "NonWgMailingList") + NonWgMailingList.objects.annotate(lowername=Lower("name")).filter( + lowername__in=IAB_NAMES + ).update(domain="iab.org") + NonWgMailingList.objects.annotate(lowername=Lower("name")).filter( + lowername__in=IRTF_NAMES + ).update(domain="irtf.org") + NonWgMailingList.objects.annotate(lowername=Lower("name")).filter( + lowername__in=RFCED_NAMES + ).update(domain="rfc-editor.org") + + +def reverse(apps, schema_editor): + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ("mailinglists", "0003_remove_subscribed_lists_delete_list_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="nonwgmailinglist", + name="domain", + field=models.CharField(default="ietf.org", max_length=32), + ), + migrations.RunPython(forward, reverse), + ] diff --git a/ietf/mailinglists/models.py b/ietf/mailinglists/models.py index f575ffe5a4..828d3823a4 100644 --- a/ietf/mailinglists/models.py +++ b/ietf/mailinglists/models.py @@ -14,12 +14,13 @@ # while decoupling from mailman2 until we integrate with mailman3 class NonWgMailingList(models.Model): name = models.CharField(max_length=32) + domain = models.CharField(max_length=32, default="ietf.org") description = models.CharField(max_length=256) def __str__(self): return "" % self.name def info_url(self): - return settings.MAILING_LIST_INFO_URL % {'list_addr': self.name } + return settings.MAILING_LIST_INFO_URL % {'list_addr': self.name.lower(), 'domain': self.domain.lower() } # Allowlisted is unused, but is not being dropped until its human-curated content # is archived outside this database. diff --git a/ietf/mailinglists/resources.py b/ietf/mailinglists/resources.py index b075d18079..4d1713b7b6 100644 --- a/ietf/mailinglists/resources.py +++ b/ietf/mailinglists/resources.py @@ -41,6 +41,7 @@ class Meta: filtering = { "id": ALL, "name": ALL, + "domain": ALL, "description": ALL, } api.mailinglists.register(NonWgMailingListResource()) diff --git a/ietf/mailinglists/tests.py b/ietf/mailinglists/tests.py index 0b44d28c71..8c5a550dfc 100644 --- a/ietf/mailinglists/tests.py +++ b/ietf/mailinglists/tests.py @@ -38,7 +38,9 @@ def test_nonwg(self): url = urlreverse("ietf.mailinglists.views.nonwg") r = self.client.get(url) + q = PyQuery(r.content) for l in lists: self.assertContains(r, l.name) self.assertContains(r, l.description) + self.assertNotEqual(q(f"a[href=\"{l.info_url()}\"]"), []) diff --git a/ietf/settings.py b/ietf/settings.py index 95a8ad4e45..4f0bba20a9 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -690,7 +690,7 @@ def skip_unreadable_post(record): DOCUMENT_FORMAT_ALLOWLIST = ["txt", "ps", "pdf", "xml", "html", ] # Mailing list info URL for lists hosted on the IETF servers -MAILING_LIST_INFO_URL = "https://www.ietf.org/mailman/listinfo/%(list_addr)s" +MAILING_LIST_INFO_URL = "https://mailman3.%(domain)s/mailman3/lists/%(list_addr)s.%(domain)s" MAILING_LIST_ARCHIVE_URL = "https://mailarchive.ietf.org" # Liaison Statement Tool settings (one is used in DOC_HREFS below) From 3e09c14a81d2712040ae8871c22f3cc81f04e41e Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Fri, 7 Jun 2024 06:38:14 +1200 Subject: [PATCH 135/846] fix: Scroll metadata sidebar tab content (#7499) * Scroll metadata sidebar tab content * Increase spacing for scrollbars for browsers that allow overlapping --------- Co-authored-by: Matthew Holloway --- ietf/templates/doc/document_html.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ietf/templates/doc/document_html.html b/ietf/templates/doc/document_html.html index ef1ba7d48f..40223d0fd1 100644 --- a/ietf/templates/doc/document_html.html +++ b/ietf/templates/doc/document_html.html @@ -172,9 +172,10 @@
    - {{ doc.time|date:"Y-m-d" }} + {{ review_req.doc.time|date:"Y-m-d" }} + {% if review_req.doc.pub_date %} + (Latest revision {{ review_req.doc.pub_date|date:"Y-m-d" }}) + {% endif %}
    - {% if session.uses_notes %} + {% if meeting.uses_notes %} {% for role in person.role_set.all|active_roles %} - + {% for day in time_slices %} {% endfor %} {% endif %} From 24101bb8ca85cfb3a5c47d7f9ed283cc6fb5bc0e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 9 Oct 2025 13:49:40 -0500 Subject: [PATCH 657/846] feat: json snapshots of ipr statements (#9684) --- ietf/ipr/tests.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++ ietf/ipr/urls.py | 1 + ietf/ipr/utils.py | 24 ++++++++++++++++++-- ietf/ipr/views.py | 7 +++++- 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index 74fa540126..4146fbd4c1 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -3,6 +3,7 @@ import datetime +import json from unittest import mock import re @@ -15,6 +16,8 @@ from django.urls import reverse as urlreverse from django.utils import timezone +from django.db.models import Max + import debug # pyflakes:ignore from ietf.api.views import EmailIngestionError @@ -45,6 +48,7 @@ from ietf.mailtrigger.utils import gather_address_lists from ietf.message.factories import MessageFactory from ietf.message.models import Message +from ietf.person.factories import PersonFactory from ietf.utils.mail import outbox, empty_outbox, get_payload_text from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.text import text_to_dict @@ -1113,3 +1117,56 @@ def test_patent_details_required_unless_blanket(self): val = self.data.pop(pf) self.assertTrue(HolderIprDisclosureForm(data=self.data).is_valid()) self.data[pf] = val + +class JsonSnapshotTests(TestCase): + def test_json_snapshot(self): + h = HolderIprDisclosureFactory() + url = urlreverse("ietf.ipr.views.json_snapshot", kwargs=dict(id=h.id)) + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + dump = json.loads(r.content) + self.assertCountEqual( + [o["model"] for o in dump], + ["ipr.holderiprdisclosure", "ipr.iprdisclosurebase", "person.person"], + ) + h.docs.add(WgRfcFactory()) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + dump = json.loads(r.content) + self.assertCountEqual( + [o["model"] for o in dump], + [ + "ipr.holderiprdisclosure", + "ipr.iprdisclosurebase", + "ipr.iprdocrel", + "person.person", + ], + ) + IprEventFactory( + disclosure=h, + message=MessageFactory(by=PersonFactory()), + in_reply_to=MessageFactory(), + ) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + dump = json.loads(r.content) + self.assertCountEqual( + [o["model"] for o in dump], + [ + "ipr.holderiprdisclosure", + "ipr.iprdisclosurebase", + "ipr.iprdocrel", + "ipr.iprevent", + "message.message", + "message.message", + "person.person", + "person.person", + "person.person", + "person.person", + ], + ) + no_such_ipr_id = IprDisclosureBase.objects.aggregate(Max("id"))["id__max"] + 1 + url = urlreverse("ietf.ipr.views.json_snapshot", kwargs=dict(id=no_such_ipr_id)) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) diff --git a/ietf/ipr/urls.py b/ietf/ipr/urls.py index 84ed04a66b..2c8a26c624 100644 --- a/ietf/ipr/urls.py +++ b/ietf/ipr/urls.py @@ -21,6 +21,7 @@ url(r'^(?P\d+)/notify/(?Pupdate|posted)/$', views.notify), url(r'^(?P\d+)/post/$', views.post), url(r'^(?P\d+)/state/$', views.state), + url(r'^(?P\d+)/json-snapshot/$', views.json_snapshot), url(r'^update/$', RedirectView.as_view(url=reverse_lazy('ietf.ipr.views.showlist'), permanent=True)), url(r'^update/(?P\d+)/$', views.update), url(r'^new-(?P<_type>(specific|generic|general|third-party))/$', views.new), diff --git a/ietf/ipr/utils.py b/ietf/ipr/utils.py index 7e569a1d1d..bcbb052260 100644 --- a/ietf/ipr/utils.py +++ b/ietf/ipr/utils.py @@ -1,11 +1,16 @@ -# Copyright The IETF Trust 2014-2020, All Rights Reserved +# Copyright The IETF Trust 2014-2025, All Rights Reserved # -*- coding: utf-8 -*- +import json +import debug # pyflakes:ignore + from textwrap import dedent +from django.core import serializers + from ietf.ipr.mail import process_response_email, UndeliverableIprResponseError -import debug # pyflakes:ignore +from ietf.ipr.models import IprDocRel def get_genitive(name): """Return the genitive form of name""" @@ -85,3 +90,18 @@ def ingest_response_email(message: bytes): email_original_message=message, email_attach_traceback=True, ) from err + +def json_dump_disclosure(disclosure): + objs = set() + objs.add(disclosure) + objs.add(disclosure.iprdisclosurebase_ptr) + objs.add(disclosure.by) + objs.update(IprDocRel.objects.filter(disclosure=disclosure)) + objs.update(disclosure.iprevent_set.all()) + objs.update([i.by for i in disclosure.iprevent_set.all()]) + objs.update([i.message for i in disclosure.iprevent_set.all() if i.message ]) + objs.update([i.message.by for i in disclosure.iprevent_set.all() if i.message ]) + objs.update([i.in_reply_to for i in disclosure.iprevent_set.all() if i.in_reply_to ]) + objs.update([i.in_reply_to.by for i in disclosure.iprevent_set.all() if i.in_reply_to ]) + objs = sorted(list(objs),key=lambda o:o.__class__.__name__) + return json.dumps(json.loads(serializers.serialize("json",objs)),indent=4) diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 08979a3972..8eb3affbc0 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -32,7 +32,7 @@ NonDocSpecificIprDisclosure, IprDocRel, RelatedIpr,IprEvent) from ietf.ipr.utils import (get_genitive, get_ipr_summary, - iprs_from_docs, related_docs) + iprs_from_docs, json_dump_disclosure, related_docs) from ietf.mailtrigger.utils import gather_address_lists from ietf.message.models import Message from ietf.message.utils import infer_message @@ -901,3 +901,8 @@ def update(request, id): child = ipr.get_child() type = class_to_type[child.__class__.__name__] return new(request, type, updates=id) + +@role_required("Secretariat") +def json_snapshot(request, id): + obj = get_object_or_404(IprDisclosureBase,id=id).get_child() + return HttpResponse(json_dump_disclosure(obj),content_type="application/json") From 9d2fa7a32c6dae35de28c3a5f62ca5d762baef3c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 9 Oct 2025 17:04:13 -0500 Subject: [PATCH 658/846] feat: track deleted ipr disclosures (#9691) * feat: track deleted ipr disclosures * fix: unique constraint on removed_id --- ietf/ipr/admin.py | 23 ++++++++++++--- .../migrations/0005_removediprdisclosure.py | 28 +++++++++++++++++++ .../migrations/0006_already_removed_ipr.py | 24 ++++++++++++++++ ietf/ipr/models.py | 6 +++- ietf/ipr/resources.py | 19 +++++++++++-- ietf/ipr/tests.py | 22 ++++++++++++++- ietf/ipr/views.py | 11 ++++++-- ietf/templates/ipr/deleted.html | 16 +++++++++++ 8 files changed, 139 insertions(+), 10 deletions(-) create mode 100644 ietf/ipr/migrations/0005_removediprdisclosure.py create mode 100644 ietf/ipr/migrations/0006_already_removed_ipr.py create mode 100644 ietf/templates/ipr/deleted.html diff --git a/ietf/ipr/admin.py b/ietf/ipr/admin.py index afc1952d72..1a8a908dcd 100644 --- a/ietf/ipr/admin.py +++ b/ietf/ipr/admin.py @@ -1,13 +1,22 @@ -# Copyright The IETF Trust 2010-2020, All Rights Reserved +# Copyright The IETF Trust 2010-2025, All Rights Reserved # -*- coding: utf-8 -*- from django import forms from django.contrib import admin from ietf.name.models import DocRelationshipName -from ietf.ipr.models import (IprDisclosureBase, IprDocRel, IprEvent, - RelatedIpr, HolderIprDisclosure, ThirdPartyIprDisclosure, GenericIprDisclosure, - NonDocSpecificIprDisclosure, LegacyMigrationIprEvent) +from ietf.ipr.models import ( + IprDisclosureBase, + IprDocRel, + IprEvent, + RelatedIpr, + HolderIprDisclosure, + RemovedIprDisclosure, + ThirdPartyIprDisclosure, + GenericIprDisclosure, + NonDocSpecificIprDisclosure, + LegacyMigrationIprEvent, +) # ------------------------------------------------------ # ModelAdmins @@ -110,3 +119,9 @@ class LegacyMigrationIprEventAdmin(admin.ModelAdmin): list_filter = ['time', 'type', 'response_due'] raw_id_fields = ['by', 'disclosure', 'message', 'in_reply_to'] admin.site.register(LegacyMigrationIprEvent, LegacyMigrationIprEventAdmin) + +class RemovedIprDisclosureAdmin(admin.ModelAdmin): + pass + + +admin.site.register(RemovedIprDisclosure, RemovedIprDisclosureAdmin) diff --git a/ietf/ipr/migrations/0005_removediprdisclosure.py b/ietf/ipr/migrations/0005_removediprdisclosure.py new file mode 100644 index 0000000000..400a264579 --- /dev/null +++ b/ietf/ipr/migrations/0005_removediprdisclosure.py @@ -0,0 +1,28 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("ipr", "0004_holderiprdisclosure_is_blanket_disclosure"), + ] + + operations = [ + migrations.CreateModel( + name="RemovedIprDisclosure", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("removed_id", models.PositiveBigIntegerField(unique=True)), + ("reason", models.TextField()), + ], + ), + ] diff --git a/ietf/ipr/migrations/0006_already_removed_ipr.py b/ietf/ipr/migrations/0006_already_removed_ipr.py new file mode 100644 index 0000000000..0e2dbc63eb --- /dev/null +++ b/ietf/ipr/migrations/0006_already_removed_ipr.py @@ -0,0 +1,24 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +from django.db import migrations + + +def forward(apps, schema_editor): + RemovedIprDisclosure = apps.get_model("ipr", "RemovedIprDisclosure") + for id in (6544, 6068): + RemovedIprDisclosure.objects.create( + removed_id=id, + reason="This IPR disclosure was removed as objectively false.", + ) + + +def reverse(apps, schema_editor): + RemovedIprDisclosure = apps.get_model("ipr", "RemovedIprDisclosure") + RemovedIprDisclosure.objects.all().delete() + + +class Migration(migrations.Migration): + dependencies = [ + ("ipr", "0005_removediprdisclosure"), + ] + + operations = [migrations.RunPython(forward, reverse)] diff --git a/ietf/ipr/models.py b/ietf/ipr/models.py index 2d81eb4b42..ea148c2704 100644 --- a/ietf/ipr/models.py +++ b/ietf/ipr/models.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2023, All Rights Reserved +# Copyright The IETF Trust 2007-2025, All Rights Reserved # -*- coding: utf-8 -*- @@ -270,3 +270,7 @@ class LegacyMigrationIprEvent(IprEvent): """A subclass of IprEvent specifically for capturing contents of legacy_url_0, the text of a disclosure submitted by email""" pass + +class RemovedIprDisclosure(models.Model): + removed_id = models.PositiveBigIntegerField(unique=True) + reason = models.TextField() diff --git a/ietf/ipr/resources.py b/ietf/ipr/resources.py index 0d8421cdec..c4d2c436e6 100644 --- a/ietf/ipr/resources.py +++ b/ietf/ipr/resources.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2025, All Rights Reserved # -*- coding: utf-8 -*- # Autogenerated by the mkresources management command 2015-03-21 14:05 PDT @@ -11,7 +11,7 @@ from ietf import api -from ietf.ipr.models import ( IprDisclosureBase, IprDocRel, HolderIprDisclosure, ThirdPartyIprDisclosure, +from ietf.ipr.models import ( IprDisclosureBase, IprDocRel, HolderIprDisclosure, RemovedIprDisclosure, ThirdPartyIprDisclosure, RelatedIpr, NonDocSpecificIprDisclosure, GenericIprDisclosure, IprEvent, LegacyMigrationIprEvent ) from ietf.person.resources import PersonResource @@ -295,3 +295,18 @@ class Meta: } api.ipr.register(LegacyMigrationIprEventResource()) + + +class RemovedIprDisclosureResource(ModelResource): + class Meta: + queryset = RemovedIprDisclosure.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'removediprdisclosure' + ordering = ['id', ] + filtering = { + "id": ALL, + "removed_id": ALL, + "reason": ALL, + } +api.ipr.register(RemovedIprDisclosureResource()) diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index 4146fbd4c1..53a599e2de 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -41,7 +41,7 @@ from ietf.ipr.forms import DraftForm, HolderIprDisclosureForm from ietf.ipr.mail import (process_response_email, get_reply_to, get_update_submitter_emails, get_pseudo_submitter, get_holders, get_update_cc_addrs, UndeliverableIprResponseError) -from ietf.ipr.models import (IprDisclosureBase, GenericIprDisclosure, HolderIprDisclosure, +from ietf.ipr.models import (IprDisclosureBase, GenericIprDisclosure, HolderIprDisclosure, RemovedIprDisclosure, ThirdPartyIprDisclosure, IprEvent) from ietf.ipr.templatetags.ipr_filters import no_revisions_message from ietf.ipr.utils import get_genitive, get_ipr_summary, ingest_response_email @@ -129,6 +129,26 @@ def test_showlist(self): self.assertContains(r, "removed as objectively false") ipr.delete() + def test_show_delete(self): + ipr = HolderIprDisclosureFactory() + removed = RemovedIprDisclosure.objects.create( + removed_id=ipr.pk, reason="Removed for reasons" + ) + url = urlreverse("ietf.ipr.views.show", kwargs=dict(id=removed.removed_id)) + r = self.client.get(url) + self.assertContains(r, "Removed for reasons") + q = PyQuery(r.content) + self.assertEqual(len(q("#deletion_warning")), 0) + self.client.login(username="secretary", password="secretary+password") + r = self.client.get(url) + self.assertContains(r, "Removed for reasons") + q = PyQuery(r.content) + self.assertEqual(len(q("#deletion_warning")), 1) + ipr.delete() + r = self.client.get(url) + self.assertContains(r, "Removed for reasons") + q = PyQuery(r.content) + self.assertEqual(len(q("#deletion_warning")), 0) def test_show_posted(self): ipr = HolderIprDisclosureFactory() diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 8eb3affbc0..665c99dc43 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -28,7 +28,7 @@ AddCommentForm, AddEmailForm, NotifyForm, StateForm, NonDocSpecificIprDisclosureForm, GenericIprDisclosureForm) from ietf.ipr.models import (IprDisclosureStateName, IprDisclosureBase, - HolderIprDisclosure, GenericIprDisclosure, ThirdPartyIprDisclosure, + HolderIprDisclosure, GenericIprDisclosure, RemovedIprDisclosure, ThirdPartyIprDisclosure, NonDocSpecificIprDisclosure, IprDocRel, RelatedIpr,IprEvent) from ietf.ipr.utils import (get_genitive, get_ipr_summary, @@ -817,7 +817,14 @@ def get_details_tabs(ipr, selected): def show(request, id): """View of individual declaration""" - ipr = get_object_or_404(IprDisclosureBase, id=id).get_child() + ipr = IprDisclosureBase.objects.filter(id=id) + removed = RemovedIprDisclosure.objects.filter(removed_id=id) + if removed.exists(): + return render(request, "ipr/deleted.html", {"removed": removed.get(), "ipr": ipr}) + if not ipr.exists(): + raise Http404 + else: + ipr = ipr.get().get_child() if not has_role(request.user, 'Secretariat'): if ipr.state.slug in ['removed', 'removed_objfalse']: return render(request, "ipr/removed.html", { diff --git a/ietf/templates/ipr/deleted.html b/ietf/templates/ipr/deleted.html new file mode 100644 index 0000000000..24f696ebca --- /dev/null +++ b/ietf/templates/ipr/deleted.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} +{% load ietf_filters origin %} +{% block title %}Removed IPR Disclosure{% endblock %} +{% block content %} + {% origin %} +

    Removed IPR disclosure

    +

    + {{ removed.reason }} +

    + {% if user|has_role:"Secretariat" and ipr.exists %} +

    + This disclosure has not yet been deleted and parts of its content is available through, e.g, the history view and the /api/v1 views. +

    + {% endif %} + {% endblock %} \ No newline at end of file From ed6b061cfe4279328dbb7b914f5f7f76644521f9 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Fri, 10 Oct 2025 05:43:24 -0700 Subject: [PATCH 659/846] chore: merge feat/sreq to main (#9697) * refactor: move session request tool to ietf.meeting and restyle (#9617) * refactor: move session request tool to ietf.meeting and restyle to match standard Datatracker * fix: add redirect for old session request url * fix: move stripe javascript to js file * fix: update copyright lines for modified files * fix: rename javascripts and expand redirects * fix: don't show inactive constraints label when there are none (#9680) * chore: remove unused utility * fix: add test for secr main menu page (#9693) * fix: don't show inactive constraints label when there are none * fix: add test for secr main menu page --------- Co-authored-by: Jennifer Richards Co-authored-by: Robert Sparks --- ietf/meeting/forms.py | 333 +++++++- .../templatetags/ams_filters.py | 2 + .../tests_session_requests.py} | 314 ++++--- ietf/meeting/tests_views.py | 4 +- ietf/meeting/urls.py | 14 +- .../views_session_request.py} | 803 ++++++++++-------- ietf/secr/meetings/views.py | 4 +- ietf/secr/sreq/__init__.py | 0 ietf/secr/sreq/forms.py | 333 -------- ietf/secr/sreq/templatetags/__init__.py | 0 ietf/secr/sreq/urls.py | 20 - ietf/secr/telechat/tests.py | 21 + ietf/secr/templates/includes/activities.html | 23 - .../includes/buttons_next_cancel.html | 6 - .../includes/buttons_submit_cancel.html | 6 - .../templates/includes/sessions_footer.html | 5 - .../includes/sessions_request_form.html | 130 --- .../includes/sessions_request_view.html | 73 -- .../sessions_request_view_formset.html | 32 - .../sessions_request_view_session_set.html | 32 - ietf/secr/templates/index.html | 6 +- ietf/secr/templates/sreq/confirm.html | 57 -- ietf/secr/templates/sreq/edit.html | 39 - ietf/secr/templates/sreq/locked.html | 30 - ietf/secr/templates/sreq/main.html | 65 -- ietf/secr/templates/sreq/new.html | 43 - ietf/secr/templates/sreq/tool_status.html | 42 - ietf/secr/templates/sreq/view.html | 55 -- ietf/secr/urls.py | 13 +- ietf/secr/utils/group.py | 50 -- ietf/settings.py | 1 - ietf/static/js/custom_striped.js | 16 + ietf/{secr => }/static/js/session_form.js | 2 +- .../js/session_request.js} | 12 +- ietf/templates/base/menu.html | 4 +- ietf/templates/group/meetings-row.html | 3 +- ietf/templates/group/meetings.html | 3 +- .../meeting/important_dates_for_meeting.ics | 5 +- ietf/templates/meeting/requests.html | 4 +- .../session_approval_notification.txt | 5 +- .../meeting}/session_cancel_notification.txt | 1 + .../meeting/session_details_form.html | 64 +- .../session_not_meeting_notification.txt} | 1 + .../meeting/session_request_confirm.html | 38 + .../meeting/session_request_form.html | 206 +++++ .../meeting/session_request_info.txt | 26 + .../meeting/session_request_list.html | 65 ++ .../meeting/session_request_locked.html | 21 + .../meeting}/session_request_notification.txt | 3 +- .../meeting/session_request_status.html | 28 + .../meeting/session_request_view.html | 59 ++ .../meeting/session_request_view_formset.html | 49 ++ .../session_request_view_session_set.html | 47 + .../meeting/session_request_view_table.html | 146 ++++ package.json | 5 +- 55 files changed, 1728 insertions(+), 1641 deletions(-) rename ietf/{secr/sreq => meeting}/templatetags/ams_filters.py (96%) rename ietf/{secr/sreq/tests.py => meeting/tests_session_requests.py} (84%) rename ietf/{secr/sreq/views.py => meeting/views_session_request.py} (80%) delete mode 100644 ietf/secr/sreq/__init__.py delete mode 100644 ietf/secr/sreq/forms.py delete mode 100644 ietf/secr/sreq/templatetags/__init__.py delete mode 100644 ietf/secr/sreq/urls.py delete mode 100644 ietf/secr/templates/includes/activities.html delete mode 100644 ietf/secr/templates/includes/buttons_next_cancel.html delete mode 100644 ietf/secr/templates/includes/buttons_submit_cancel.html delete mode 100755 ietf/secr/templates/includes/sessions_footer.html delete mode 100755 ietf/secr/templates/includes/sessions_request_form.html delete mode 100644 ietf/secr/templates/includes/sessions_request_view.html delete mode 100644 ietf/secr/templates/includes/sessions_request_view_formset.html delete mode 100644 ietf/secr/templates/includes/sessions_request_view_session_set.html delete mode 100755 ietf/secr/templates/sreq/confirm.html delete mode 100755 ietf/secr/templates/sreq/edit.html delete mode 100755 ietf/secr/templates/sreq/locked.html delete mode 100755 ietf/secr/templates/sreq/main.html delete mode 100755 ietf/secr/templates/sreq/new.html delete mode 100755 ietf/secr/templates/sreq/tool_status.html delete mode 100644 ietf/secr/templates/sreq/view.html delete mode 100644 ietf/secr/utils/group.py create mode 100644 ietf/static/js/custom_striped.js rename ietf/{secr => }/static/js/session_form.js (92%) rename ietf/{secr/static/js/sessions.js => static/js/session_request.js} (90%) rename ietf/{secr/templates/sreq => templates/meeting}/session_approval_notification.txt (56%) rename ietf/{secr/templates/sreq => templates/meeting}/session_cancel_notification.txt (71%) rename ietf/{secr/templates/sreq/not_meeting_notification.txt => templates/meeting/session_not_meeting_notification.txt} (83%) create mode 100644 ietf/templates/meeting/session_request_confirm.html create mode 100644 ietf/templates/meeting/session_request_form.html create mode 100644 ietf/templates/meeting/session_request_info.txt create mode 100644 ietf/templates/meeting/session_request_list.html create mode 100644 ietf/templates/meeting/session_request_locked.html rename ietf/{secr/templates/sreq => templates/meeting}/session_request_notification.txt (56%) create mode 100644 ietf/templates/meeting/session_request_status.html create mode 100644 ietf/templates/meeting/session_request_view.html create mode 100644 ietf/templates/meeting/session_request_view_formset.html create mode 100644 ietf/templates/meeting/session_request_view_session_set.html create mode 100644 ietf/templates/meeting/session_request_view_table.html diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index b6b1a1591f..e5b1697f86 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2016-2023, All Rights Reserved +# Copyright The IETF Trust 2016-2025, All Rights Reserved # -*- coding: utf-8 -*- @@ -15,19 +15,24 @@ from django.core import validators from django.core.exceptions import ValidationError from django.forms import BaseInlineFormSet +from django.template.defaultfilters import pluralize from django.utils.functional import cached_property +from django.utils.safestring import mark_safe import debug # pyflakes:ignore from ietf.doc.models import Document, State, NewRevisionDocEvent from ietf.group.models import Group from ietf.group.utils import groups_managed_by -from ietf.meeting.models import Session, Meeting, Schedule, COUNTRIES, TIMEZONES, TimeSlot, Room +from ietf.meeting.models import (Session, Meeting, Schedule, COUNTRIES, TIMEZONES, TimeSlot, Room, + Constraint, ResourceAssociation) from ietf.meeting.helpers import get_next_interim_number, make_materials_directories from ietf.meeting.helpers import is_interim_meeting_approved, get_next_agenda_name from ietf.message.models import Message -from ietf.name.models import TimeSlotTypeName, SessionPurposeName +from ietf.name.models import TimeSlotTypeName, SessionPurposeName, TimerangeName, ConstraintName +from ietf.person.fields import SearchablePersonsField from ietf.person.models import Person +from ietf.utils import log from ietf.utils.fields import ( DatepickerDateField, DatepickerSplitDateTimeWidget, @@ -35,9 +40,14 @@ ModelMultipleChoiceField, MultiEmailField, ) +from ietf.utils.html import clean_text_field from ietf.utils.validators import ( validate_file_size, validate_mime_type, validate_file_extension, validate_no_html_frame) +NUM_SESSION_CHOICES = (('', '--Please select'), ('1', '1'), ('2', '2')) +SESSION_TIME_RELATION_CHOICES = (('', 'No preference'),) + Constraint.TIME_RELATION_CHOICES +JOINT_FOR_SESSION_CHOICES = (('1', 'First session'), ('2', 'Second session'), ('3', 'Third session'), ) + # ------------------------------------------------- # Helpers # ------------------------------------------------- @@ -74,6 +84,27 @@ def duration_string(duration): return string +def allowed_conflicting_groups(): + return Group.objects.filter( + type__in=['wg', 'ag', 'rg', 'rag', 'program', 'edwg'], + state__in=['bof', 'proposed', 'active']) + + +def check_conflict(groups, source_group): + ''' + Takes a string which is a list of group acronyms. Checks that they are all active groups + ''' + # convert to python list (allow space or comma separated lists) + items = groups.replace(',', ' ').split() + active_groups = allowed_conflicting_groups() + for group in items: + if group == source_group.acronym: + raise forms.ValidationError("Cannot declare a conflict with the same group: %s" % group) + + if not active_groups.filter(acronym=group): + raise forms.ValidationError("Invalid or inactive group acronym: %s" % group) + + # ------------------------------------------------- # Forms # ------------------------------------------------- @@ -753,6 +784,9 @@ def __init__(self, group, *args, **kwargs): self.fields['purpose'].queryset = SessionPurposeName.objects.filter(pk__in=session_purposes) if not group.features.acts_like_wg: self.fields['requested_duration'].durations = [datetime.timedelta(minutes=m) for m in range(30, 241, 30)] + # add bootstrap classes + self.fields['purpose'].widget.attrs.update({'class': 'form-select'}) + self.fields['type'].widget.attrs.update({'class': 'form-select', 'aria-label': 'session type'}) class Meta: model = Session @@ -837,3 +871,296 @@ def sessiondetailsformset_factory(min_num=1, max_num=3): max_num=max_num, extra=max_num, # only creates up to max_num total ) + + +class SessionRequestStatusForm(forms.Form): + message = forms.CharField(widget=forms.Textarea(attrs={'rows': '3', 'cols': '80'}), strip=False) + + +class NameModelMultipleChoiceField(ModelMultipleChoiceField): + def label_from_instance(self, name): + return name.desc + + +class SessionRequestForm(forms.Form): + num_session = forms.ChoiceField( + choices=NUM_SESSION_CHOICES, + label="Number of sessions") + # session fields are added in __init__() + session_time_relation = forms.ChoiceField( + choices=SESSION_TIME_RELATION_CHOICES, + required=False, + label="Time between two sessions") + attendees = forms.IntegerField(label="Number of Attendees") + # FIXME: it would cleaner to have these be + # ModelMultipleChoiceField, and just customize the widgetry, that + # way validation comes for free (applies to this CharField and the + # constraints dynamically instantiated in __init__()) + joint_with_groups = forms.CharField(max_length=255, required=False) + joint_with_groups_selector = forms.ChoiceField(choices=[], required=False) # group select widget for prev field + joint_for_session = forms.ChoiceField(choices=JOINT_FOR_SESSION_CHOICES, required=False) + comments = forms.CharField( + max_length=200, + label='Special Requests', + help_text='i.e. restrictions on meeting times / days, etc. (limit 200 characters)', + required=False) + third_session = forms.BooleanField( + required=False, + help_text="Help") + resources = forms.MultipleChoiceField( + widget=forms.CheckboxSelectMultiple, + required=False, + label='Resources Requested') + bethere = SearchablePersonsField( + label="Participants who must be present", + required=False, + help_text=mark_safe('Do not include Area Directors and WG Chairs; the system already tracks their availability.')) + timeranges = NameModelMultipleChoiceField( + widget=forms.CheckboxSelectMultiple, + required=False, + label=mark_safe('Times during which this WG can not meet:
    Please explain any selections in Special Requests below.'), + queryset=TimerangeName.objects.all()) + adjacent_with_wg = forms.ChoiceField( + required=False, + label=mark_safe('Plan session adjacent with another WG:
    (Immediately before or after another WG, no break in between, in the same room.)')) + send_notifications = forms.BooleanField(label="Send notification emails?", required=False, initial=False) + + def __init__(self, group, meeting, data=None, *args, **kwargs): + self.hidden = kwargs.pop('hidden', False) + self.notifications_optional = kwargs.pop('notifications_optional', False) + + self.group = group + formset_class = sessiondetailsformset_factory(max_num=3 if group.features.acts_like_wg else 50) + self.session_forms = formset_class(group=self.group, meeting=meeting, data=data) + super().__init__(data=data, *args, **kwargs) + if not self.notifications_optional: + self.fields['send_notifications'].widget = forms.HiddenInput() + + # Allow additional sessions for non-wg-like groups + if not self.group.features.acts_like_wg: + self.fields['num_session'].choices = ((n, str(n)) for n in range(1, 51)) + + self._add_widget_class(self.fields['third_session'].widget, 'form-check-input') + self.fields['comments'].widget = forms.Textarea(attrs={'rows': '3', 'cols': '65'}) + + other_groups = list(allowed_conflicting_groups().exclude(pk=group.pk).values_list('acronym', 'acronym').order_by('acronym')) + self.fields['adjacent_with_wg'].choices = [('', '--No preference')] + other_groups + group_acronym_choices = [('', '--Select WG(s)')] + other_groups + self.fields['joint_with_groups_selector'].choices = group_acronym_choices + + # Set up constraints for the meeting + self._wg_field_data = [] + for constraintname in meeting.group_conflict_types.all(): + # two fields for each constraint: a CharField for the group list and a selector to add entries + constraint_field = forms.CharField(max_length=255, required=False) + constraint_field.widget.attrs['data-slug'] = constraintname.slug + constraint_field.widget.attrs['data-constraint-name'] = str(constraintname).title() + constraint_field.widget.attrs['aria-label'] = f'{constraintname.slug}_input' + self._add_widget_class(constraint_field.widget, 'wg_constraint') + self._add_widget_class(constraint_field.widget, 'form-control') + + selector_field = forms.ChoiceField(choices=group_acronym_choices, required=False) + selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onchange handler + self._add_widget_class(selector_field.widget, 'wg_constraint_selector') + self._add_widget_class(selector_field.widget, 'form-control') + + cfield_id = 'constraint_{}'.format(constraintname.slug) + cselector_id = 'wg_selector_{}'.format(constraintname.slug) + # keep an eye out for field name conflicts + log.assertion('cfield_id not in self.fields') + log.assertion('cselector_id not in self.fields') + self.fields[cfield_id] = constraint_field + self.fields[cselector_id] = selector_field + self._wg_field_data.append((constraintname, cfield_id, cselector_id)) + + # Show constraints that are not actually used by the meeting so these don't get lost + self._inactive_wg_field_data = [] + inactive_cnames = ConstraintName.objects.filter( + is_group_conflict=True # Only collect group conflicts... + ).exclude( + meeting=meeting # ...that are not enabled for this meeting... + ).filter( + constraint__source=group, # ...but exist for this group... + constraint__meeting=meeting, # ... at this meeting. + ).distinct() + + for inactive_constraint_name in inactive_cnames: + field_id = 'delete_{}'.format(inactive_constraint_name.slug) + self.fields[field_id] = forms.BooleanField(required=False, label='Delete this conflict', help_text='Delete this inactive conflict?') + self._add_widget_class(self.fields[field_id].widget, 'form-control') + constraints = group.constraint_source_set.filter(meeting=meeting, name=inactive_constraint_name) + self._inactive_wg_field_data.append( + (inactive_constraint_name, + ' '.join([c.target.acronym for c in constraints]), + field_id) + ) + + self.fields['joint_with_groups_selector'].widget.attrs['onchange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;" + self.fields["resources"].choices = [(x.pk, x.desc) for x in ResourceAssociation.objects.filter(name__used=True).order_by('name__order')] + + if self.hidden: + # replace all the widgets to start... + for key in list(self.fields.keys()): + self.fields[key].widget = forms.HiddenInput() + # re-replace a couple special cases + self.fields['resources'].widget = forms.MultipleHiddenInput() + self.fields['timeranges'].widget = forms.MultipleHiddenInput() + # and entirely replace bethere - no need to support searching if input is hidden + self.fields['bethere'] = ModelMultipleChoiceField( + widget=forms.MultipleHiddenInput, required=False, + queryset=Person.objects.all(), + ) + + def wg_constraint_fields(self): + """Iterates over wg constraint fields + + Intended for use in the template. + """ + for cname, cfield_id, cselector_id in self._wg_field_data: + yield cname, self[cfield_id], self[cselector_id] + + def wg_constraint_count(self): + """How many wg constraints are there?""" + return len(self._wg_field_data) + + def wg_constraint_field_ids(self): + """Iterates over wg constraint field IDs""" + for cname, cfield_id, _ in self._wg_field_data: + yield cname, cfield_id + + def inactive_wg_constraints(self): + for cname, value, field_id in self._inactive_wg_field_data: + yield cname, value, self[field_id] + + def inactive_wg_constraint_count(self): + return len(self._inactive_wg_field_data) + + def inactive_wg_constraint_field_ids(self): + """Iterates over wg constraint field IDs""" + for cname, _, field_id in self._inactive_wg_field_data: + yield cname, field_id + + @staticmethod + def _add_widget_class(widget, new_class): + """Add a new class, taking care in case some already exist""" + existing_classes = widget.attrs.get('class', '').split() + widget.attrs['class'] = ' '.join(existing_classes + [new_class]) + + def _join_conflicts(self, cleaned_data, slugs): + """Concatenate constraint fields from cleaned data into a single list""" + conflicts = [] + for cname, cfield_id, _ in self._wg_field_data: + if cname.slug in slugs and cfield_id in cleaned_data: + groups = cleaned_data[cfield_id] + # convert to python list (allow space or comma separated lists) + items = groups.replace(',', ' ').split() + conflicts.extend(items) + return conflicts + + def _validate_duplicate_conflicts(self, cleaned_data): + """Validate that no WGs appear in more than one constraint that does not allow duplicates + + Raises ValidationError + """ + # Only the older constraints (conflict, conflic2, conflic3) need to be mutually exclusive. + all_conflicts = self._join_conflicts(cleaned_data, ['conflict', 'conflic2', 'conflic3']) + seen = [] + duplicated = [] + errors = [] + for c in all_conflicts: + if c not in seen: + seen.append(c) + elif c not in duplicated: # only report once + duplicated.append(c) + errors.append(forms.ValidationError('%s appears in conflicts more than once' % c)) + return errors + + def clean_joint_with_groups(self): + groups = self.cleaned_data['joint_with_groups'] + check_conflict(groups, self.group) + return groups + + def clean_comments(self): + return clean_text_field(self.cleaned_data['comments']) + + def clean_bethere(self): + bethere = self.cleaned_data["bethere"] + if bethere: + extra = set( + Person.objects.filter( + role__group=self.group, role__name__in=["chair", "ad"] + ) + & bethere + ) + if extra: + extras = ", ".join(e.name for e in extra) + raise forms.ValidationError( + ( + f"Please remove the following person{pluralize(len(extra))}, the system " + f"tracks their availability due to their role{pluralize(len(extra))}: {extras}." + ) + ) + return bethere + + def clean_send_notifications(self): + return True if not self.notifications_optional else self.cleaned_data['send_notifications'] + + def is_valid(self): + return super().is_valid() and self.session_forms.is_valid() + + def clean(self): + super(SessionRequestForm, self).clean() + self.session_forms.clean() + + data = self.cleaned_data + + # Validate the individual conflict fields + for _, cfield_id, _ in self._wg_field_data: + try: + check_conflict(data[cfield_id], self.group) + except forms.ValidationError as e: + self.add_error(cfield_id, e) + + # Skip remaining tests if individual field tests had errors, + if self.errors: + return data + + # error if conflicts contain disallowed dupes + for error in self._validate_duplicate_conflicts(data): + self.add_error(None, error) + + # Verify expected number of session entries are present + num_sessions_with_data = len(self.session_forms.forms_to_keep) + num_sessions_expected = -1 + try: + num_sessions_expected = int(data.get('num_session', '')) + except ValueError: + self.add_error('num_session', 'Invalid value for number of sessions') + if num_sessions_with_data < num_sessions_expected: + self.add_error('num_session', 'Must provide data for all sessions') + + # if default (empty) option is selected, cleaned_data won't include num_session key + if num_sessions_expected != 2 and num_sessions_expected is not None: + if data.get('session_time_relation'): + self.add_error( + 'session_time_relation', + forms.ValidationError('Time between sessions can only be used when two sessions are requested.') + ) + + joint_session = data.get('joint_for_session', '') + if joint_session != '': + joint_session = int(joint_session) + if joint_session > num_sessions_with_data: + self.add_error( + 'joint_for_session', + forms.ValidationError( + f'Session {joint_session} can not be the joint session, the session has not been requested.' + ) + ) + + return data + + @property + def media(self): + # get media for our formset + return super().media + self.session_forms.media + forms.Media(js=('ietf/js/session_form.js',)) diff --git a/ietf/secr/sreq/templatetags/ams_filters.py b/ietf/meeting/templatetags/ams_filters.py similarity index 96% rename from ietf/secr/sreq/templatetags/ams_filters.py rename to ietf/meeting/templatetags/ams_filters.py index 3ef872232a..a8175a81d6 100644 --- a/ietf/secr/sreq/templatetags/ams_filters.py +++ b/ietf/meeting/templatetags/ams_filters.py @@ -1,3 +1,5 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + from django import template from ietf.person.models import Person diff --git a/ietf/secr/sreq/tests.py b/ietf/meeting/tests_session_requests.py similarity index 84% rename from ietf/secr/sreq/tests.py rename to ietf/meeting/tests_session_requests.py index 847b993e1c..0cb092d2f8 100644 --- a/ietf/secr/sreq/tests.py +++ b/ietf/meeting/tests_session_requests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2013-2022, All Rights Reserved +# Copyright The IETF Trust 2013-2025, All Rights Reserved # -*- coding: utf-8 -*- @@ -15,30 +15,15 @@ from ietf.name.models import ConstraintName, TimerangeName from ietf.person.factories import PersonFactory from ietf.person.models import Person -from ietf.secr.sreq.forms import SessionForm +from ietf.meeting.forms import SessionRequestForm from ietf.utils.mail import outbox, empty_outbox, get_payload_text, send_mail from ietf.utils.timezone import date_today from pyquery import PyQuery -SECR_USER='secretary' +SECR_USER = 'secretary' -class SreqUrlTests(TestCase): - def test_urls(self): - MeetingFactory(type_id='ietf',date=date_today()) - - self.client.login(username="secretary", password="secretary+password") - - r = self.client.get("/secr/") - self.assertEqual(r.status_code, 200) - - r = self.client.get("/secr/sreq/") - self.assertEqual(r.status_code, 200) - - testgroup=GroupFactory() - r = self.client.get("/secr/sreq/%s/new/" % testgroup.acronym) - self.assertEqual(r.status_code, 200) class SessionRequestTestCase(TestCase): def test_main(self): @@ -46,7 +31,7 @@ def test_main(self): SessionFactory.create_batch(2, meeting=meeting, status_id='sched') SessionFactory.create_batch(2, meeting=meeting, status_id='disappr') # Several unscheduled groups come from make_immutable_base_data - url = reverse('ietf.secr.sreq.views.main') + url = reverse('ietf.meeting.views_session_request.list_view') self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -62,27 +47,27 @@ def test_approve(self): mars = GroupFactory(parent=area, acronym='mars') # create session waiting for approval session = SessionFactory(meeting=meeting, group=mars, status_id='apprw') - url = reverse('ietf.secr.sreq.views.approve', kwargs={'acronym':'mars'}) + url = reverse('ietf.meeting.views_session_request.approve_request', kwargs={'acronym': 'mars'}) self.client.login(username="ad", password="ad+password") r = self.client.get(url) - self.assertRedirects(r,reverse('ietf.secr.sreq.views.view', kwargs={'acronym':'mars'})) + self.assertRedirects(r, reverse('ietf.meeting.views_session_request.view_request', kwargs={'acronym': 'mars'})) self.assertEqual(SchedulingEvent.objects.filter(session=session).order_by('-id')[0].status_id, 'appr') - + def test_cancel(self): meeting = MeetingFactory(type_id='ietf', date=date_today()) ad = Person.objects.get(user__username='ad') area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group session = SessionFactory(meeting=meeting, group__parent=area, group__acronym='mars', status_id='sched') - url = reverse('ietf.secr.sreq.views.cancel', kwargs={'acronym':'mars'}) + url = reverse('ietf.meeting.views_session_request.cancel_request', kwargs={'acronym': 'mars'}) self.client.login(username="ad", password="ad+password") r = self.client.get(url) - self.assertRedirects(r,reverse('ietf.secr.sreq.views.main')) + self.assertRedirects(r, reverse('ietf.meeting.views_session_request.list_view')) self.assertEqual(SchedulingEvent.objects.filter(session=session).order_by('-id')[0].status_id, 'deleted') def test_cancel_notification_msg(self): to = "" subject = "Dummy subject" - template = "sreq/session_cancel_notification.txt" + template = "meeting/session_cancel_notification.txt" meeting = MeetingFactory(type_id="ietf", date=date_today()) requester = PersonFactory(name="James O'Rourke", user__username="jimorourke") context = {"meeting": meeting, "requester": requester} @@ -113,9 +98,9 @@ def test_edit(self): group4 = GroupFactory() iabprog = GroupFactory(type_id='program') - SessionFactory(meeting=meeting,group=mars,status_id='sched') + SessionFactory(meeting=meeting, group=mars, status_id='sched') - url = reverse('ietf.secr.sreq.views.edit', kwargs={'acronym':'mars'}) + url = reverse('ietf.meeting.views_session_request.edit_request', kwargs={'acronym': 'mars'}) self.client.login(username="marschairman", password="marschairman+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -123,9 +108,9 @@ def test_edit(self): comments = 'need lights' mars_sessions = meeting.session_set.filter(group__acronym='mars') empty_outbox() - post_data = {'num_session':'2', + post_data = {'num_session': '2', 'attendees': attendees, - 'constraint_chair_conflict':iabprog.acronym, + 'constraint_chair_conflict': iabprog.acronym, 'session_time_relation': 'subsequent-days', 'adjacent_with_wg': group2.acronym, 'joint_with_groups': group3.acronym + ' ' + group4.acronym, @@ -135,7 +120,7 @@ def test_edit(self): 'session_set-INITIAL_FORMS': '1', 'session_set-MIN_NUM_FORMS': '1', 'session_set-MAX_NUM_FORMS': '3', - 'session_set-0-id':mars_sessions[0].pk, + 'session_set-0-id': mars_sessions[0].pk, 'session_set-0-name': mars_sessions[0].name, 'session_set-0-short': mars_sessions[0].short, 'session_set-0-purpose': mars_sessions[0].purpose_id, @@ -169,7 +154,7 @@ def test_edit(self): 'session_set-2-DELETE': 'on', 'submit': 'Continue'} r = self.client.post(url, post_data, HTTP_HOST='example.com') - redirect_url = reverse('ietf.secr.sreq.views.view', kwargs={'acronym': 'mars'}) + redirect_url = reverse('ietf.meeting.views_session_request.view_request', kwargs={'acronym': 'mars'}) self.assertRedirects(r, redirect_url) # Check whether updates were stored in the database @@ -204,17 +189,17 @@ def test_edit(self): # Edit again, changing the joint sessions and clearing some fields. The behaviour of # edit is different depending on whether previous joint sessions were recorded. empty_outbox() - post_data = {'num_session':'2', - 'attendees':attendees, - 'constraint_chair_conflict':'', - 'comments':'need lights', + post_data = {'num_session': '2', + 'attendees': attendees, + 'constraint_chair_conflict': '', + 'comments': 'need lights', 'joint_with_groups': group2.acronym, 'joint_for_session': '1', 'session_set-TOTAL_FORMS': '3', # matches what view actually sends, even with only 2 filled in 'session_set-INITIAL_FORMS': '2', 'session_set-MIN_NUM_FORMS': '1', 'session_set-MAX_NUM_FORMS': '3', - 'session_set-0-id':sessions[0].pk, + 'session_set-0-id': sessions[0].pk, 'session_set-0-name': sessions[0].name, 'session_set-0-short': sessions[0].short, 'session_set-0-purpose': sessions[0].purpose_id, @@ -270,7 +255,6 @@ def test_edit(self): r = self.client.get(redirect_url) self.assertContains(r, 'First session with: {}'.format(group2.acronym)) - def test_edit_constraint_bethere(self): meeting = MeetingFactory(type_id='ietf', date=date_today()) mars = RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars').group @@ -282,7 +266,7 @@ def test_edit_constraint_bethere(self): name_id='bethere', ) self.assertEqual(session.people_constraints.count(), 1) - url = reverse('ietf.secr.sreq.views.edit', kwargs=dict(acronym='mars')) + url = reverse('ietf.meeting.views_session_request.edit_request', kwargs=dict(acronym='mars')) self.client.login(username='marschairman', password='marschairman+password') attendees = '10' ad = Person.objects.get(user__username='ad') @@ -290,8 +274,8 @@ def test_edit_constraint_bethere(self): 'num_session': '1', 'attendees': attendees, 'bethere': str(ad.pk), - 'constraint_chair_conflict':'', - 'comments':'', + 'constraint_chair_conflict': '', + 'comments': '', 'joint_with_groups': '', 'joint_for_session': '', 'delete_conflict': 'on', @@ -299,7 +283,7 @@ def test_edit_constraint_bethere(self): 'session_set-INITIAL_FORMS': '1', 'session_set-MIN_NUM_FORMS': '1', 'session_set-MAX_NUM_FORMS': '3', - 'session_set-0-id':session.pk, + 'session_set-0-id': session.pk, 'session_set-0-name': session.name, 'session_set-0-short': session.short, 'session_set-0-purpose': session.purpose_id, @@ -313,8 +297,8 @@ def test_edit_constraint_bethere(self): 'session_set-1-id': '', 'session_set-1-name': '', 'session_set-1-short': '', - 'session_set-1-purpose':'regular', - 'session_set-1-type':'regular', + 'session_set-1-purpose': 'regular', + 'session_set-1-type': 'regular', 'session_set-1-requested_duration': '', 'session_set-1-on_agenda': 'True', 'session_set-1-attendees': attendees, @@ -333,7 +317,7 @@ def test_edit_constraint_bethere(self): 'submit': 'Save', } r = self.client.post(url, post_data, HTTP_HOST='example.com') - redirect_url = reverse('ietf.secr.sreq.views.view', kwargs={'acronym': 'mars'}) + redirect_url = reverse('ietf.meeting.views_session_request.view_request', kwargs={'acronym': 'mars'}) self.assertRedirects(r, redirect_url) self.assertEqual([pc.person for pc in session.people_constraints.all()], [ad]) @@ -350,7 +334,7 @@ def test_edit_inactive_conflicts(self): target=other_group, ) - url = reverse('ietf.secr.sreq.views.edit', kwargs=dict(acronym='mars')) + url = reverse('ietf.meeting.views_session_request.edit_request', kwargs=dict(acronym='mars')) self.client.login(username='marschairman', password='marschairman+password') r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -360,17 +344,17 @@ def test_edit_inactive_conflicts(self): found = q('input#id_delete_conflict[type="checkbox"]') self.assertEqual(len(found), 1) delete_checkbox = found[0] - # check that the label on the checkbox is correct - self.assertIn('Delete this conflict', delete_checkbox.tail) + self.assertIn('Delete this conflict', delete_checkbox.label.text) # check that the target is displayed correctly in the UI - self.assertIn(other_group.acronym, delete_checkbox.find('../input[@type="text"]').value) + row = found.parent().parent() + self.assertIn(other_group.acronym, row.find('input[@type="text"]').val()) attendees = '10' post_data = { 'num_session': '1', 'attendees': attendees, - 'constraint_chair_conflict':'', - 'comments':'', + 'constraint_chair_conflict': '', + 'comments': '', 'joint_with_groups': '', 'joint_for_session': '', 'delete_conflict': 'on', @@ -378,7 +362,7 @@ def test_edit_inactive_conflicts(self): 'session_set-INITIAL_FORMS': '1', 'session_set-MIN_NUM_FORMS': '1', 'session_set-MAX_NUM_FORMS': '3', - 'session_set-0-id':session.pk, + 'session_set-0-id': session.pk, 'session_set-0-name': session.name, 'session_set-0-short': session.short, 'session_set-0-purpose': session.purpose_id, @@ -392,28 +376,28 @@ def test_edit_inactive_conflicts(self): 'submit': 'Save', } r = self.client.post(url, post_data, HTTP_HOST='example.com') - redirect_url = reverse('ietf.secr.sreq.views.view', kwargs={'acronym': 'mars'}) + redirect_url = reverse('ietf.meeting.views_session_request.view_request', kwargs={'acronym': 'mars'}) self.assertRedirects(r, redirect_url) self.assertEqual(len(mars.constraint_source_set.filter(name_id='conflict')), 0) def test_tool_status(self): MeetingFactory(type_id='ietf', date=date_today()) - url = reverse('ietf.secr.sreq.views.tool_status') + url = reverse('ietf.meeting.views_session_request.status') self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) - r = self.client.post(url, {'message':'locked', 'submit':'Lock'}) - self.assertRedirects(r,reverse('ietf.secr.sreq.views.main')) + r = self.client.post(url, {'message': 'locked', 'submit': 'Lock'}) + self.assertRedirects(r, reverse('ietf.meeting.views_session_request.list_view')) def test_new_req_constraint_types(self): """Configurable constraint types should be handled correctly in a new request - Relies on SessionForm representing constraint values with element IDs + Relies on SessionRequestForm representing constraint values with element IDs like id_constraint_ """ meeting = MeetingFactory(type_id='ietf', date=date_today()) RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars') - url = reverse('ietf.secr.sreq.views.new', kwargs=dict(acronym='mars')) + url = reverse('ietf.meeting.views_session_request.new_request', kwargs=dict(acronym='mars')) self.client.login(username="marschairman", password="marschairman+password") for expected in [ @@ -441,7 +425,7 @@ def test_edit_req_constraint_types(self): add_to_schedule=False) RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars') - url = reverse('ietf.secr.sreq.views.edit', kwargs=dict(acronym='mars')) + url = reverse('ietf.meeting.views_session_request.edit_request', kwargs=dict(acronym='mars')) self.client.login(username='marschairman', password='marschairman+password') for expected in [ @@ -460,6 +444,7 @@ def test_edit_req_constraint_types(self): ['id_constraint_{}'.format(conf_name) for conf_name in expected], ) + class SubmitRequestCase(TestCase): def setUp(self): super(SubmitRequestCase, self).setUp() @@ -476,15 +461,15 @@ def test_submit_request(self): group3 = GroupFactory(parent=area) group4 = GroupFactory(parent=area) session_count_before = Session.objects.filter(meeting=meeting, group=group).count() - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) - confirm_url = reverse('ietf.secr.sreq.views.confirm',kwargs={'acronym':group.acronym}) - main_url = reverse('ietf.secr.sreq.views.main') + url = reverse('ietf.meeting.views_session_request.new_request', kwargs={'acronym': group.acronym}) + confirm_url = reverse('ietf.meeting.views_session_request.confirm', kwargs={'acronym': group.acronym}) + main_url = reverse('ietf.meeting.views_session_request.list_view') attendees = '10' comments = 'need projector' - post_data = {'num_session':'1', - 'attendees':attendees, - 'constraint_chair_conflict':'', - 'comments':comments, + post_data = {'num_session': '1', + 'attendees': attendees, + 'constraint_chair_conflict': '', + 'comments': comments, 'adjacent_with_wg': group2.acronym, 'timeranges': ['thursday-afternoon-early', 'thursday-afternoon-late'], 'joint_with_groups': group3.acronym + ' ' + group4.acronym, @@ -506,7 +491,7 @@ def test_submit_request(self): 'session_set-0-DELETE': '', 'submit': 'Continue'} self.client.login(username="secretary", password="secretary+password") - r = self.client.post(url,post_data) + r = self.client.post(url, post_data) self.assertEqual(r.status_code, 200) # Verify the contents of the confirm view @@ -515,13 +500,13 @@ def test_submit_request(self): self.assertContains(r, 'First session with: {} {}'.format(group3.acronym, group4.acronym)) post_data['submit'] = 'Submit' - r = self.client.post(confirm_url,post_data) + r = self.client.post(confirm_url, post_data) self.assertRedirects(r, main_url) session_count_after = Session.objects.filter(meeting=meeting, group=group, type='regular').count() self.assertEqual(session_count_after, session_count_before + 1) # test that second confirm does not add sessions - r = self.client.post(confirm_url,post_data) + r = self.client.post(confirm_url, post_data) self.assertRedirects(r, main_url) session_count_after = Session.objects.filter(meeting=meeting, group=group, type='regular').count() self.assertEqual(session_count_after, session_count_before + 1) @@ -535,42 +520,6 @@ def test_submit_request(self): ) self.assertEqual(set(list(session.joint_with_groups.all())), set([group3, group4])) - def test_submit_request_invalid(self): - MeetingFactory(type_id='ietf', date=date_today()) - ad = Person.objects.get(user__username='ad') - area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group - group = GroupFactory(parent=area) - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) - attendees = '10' - comments = 'need projector' - post_data = { - 'num_session':'2', - 'attendees':attendees, - 'constraint_chair_conflict':'', - 'comments':comments, - 'session_set-TOTAL_FORMS': '1', - 'session_set-INITIAL_FORMS': '1', - 'session_set-MIN_NUM_FORMS': '1', - 'session_set-MAX_NUM_FORMS': '3', - # no 'session_set-0-id' to create a new session - 'session_set-0-name': '', - 'session_set-0-short': '', - 'session_set-0-purpose': 'regular', - 'session_set-0-type': 'regular', - 'session_set-0-requested_duration': '3600', - 'session_set-0-on_agenda': True, - 'session_set-0-remote_instructions': '', - 'session_set-0-attendees': attendees, - 'session_set-0-comments': comments, - 'session_set-0-DELETE': '', - } - self.client.login(username="secretary", password="secretary+password") - r = self.client.post(url,post_data) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertEqual(len(q('#session-request-form')),1) - self.assertContains(r, 'Must provide data for all sessions') - def test_submit_request_check_constraints(self): m1 = MeetingFactory(type_id='ietf', date=date_today() - datetime.timedelta(days=100)) MeetingFactory(type_id='ietf', date=date_today(), @@ -597,7 +546,7 @@ def test_submit_request_check_constraints(self): self.client.login(username="secretary", password="secretary+password") - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) + url = reverse('ietf.meeting.views_session_request.new_request', kwargs={'acronym': group.acronym}) r = self.client.get(url + '?previous') self.assertEqual(r.status_code, 200) q = PyQuery(r.content) @@ -607,11 +556,11 @@ def test_submit_request_check_constraints(self): attendees = '10' comments = 'need projector' - post_data = {'num_session':'1', - 'attendees':attendees, + post_data = {'num_session': '1', + 'attendees': attendees, 'constraint_chair_conflict': group.acronym, - 'comments':comments, - 'session_set-TOTAL_FORMS': '1', + 'comments': comments, + 'session_set-TOTAL_FORMS': '3', 'session_set-INITIAL_FORMS': '1', 'session_set-MIN_NUM_FORMS': '1', 'session_set-MAX_NUM_FORMS': '3', @@ -626,11 +575,31 @@ def test_submit_request_check_constraints(self): 'session_set-0-attendees': attendees, 'session_set-0-comments': comments, 'session_set-0-DELETE': '', + 'session_set-1-name': '', + 'session_set-1-short': '', + 'session_set-1-purpose': session.purpose_id, + 'session_set-1-type': session.type_id, + 'session_set-1-requested_duration': '', + 'session_set-1-on_agenda': session.on_agenda, + 'session_set-1-remote_instructions': '', + 'session_set-1-attendees': attendees, + 'session_set-1-comments': '', + 'session_set-1-DELETE': 'on', + 'session_set-2-name': '', + 'session_set-2-short': '', + 'session_set-2-purpose': session.purpose_id, + 'session_set-2-type': session.type_id, + 'session_set-2-requested_duration': '', + 'session_set-2-on_agenda': session.on_agenda, + 'session_set-2-remote_instructions': '', + 'session_set-2-attendees': attendees, + 'session_set-2-comments': '', + 'session_set-2-DELETE': 'on', 'submit': 'Continue'} - r = self.client.post(url,post_data) + r = self.client.post(url, post_data) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('#session-request-form')),1) + self.assertEqual(len(q('#session-request-form')), 1) self.assertContains(r, "Cannot declare a conflict with the same group") def test_request_notification(self): @@ -645,18 +614,18 @@ def test_request_notification(self): RoleFactory(name_id='chair', group=group, person__user__username='ameschairman') resource = ResourceAssociation.objects.create(name_id='project') # Bit of a test data hack - the fixture now has no used resources to pick from - resource.name.used=True + resource.name.used = True resource.name.save() - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) - confirm_url = reverse('ietf.secr.sreq.views.confirm',kwargs={'acronym':group.acronym}) + url = reverse('ietf.meeting.views_session_request.new_request', kwargs={'acronym': group.acronym}) + confirm_url = reverse('ietf.meeting.views_session_request.confirm', kwargs={'acronym': group.acronym}) len_before = len(outbox) attendees = '10' - post_data = {'num_session':'2', - 'attendees':attendees, - 'bethere':str(ad.pk), - 'constraint_chair_conflict':group4.acronym, - 'comments':'', + post_data = {'num_session': '2', + 'attendees': attendees, + 'bethere': str(ad.pk), + 'constraint_chair_conflict': group4.acronym, + 'comments': '', 'resources': resource.pk, 'session_time_relation': 'subsequent-days', 'adjacent_with_wg': group2.acronym, @@ -692,23 +661,23 @@ def test_request_notification(self): 'submit': 'Continue'} self.client.login(username="ameschairman", password="ameschairman+password") # submit - r = self.client.post(url,post_data) + r = self.client.post(url, post_data) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertTrue('Confirm' in str(q("title")), r.context['form'].errors) # confirm post_data['submit'] = 'Submit' - r = self.client.post(confirm_url,post_data) - self.assertRedirects(r, reverse('ietf.secr.sreq.views.main')) - self.assertEqual(len(outbox),len_before+1) + r = self.client.post(confirm_url, post_data) + self.assertRedirects(r, reverse('ietf.meeting.views_session_request.list_view')) + self.assertEqual(len(outbox), len_before + 1) notification = outbox[-1] notification_payload = get_payload_text(notification) - sessions = Session.objects.filter(meeting=meeting,group=group) + sessions = Session.objects.filter(meeting=meeting, group=group) self.assertEqual(len(sessions), 2) session = sessions[0] - self.assertEqual(session.resources.count(),1) - self.assertEqual(session.people_constraints.count(),1) + self.assertEqual(session.resources.count(), 1) + self.assertEqual(session.people_constraints.count(), 1) self.assertEqual(session.constraints().get(name='time_relation').time_relation, 'subsequent-days') self.assertEqual(session.constraints().get(name='wg_adjacent').target.acronym, group2.acronym) self.assertEqual( @@ -731,7 +700,7 @@ def test_request_notification(self): def test_request_notification_msg(self): to = "" subject = "Dummy subject" - template = "sreq/session_request_notification.txt" + template = "meeting/session_request_notification.txt" header = "A new" meeting = MeetingFactory(type_id="ietf", date=date_today()) requester = PersonFactory(name="James O'Rourke", user__username="jimorourke") @@ -767,19 +736,19 @@ def test_request_notification_third_session(self): RoleFactory(name_id='chair', group=group, person__user__username='ameschairman') resource = ResourceAssociation.objects.create(name_id='project') # Bit of a test data hack - the fixture now has no used resources to pick from - resource.name.used=True + resource.name.used = True resource.name.save() - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) - confirm_url = reverse('ietf.secr.sreq.views.confirm',kwargs={'acronym':group.acronym}) + url = reverse('ietf.meeting.views_session_request.new_request', kwargs={'acronym': group.acronym}) + confirm_url = reverse('ietf.meeting.views_session_request.confirm', kwargs={'acronym': group.acronym}) len_before = len(outbox) attendees = '10' - post_data = {'num_session':'2', + post_data = {'num_session': '2', 'third_session': 'true', - 'attendees':attendees, - 'bethere':str(ad.pk), - 'constraint_chair_conflict':group4.acronym, - 'comments':'', + 'attendees': attendees, + 'bethere': str(ad.pk), + 'constraint_chair_conflict': group4.acronym, + 'comments': '', 'resources': resource.pk, 'session_time_relation': 'subsequent-days', 'adjacent_with_wg': group2.acronym, @@ -826,23 +795,23 @@ def test_request_notification_third_session(self): 'submit': 'Continue'} self.client.login(username="ameschairman", password="ameschairman+password") # submit - r = self.client.post(url,post_data) + r = self.client.post(url, post_data) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertTrue('Confirm' in str(q("title")), r.context['form'].errors) # confirm post_data['submit'] = 'Submit' - r = self.client.post(confirm_url,post_data) - self.assertRedirects(r, reverse('ietf.secr.sreq.views.main')) - self.assertEqual(len(outbox),len_before+1) + r = self.client.post(confirm_url, post_data) + self.assertRedirects(r, reverse('ietf.meeting.views_session_request.list_view')) + self.assertEqual(len(outbox), len_before + 1) notification = outbox[-1] notification_payload = get_payload_text(notification) - sessions = Session.objects.filter(meeting=meeting,group=group) + sessions = Session.objects.filter(meeting=meeting, group=group) self.assertEqual(len(sessions), 3) session = sessions[0] - self.assertEqual(session.resources.count(),1) - self.assertEqual(session.people_constraints.count(),1) + self.assertEqual(session.resources.count(), 1) + self.assertEqual(session.people_constraints.count(), 1) self.assertEqual(session.constraints().get(name='time_relation').time_relation, 'subsequent-days') self.assertEqual(session.constraints().get(name='wg_adjacent').target.acronym, group2.acronym) self.assertEqual( @@ -861,16 +830,17 @@ def test_request_notification_third_session(self): self.assertIn('1 Hour, 1 Hour, 1 Hour', notification_payload) self.assertIn('The third session requires your approval', notification_payload) + class LockAppTestCase(TestCase): def setUp(self): super().setUp() - self.meeting = MeetingFactory(type_id='ietf', date=date_today(),session_request_lock_message='locked') + self.meeting = MeetingFactory(type_id='ietf', date=date_today(), session_request_lock_message='locked') self.group = GroupFactory(acronym='mars') RoleFactory(name_id='chair', group=self.group, person__user__username='marschairman') - SessionFactory(group=self.group,meeting=self.meeting) + SessionFactory(group=self.group, meeting=self.meeting) def test_edit_request(self): - url = reverse('ietf.secr.sreq.views.edit',kwargs={'acronym':self.group.acronym}) + url = reverse('ietf.meeting.views_session_request.edit_request', kwargs={'acronym': self.group.acronym}) self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -882,48 +852,49 @@ def test_edit_request(self): self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertEqual(len(q(':disabled[name="submit"]')), 1) - + def test_view_request(self): - url = reverse('ietf.secr.sreq.views.view',kwargs={'acronym':self.group.acronym}) + url = reverse('ietf.meeting.views_session_request.view_request', kwargs={'acronym': self.group.acronym}) self.client.login(username="secretary", password="secretary+password") - r = self.client.get(url,follow=True) + r = self.client.get(url, follow=True) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertEqual(len(q(':enabled[name="edit"]')), 1) # secretary can edit chair = self.group.role_set.filter(name_id='chair').first().person.user.username self.client.login(username=chair, password=f'{chair}+password') - r = self.client.get(url,follow=True) + r = self.client.get(url, follow=True) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertEqual(len(q(':disabled[name="edit"]')), 1) # chair cannot edit def test_new_request(self): - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':self.group.acronym}) - + url = reverse('ietf.meeting.views_session_request.new_request', kwargs={'acronym': self.group.acronym}) + # try as WG Chair self.client.login(username="marschairman", password="marschairman+password") r = self.client.get(url, follow=True) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('#session-request-form')),0) - + self.assertEqual(len(q('#session-request-form')), 0) + # try as Secretariat self.client.login(username="secretary", password="secretary+password") - r = self.client.get(url,follow=True) + r = self.client.get(url, follow=True) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(len(q('#session-request-form')),1) - + self.assertEqual(len(q('#session-request-form')), 1) + + class NotMeetingCase(TestCase): def test_not_meeting(self): - MeetingFactory(type_id='ietf',date=date_today()) + MeetingFactory(type_id='ietf', date=date_today()) group = GroupFactory(acronym='mars') - url = reverse('ietf.secr.sreq.views.no_session',kwargs={'acronym':group.acronym}) + url = reverse('ietf.meeting.views_session_request.no_session', kwargs={'acronym': group.acronym}) self.client.login(username="secretary", password="secretary+password") empty_outbox() - r = self.client.get(url,follow=True) + r = self.client.get(url, follow=True) # If the view invoked by that get throws an exception (such as an integrity error), # the traceback from this test will talk about a TransactionManagementError and # yell about executing queries before the end of an 'atomic' block @@ -932,14 +903,15 @@ def test_not_meeting(self): self.assertEqual(r.status_code, 200) self.assertContains(r, 'A message was sent to notify not having a session') - r = self.client.get(url,follow=True) + r = self.client.get(url, follow=True) self.assertEqual(r.status_code, 200) self.assertContains(r, 'is already marked as not meeting') - self.assertEqual(len(outbox),1) + self.assertEqual(len(outbox), 1) self.assertTrue('Not having a session' in outbox[0]['Subject']) self.assertTrue('session-request@' in outbox[0]['To']) + class RetrievePreviousCase(TestCase): pass @@ -949,7 +921,7 @@ class RetrievePreviousCase(TestCase): # test access by unauthorized -class SessionFormTest(TestCase): +class SessionRequestFormTest(TestCase): def setUp(self): super().setUp() self.meeting = MeetingFactory(type_id='ietf') @@ -1014,19 +986,19 @@ def setUp(self): 'session_set-2-comments': '', 'session_set-2-DELETE': '', } - + def test_valid(self): # Test with three sessions - form = SessionForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) + form = SessionRequestForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) self.assertTrue(form.is_valid()) - + # Test with two sessions self.valid_form_data.update({ 'third_session': '', 'session_set-TOTAL_FORMS': '2', 'joint_for_session': '2' }) - form = SessionForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) + form = SessionRequestForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) self.assertTrue(form.is_valid()) # Test with one session @@ -1036,9 +1008,9 @@ def test_valid(self): 'joint_for_session': '1', 'session_time_relation': '', }) - form = SessionForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) + form = SessionRequestForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) self.assertTrue(form.is_valid()) - + def test_invalid_groups(self): new_form_data = { 'constraint_chair_conflict': 'doesnotexist', @@ -1057,7 +1029,7 @@ def test_valid_group_appears_in_multiple_conflicts(self): 'constraint_tech_overlap': self.group2.acronym, } self.valid_form_data.update(new_form_data) - form = SessionForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) + form = SessionRequestForm(data=self.valid_form_data, group=self.group1, meeting=self.meeting) self.assertTrue(form.is_valid()) def test_invalid_group_appears_in_multiple_conflicts(self): @@ -1116,7 +1088,7 @@ def test_invalid_joint_for_session(self): 'joint_for_session': [ 'Session 2 can not be the joint session, the session has not been requested.'] }) - + def test_invalid_missing_session_length(self): form = self._invalid_test_helper({ 'session_set-TOTAL_FORMS': '2', @@ -1156,6 +1128,6 @@ def test_invalid_missing_session_length(self): def _invalid_test_helper(self, new_form_data): form_data = dict(self.valid_form_data, **new_form_data) - form = SessionForm(data=form_data, group=self.group1, meeting=self.meeting) + form = SessionRequestForm(data=form_data, group=self.group1, meeting=self.meeting) self.assertFalse(form.is_valid()) return form diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index bd3ab772fc..b1bbc62907 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2024, All Rights Reserved +# Copyright The IETF Trust 2009-2025, All Rights Reserved # -*- coding: utf-8 -*- import datetime import io @@ -7554,7 +7554,7 @@ def test_meeting_requests(self): ) def _sreq_edit_link(sess): return urlreverse( - 'ietf.secr.sreq.views.edit', + 'ietf.meeting.views_session_request.edit_request', kwargs={ 'num': meeting.number, 'acronym': sess.group.acronym, diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index 18b123b4d8..af36a6656c 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -1,10 +1,10 @@ -# Copyright The IETF Trust 2007-2024, All Rights Reserved +# Copyright The IETF Trust 2007-2025, All Rights Reserved from django.conf import settings from django.urls import include from django.views.generic import RedirectView -from ietf.meeting import views, views_proceedings +from ietf.meeting import views, views_proceedings, views_session_request from ietf.utils.urls import url class AgendaRedirectView(RedirectView): @@ -108,6 +108,8 @@ def get_redirect_url(self, *args, **kwargs): url(r'^important-dates.(?Pics)$', views.important_dates), url(r'^proceedings/meetinghosts/edit/', views_proceedings.edit_meetinghosts), url(r'^proceedings/meetinghosts/(?P\d+)/logo/$', views_proceedings.meetinghost_logo), + url(r'^session/request/%(acronym)s/edit/$' % settings.URL_REGEXPS, views_session_request.edit_request), + url(r'^session/request/%(acronym)s/view/$' % settings.URL_REGEXPS, views_session_request.view_request), ] urlpatterns = [ @@ -127,6 +129,13 @@ def get_redirect_url(self, *args, **kwargs): url(r'^upcoming/?$', views.upcoming), url(r'^upcoming\.ics/?$', views.upcoming_ical), url(r'^upcoming\.json/?$', views.upcoming_json), + url(r'^session/request/$', views_session_request.list_view), + url(r'^session/request/%(acronym)s/new/$' % settings.URL_REGEXPS, views_session_request.new_request), + url(r'^session/request/%(acronym)s/approve/$' % settings.URL_REGEXPS, views_session_request.approve_request), + url(r'^session/request/%(acronym)s/no_session/$' % settings.URL_REGEXPS, views_session_request.no_session), + url(r'^session/request/%(acronym)s/cancel/$' % settings.URL_REGEXPS, views_session_request.cancel_request), + url(r'^session/request/%(acronym)s/confirm/$' % settings.URL_REGEXPS, views_session_request.confirm), + url(r'^session/request/status/$', views_session_request.status), url(r'^session/(?P\d+)/agenda_materials$', views.session_materials), url(r'^session/(?P\d+)/cancel/?', views.cancel_session), url(r'^session/(?P\d+)/edit/?', views.edit_session), @@ -140,4 +149,3 @@ def get_redirect_url(self, *args, **kwargs): url(r'^(?P\d+)/', include(safe_for_all_meeting_types)), url(r'^(?Pinterim-[a-z0-9-]+)/', include(safe_for_all_meeting_types)), ] - diff --git a/ietf/secr/sreq/views.py b/ietf/meeting/views_session_request.py similarity index 80% rename from ietf/secr/sreq/views.py rename to ietf/meeting/views_session_request.py index eb93168e1c..a1ef74f1b8 100644 --- a/ietf/secr/sreq/views.py +++ b/ietf/meeting/views_session_request.py @@ -1,29 +1,26 @@ -# Copyright The IETF Trust 2013-2022, All Rights Reserved +# Copyright The IETF Trust 2007-2025, All Rights Reserved # -*- coding: utf-8 -*- - import datetime import inflect from collections import defaultdict, OrderedDict from django.conf import settings from django.contrib import messages +from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q from django.shortcuts import render, get_object_or_404, redirect from django.http import Http404 -import debug # pyflakes:ignore - from ietf.group.models import Group, GroupFeatures from ietf.ietfauth.utils import has_role, role_required -from ietf.meeting.models import Meeting, Session, Constraint, ResourceAssociation, SchedulingEvent from ietf.meeting.helpers import get_meeting +from ietf.meeting.models import Session, Meeting, Constraint, ResourceAssociation, SchedulingEvent from ietf.meeting.utils import add_event_info_to_session_qs -from ietf.name.models import SessionStatusName, ConstraintName -from ietf.secr.sreq.forms import (SessionForm, ToolStatusForm, allowed_conflicting_groups, +from ietf.meeting.forms import (SessionRequestStatusForm, SessionRequestForm, allowed_conflicting_groups, JOINT_FOR_SESSION_CHOICES) +from ietf.name.models import SessionStatusName, ConstraintName from ietf.secr.utils.decorators import check_permissions -from ietf.secr.utils.group import get_my_groups from ietf.utils.mail import send_mail from ietf.mailtrigger.utils import gather_address_lists @@ -31,12 +28,25 @@ # Globals # ------------------------------------------------- # TODO: This needs to be replaced with something that pays attention to groupfeatures -AUTHORIZED_ROLES=('WG Chair','WG Secretary','RG Chair','IAB Group Chair','Area Director','Secretariat','Team Chair','IRTF Chair','Program Chair','Program Lead','Program Secretary', 'EDWG Chair') +AUTHORIZED_ROLES = ( + 'WG Chair', + 'WG Secretary', + 'RG Chair', + 'IAB Group Chair', + 'Area Director', + 'Secretariat', + 'Team Chair', + 'IRTF Chair', + 'Program Chair', + 'Program Lead', + 'Program Secretary', + 'EDWG Chair') # ------------------------------------------------- # Helper Functions # ------------------------------------------------- + def check_app_locked(meeting=None): ''' This function returns True if the application is locked to non-secretariat users. @@ -45,6 +55,54 @@ def check_app_locked(meeting=None): meeting = get_meeting(days=14) return bool(meeting.session_request_lock_message) + +def get_lock_message(meeting=None): + ''' + Returns the message to display to non-secretariat users when the tool is locked. + ''' + if not meeting: + meeting = get_meeting(days=14) + return meeting.session_request_lock_message + + +def get_my_groups(user, conclude=False): + ''' + Takes a Django user object (from request) + Returns a list of groups the user has access to. Rules are as follows + secretariat - has access to all groups + area director - has access to all groups in their area + wg chair or secretary - has access to their own group + chair of irtf has access to all irtf groups + + If user=None than all groups are returned. + concluded=True means include concluded groups. Need this to upload materials for groups + after they've been concluded. it happens. + ''' + my_groups = set() + states = ['bof', 'proposed', 'active'] + if conclude: + states.extend(['conclude', 'bof-conc']) + + all_groups = Group.objects.filter(type__features__has_meetings=True, state__in=states).order_by('acronym') + if user is None or has_role(user, 'Secretariat'): + return all_groups + + try: + person = user.person + except ObjectDoesNotExist: + return list() + + for group in all_groups: + if group.role_set.filter(person=person, name__in=('chair', 'secr', 'ad')): + my_groups.add(group) + continue + if group.parent and group.parent.role_set.filter(person=person, name__in=('ad', 'chair')): + my_groups.add(group) + continue + + return list(my_groups) + + def get_initial_session(sessions, prune_conflicts=False): ''' This function takes a queryset of sessions ordered by 'id' for consistency. It returns @@ -97,13 +155,43 @@ def valid_conflict(conflict): initial['joint_for_session_display'] = dict(JOINT_FOR_SESSION_CHOICES)[initial['joint_for_session']] return initial -def get_lock_message(meeting=None): + +def inbound_session_conflicts_as_string(group, meeting): ''' - Returns the message to display to non-secretariat users when the tool is locked. + Takes a Group object and Meeting object and returns a string of other groups which have + a conflict with this one ''' - if not meeting: - meeting = get_meeting(days=14) - return meeting.session_request_lock_message + constraints = group.constraint_target_set.filter(meeting=meeting, name__is_group_conflict=True) + group_set = set(constraints.values_list('source__acronym', flat=True)) # set to de-dupe + group_list = sorted(group_set) # give a consistent order + return ', '.join(group_list) + + +def get_outbound_conflicts(form: SessionRequestForm): + """extract wg conflict constraint data from a SessionForm""" + outbound_conflicts = [] + for conflictname, cfield_id in form.wg_constraint_field_ids(): + conflict_groups = form.cleaned_data[cfield_id] + if len(conflict_groups) > 0: + outbound_conflicts.append(dict(name=conflictname, groups=conflict_groups)) + return outbound_conflicts + + +def save_conflicts(group, meeting, conflicts, name): + ''' + This function takes a Group, Meeting a string which is a list of Groups acronyms (conflicts), + and the constraint name (conflict|conflic2|conflic3) and creates Constraint records + ''' + constraint_name = ConstraintName.objects.get(slug=name) + acronyms = conflicts.replace(',',' ').split() + for acronym in acronyms: + target = Group.objects.get(acronym=acronym) + + constraint = Constraint(source=group, + target=target, + meeting=meeting, + name=constraint_name) + constraint.save() def get_requester_text(person, group): @@ -129,22 +217,6 @@ def get_requester_text(person, group): ) -def save_conflicts(group, meeting, conflicts, name): - ''' - This function takes a Group, Meeting a string which is a list of Groups acronyms (conflicts), - and the constraint name (conflict|conflic2|conflic3) and creates Constraint records - ''' - constraint_name = ConstraintName.objects.get(slug=name) - acronyms = conflicts.replace(',',' ').split() - for acronym in acronyms: - target = Group.objects.get(acronym=acronym) - - constraint = Constraint(source=group, - target=target, - meeting=meeting, - name=constraint_name) - constraint.save() - def send_notification(group, meeting, login, sreq_data, session_data, action): ''' This function generates email notifications for various session request activities. @@ -152,10 +224,10 @@ def send_notification(group, meeting, login, sreq_data, session_data, action): session_data is an array of data from individual session subforms action argument is a string [new|update]. ''' - (to_email, cc_list) = gather_address_lists('session_requested',group=group,person=login) + (to_email, cc_list) = gather_address_lists('session_requested', group=group, person=login) from_email = (settings.SESSION_REQUEST_FROM_EMAIL) subject = '%s - New Meeting Session Request for IETF %s' % (group.acronym, meeting.number) - template = 'sreq/session_request_notification.txt' + template = 'meeting/session_request_notification.txt' # send email context = {} @@ -164,7 +236,7 @@ def send_notification(group, meeting, login, sreq_data, session_data, action): context['meeting'] = meeting context['login'] = login context['header'] = 'A new' - context['requester'] = get_requester_text(login,group) + context['requester'] = get_requester_text(login, group) # update overrides if action == 'update': @@ -174,10 +246,10 @@ def send_notification(group, meeting, login, sreq_data, session_data, action): # if third session requested approval is required # change headers TO=ADs, CC=session-request, submitter and cochairs if len(session_data) > 2: - (to_email, cc_list) = gather_address_lists('session_requested_long',group=group,person=login) + (to_email, cc_list) = gather_address_lists('session_requested_long', group=group, person=login) subject = '%s - Request for meeting session approval for IETF %s' % (group.acronym, meeting.number) - template = 'sreq/session_approval_notification.txt' - #status_text = 'the %s Directors for approval' % group.parent + template = 'meeting/session_approval_notification.txt' + # status_text = 'the %s Directors for approval' % group.parent context['session_lengths'] = [sd['requested_duration'] for sd in session_data] @@ -189,103 +261,188 @@ def send_notification(group, meeting, login, sreq_data, session_data, action): context, cc=cc_list) -def inbound_session_conflicts_as_string(group, meeting): - ''' - Takes a Group object and Meeting object and returns a string of other groups which have - a conflict with this one - ''' - constraints = group.constraint_target_set.filter(meeting=meeting, name__is_group_conflict=True) - group_set = set(constraints.values_list('source__acronym', flat=True)) # set to de-dupe - group_list = sorted(group_set) # give a consistent order - return ', '.join(group_list) + +def session_changed(session): + latest_event = SchedulingEvent.objects.filter(session=session).order_by('-time', '-id').first() + + if latest_event and latest_event.status_id == "schedw" and session.meeting.schedule is not None: + # send an email to iesg-secretariat to alert to change + pass + + +def status_slug_for_new_session(session, session_number): + if session.group.features.acts_like_wg and session_number == 2: + return 'apprw' + return 'schedw' # ------------------------------------------------- # View Functions # ------------------------------------------------- -@check_permissions -def approve(request, acronym): + + +@role_required(*AUTHORIZED_ROLES) +def list_view(request): ''' - This view approves the third session. For use by ADs or Secretariat. + Display list of groups the user has access to. ''' meeting = get_meeting(days=14) - group = get_object_or_404(Group, acronym=acronym) - session = add_event_info_to_session_qs(Session.objects.filter(meeting=meeting, group=group)).filter(current_status='apprw').first() - if session is None: - raise Http404 + # check for locked flag + is_locked = check_app_locked() + if is_locked and not has_role(request.user, 'Secretariat'): + message = get_lock_message() + return render(request, 'meeting/session_request_locked.html', { + 'message': message, + 'meeting': meeting}) - if has_role(request.user,'Secretariat') or group.parent.role_set.filter(name='ad',person=request.user.person): - SchedulingEvent.objects.create( - session=session, - status=SessionStatusName.objects.get(slug='appr'), - by=request.user.person, - ) - session_changed(session) + scheduled_groups = [] + unscheduled_groups = [] - messages.success(request, 'Third session approved') - return redirect('ietf.secr.sreq.views.view', acronym=acronym) - else: - # if an unauthorized user gets here return error - messages.error(request, 'Not authorized to approve the third session') - return redirect('ietf.secr.sreq.views.view', acronym=acronym) + group_types = GroupFeatures.objects.filter(has_meetings=True).values_list('type', flat=True) -@check_permissions -def cancel(request, acronym): - ''' - This view cancels a session request and sends a notification. - To cancel, or withdraw the request set status = deleted. - "canceled" status is used by the secretariat. + my_groups = [g for g in get_my_groups(request.user, conclude=True) if g.type_id in group_types] - NOTE: this function can also be called after a session has been - scheduled during the period when the session request tool is - reopened. In this case be sure to clear the timeslot assignment as well. + sessions_by_group = defaultdict(list) + for s in add_event_info_to_session_qs(Session.objects.filter(meeting=meeting, group__in=my_groups)).filter(current_status__in=['schedw', 'apprw', 'appr', 'sched']): + sessions_by_group[s.group_id].append(s) + + for group in my_groups: + group.meeting_sessions = sessions_by_group.get(group.pk, []) + + if group.pk in sessions_by_group: + # include even if concluded as we need to to see that the + # sessions are there + scheduled_groups.append(group) + else: + if group.state_id not in ['conclude', 'bof-conc']: + # too late for unscheduled if concluded + unscheduled_groups.append(group) + + # warn if there are no associated groups + if not scheduled_groups and not unscheduled_groups: + messages.warning(request, 'The account %s is not associated with any groups. If you have multiple Datatracker accounts you may try another or report a problem to %s' % (request.user, settings.SECRETARIAT_ACTION_EMAIL)) + + # add session status messages for use in template + for group in scheduled_groups: + if not group.features.acts_like_wg or (len(group.meeting_sessions) < 3): + group.status_message = group.meeting_sessions[0].current_status + else: + group.status_message = 'First two sessions: %s, Third session: %s' % (group.meeting_sessions[0].current_status, group.meeting_sessions[2].current_status) + + # add not meeting indicators for use in template + for group in unscheduled_groups: + if any(s.current_status == 'notmeet' for s in group.meeting_sessions): + group.not_meeting = True + + return render(request, 'meeting/session_request_list.html', { + 'is_locked': is_locked, + 'meeting': meeting, + 'scheduled_groups': scheduled_groups, + 'unscheduled_groups': unscheduled_groups}, + ) + + +@role_required('Secretariat') +def status(request): + ''' + This view handles locking and unlocking of the session request tool to the public. ''' meeting = get_meeting(days=14) - group = get_object_or_404(Group, acronym=acronym) - sessions = Session.objects.filter(meeting=meeting,group=group).order_by('id') - login = request.user.person + is_locked = check_app_locked(meeting=meeting) - # delete conflicts - Constraint.objects.filter(meeting=meeting,source=group).delete() + if request.method == 'POST': + button_text = request.POST.get('submit', '') + if button_text == 'Back': + return redirect('ietf.meeting.views_session_request.list_view') - # mark sessions as deleted - for session in sessions: - SchedulingEvent.objects.create( - session=session, - status=SessionStatusName.objects.get(slug='deleted'), - by=request.user.person, - ) - session_changed(session) + form = SessionRequestStatusForm(request.POST) - # clear schedule assignments if already scheduled - session.timeslotassignments.all().delete() + if button_text == 'Lock': + if form.is_valid(): + meeting.session_request_lock_message = form.cleaned_data['message'] + meeting.save() + messages.success(request, 'Session Request Tool is now Locked') + return redirect('ietf.meeting.views_session_request.list_view') - # send notifitcation - (to_email, cc_list) = gather_address_lists('session_request_cancelled',group=group,person=login) - from_email = (settings.SESSION_REQUEST_FROM_EMAIL) - subject = '%s - Cancelling a meeting request for IETF %s' % (group.acronym, meeting.number) - send_mail(request, to_email, from_email, subject, 'sreq/session_cancel_notification.txt', - {'requester':get_requester_text(login,group), - 'meeting':meeting}, cc=cc_list) + elif button_text == 'Unlock': + meeting.session_request_lock_message = '' + meeting.save() + messages.success(request, 'Session Request Tool is now Unlocked') + return redirect('ietf.meeting.views_session_request.list_view') - messages.success(request, 'The %s Session Request has been cancelled' % group.acronym) - return redirect('ietf.secr.sreq.views.main') + else: + if is_locked: + message = get_lock_message() + initial = {'message': message} + form = SessionRequestStatusForm(initial=initial) + else: + form = SessionRequestStatusForm() + return render(request, 'meeting/session_request_status.html', { + 'is_locked': is_locked, + 'form': form}, + ) -def status_slug_for_new_session(session, session_number): - if session.group.features.acts_like_wg and session_number == 2: - return 'apprw' - return 'schedw' +@check_permissions +def new_request(request, acronym): + ''' + This view gathers details for a new session request. The user proceeds to confirm() + to create the request. + ''' + group = get_object_or_404(Group, acronym=acronym) + if len(group.features.session_purposes) == 0: + raise Http404(f'Cannot request sessions for group "{acronym}"') + meeting = get_meeting(days=14) + session_conflicts = dict(inbound=inbound_session_conflicts_as_string(group, meeting)) -def get_outbound_conflicts(form: SessionForm): - """extract wg conflict constraint data from a SessionForm""" - outbound_conflicts = [] - for conflictname, cfield_id in form.wg_constraint_field_ids(): - conflict_groups = form.cleaned_data[cfield_id] - if len(conflict_groups) > 0: - outbound_conflicts.append(dict(name=conflictname, groups=conflict_groups)) - return outbound_conflicts + # check if app is locked + is_locked = check_app_locked() + if is_locked and not has_role(request.user, 'Secretariat'): + messages.warning(request, "The Session Request Tool is closed") + return redirect('ietf.meeting.views_session_request.list_view') + + if request.method == 'POST': + button_text = request.POST.get('submit', '') + if button_text == 'Cancel': + return redirect('ietf.meeting.views_session_request.list_view') + + form = SessionRequestForm(group, meeting, request.POST, notifications_optional=has_role(request.user, "Secretariat")) + if form.is_valid(): + return confirm(request, acronym) + + # the "previous" querystring causes the form to be returned + # pre-populated with data from last meeeting's session request + elif request.method == 'GET' and 'previous' in request.GET: + latest_session = add_event_info_to_session_qs(Session.objects.filter(meeting__type_id='ietf', group=group)).exclude(current_status__in=['notmeet', 'deleted', 'canceled',]).order_by('-meeting__date').first() + if latest_session: + previous_meeting = Meeting.objects.get(number=latest_session.meeting.number) + previous_sessions = add_event_info_to_session_qs(Session.objects.filter(meeting=previous_meeting, group=group)).exclude(current_status__in=['notmeet', 'deleted']).order_by('id') + if not previous_sessions: + messages.warning(request, 'This group did not meet at %s' % previous_meeting) + return redirect('ietf.meeting.views_session_request.new_request', acronym=acronym) + else: + messages.info(request, 'Fetched session info from %s' % previous_meeting) + else: + messages.warning(request, 'Did not find any previous meeting') + return redirect('ietf.meeting.views_session_request.new_request', acronym=acronym) + + initial = get_initial_session(previous_sessions, prune_conflicts=True) + if 'resources' in initial: + initial['resources'] = [x.pk for x in initial['resources']] + form = SessionRequestForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + + else: + initial = {} + form = SessionRequestForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + + return render(request, 'meeting/session_request_form.html', { + 'meeting': meeting, + 'form': form, + 'group': group, + 'is_create': True, + 'session_conflicts': session_conflicts}, + ) @role_required(*AUTHORIZED_ROLES) @@ -295,11 +452,11 @@ def confirm(request, acronym): to confirm for submission. ''' # FIXME: this should be using form.is_valid/form.cleaned_data - invalid input will make it crash - group = get_object_or_404(Group,acronym=acronym) + group = get_object_or_404(Group, acronym=acronym) if len(group.features.session_purposes) == 0: raise Http404(f'Cannot request sessions for group "{acronym}"') meeting = get_meeting(days=14) - form = SessionForm(group, meeting, request.POST, hidden=True, notifications_optional=has_role(request.user, "Secretariat")) + form = SessionRequestForm(group, meeting, request.POST, hidden=True, notifications_optional=has_role(request.user, "Secretariat")) form.is_valid() login = request.user.person @@ -307,8 +464,8 @@ def confirm(request, acronym): # check if request already exists for this group if add_event_info_to_session_qs(Session.objects.filter(group=group, meeting=meeting)).filter(Q(current_status__isnull=True) | ~Q(current_status__in=['deleted', 'notmeet'])): messages.warning(request, 'Sessions for working group %s have already been requested once.' % group.acronym) - return redirect('ietf.secr.sreq.views.main') - + return redirect('ietf.meeting.views_session_request.list_view') + session_data = form.data.copy() # use cleaned_data for the 'bethere' field so we get the Person instances session_data['bethere'] = form.cleaned_data['bethere'] if 'bethere' in form.cleaned_data else [] @@ -318,7 +475,7 @@ def confirm(request, acronym): session_data['joint_for_session_display'] = dict(JOINT_FOR_SESSION_CHOICES)[session_data['joint_for_session']] if form.cleaned_data.get('timeranges'): session_data['timeranges_display'] = [t.desc for t in form.cleaned_data['timeranges']] - session_data['resources'] = [ ResourceAssociation.objects.get(pk=pk) for pk in request.POST.getlist('resources') ] + session_data['resources'] = [ResourceAssociation.objects.get(pk=pk) for pk in request.POST.getlist('resources')] # extract wg conflict constraint data for the view / notifications outbound_conflicts = get_outbound_conflicts(form) @@ -326,7 +483,7 @@ def confirm(request, acronym): button_text = request.POST.get('submit', '') if button_text == 'Cancel': messages.success(request, 'Session Request has been cancelled') - return redirect('ietf.secr.sreq.views.main') + return redirect('ietf.meeting.views_session_request.list_view') if request.method == 'POST' and button_text == 'Submit': # delete any existing session records with status = canceled or notmeet @@ -344,10 +501,10 @@ def confirm(request, acronym): if 'resources' in form.data: new_session.resources.set(session_data['resources']) jfs = form.data.get('joint_for_session', '-1') - if not jfs: # jfs might be '' + if not jfs: # jfs might be '' jfs = '-1' if int(jfs) == count + 1: # count is zero-indexed - groups_split = form.cleaned_data.get('joint_with_groups').replace(',',' ').split() + groups_split = form.cleaned_data.get('joint_with_groups').replace(',', ' ').split() joint = Group.objects.filter(acronym__in=groups_split) new_session.joint_with_groups.set(joint) new_session.save() @@ -388,36 +545,105 @@ def confirm(request, acronym): 'new', ) - status_text = 'IETF Agenda to be scheduled' - messages.success(request, 'Your request has been sent to %s' % status_text) - return redirect('ietf.secr.sreq.views.main') + status_text = 'IETF Agenda to be scheduled' + messages.success(request, 'Your request has been sent to %s' % status_text) + return redirect('ietf.meeting.views_session_request.list_view') + + # POST from request submission + session_conflicts = dict( + outbound=outbound_conflicts, # each is a dict with name and groups as keys + inbound=inbound_session_conflicts_as_string(group, meeting), + ) + if form.cleaned_data.get('third_session'): + messages.warning(request, 'Note: Your request for a third session must be approved by an area director before being submitted to agenda@ietf.org. Click "Submit" below to email an approval request to the area directors') + + return render(request, 'meeting/session_request_confirm.html', { + 'form': form, + 'session': session_data, + 'group': group, + 'meeting': meeting, + 'session_conflicts': session_conflicts}, + ) + + +@role_required(*AUTHORIZED_ROLES) +def view_request(request, acronym, num=None): + ''' + This view displays the session request info + ''' + meeting = get_meeting(num, days=14) + group = get_object_or_404(Group, acronym=acronym) + query = Session.objects.filter(meeting=meeting, group=group) + status_is_null = Q(current_status__isnull=True) + status_allowed = ~Q(current_status__in=("canceled", "notmeet", "deleted")) + sessions = ( + add_event_info_to_session_qs(query) + .filter(status_is_null | status_allowed) + .order_by("id") + ) + + # check if app is locked + is_locked = check_app_locked() + if is_locked: + messages.warning(request, "The Session Request Tool is closed") + + # if there are no session requests yet, redirect to new session request page + if not sessions: + if is_locked: + return redirect('ietf.meeting.views_session_request.list_view') + else: + return redirect('ietf.meeting.views_session_request.new_request', acronym=acronym) + + activities = [{ + 'act_date': e.time.strftime('%b %d, %Y'), + 'act_time': e.time.strftime('%H:%M:%S'), + 'activity': e.status.name, + 'act_by': e.by, + } for e in sessions[0].schedulingevent_set.select_related('status', 'by')] + + # gather outbound conflicts + outbound_dict = OrderedDict() + for obc in group.constraint_source_set.filter(meeting=meeting, name__is_group_conflict=True): + if obc.name.slug not in outbound_dict: + outbound_dict[obc.name.slug] = [] + outbound_dict[obc.name.slug].append(obc.target.acronym) - # POST from request submission session_conflicts = dict( - outbound=outbound_conflicts, # each is a dict with name and groups as keys inbound=inbound_session_conflicts_as_string(group, meeting), + outbound=[dict(name=ConstraintName.objects.get(slug=slug), groups=' '.join(groups)) + for slug, groups in outbound_dict.items()], ) - return render(request, 'sreq/confirm.html', { - 'form': form, - 'session': session_data, + + show_approve_button = False + + # if sessions include a 3rd session waiting approval and the user is a secretariat or AD of the group + # display approve button + if any(s.current_status == 'apprw' for s in sessions): + if has_role(request.user, 'Secretariat') or group.parent.role_set.filter(name='ad', person=request.user.person): + show_approve_button = True + + # build session dictionary (like querydict from new session request form) for use in template + session = get_initial_session(sessions) + + return render(request, 'meeting/session_request_view.html', { + 'can_edit': (not is_locked) or has_role(request.user, 'Secretariat'), + 'can_cancel': (not is_locked) or has_role(request.user, 'Secretariat'), + 'session': session, # legacy processed data + 'sessions': sessions, # actual session instances + 'activities': activities, + 'meeting': meeting, 'group': group, - 'session_conflicts': session_conflicts}, + 'session_conflicts': session_conflicts, + 'show_approve_button': show_approve_button}, ) - -def session_changed(session): - latest_event = SchedulingEvent.objects.filter(session=session).order_by('-time', '-id').first() - - if latest_event and latest_event.status_id == "schedw" and session.meeting.schedule != None: - # send an email to iesg-secretariat to alert to change - pass @check_permissions -def edit(request, acronym, num=None): +def edit_request(request, acronym, num=None): ''' This view allows the user to edit details of the session request ''' - meeting = get_meeting(num,days=14) + meeting = get_meeting(num, days=14) group = get_object_or_404(Group, acronym=acronym) if len(group.features.session_purposes) == 0: raise Http404(f'Cannot request sessions for group "{acronym}"') @@ -443,15 +669,15 @@ def edit(request, acronym, num=None): login = request.user.person first_session = Session() - if(len(sessions) > 0): + if (len(sessions) > 0): first_session = sessions[0] if request.method == 'POST': button_text = request.POST.get('submit', '') if button_text == 'Cancel': - return redirect('ietf.secr.sreq.views.view', acronym=acronym) + return redirect('ietf.meeting.views_session_request.view_request', acronym=acronym) - form = SessionForm(group, meeting, request.POST, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + form = SessionRequestForm(group, meeting, request.POST, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) if form.is_valid(): if form.has_changed(): changed_session_forms = [sf for sf in form.session_forms.forms_to_keep if sf.has_changed()] @@ -513,11 +739,11 @@ def edit(request, acronym, num=None): if 'resources' in form.changed_data: new_resource_ids = form.cleaned_data['resources'] - new_resources = [ ResourceAssociation.objects.get(pk=a) - for a in new_resource_ids] + new_resources = [ResourceAssociation.objects.get(pk=a) + for a in new_resource_ids] first_session.resources = new_resources - if 'bethere' in form.changed_data and set(form.cleaned_data['bethere'])!=set(initial['bethere']): + if 'bethere' in form.changed_data and set(form.cleaned_data['bethere']) != set(initial['bethere']): first_session.constraints().filter(name='bethere').delete() bethere_cn = ConstraintName.objects.get(slug='bethere') for p in form.cleaned_data['bethere']: @@ -539,7 +765,7 @@ def edit(request, acronym, num=None): # deprecated # log activity - #add_session_activity(group,'Session Request was updated',meeting,user) + # add_session_activity(group,'Session Request was updated',meeting,user) # send notification if form.cleaned_data.get("send_notifications"): @@ -556,7 +782,7 @@ def edit(request, acronym, num=None): ) messages.success(request, 'Session Request updated') - return redirect('ietf.secr.sreq.views.view', acronym=acronym) + return redirect('ietf.meeting.views_session_request.view_request', acronym=acronym) else: # method is not POST # gather outbound conflicts for initial value @@ -567,142 +793,46 @@ def edit(request, acronym, num=None): initial['constraint_{}'.format(slug)] = ' '.join(groups) if not sessions: - return redirect('ietf.secr.sreq.views.new', acronym=acronym) - form = SessionForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + return redirect('ietf.meeting.views_session_request.new_request', acronym=acronym) + form = SessionRequestForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) - return render(request, 'sreq/edit.html', { - 'is_locked': is_locked and not has_role(request.user,'Secretariat'), + return render(request, 'meeting/session_request_form.html', { + 'is_locked': is_locked and not has_role(request.user, 'Secretariat'), 'meeting': meeting, 'form': form, 'group': group, + 'is_create': False, 'session_conflicts': session_conflicts}, ) -@role_required(*AUTHORIZED_ROLES) -def main(request): - ''' - Display list of groups the user has access to. - - Template variables - form: a select box populated with unscheduled groups - meeting: the current meeting - scheduled_sessions: - ''' - # check for locked flag - is_locked = check_app_locked() - - if is_locked and not has_role(request.user,'Secretariat'): - message = get_lock_message() - return render(request, 'sreq/locked.html', { - 'message': message}, - ) - - meeting = get_meeting(days=14) - - scheduled_groups = [] - unscheduled_groups = [] - - group_types = GroupFeatures.objects.filter(has_meetings=True).values_list('type', flat=True) - - my_groups = [g for g in get_my_groups(request.user, conclude=True) if g.type_id in group_types] - - sessions_by_group = defaultdict(list) - for s in add_event_info_to_session_qs(Session.objects.filter(meeting=meeting, group__in=my_groups)).filter(current_status__in=['schedw', 'apprw', 'appr', 'sched']): - sessions_by_group[s.group_id].append(s) - - for group in my_groups: - group.meeting_sessions = sessions_by_group.get(group.pk, []) - - if group.pk in sessions_by_group: - # include even if concluded as we need to to see that the - # sessions are there - scheduled_groups.append(group) - else: - if group.state_id not in ['conclude', 'bof-conc']: - # too late for unscheduled if concluded - unscheduled_groups.append(group) - - # warn if there are no associated groups - if not scheduled_groups and not unscheduled_groups: - messages.warning(request, 'The account %s is not associated with any groups. If you have multiple Datatracker accounts you may try another or report a problem to %s' % (request.user, settings.SECRETARIAT_ACTION_EMAIL)) - - # add session status messages for use in template - for group in scheduled_groups: - if not group.features.acts_like_wg or (len(group.meeting_sessions) < 3): - group.status_message = group.meeting_sessions[0].current_status - else: - group.status_message = 'First two sessions: %s, Third session: %s' % (group.meeting_sessions[0].current_status, group.meeting_sessions[2].current_status) - - # add not meeting indicators for use in template - for group in unscheduled_groups: - if any(s.current_status == 'notmeet' for s in group.meeting_sessions): - group.not_meeting = True - - return render(request, 'sreq/main.html', { - 'is_locked': is_locked, - 'meeting': meeting, - 'scheduled_groups': scheduled_groups, - 'unscheduled_groups': unscheduled_groups}, - ) @check_permissions -def new(request, acronym): +def approve_request(request, acronym): ''' - This view gathers details for a new session request. The user proceeds to confirm() - to create the request. + This view approves the third session. For use by ADs or Secretariat. ''' - group = get_object_or_404(Group, acronym=acronym) - if len(group.features.session_purposes) == 0: - raise Http404(f'Cannot request sessions for group "{acronym}"') meeting = get_meeting(days=14) - session_conflicts = dict(inbound=inbound_session_conflicts_as_string(group, meeting)) - - # check if app is locked - is_locked = check_app_locked() - if is_locked and not has_role(request.user,'Secretariat'): - messages.warning(request, "The Session Request Tool is closed") - return redirect('ietf.secr.sreq.views.main') - - if request.method == 'POST': - button_text = request.POST.get('submit', '') - if button_text == 'Cancel': - return redirect('ietf.secr.sreq.views.main') - - form = SessionForm(group, meeting, request.POST, notifications_optional=has_role(request.user, "Secretariat")) - if form.is_valid(): - return confirm(request, acronym) + group = get_object_or_404(Group, acronym=acronym) - # the "previous" querystring causes the form to be returned - # pre-populated with data from last meeeting's session request - elif request.method == 'GET' and 'previous' in request.GET: - latest_session = add_event_info_to_session_qs(Session.objects.filter(meeting__type_id='ietf', group=group)).exclude(current_status__in=['notmeet', 'deleted', 'canceled',]).order_by('-meeting__date').first() - if latest_session: - previous_meeting = Meeting.objects.get(number=latest_session.meeting.number) - previous_sessions = add_event_info_to_session_qs(Session.objects.filter(meeting=previous_meeting, group=group)).exclude(current_status__in=['notmeet', 'deleted']).order_by('id') - if not previous_sessions: - messages.warning(request, 'This group did not meet at %s' % previous_meeting) - return redirect('ietf.secr.sreq.views.new', acronym=acronym) - else: - messages.info(request, 'Fetched session info from %s' % previous_meeting) - else: - messages.warning(request, 'Did not find any previous meeting') - return redirect('ietf.secr.sreq.views.new', acronym=acronym) + session = add_event_info_to_session_qs(Session.objects.filter(meeting=meeting, group=group)).filter(current_status='apprw').first() + if session is None: + raise Http404 - initial = get_initial_session(previous_sessions, prune_conflicts=True) - if 'resources' in initial: - initial['resources'] = [x.pk for x in initial['resources']] - form = SessionForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + if has_role(request.user, 'Secretariat') or group.parent.role_set.filter(name='ad', person=request.user.person): + SchedulingEvent.objects.create( + session=session, + status=SessionStatusName.objects.get(slug='appr'), + by=request.user.person, + ) + session_changed(session) + messages.success(request, 'Third session approved') + return redirect('ietf.meeting.views_session_request.view_request', acronym=acronym) else: - initial={} - form = SessionForm(group, meeting, initial=initial, notifications_optional=has_role(request.user, "Secretariat")) + # if an unauthorized user gets here return error + messages.error(request, 'Not authorized to approve the third session') + return redirect('ietf.meeting.views_session_request.view_request', acronym=acronym) - return render(request, 'sreq/new.html', { - 'meeting': meeting, - 'form': form, - 'group': group, - 'session_conflicts': session_conflicts}, - ) @check_permissions def no_session(request, acronym): @@ -722,7 +852,7 @@ def no_session(request, acronym): # skip if state is already notmeet if add_event_info_to_session_qs(Session.objects.filter(group=group, meeting=meeting)).filter(current_status='notmeet'): messages.info(request, 'The group %s is already marked as not meeting' % group.acronym) - return redirect('ietf.secr.sreq.views.main') + return redirect('ietf.meeting.views_session_request.list_view') session = Session.objects.create( group=group, @@ -740,125 +870,62 @@ def no_session(request, acronym): session_changed(session) # send notification - (to_email, cc_list) = gather_address_lists('session_request_not_meeting',group=group,person=login) + (to_email, cc_list) = gather_address_lists('session_request_not_meeting', group=group, person=login) from_email = (settings.SESSION_REQUEST_FROM_EMAIL) subject = '%s - Not having a session at IETF %s' % (group.acronym, meeting.number) - send_mail(request, to_email, from_email, subject, 'sreq/not_meeting_notification.txt', - {'login':login, - 'group':group, - 'meeting':meeting}, cc=cc_list) + send_mail(request, to_email, from_email, subject, 'meeting/session_not_meeting_notification.txt', + {'login': login, + 'group': group, + 'meeting': meeting}, cc=cc_list) # deprecated? # log activity - #text = 'A message was sent to notify not having a session at IETF %d' % meeting.meeting_num - #add_session_activity(group,text,meeting,request.person) + # text = 'A message was sent to notify not having a session at IETF %d' % meeting.meeting_num + # add_session_activity(group,text,meeting,request.person) # redirect messages.success(request, 'A message was sent to notify not having a session at IETF %s' % meeting.number) - return redirect('ietf.secr.sreq.views.main') - -@role_required('Secretariat') -def tool_status(request): - ''' - This view handles locking and unlocking of the tool to the public. - ''' - meeting = get_meeting(days=14) - is_locked = check_app_locked(meeting=meeting) - - if request.method == 'POST': - button_text = request.POST.get('submit', '') - if button_text == 'Back': - return redirect('ietf.secr.sreq.views.main') - - form = ToolStatusForm(request.POST) - - if button_text == 'Lock': - if form.is_valid(): - meeting.session_request_lock_message = form.cleaned_data['message'] - meeting.save() - messages.success(request, 'Session Request Tool is now Locked') - return redirect('ietf.secr.sreq.views.main') - - elif button_text == 'Unlock': - meeting.session_request_lock_message = '' - meeting.save() - messages.success(request, 'Session Request Tool is now Unlocked') - return redirect('ietf.secr.sreq.views.main') - - else: - if is_locked: - message = get_lock_message() - initial = {'message': message} - form = ToolStatusForm(initial=initial) - else: - form = ToolStatusForm() + return redirect('ietf.meeting.views_session_request.list_view') - return render(request, 'sreq/tool_status.html', { - 'is_locked': is_locked, - 'form': form}, - ) -@role_required(*AUTHORIZED_ROLES) -def view(request, acronym, num = None): +@check_permissions +def cancel_request(request, acronym): ''' - This view displays the session request info + This view cancels a session request and sends a notification. + To cancel, or withdraw the request set status = deleted. + "canceled" status is used by the secretariat. + + NOTE: this function can also be called after a session has been + scheduled during the period when the session request tool is + reopened. In this case be sure to clear the timeslot assignment as well. ''' - meeting = get_meeting(num,days=14) + meeting = get_meeting(days=14) group = get_object_or_404(Group, acronym=acronym) - sessions = add_event_info_to_session_qs(Session.objects.filter(meeting=meeting, group=group)).filter(Q(current_status__isnull=True) | ~Q(current_status__in=('canceled','notmeet','deleted'))).order_by('id') - - # check if app is locked - is_locked = check_app_locked() - if is_locked: - messages.warning(request, "The Session Request Tool is closed") - - # if there are no session requests yet, redirect to new session request page - if not sessions: - if is_locked: - return redirect('ietf.secr.sreq.views.main') - else: - return redirect('ietf.secr.sreq.views.new', acronym=acronym) - - activities = [{ - 'act_date': e.time.strftime('%b %d, %Y'), - 'act_time': e.time.strftime('%H:%M:%S'), - 'activity': e.status.name, - 'act_by': e.by, - } for e in sessions[0].schedulingevent_set.select_related('status', 'by')] - - # gather outbound conflicts - outbound_dict = OrderedDict() - for obc in group.constraint_source_set.filter(meeting=meeting, name__is_group_conflict=True): - if obc.name.slug not in outbound_dict: - outbound_dict[obc.name.slug] = [] - outbound_dict[obc.name.slug].append(obc.target.acronym) - - session_conflicts = dict( - inbound=inbound_session_conflicts_as_string(group, meeting), - outbound=[dict(name=ConstraintName.objects.get(slug=slug), groups=' '.join(groups)) - for slug, groups in outbound_dict.items()], - ) + sessions = Session.objects.filter(meeting=meeting, group=group).order_by('id') + login = request.user.person - show_approve_button = False + # delete conflicts + Constraint.objects.filter(meeting=meeting, source=group).delete() - # if sessions include a 3rd session waiting approval and the user is a secretariat or AD of the group - # display approve button - if any(s.current_status == 'apprw' for s in sessions): - if has_role(request.user,'Secretariat') or group.parent.role_set.filter(name='ad',person=request.user.person): - show_approve_button = True + # mark sessions as deleted + for session in sessions: + SchedulingEvent.objects.create( + session=session, + status=SessionStatusName.objects.get(slug='deleted'), + by=request.user.person, + ) + session_changed(session) - # build session dictionary (like querydict from new session request form) for use in template - session = get_initial_session(sessions) + # clear schedule assignments if already scheduled + session.timeslotassignments.all().delete() - return render(request, 'sreq/view.html', { - 'can_edit': (not is_locked) or has_role(request.user, 'Secretariat'), - 'can_cancel': (not is_locked) or has_role(request.user, 'Secretariat'), - 'session': session, # legacy processed data - 'sessions': sessions, # actual session instances - 'activities': activities, - 'meeting': meeting, - 'group': group, - 'session_conflicts': session_conflicts, - 'show_approve_button': show_approve_button}, - ) + # send notifitcation + (to_email, cc_list) = gather_address_lists('session_request_cancelled', group=group, person=login) + from_email = (settings.SESSION_REQUEST_FROM_EMAIL) + subject = '%s - Cancelling a meeting request for IETF %s' % (group.acronym, meeting.number) + send_mail(request, to_email, from_email, subject, 'meeting/session_cancel_notification.txt', + {'requester': get_requester_text(login, group), + 'meeting': meeting}, cc=cc_list) + messages.success(request, 'The %s Session Request has been cancelled' % group.acronym) + return redirect('ietf.meeting.views_session_request.list_view') diff --git a/ietf/secr/meetings/views.py b/ietf/secr/meetings/views.py index 47f7b7ffa5..1f6f2f3297 100644 --- a/ietf/secr/meetings/views.py +++ b/ietf/secr/meetings/views.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2023, All Rights Reserved +# Copyright The IETF Trust 2007-2025, All Rights Reserved # -*- coding: utf-8 -*- import datetime @@ -20,12 +20,12 @@ from ietf.meeting.helpers import make_materials_directories, populate_important_dates from ietf.meeting.models import Meeting, Session, Room, TimeSlot, SchedTimeSessAssignment, Schedule, SchedulingEvent from ietf.meeting.utils import add_event_info_to_session_qs +from ietf.meeting.views_session_request import get_initial_session from ietf.name.models import SessionStatusName from ietf.group.models import Group, GroupEvent from ietf.secr.meetings.forms import ( BaseMeetingRoomFormSet, MeetingModelForm, MeetingSelectForm, MeetingRoomForm, MiscSessionForm, TimeSlotForm, RegularSessionEditForm, MeetingRoomOptionsForm ) -from ietf.secr.sreq.views import get_initial_session from ietf.secr.utils.meeting import get_session, get_timeslot from ietf.mailtrigger.utils import gather_address_lists from ietf.utils.timezone import make_aware diff --git a/ietf/secr/sreq/__init__.py b/ietf/secr/sreq/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ietf/secr/sreq/forms.py b/ietf/secr/sreq/forms.py deleted file mode 100644 index 4a0f449b2a..0000000000 --- a/ietf/secr/sreq/forms.py +++ /dev/null @@ -1,333 +0,0 @@ -# Copyright The IETF Trust 2013-2022, All Rights Reserved -# -*- coding: utf-8 -*- - - -from django import forms -from django.template.defaultfilters import pluralize - -import debug # pyflakes:ignore - -from ietf.name.models import TimerangeName, ConstraintName -from ietf.group.models import Group -from ietf.meeting.forms import sessiondetailsformset_factory -from ietf.meeting.models import ResourceAssociation, Constraint -from ietf.person.fields import SearchablePersonsField -from ietf.person.models import Person -from ietf.utils.fields import ModelMultipleChoiceField -from ietf.utils.html import clean_text_field -from ietf.utils import log - -# ------------------------------------------------- -# Globals -# ------------------------------------------------- - -NUM_SESSION_CHOICES = (('','--Please select'),('1','1'),('2','2')) -SESSION_TIME_RELATION_CHOICES = (('', 'No preference'),) + Constraint.TIME_RELATION_CHOICES -JOINT_FOR_SESSION_CHOICES = (('1', 'First session'), ('2', 'Second session'), ('3', 'Third session'), ) - -# ------------------------------------------------- -# Helper Functions -# ------------------------------------------------- -def allowed_conflicting_groups(): - return Group.objects.filter(type__in=['wg', 'ag', 'rg', 'rag', 'program', 'edwg'], state__in=['bof', 'proposed', 'active']) - -def check_conflict(groups, source_group): - ''' - Takes a string which is a list of group acronyms. Checks that they are all active groups - ''' - # convert to python list (allow space or comma separated lists) - items = groups.replace(',',' ').split() - active_groups = allowed_conflicting_groups() - for group in items: - if group == source_group.acronym: - raise forms.ValidationError("Cannot declare a conflict with the same group: %s" % group) - - if not active_groups.filter(acronym=group): - raise forms.ValidationError("Invalid or inactive group acronym: %s" % group) - -# ------------------------------------------------- -# Forms -# ------------------------------------------------- - -class GroupSelectForm(forms.Form): - group = forms.ChoiceField() - - def __init__(self,*args,**kwargs): - choices = kwargs.pop('choices') - super(GroupSelectForm, self).__init__(*args,**kwargs) - self.fields['group'].widget.choices = choices - - -class NameModelMultipleChoiceField(ModelMultipleChoiceField): - def label_from_instance(self, name): - return name.desc - - -class SessionForm(forms.Form): - num_session = forms.ChoiceField(choices=NUM_SESSION_CHOICES) - # session fields are added in __init__() - session_time_relation = forms.ChoiceField(choices=SESSION_TIME_RELATION_CHOICES, required=False) - attendees = forms.IntegerField() - # FIXME: it would cleaner to have these be - # ModelMultipleChoiceField, and just customize the widgetry, that - # way validation comes for free (applies to this CharField and the - # constraints dynamically instantiated in __init__()) - joint_with_groups = forms.CharField(max_length=255,required=False) - joint_with_groups_selector = forms.ChoiceField(choices=[], required=False) # group select widget for prev field - joint_for_session = forms.ChoiceField(choices=JOINT_FOR_SESSION_CHOICES, required=False) - comments = forms.CharField(max_length=200,required=False) - third_session = forms.BooleanField(required=False) - resources = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,required=False) - bethere = SearchablePersonsField(label="Must be present", required=False) - timeranges = NameModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False, - queryset=TimerangeName.objects.all()) - adjacent_with_wg = forms.ChoiceField(required=False) - send_notifications = forms.BooleanField(label="Send notification emails?", required=False, initial=False) - - def __init__(self, group, meeting, data=None, *args, **kwargs): - self.hidden = kwargs.pop('hidden', False) - self.notifications_optional = kwargs.pop('notifications_optional', False) - - self.group = group - formset_class = sessiondetailsformset_factory(max_num=3 if group.features.acts_like_wg else 50) - self.session_forms = formset_class(group=self.group, meeting=meeting, data=data) - super(SessionForm, self).__init__(data=data, *args, **kwargs) - if not self.notifications_optional: - self.fields['send_notifications'].widget = forms.HiddenInput() - - # Allow additional sessions for non-wg-like groups - if not self.group.features.acts_like_wg: - self.fields['num_session'].choices = ((n, str(n)) for n in range(1, 51)) - - self.fields['comments'].widget = forms.Textarea(attrs={'rows':'3','cols':'65'}) - - other_groups = list(allowed_conflicting_groups().exclude(pk=group.pk).values_list('acronym', 'acronym').order_by('acronym')) - self.fields['adjacent_with_wg'].choices = [('', '--No preference')] + other_groups - group_acronym_choices = [('','--Select WG(s)')] + other_groups - self.fields['joint_with_groups_selector'].choices = group_acronym_choices - - # Set up constraints for the meeting - self._wg_field_data = [] - for constraintname in meeting.group_conflict_types.all(): - # two fields for each constraint: a CharField for the group list and a selector to add entries - constraint_field = forms.CharField(max_length=255, required=False) - constraint_field.widget.attrs['data-slug'] = constraintname.slug - constraint_field.widget.attrs['data-constraint-name'] = str(constraintname).title() - self._add_widget_class(constraint_field.widget, 'wg_constraint') - - selector_field = forms.ChoiceField(choices=group_acronym_choices, required=False) - selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onchange handler - self._add_widget_class(selector_field.widget, 'wg_constraint_selector') - - cfield_id = 'constraint_{}'.format(constraintname.slug) - cselector_id = 'wg_selector_{}'.format(constraintname.slug) - # keep an eye out for field name conflicts - log.assertion('cfield_id not in self.fields') - log.assertion('cselector_id not in self.fields') - self.fields[cfield_id] = constraint_field - self.fields[cselector_id] = selector_field - self._wg_field_data.append((constraintname, cfield_id, cselector_id)) - - # Show constraints that are not actually used by the meeting so these don't get lost - self._inactive_wg_field_data = [] - inactive_cnames = ConstraintName.objects.filter( - is_group_conflict=True # Only collect group conflicts... - ).exclude( - meeting=meeting # ...that are not enabled for this meeting... - ).filter( - constraint__source=group, # ...but exist for this group... - constraint__meeting=meeting, # ... at this meeting. - ).distinct() - - for inactive_constraint_name in inactive_cnames: - field_id = 'delete_{}'.format(inactive_constraint_name.slug) - self.fields[field_id] = forms.BooleanField(required=False, label='Delete this conflict', help_text='Delete this inactive conflict?') - constraints = group.constraint_source_set.filter(meeting=meeting, name=inactive_constraint_name) - self._inactive_wg_field_data.append( - (inactive_constraint_name, - ' '.join([c.target.acronym for c in constraints]), - field_id) - ) - - self.fields['joint_with_groups_selector'].widget.attrs['onchange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;" - self.fields["resources"].choices = [(x.pk,x.desc) for x in ResourceAssociation.objects.filter(name__used=True).order_by('name__order') ] - - if self.hidden: - # replace all the widgets to start... - for key in list(self.fields.keys()): - self.fields[key].widget = forms.HiddenInput() - # re-replace a couple special cases - self.fields['resources'].widget = forms.MultipleHiddenInput() - self.fields['timeranges'].widget = forms.MultipleHiddenInput() - # and entirely replace bethere - no need to support searching if input is hidden - self.fields['bethere'] = ModelMultipleChoiceField( - widget=forms.MultipleHiddenInput, required=False, - queryset=Person.objects.all(), - ) - - def wg_constraint_fields(self): - """Iterates over wg constraint fields - - Intended for use in the template. - """ - for cname, cfield_id, cselector_id in self._wg_field_data: - yield cname, self[cfield_id], self[cselector_id] - - def wg_constraint_count(self): - """How many wg constraints are there?""" - return len(self._wg_field_data) - - def wg_constraint_field_ids(self): - """Iterates over wg constraint field IDs""" - for cname, cfield_id, _ in self._wg_field_data: - yield cname, cfield_id - - def inactive_wg_constraints(self): - for cname, value, field_id in self._inactive_wg_field_data: - yield cname, value, self[field_id] - - def inactive_wg_constraint_count(self): - return len(self._inactive_wg_field_data) - - def inactive_wg_constraint_field_ids(self): - """Iterates over wg constraint field IDs""" - for cname, _, field_id in self._inactive_wg_field_data: - yield cname, field_id - - @staticmethod - def _add_widget_class(widget, new_class): - """Add a new class, taking care in case some already exist""" - existing_classes = widget.attrs.get('class', '').split() - widget.attrs['class'] = ' '.join(existing_classes + [new_class]) - - def _join_conflicts(self, cleaned_data, slugs): - """Concatenate constraint fields from cleaned data into a single list""" - conflicts = [] - for cname, cfield_id, _ in self._wg_field_data: - if cname.slug in slugs and cfield_id in cleaned_data: - groups = cleaned_data[cfield_id] - # convert to python list (allow space or comma separated lists) - items = groups.replace(',',' ').split() - conflicts.extend(items) - return conflicts - - def _validate_duplicate_conflicts(self, cleaned_data): - """Validate that no WGs appear in more than one constraint that does not allow duplicates - - Raises ValidationError - """ - # Only the older constraints (conflict, conflic2, conflic3) need to be mutually exclusive. - all_conflicts = self._join_conflicts(cleaned_data, ['conflict', 'conflic2', 'conflic3']) - seen = [] - duplicated = [] - errors = [] - for c in all_conflicts: - if c not in seen: - seen.append(c) - elif c not in duplicated: # only report once - duplicated.append(c) - errors.append(forms.ValidationError('%s appears in conflicts more than once' % c)) - return errors - - def clean_joint_with_groups(self): - groups = self.cleaned_data['joint_with_groups'] - check_conflict(groups, self.group) - return groups - - def clean_comments(self): - return clean_text_field(self.cleaned_data['comments']) - - def clean_bethere(self): - bethere = self.cleaned_data["bethere"] - if bethere: - extra = set( - Person.objects.filter( - role__group=self.group, role__name__in=["chair", "ad"] - ) - & bethere - ) - if extra: - extras = ", ".join(e.name for e in extra) - raise forms.ValidationError( - ( - f"Please remove the following person{pluralize(len(extra))}, the system " - f"tracks their availability due to their role{pluralize(len(extra))}: {extras}." - ) - ) - return bethere - - def clean_send_notifications(self): - return True if not self.notifications_optional else self.cleaned_data['send_notifications'] - - def is_valid(self): - return super().is_valid() and self.session_forms.is_valid() - - def clean(self): - super(SessionForm, self).clean() - self.session_forms.clean() - - data = self.cleaned_data - - # Validate the individual conflict fields - for _, cfield_id, _ in self._wg_field_data: - try: - check_conflict(data[cfield_id], self.group) - except forms.ValidationError as e: - self.add_error(cfield_id, e) - - # Skip remaining tests if individual field tests had errors, - if self.errors: - return data - - # error if conflicts contain disallowed dupes - for error in self._validate_duplicate_conflicts(data): - self.add_error(None, error) - - # Verify expected number of session entries are present - num_sessions_with_data = len(self.session_forms.forms_to_keep) - num_sessions_expected = -1 - try: - num_sessions_expected = int(data.get('num_session', '')) - except ValueError: - self.add_error('num_session', 'Invalid value for number of sessions') - if num_sessions_with_data < num_sessions_expected: - self.add_error('num_session', 'Must provide data for all sessions') - - # if default (empty) option is selected, cleaned_data won't include num_session key - if num_sessions_expected != 2 and num_sessions_expected is not None: - if data.get('session_time_relation'): - self.add_error( - 'session_time_relation', - forms.ValidationError('Time between sessions can only be used when two sessions are requested.') - ) - - joint_session = data.get('joint_for_session', '') - if joint_session != '': - joint_session = int(joint_session) - if joint_session > num_sessions_with_data: - self.add_error( - 'joint_for_session', - forms.ValidationError( - f'Session {joint_session} can not be the joint session, the session has not been requested.' - ) - ) - - return data - - @property - def media(self): - # get media for our formset - return super().media + self.session_forms.media + forms.Media(js=('secr/js/session_form.js',)) - - -# Used for totally virtual meetings during COVID-19 to omit the expected -# number of attendees since there were no room size limitations -# -# class VirtualSessionForm(SessionForm): -# '''A SessionForm customized for special virtual meeting requirements''' -# attendees = forms.IntegerField(required=False) - - -class ToolStatusForm(forms.Form): - message = forms.CharField(widget=forms.Textarea(attrs={'rows':'3','cols':'80'}), strip=False) - diff --git a/ietf/secr/sreq/templatetags/__init__.py b/ietf/secr/sreq/templatetags/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ietf/secr/sreq/urls.py b/ietf/secr/sreq/urls.py deleted file mode 100644 index 7e0db8117a..0000000000 --- a/ietf/secr/sreq/urls.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved - -from django.conf import settings - -from ietf.secr.sreq import views -from ietf.utils.urls import url - -urlpatterns = [ - url(r'^$', views.main), - url(r'^status/$', views.tool_status), - url(r'^%(acronym)s/$' % settings.URL_REGEXPS, views.view), - url(r'^(?P[A-Za-z0-9_\-\+]+)/%(acronym)s/view/$' % settings.URL_REGEXPS, views.view), - url(r'^%(acronym)s/approve/$' % settings.URL_REGEXPS, views.approve), - url(r'^%(acronym)s/cancel/$' % settings.URL_REGEXPS, views.cancel), - url(r'^%(acronym)s/confirm/$' % settings.URL_REGEXPS, views.confirm), - url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, views.edit), - url(r'^%(acronym)s/new/$' % settings.URL_REGEXPS, views.new), - url(r'^%(acronym)s/no_session/$' % settings.URL_REGEXPS, views.no_session), - url(r'^(?P[A-Za-z0-9_\-\+]+)/%(acronym)s/edit/$' % settings.URL_REGEXPS, views.edit), -] diff --git a/ietf/secr/telechat/tests.py b/ietf/secr/telechat/tests.py index 39949b83a2..fa26d33a5c 100644 --- a/ietf/secr/telechat/tests.py +++ b/ietf/secr/telechat/tests.py @@ -13,6 +13,7 @@ IndividualDraftFactory, ConflictReviewFactory) from ietf.doc.models import BallotDocEvent, BallotType, BallotPositionDocEvent, State, Document from ietf.doc.utils import update_telechat, create_ballot_if_not_open +from ietf.meeting.factories import MeetingFactory from ietf.utils.test_utils import TestCase from ietf.utils.timezone import date_today, datetime_today from ietf.iesg.models import TelechatDate @@ -25,6 +26,26 @@ def augment_data(): TelechatDate.objects.create(date=date_today()) +class SecrUrlTests(TestCase): + def test_urls(self): + MeetingFactory(type_id='ietf', date=date_today()) + + # check public options + response = self.client.get("/secr/") + self.assertEqual(response.status_code, 200) + q = PyQuery(response.content) + links = q('div.secr-menu a') + self.assertEqual(len(links), 1) + self.assertEqual(PyQuery(links[0]).text(), 'Announcements') + + # check secretariat only options + self.client.login(username="secretary", password="secretary+password") + response = self.client.get("/secr/") + self.assertEqual(response.status_code, 200) + q = PyQuery(response.content) + links = q('div.secr-menu a') + self.assertEqual(len(links), 4) + class SecrTelechatTestCase(TestCase): def test_main(self): "Main Test" diff --git a/ietf/secr/templates/includes/activities.html b/ietf/secr/templates/includes/activities.html deleted file mode 100644 index 1304b7c48d..0000000000 --- a/ietf/secr/templates/includes/activities.html +++ /dev/null @@ -1,23 +0,0 @@ -

    Activities Log

    -
    From 2cb2ad15ba8500acb79b8dc62fd1903ad127a385 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:09:38 -0400 Subject: [PATCH 474/846] chore(deps): bump nanoid in /dev/deploy-to-container in the npm group (#8689) Bumps the npm group in /dev/deploy-to-container with 1 update: [nanoid](https://github.com/ai/nanoid). Updates `nanoid` from 5.1.3 to 5.1.4 - [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.3...5.1.4) --- updated-dependencies: - dependency-name: nanoid 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 | 14 +++++++------- dev/deploy-to-container/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/deploy-to-container/package-lock.json b/dev/deploy-to-container/package-lock.json index c4f675527e..f4ce2c367c 100644 --- a/dev/deploy-to-container/package-lock.json +++ b/dev/deploy-to-container/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "dockerode": "^4.0.4", "fs-extra": "^11.3.0", - "nanoid": "5.1.3", + "nanoid": "5.1.4", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", "tar": "^7.4.3", @@ -668,9 +668,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.3.tgz", - "integrity": "sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.4.tgz", + "integrity": "sha512-GTFcMIDgR7tqji/LpSY8rtg464VnJl/j6ypoehYnuGb+Y8qZUdtKB8WVCXon0UEZgFDbuUxpIl//6FHLHgXSNA==", "funding": [ { "type": "github", @@ -1613,9 +1613,9 @@ "optional": true }, "nanoid": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.3.tgz", - "integrity": "sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==" + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.4.tgz", + "integrity": "sha512-GTFcMIDgR7tqji/LpSY8rtg464VnJl/j6ypoehYnuGb+Y8qZUdtKB8WVCXon0UEZgFDbuUxpIl//6FHLHgXSNA==" }, "nanoid-dictionary": { "version": "5.0.0-beta.1", diff --git a/dev/deploy-to-container/package.json b/dev/deploy-to-container/package.json index 8772c568c8..eb8cb9012a 100644 --- a/dev/deploy-to-container/package.json +++ b/dev/deploy-to-container/package.json @@ -4,7 +4,7 @@ "dependencies": { "dockerode": "^4.0.4", "fs-extra": "^11.3.0", - "nanoid": "5.1.3", + "nanoid": "5.1.4", "nanoid-dictionary": "5.0.0-beta.1", "slugify": "1.6.6", "tar": "^7.4.3", From 8af0dc457f4dda714046b6151a722e7d20b1a55d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 18 Mar 2025 08:30:52 +0700 Subject: [PATCH 475/846] fix: add doc to raw_id_fields for SlideSubmissionAdmin (#8687) --- ietf/meeting/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index e975dd38a6..b7e56c7b77 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -189,7 +189,7 @@ class ImportantDateAdmin(admin.ModelAdmin): class SlideSubmissionAdmin(admin.ModelAdmin): model = SlideSubmission list_display = ['session', 'submitter', 'title'] - raw_id_fields = ['submitter', 'session'] + raw_id_fields = ['submitter', 'session', 'doc'] admin.site.register(SlideSubmission, SlideSubmissionAdmin) From 563fcee3a80d5036c9c490a794f31a78bd7a8e90 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 18 Mar 2025 14:53:38 +0700 Subject: [PATCH 476/846] fix: approve slides link for all pending submissions (#8692) * test: slide approval links shown for all sessions * fix: suggest pending slides for all sessions * refactor: flatten logic * refactor: avoid extra exists() query * test: update test comment * test: only pending slides suggested for approval * style: Black * test: temp path override for SessionDetailsTests --- ietf/meeting/tests_views.py | 80 +++++++++++++++++++++ ietf/meeting/views.py | 14 ++-- ietf/templates/meeting/session_details.html | 34 +++++---- 3 files changed, 104 insertions(+), 24 deletions(-) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 59d7e49f7f..111584cc56 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -4527,6 +4527,7 @@ def test_persistent_enabled_timeslot_types(self): class SessionDetailsTests(TestCase): + settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['SLIDE_STAGING_PATH'] def test_session_details(self): @@ -4659,6 +4660,85 @@ def test_add_session_drafts(self): q = PyQuery(r.content) self.assertEqual(1,len(q(".alert-warning:contains('may affect published proceedings')"))) + def test_proposed_slides_for_approval(self): + # This test overlaps somewhat with MaterialsTests of proposed slides handling. The focus + # here is on the display of slides, not the approval action. + group = GroupFactory() + meeting = MeetingFactory( + type_id="ietf", date=date_today() + datetime.timedelta(days=10) + ) + sessions = SessionFactory.create_batch( + 2, + group=group, + meeting=meeting, + ) + + # slides submission _not_ in the `pending` state + do_not_show = [ + SlideSubmissionFactory( + session=sessions[0], + title="already approved", + status_id="approved", + ), + SlideSubmissionFactory( + session=sessions[1], + title="already rejected", + status_id="rejected", + ), + ] + + # pending submissions + first_session_pending = SlideSubmissionFactory( + session=sessions[0], title="first session title" + ) + second_session_pending = SlideSubmissionFactory( + session=sessions[1], title="second session title" + ) + + # and their approval URLs + def _approval_url(slidesub): + return urlreverse( + "ietf.meeting.views.approve_proposed_slides", + kwargs={"slidesubmission_id": slidesub.pk, "num": meeting.number}, + ) + + first_approval_url = _approval_url(first_session_pending) + second_approval_url = _approval_url(second_session_pending) + do_not_show_urls = [_approval_url(ss) for ss in do_not_show] + + # Retrieve the URL as a group chair + url = urlreverse( + "ietf.meeting.views.session_details", + kwargs={ + "num": meeting.number, + "acronym": group.acronym, + }, + ) + chair = RoleFactory(group=group, name_id="chair").person + self.client.login( + username=chair.user.username, password=f"{chair.user.username}+password" + ) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + pq = PyQuery(r.content) + self.assertEqual( + len(pq(f'a[href="{first_approval_url}"]')), + 1, + "first session proposed slides should be linked for approval", + ) + self.assertEqual( + len(pq(f'a[href="{second_approval_url}"]')), + 1, + "second session proposed slides should be linked for approval", + ) + for no_show_url in do_not_show_urls: + self.assertEqual( + len(pq(f'a[href="{no_show_url}"]')), + 0, + "second session proposed slides should be linked for approval", + ) + + class EditScheduleListTests(TestCase): def setUp(self): super().setUp() diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 3fa605ed7e..d02ae40902 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -2509,12 +2509,14 @@ def session_details(request, num, acronym): scheduled_sessions = [s for s in sessions if s.current_status == 'sched'] unscheduled_sessions = [s for s in sessions if s.current_status != 'sched'] - pending_suggestions = None - if request.user.is_authenticated: - if can_manage: - pending_suggestions = session.slidesubmission_set.filter(status__slug='pending') - else: - pending_suggestions = session.slidesubmission_set.filter(status__slug='pending', submitter=request.user.person) + # Start with all the pending suggestions for all the group's sessions + pending_suggestions = SlideSubmission.objects.filter(session__in=sessions, status__slug='pending') + if can_manage: + pass # keep the full set + elif hasattr(request.user, "person"): + pending_suggestions = pending_suggestions.filter(submitter=request.user.person) + else: + pending_suggestions = SlideSubmission.objects.none() return render(request, "meeting/session_details.html", { 'scheduled_sessions':scheduled_sessions , diff --git a/ietf/templates/meeting/session_details.html b/ietf/templates/meeting/session_details.html index 571715b4b4..55fa3d3857 100644 --- a/ietf/templates/meeting/session_details.html +++ b/ietf/templates/meeting/session_details.html @@ -31,30 +31,28 @@

    Scheduled Sessions

    {% include 'meeting/session_details_panel.html' with sessions=scheduled_sessions %}

    Unscheduled Sessions

    {% include 'meeting/session_details_panel.html' with sessions=unscheduled_sessions %} - {% if pending_suggestions %} -

    + {% for s in pending_suggestions %} + {% if forloop.first %}

    {% if can_manage_materials %} Proposed slides awaiting your approval {% else %} Your proposed slides awaiting chair approval {% endif %}

    -
    - {% endif %} +
    {% endif %} + {% if can_manage_materials %} +

    + + {{ s.submitter }} - {{ s.title }} ({{ s.time }}) + +

    + {% else %} +

    + {{ s.title }} ({{ s.time }}) +

    + {% endif %} + {% if forloop.last %}
    {% endif %} + {% endfor %} {% endblock %} {% block js %} From 73abdcc29798850a86ddeabdd65b824adcc62eb6 Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Tue, 18 Mar 2025 22:25:10 -0400 Subject: [PATCH 477/846] feat(agenda): add preliminary date when no agenda available (#8690) * feat(meetings): add preliminary agenda date when no agenda available * test: adapt test for additional field for preliminary agenda date --------- Co-authored-by: Rudi Matz --- client/agenda/AgendaScheduleList.vue | 1 + ietf/meeting/tests_views.py | 5 +++-- ietf/meeting/views.py | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index ab0f6e0184..369025d5da 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -15,6 +15,7 @@ td(:colspan='pickerModeActive ? 6 : 5') i.bi.bi-exclamation-triangle.me-2 span(v-if='agendaStore.searchVisible && agendaStore.searchText') No event matching your search query. + span(v-else-if='agendaStore.meeting.prelimAgendaDate') A preliminary agenda is expected to be released on {{ agendaStore.meeting.prelimAgendaDate }} span(v-else) Nothing to display tr( v-for='item of meetingEvents' diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 111584cc56..0f91986f77 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -233,6 +233,7 @@ def test_meeting_agenda(self): session.save() slot = TimeSlot.objects.get(sessionassignments__session=session,sessionassignments__schedule=meeting.schedule) meeting.timeslot_set.filter(type_id="break").update(show_location=False) + meeting.importantdate_set.create(name_id='prelimagenda',date=date_today() + datetime.timedelta(days=20)) # self.write_materials_files(meeting, session) # @@ -262,7 +263,8 @@ def test_meeting_agenda(self): "updated": generated_data.get("meeting").get("updated"), # Just expect the value to exist "timezone": meeting.time_zone, "infoNote": meeting.agenda_info_note, - "warningNote": meeting.agenda_warning_note + "warningNote": meeting.agenda_warning_note, + "prelimAgendaDate": (date_today() + datetime.timedelta(days=20)).isoformat() }, "categories": generated_data.get("categories"), # Just expect the value to exist "isCurrentMeeting": True, @@ -9341,4 +9343,3 @@ def test_bluesheet_data(self): {"name": attended_with_affil.person.plain_name(), "affiliation": "Somewhere"}, ] ) - diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index d02ae40902..6a73059d92 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -59,7 +59,7 @@ from ietf.ietfauth.utils import role_required, has_role, user_is_person from ietf.mailtrigger.utils import gather_address_lists from ietf.meeting.models import Meeting, Session, Schedule, FloorPlan, SessionPresentation, TimeSlot, SlideSubmission, Attended -from ietf.meeting.models import SessionStatusName, SchedulingEvent, SchedTimeSessAssignment, Room, TimeSlotTypeName +from ietf.meeting.models import ImportantDate, SessionStatusName, SchedulingEvent, SchedTimeSessAssignment, Room, TimeSlotTypeName from ietf.meeting.forms import ( CustomDurationField, SwapDaysForm, SwapTimeslotsForm, ImportMinutesForm, TimeSlotCreateForm, TimeSlotEditForm, SessionCancelForm, SessionEditForm ) from ietf.meeting.helpers import get_person_by_email, get_schedule_by_name @@ -1709,6 +1709,9 @@ def generate_agenda_data(num=None, force_refresh=False): # Get Floor Plans floors = FloorPlan.objects.filter(meeting=meeting).order_by('order') + # Get Preliminary Agenda Date + prelimAgendaDate = ImportantDate.objects.filter(name_id="prelimagenda", meeting=meeting).first() + result = { "meeting": { "number": schedule.meeting.number, @@ -1718,7 +1721,8 @@ def generate_agenda_data(num=None, force_refresh=False): "updated": updated, "timezone": meeting.time_zone, "infoNote": schedule.meeting.agenda_info_note, - "warningNote": schedule.meeting.agenda_warning_note + "warningNote": schedule.meeting.agenda_warning_note, + "prelimAgendaDate": prelimAgendaDate.date.isoformat() if prelimAgendaDate else "" }, "categories": filter_organizer.get_filter_categories(), "isCurrentMeeting": is_current_meeting, From 3356505dc89e2a372f54c3ed1da472c3a11bc6de Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Wed, 19 Mar 2025 15:28:17 +1300 Subject: [PATCH 478/846] fix(agenda): Agenda 'now' fallback to next event if there is no current event (#8693) * fix: agenda now fallback to next event if there is no current event * chore: agenda goto now PR feedback * chore: simplifying 'agenda goto now' next event logic * chore: simplifying 'agenda goto now' nextEvent var --- client/agenda/AgendaMobileBar.vue | 8 ++++---- client/agenda/AgendaQuickAccess.vue | 8 ++++---- client/agenda/AgendaScheduleList.vue | 16 ++++++++++------ client/agenda/store.js | 22 ++++++++++++++++++++++ 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/client/agenda/AgendaMobileBar.vue b/client/agenda/AgendaMobileBar.vue index 63611e21c2..43480bedd3 100644 --- a/client/agenda/AgendaMobileBar.vue +++ b/client/agenda/AgendaMobileBar.vue @@ -124,11 +124,11 @@ const downloadIcsOptions = [ function jumpToDay (dayId) { if (dayId === 'now') { - const lastEventId = agendaStore.findCurrentEventId() - if (lastEventId) { - document.getElementById(`agenda-rowid-${lastEventId}`)?.scrollIntoView(true) + const nowEventId = agendaStore.findNowEventId() + if (nowEventId) { + document.getElementById(`agenda-rowid-${nowEventId}`)?.scrollIntoView(true) } else { - message.warning('There is no event happening right now.') + message.warning('There is no event happening right now or in the future.') } } else { document.getElementById(dayId)?.scrollIntoView(true) diff --git a/client/agenda/AgendaQuickAccess.vue b/client/agenda/AgendaQuickAccess.vue index b226d09c60..c9412f6663 100644 --- a/client/agenda/AgendaQuickAccess.vue +++ b/client/agenda/AgendaQuickAccess.vue @@ -204,12 +204,12 @@ function scrollToDay (daySlug, ev) { } function scrollToNow (ev) { - const lastEventId = agendaStore.findCurrentEventId() + const nowEventId = agendaStore.findNowEventId() - if (lastEventId) { - document.getElementById(`agenda-rowid-${lastEventId}`)?.scrollIntoView(true) + if (nowEventId) { + document.getElementById(`agenda-rowid-${nowEventId}`)?.scrollIntoView(true) } else { - message.warning('There is no event happening right now.') + message.warning('There is no event happening right now or in the future.') } } diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 369025d5da..5a971c25cf 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -591,10 +591,10 @@ function renderLinkLabel (opt) { function recalculateRedLine () { state.currentMinute = DateTime.local().minute - const lastEventId = agendaStore.findCurrentEventId() + const currentEventId = agendaStore.findCurrentEventId() - if (lastEventId) { - state.redhandOffset = document.getElementById(`agenda-rowid-${lastEventId}`)?.offsetTop || 0 + if (currentEventId) { + state.redhandOffset = document.getElementById(`agenda-rowid-${currentEventId}`)?.offsetTop || 0 } else { state.redhandOffset = 0 } @@ -615,9 +615,13 @@ function recalculateRedLine () { return } unsubscribe() // we only need to scroll once, so unsubscribe from future updates - if(window.location.hash === "#now") { - const lastEventId = agendaStore.findCurrentEventId() - document.getElementById(`agenda-rowid-${lastEventId}`)?.scrollIntoView(true) + if (window.location.hash === "#now") { + const nowEventId = agendaStore.findNowEvent() + if (nowEventId) { + document.getElementById(`agenda-rowid-${nowEventId}`)?.scrollIntoView(true) + } else { + message.warning('There is no event happening right now or in the future.') + } } else if(window.location.hash.startsWith(`#${daySlugPrefix}`)) { document.getElementById(window.location.hash.substring(1))?.scrollIntoView(true) } diff --git a/client/agenda/store.js b/client/agenda/store.js index 71c1219725..359c5fbf05 100644 --- a/client/agenda/store.js +++ b/client/agenda/store.js @@ -230,6 +230,28 @@ export const useAgendaStore = defineStore('agenda', { return lastEvent.id || null }, + findNowEventId () { + const currentEventId = this.findCurrentEventId() + + if (currentEventId) { + return currentEventId + } + + // if there isn't a current event then instead find the next event + + const current = (this.nowDebugDiff ? DateTime.local().minus(this.nowDebugDiff) : DateTime.local()).setZone(this.timezone) + + // -> Find next event after current time + let nextEventId = undefined + for(const sh of this.scheduleAdjusted) { + if (sh.adjustedStart > current) { + nextEventId = sh.id + break + } + } + + return nextEventId || null + }, hideLoadingScreen () { // -> Hide loading screen const loadingRef = document.querySelector('#app-loading') From c3a296fdb559b015f8e4d457f56fea137e10cf37 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Wed, 19 Mar 2025 04:56:59 -0400 Subject: [PATCH 479/846] fix(agenda): handle calendar view events that spread across multiple days (#8685) --- client/agenda/AgendaScheduleCalendar.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/agenda/AgendaScheduleCalendar.vue b/client/agenda/AgendaScheduleCalendar.vue index 9b56b7f5a7..6701ddabd7 100644 --- a/client/agenda/AgendaScheduleCalendar.vue +++ b/client/agenda/AgendaScheduleCalendar.vue @@ -187,6 +187,7 @@ function refreshData () { let earliestDate = DateTime.fromISO('2200-01-01') let latestDate = DateTime.fromISO('1990-01-01') let nowDate = DateTime.now() + let hasCrossDayEvents = false calendarOptions.events = agendaStore.scheduleAdjusted.map(ev => { // -> Determine boundaries @@ -202,6 +203,9 @@ function refreshData () { if (ev.adjustedEnd < latestDate) { latestDate = ev.adjustedEnd } + if (ev.adjustedStart.day !== ev.adjustedEnd.day) { + hasCrossDayEvents = true + } // -> Build event object return { id: ev.id, @@ -214,8 +218,8 @@ function refreshData () { }) // -> Display settings - calendarOptions.slotMinTime = `${earliestHour.toString().padStart(2, '0')}:00:00` - calendarOptions.slotMaxTime = `${latestHour.toString().padStart(2, '0')}:00:00` + calendarOptions.slotMinTime = hasCrossDayEvents ? '00:00:00' : `${earliestHour.toString().padStart(2, '0')}:00:00` + calendarOptions.slotMaxTime = hasCrossDayEvents ? '23:59:59' : `${latestHour.toString().padStart(2, '0')}:00:00` calendarOptions.validRange.start = earliestDate.minus({ days: 1 }).toISODate() calendarOptions.validRange.end = latestDate.plus({ days: 1 }).toISODate() // calendarOptions.scrollTime = `${earliestHour.toString().padStart(2, '0')}:00:00` From fde8136df53b3b9d2666674e16e15a7edf7e0ed1 Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Wed, 19 Mar 2025 05:06:47 -0400 Subject: [PATCH 480/846] chore: Add draft name to review-completed email (#8676) * chore: Add draft name to review-completed email Fixes: #7866 * fix: typo * fix: show title and add test --------- Co-authored-by: Robert Sparks --- ietf/doc/tests_review.py | 5 ++++- ietf/templates/review/completed_review.txt | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index e93bc02181..13ddbc22ba 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -902,7 +902,10 @@ def test_complete_review_enter_content(self): self.assertEqual(len(outbox), 1) self.assertIn(assignment.review_request.team.list_email, outbox[0]["To"]) - self.assertIn("This is a review", get_payload_text(outbox[0])) + payload = get_payload_text(outbox[0]) + self.assertIn("This is a review", payload) + self.assertIn(f"Document: {assignment.review_request.doc.name}", payload) + self.assertIn(f"Title: {assignment.review_request.doc.title}", payload) self.assertIn(settings.MAILING_LIST_ARCHIVE_URL, assignment.review.external_url) diff --git a/ietf/templates/review/completed_review.txt b/ietf/templates/review/completed_review.txt index bdbe321ca1..7d10d8bf13 100644 --- a/ietf/templates/review/completed_review.txt +++ b/ietf/templates/review/completed_review.txt @@ -1,7 +1,9 @@ {% load ietf_filters %}{% autoescape off %}{% filter maybewordwrap:80 %}{% if assignment.state_id == "part-completed" %} Review is partially done. Another assignment may be needed to complete it. -{% endif %}Reviewer: {{ assignment.reviewer.person }} +{% endif %}Document: {{ assignment.review_request.doc.name }} +Title: {{ assignment.review_request.doc.title }} +Reviewer: {{ assignment.reviewer.person }} Review result: {{ assignment.result.name }} {{ content }} From 2d974ed09b8e9ff93805fb06cfa65ab6f814e261 Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Fri, 21 Mar 2025 13:45:27 +1300 Subject: [PATCH 481/846] feat(agenda): Agenda meeting materials in overflow menu (#8698) * feat: agenda meeting materials in overflow menu * chore: fixing agenda meeting materials tests * chore: fix agenda meeting material tests * chore: fixing agenda meeting materials test * fix: changing to -mat suffix rather than -meeting-materials * fix: agenda meeting materials lnk -> btn * fix: click handler on agenda meeting materials --- client/agenda/AgendaScheduleList.vue | 60 ++++++++++++++++++++----- playwright/tests/meeting/agenda.spec.js | 8 ++-- 2 files changed, 52 insertions(+), 16 deletions(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 5a971c25cf..1e50df5fb4 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -121,20 +121,12 @@ :options='item.links' key-field='id' :render-icon='renderLinkIcon' - :render-label='renderLinkLabel' + :render-label='renderLink' ) n-button(size='tiny') i.bi.bi-three-dots .agenda-table-cell-links-buttons(v-else-if='item.links && item.links.length > 0') - template(v-if='item.flags.agenda') - n-popover - template(#trigger) - i.bi.bi-collection( - :id='`btn-lnk-` + item.key + `-mat`' - @click='showMaterials(item.key)' - ) - span Show meeting materials - template(v-else-if='item.type === `regular`') + template(v-if='!item.flags.agenda && item.type === `regular`') n-popover template(#trigger) i.no-meeting-materials @@ -143,7 +135,16 @@ span No meeting materials yet. n-popover(v-for='lnk of item.links', :key='lnk.id') template(#trigger) + button( + v-if="lnk.click" + type="button" + :id='`btn-` + lnk.id' + @click='lnk.click' + :aria-label='lnk.label' + :class='`border-0 bg-transparent text-` + lnk.color' + ): i.bi(:class='`bi-` + lnk.icon') a( + v-else :id='`btn-` + lnk.id' :href='lnk.href' :aria-label='lnk.label' @@ -281,13 +282,28 @@ const meetingEvents = computed(() => { } acc.lastTypeName = typeName - // -> Populate event links + // + /** + * -> Populate event menu items + * + * links is an array of either, + * 1. { href: "...", click: undefined, ...sharedProps } + * 2. { click: () => {...}, href: undefined, ...sharedProps } + */ const links = [] const typesWithLinks = ['regular', 'plenary', 'other'] const purposesWithoutLinks = ['admin', 'closed_meeting', 'officehours', 'social'] if (item.flags.showAgenda || (typesWithLinks.includes(item.type) && !purposesWithoutLinks.includes(item.purpose))) { if (item.flags.agenda) { // -> Meeting Materials + links.push({ + id: `btn-${item.id}-mat`, + label: 'Show meeting materials', + icon: 'collection', + href: undefined, + click: () => showMaterials(item.id), + color: 'black' + }) links.push({ id: `lnk-${item.id}-tar`, label: 'Download meeting materials as .tar archive', @@ -585,7 +601,11 @@ function renderLinkIcon (opt) { return h('i', { class: `bi bi-${opt.icon} text-${opt.color}` }) } -function renderLinkLabel (opt) { +function renderLink (opt) { + if (opt.click) { + return h('button', { type: 'button', class: 'overflow-button', onClick: opt.click }, opt.label) + } + return h('a', { href: opt.href, target: '_blank' }, opt.label) } @@ -1564,6 +1584,22 @@ onBeforeUnmount(() => { } } +.overflow-button { + font-size: inherit; + padding: 0; + border: 0; + background: transparent; + + &:before { + content: ""; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + } +} + @keyframes fadeInAnim { 0% { opacity: 0; diff --git a/playwright/tests/meeting/agenda.spec.js b/playwright/tests/meeting/agenda.spec.js index e6c6e17031..b7e3df5718 100644 --- a/playwright/tests/meeting/agenda.spec.js +++ b/playwright/tests/meeting/agenda.spec.js @@ -275,7 +275,7 @@ test.describe('past - desktop', () => { const eventButtons = row.locator('.agenda-table-cell-links > .agenda-table-cell-links-buttons') if (event.flags.agenda) { // Show meeting materials button - await expect(eventButtons.locator('i.bi.bi-collection')).toBeVisible() + await expect(eventButtons.locator(`#btn-btn-${event.id}-mat`)).toBeVisible() // ZIP materials button await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar > i.bi`)).toBeVisible() @@ -425,7 +425,7 @@ test.describe('past - desktop', () => { }) }) // Open dialog - await page.locator(`#agenda-rowid-${event.id} #btn-lnk-${event.id}-mat`).click() + await page.locator(`#agenda-rowid-${event.id} #btn-btn-${event.id}-mat`).click() await expect(page.locator('.agenda-eventdetails')).toBeVisible() // Header await expect(page.locator('.agenda-eventdetails .n-card-header__main > .detail-header > .bi')).toBeVisible() @@ -507,7 +507,7 @@ test.describe('past - desktop', () => { }) }) // Open dialog - await page.locator(`#btn-lnk-${event.id}-mat`).click() + await page.locator(`#btn-btn-${event.id}-mat`).click() await expect(page.locator('.agenda-eventdetails')).toBeVisible() // Slides Tab await page.locator('.agenda-eventdetails .detail-nav > a').nth(1).click() @@ -1158,7 +1158,7 @@ test.describe('future - desktop', () => { if (event.flags.showAgenda || (['regular', 'plenary', 'other'].includes(event.type) && !['admin', 'closed_meeting', 'officehours', 'social'].includes(event.purpose))) { if (event.flags.agenda) { // Show meeting materials button - await expect(eventButtons.locator('i.bi.bi-collection')).toBeVisible() + await expect(eventButtons.locator(`#btn-btn-${event.id}-mat`)).toBeVisible() // ZIP materials button await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar > i.bi`)).toBeVisible() From 27ea6234a8b0b74062c0a57e849e316087c849f3 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 21 Mar 2025 04:43:33 -0400 Subject: [PATCH 482/846] feat(agenda): keep video client + onsite tool buttons for plenary for rest of day (#8706) --- client/agenda/AgendaScheduleList.vue | 17 ++++ playwright/helpers/common.js | 24 ++++++ playwright/helpers/meeting.js | 3 + playwright/tests/meeting/agenda.spec.js | 102 ++++++++++++++++++++---- 4 files changed, 129 insertions(+), 17 deletions(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 1e50df5fb4..86c91bed85 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -464,6 +464,23 @@ const meetingEvents = computed(() => { color: 'purple' }) } + // -> Keep showing video client / on-site tool for Plenary until end of day, in case it goes over the planned time range + if (item.type === 'plenary' && item.adjustedEnd.day === current.day) { + links.push({ + id: `lnk-${item.id}-video`, + label: 'Full Client with Video', + icon: 'camera-video', + href: item.links.videoStream, + color: 'purple' + }) + links.push({ + id: `lnk-${item.id}-onsitetool`, + label: 'Onsite tool', + icon: 'telephone-outbound', + href: item.links.onsiteTool, + color: 'teal' + }) + } } } } diff --git a/playwright/helpers/common.js b/playwright/helpers/common.js index 5ba39ba022..c4dd7e2640 100644 --- a/playwright/helpers/common.js +++ b/playwright/helpers/common.js @@ -13,5 +13,29 @@ module.exports = { return rect.top < bottom && rect.top > 0 - rect.height }) + }, + /** + * Override page DateTime with a new value + * + * @param {Object} page Page object + * @param {Object} dateTimeOverride New DateTime object + */ + overridePageDateTime: async (page, dateTimeOverride) => { + await page.addInitScript(`{ + // Extend Date constructor to default to fixed time + Date = class extends Date { + constructor(...args) { + if (args.length === 0) { + super(${dateTimeOverride.toMillis()}); + } else { + super(...args); + } + } + } + // Override Date.now() to start from fixed time + const __DateNowOffset = ${dateTimeOverride.toMillis()} - Date.now(); + const __DateNow = Date.now; + Date.now = () => __DateNow() + __DateNowOffset; + }`) } } diff --git a/playwright/helpers/meeting.js b/playwright/helpers/meeting.js index 9722ffc68b..634ca2e8c6 100644 --- a/playwright/helpers/meeting.js +++ b/playwright/helpers/meeting.js @@ -609,6 +609,9 @@ module.exports = { startDateTime: curDay.set({ hour: 17, minute: 30 }), duration: '2h', type: 'plenary', + showAgenda: true, + hasAgenda: true, + hasRecordings: true, ...findAreaGroup('ietf-plenary', categories[2]) }, floors)) } diff --git a/playwright/tests/meeting/agenda.spec.js b/playwright/tests/meeting/agenda.spec.js index b7e3df5718..412a3fe9b8 100644 --- a/playwright/tests/meeting/agenda.spec.js +++ b/playwright/tests/meeting/agenda.spec.js @@ -1213,7 +1213,7 @@ test.describe('future - desktop', () => { await expect(eventButtons.locator(`#btn-lnk-${event.id}-remotecallin`)).toHaveAttribute('href', remoteCallInUrl) await expect(eventButtons.locator(`#btn-lnk-${event.id}-remotecallin > i.bi`)).toBeVisible() } - // calendar + // Calendar if (event.links.calendar) { await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar`)).toHaveAttribute('href', event.links.calendar) await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar > i.bi`)).toBeVisible() @@ -1278,22 +1278,7 @@ test.describe('live - desktop', () => { }) // Override Date in page to fixed time - await page.addInitScript(`{ - // Extend Date constructor to default to fixed time - Date = class extends Date { - constructor(...args) { - if (args.length === 0) { - super(${currentTime.toMillis()}); - } else { - super(...args); - } - } - } - // Override Date.now() to start from fixed time - const __DateNowOffset = ${currentTime.toMillis()} - Date.now(); - const __DateNow = Date.now; - Date.now = () => __DateNow() + __DateNowOffset; - }`) + await commonHelper.overridePageDateTime(page, currentTime) // Visit agenda page and await Meeting Data API call to complete await Promise.all([ @@ -1348,6 +1333,89 @@ test.describe('live - desktop', () => { }) }) +// ==================================================================== +// AGENDA (live meeting) | DESKTOP viewport | Plenary Extended Time Buttons +// ==================================================================== + +test.describe('live - desktop - plenary extended time buttons', () => { + let meetingData + let plenarySessionId + + test.beforeAll(async () => { + // Generate meeting data + meetingData = meetingHelper.generateAgendaResponse({ dateMode: 'current' }) + plenarySessionId = meetingData.schedule.find(s => s.type === 'plenary').id + }) + + test.beforeEach(async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports.desktop[0], + height: viewports.desktop[1] + }) + }) + + // -> BUTTONS PRESENT AFTER EVENT, SAME DAY + + test('same day - after event', async ({ page }) => { + // Override Date in page to fixed time + const currentTime = DateTime.fromISO('2022-02-01T13:45:15', { zone: 'Asia/Tokyo' }).plus({ days: 1 }).set({ hour: 20, minute: 30 }) + await commonHelper.overridePageDateTime(page, currentTime) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + + // Check for plenary event + await expect(page.locator('.agenda .agenda-table-display-event.agenda-table-type-plenary')).toBeVisible() + await page.locator('.agenda .agenda-table-display-event.agenda-table-type-plenary').scrollIntoViewIfNeeded() + + // Check for full video client + on-site tool + await expect(page.locator(`.agenda .agenda-table-display-event.agenda-table-type-plenary .agenda-table-cell-links-buttons a#btn-lnk-${plenarySessionId}-video`)).toBeVisible() + await expect(page.locator(`.agenda .agenda-table-display-event.agenda-table-type-plenary .agenda-table-cell-links-buttons a#btn-lnk-${plenarySessionId}-onsitetool`)).toBeVisible() + }) + + // -> BUTTONS NO LONGER PRESENT AFTER EVENT, NEXT DAY + + test('next day - after event', async ({ page }) => { + // Override Date in page to fixed time + const currentTime = DateTime.fromISO('2022-02-01T13:45:15', { zone: 'Asia/Tokyo' }).plus({ days: 2 }).set({ hour: 2, minute: 30 }) + await commonHelper.overridePageDateTime(page, currentTime) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + + // Check for plenary event + await expect(page.locator('.agenda .agenda-table-display-event.agenda-table-type-plenary')).toBeVisible() + await page.locator('.agenda .agenda-table-display-event.agenda-table-type-plenary').scrollIntoViewIfNeeded() + + // Check for full video client + on-site tool + await expect(page.locator(`.agenda .agenda-table-display-event.agenda-table-type-plenary .agenda-table-cell-links-buttons a#btn-lnk-${plenarySessionId}-video`)).not.toBeVisible() + await expect(page.locator(`.agenda .agenda-table-display-event.agenda-table-type-plenary .agenda-table-cell-links-buttons a#btn-lnk-${plenarySessionId}-onsitetool`)).not.toBeVisible() + }) +}) + // ==================================================================== // AGENDA (past meeting) | SMALL DESKTOP/TABLET/MOBILE viewports // ==================================================================== From ed2059a5813130cbf31ce77c0978a35751addc6c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 21 Mar 2025 15:45:26 +0700 Subject: [PATCH 483/846] fix: add blank=true to SlideSubmission.doc (#8688) Allows admin to save an instance with a null doc reference, which was already permitted. --- .../0011_alter_slidesubmission_doc.py | 26 +++++++++++++++++++ ietf/meeting/models.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 ietf/meeting/migrations/0011_alter_slidesubmission_doc.py diff --git a/ietf/meeting/migrations/0011_alter_slidesubmission_doc.py b/ietf/meeting/migrations/0011_alter_slidesubmission_doc.py new file mode 100644 index 0000000000..b9cbc58e99 --- /dev/null +++ b/ietf/meeting/migrations/0011_alter_slidesubmission_doc.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.19 on 2025-03-17 09:37 + +from django.db import migrations +import django.db.models.deletion +import ietf.utils.models + + +class Migration(migrations.Migration): + + dependencies = [ + ("doc", "0025_storedobject_storedobject_unique_name_per_store"), + ("meeting", "0010_alter_floorplan_image_alter_meetinghost_logo"), + ] + + operations = [ + migrations.AlterField( + model_name="slidesubmission", + name="doc", + field=ietf.utils.models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="doc.document", + ), + ), + ] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 5284420731..84d151c310 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1385,7 +1385,7 @@ class SlideSubmission(models.Model): apply_to_all = models.BooleanField(default=False) submitter = ForeignKey(Person) status = ForeignKey(SlideSubmissionStatusName, null=True, default='pending', on_delete=models.SET_NULL) - doc = ForeignKey(Document, null=True, on_delete=models.SET_NULL) + doc = ForeignKey(Document, blank=True, null=True, on_delete=models.SET_NULL) def staged_filepath(self): return os.path.join(settings.SLIDE_STAGING_PATH , self.filename) From 37b4448b3d390b102b7e14890880bcfd1e965bcc Mon Sep 17 00:00:00 2001 From: Benson Muite Date: Fri, 21 Mar 2025 11:52:18 +0300 Subject: [PATCH 484/846] fix: Clarify legacy description in RFC banner (#8424) (#8670) --- ietf/templates/doc/disclaimer.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ietf/templates/doc/disclaimer.html b/ietf/templates/doc/disclaimer.html index 31ce6c397e..db4c42ed68 100644 --- a/ietf/templates/doc/disclaimer.html +++ b/ietf/templates/doc/disclaimer.html @@ -3,12 +3,18 @@ {% load ietf_filters %} {% origin %} {% if doc.type_id == "rfc" %} - {% if doc.stream.slug != "ietf" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} + {% if doc.stream.slug != "ietf" and doc.stream.desc != "Legacy" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} + {% elif doc.stream.slug != "ietf" and doc.stream.desc == "Legacy" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} + {% endif %} {% elif doc|is_in_stream %} {% if doc.stream.slug != "ietf" and doc.std_level.slug|default:"unk" not in "bcp,ds,ps,std"|split:"," %} @@ -25,4 +31,4 @@ This I-D is not endorsed by the IETF and has no formal standing in the IETF standards process. -{% endif %} \ No newline at end of file +{% endif %} From 8fec17282f5dc7ef28355990e2f74bff2a309002 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 21 Mar 2025 19:30:40 -0400 Subject: [PATCH 485/846] ci: Update build-base-app.yml --- .github/workflows/build-base-app.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index c8f66a22b7..5f0a0d11b8 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -51,7 +51,7 @@ jobs: push: true tags: | ghcr.io/ietf-tools/datatracker-app-base:${{ env.IMGVERSION }} - ghcr.io/ietf-tools/datatracker-app-base:latest + ${{ github.ref == 'refs/heads/main' && 'ghcr.io/ietf-tools/datatracker-app-base:latest' || '' }} - name: Update version references run: | @@ -61,6 +61,6 @@ jobs: - name: Commit CHANGELOG.md uses: stefanzweifel/git-auto-commit-action@v5 with: - branch: main + branch: ${{ github.ref_name }} commit_message: 'ci: update base image target version to ${{ env.IMGVERSION }}' file_pattern: dev/build/Dockerfile dev/build/TARGET_BASE From 6da36da3fde2721d3885001e4a4174c85579db8e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 27 Mar 2025 00:29:48 +0700 Subject: [PATCH 486/846] chore: bump rabbitmq to 3.13 (#8603) * ci: param for rabbitmq_version * ci: drop latest tagging from datatracker-mq * chore: bump rabbitmq to 3.13 * Revert "ci: drop latest tagging from datatracker-mq" This reverts commit 58cea207c7300727f9cfc19a57859ab16c3b2c01. --- .github/workflows/build-mq-broker.yml | 15 +++++++++------ k8s/rabbitmq.yaml | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 8c6f1e6ae1..85c27c23cc 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -8,10 +8,13 @@ on: - 'dev/mq/**' - '.github/workflows/build-mq-broker.yml' - workflow_dispatch: - -env: - RABBITMQ_VERSION: 3.12-alpine + workflow_dispatch: + inputs: + rabbitmq_version: + description: 'RabbitMQ Version' + default: '3.13-alpine' + required: true + type: string jobs: publish: @@ -45,7 +48,7 @@ jobs: file: dev/mq/Dockerfile platforms: linux/amd64,linux/arm64 push: true - build-args: RABBITMQ_VERSION=${{ env.RABBITMQ_VERSION }} + build-args: RABBITMQ_VERSION=${{ inputs.rabbitmq_version }} tags: | - ghcr.io/ietf-tools/datatracker-mq:${{ env.RABBITMQ_VERSION }} + ghcr.io/ietf-tools/datatracker-mq:${{ inputs.rabbitmq_version }} ghcr.io/ietf-tools/datatracker-mq:latest diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml index 3cab7ff565..0c8f0705b5 100644 --- a/k8s/rabbitmq.yaml +++ b/k8s/rabbitmq.yaml @@ -29,7 +29,7 @@ spec: # ----------------------------------------------------- # RabbitMQ Container # ----------------------------------------------------- - - image: "ghcr.io/ietf-tools/datatracker-mq:3.12-alpine" + - image: "ghcr.io/ietf-tools/datatracker-mq:3.13-alpine" imagePullPolicy: Always name: rabbitmq ports: From 9dd25b9aee2ccb565d74d55d90c67bf8388c910e Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Fri, 28 Mar 2025 04:07:53 +1300 Subject: [PATCH 487/846] chore: vite sourcemap (#8719) --- vite.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vite.config.js b/vite.config.js index 41a2cb02e0..bde2b9ed57 100644 --- a/vite.config.js +++ b/vite.config.js @@ -16,7 +16,8 @@ export default defineConfig(({ command, mode }) => { main: 'client/main.js', embedded: 'client/embedded.js' } - } + }, + sourcemap: true }, cacheDir: '.vite', plugins: [ From 7e9a46af63da0e45f3ea0e4ccfda69875b282190 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 27 Mar 2025 13:59:24 -0500 Subject: [PATCH 488/846] feat: move base containers to bookworm (#8710) --- docker/base.Dockerfile | 17 ++++++++++------- docker/scripts/app-setup-debian.sh | 16 +++------------- ietf/submit/tests.py | 4 ++-- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile index e2465f33c2..f364456c7a 100644 --- a/docker/base.Dockerfile +++ b/docker/base.Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-bullseye +FROM python:3.9-bookworm LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive @@ -14,6 +14,9 @@ RUN apt-get install -y --no-install-recommends ca-certificates curl gnupg \ && mkdir -p /etc/apt/keyrings\ && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list +RUN echo "Package: nodejs" >> /etc/apt/preferences.d/preferences && \ + echo "Pin: origin deb.nodesource.com" >> /etc/apt/preferences.d/preferences && \ + echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/preferences # Add Docker Source RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg @@ -56,12 +59,13 @@ RUN apt-get update --fix-missing && apt-get install -qy --no-install-recommends libmagic-dev \ libmariadb-dev \ libmemcached-tools \ + libyang2-tools \ locales \ make \ mariadb-client \ memcached \ nano \ - netcat \ + netcat-traditional \ nodejs \ pgloader \ pigz \ @@ -77,7 +81,6 @@ RUN apt-get update --fix-missing && apt-get install -qy --no-install-recommends wget \ xauth \ xvfb \ - yang-tools \ zsh # Install kramdown-rfc2629 (ruby) @@ -106,11 +109,11 @@ RUN apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /va ENV DBUS_SESSION_BUS_ADDRESS=/dev/null # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true +ENV npm_config_unsafe_perm=true # disable NPM funding messages -ENV npm_config_fund false +ENV npm_config_fund=false # Set locale to en_US.UTF-8 RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment && \ @@ -119,7 +122,7 @@ RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment && \ dpkg-reconfigure locales && \ locale-gen en_US.UTF-8 && \ update-locale LC_ALL en_US.UTF-8 -ENV LC_ALL en_US.UTF-8 +ENV LC_ALL=en_US.UTF-8 # Install idnits ADD https://raw.githubusercontent.com/ietf-tools/idnits-mirror/main/idnits /usr/local/bin/ diff --git a/docker/scripts/app-setup-debian.sh b/docker/scripts/app-setup-debian.sh index ddfc351995..ea9cc3fb87 100644 --- a/docker/scripts/app-setup-debian.sh +++ b/docker/scripts/app-setup-debian.sh @@ -10,7 +10,6 @@ # Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag] [install Oh My Zsh! flag] [Add non-free packages] set -e - INSTALL_ZSH=${1:-"true"} USERNAME=${2:-"automatic"} USER_UID=${3:-"automatic"} @@ -116,18 +115,9 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then # Needed for adding manpages-posix and manpages-posix-dev which are non-free packages in Debian if [ "${ADD_NON_FREE_PACKAGES}" = "true" ]; then # Bring in variables from /etc/os-release like VERSION_CODENAME - . /etc/os-release - sed -i -E "s/deb http:\/\/(deb|httpredir)\.debian\.org\/debian ${VERSION_CODENAME} main/deb http:\/\/\1\.debian\.org\/debian ${VERSION_CODENAME} main contrib non-free/" /etc/apt/sources.list - sed -i -E "s/deb-src http:\/\/(deb|httredir)\.debian\.org\/debian ${VERSION_CODENAME} main/deb http:\/\/\1\.debian\.org\/debian ${VERSION_CODENAME} main contrib non-free/" /etc/apt/sources.list - sed -i -E "s/deb http:\/\/(deb|httpredir)\.debian\.org\/debian ${VERSION_CODENAME}-updates main/deb http:\/\/\1\.debian\.org\/debian ${VERSION_CODENAME}-updates main contrib non-free/" /etc/apt/sources.list - sed -i -E "s/deb-src http:\/\/(deb|httpredir)\.debian\.org\/debian ${VERSION_CODENAME}-updates main/deb http:\/\/\1\.debian\.org\/debian ${VERSION_CODENAME}-updates main contrib non-free/" /etc/apt/sources.list - sed -i "s/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}\/updates main/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}\/updates main contrib non-free/" /etc/apt/sources.list - sed -i "s/deb-src http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}\/updates main/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}\/updates main contrib non-free/" /etc/apt/sources.list - sed -i "s/deb http:\/\/deb\.debian\.org\/debian ${VERSION_CODENAME}-backports main/deb http:\/\/deb\.debian\.org\/debian ${VERSION_CODENAME}-backports main contrib non-free/" /etc/apt/sources.list - sed -i "s/deb-src http:\/\/deb\.debian\.org\/debian ${VERSION_CODENAME}-backports main/deb http:\/\/deb\.debian\.org\/debian ${VERSION_CODENAME}-backports main contrib non-free/" /etc/apt/sources.list - # Handle bullseye location for security https://www.debian.org/releases/bullseye/amd64/release-notes/ch-information.en.html - sed -i "s/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}-security main/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}-security main contrib non-free/" /etc/apt/sources.list - sed -i "s/deb-src http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}-security main/deb http:\/\/security\.debian\.org\/debian-security ${VERSION_CODENAME}-security main contrib non-free/" /etc/apt/sources.list + . /etc/os-release + sed -i -E "s/Components: main/Components: main contrib non-free/" /etc/apt/sources.list.d/debian.sources + echo "Running apt-get update..." apt-get update package_list="${package_list} manpages-posix manpages-posix-dev" diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 9a993480cd..6b1c998e76 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -1888,7 +1888,7 @@ def test_submit_invalid_yang(self): r = self.client.get(status_url) q = PyQuery(r.content) # - self.assertContains(r, 'The yang validation returned 1 error') + self.assertContains(r, 'The yang validation returned 3 errors') # m = q('#yang-validation-message').text() for command in ['xym', 'pyang', 'yanglint']: @@ -1898,7 +1898,7 @@ def test_submit_invalid_yang(self): self.assertIn("draft-yang-testing-invalid-00.txt", m) self.assertIn("error: syntax error: illegal keyword: ;", m) if settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY): - self.assertIn("No validation errors", m) + self.assertIn('libyang err : Parsing module "ietf-yang-metadata" failed.', m) def submit_conflicting_submissiondocevent_rev(self, new_rev='01', existing_rev='01'): """Test submitting a rev when an equal or later SubmissionDocEvent rev exists From 431c475060778ccaaf611e0de7a9bcc0c3b93c42 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Thu, 27 Mar 2025 19:12:31 +0000 Subject: [PATCH 489/846] ci: update base image target version to 20250327T1859 --- 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 2b02a091c5..cc55c92881 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250315T0745 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250327T1859 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index e6f490b168..50e8bfd839 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250315T0745 +20250327T1859 From 752bc2103146b534e1bb6188c7d54d11f07ba885 Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Thu, 27 Mar 2025 18:19:30 -0400 Subject: [PATCH 490/846] feat: highlight unexpected state in AD dashboard (#8738) * feat: highlight unexpected state in AD dashboard * test: add tests for is_unexpected_wg_state * test: improve tests using WgDraftFactory --- ietf/doc/templatetags/ietf_filters.py | 13 +++++++++++++ ietf/doc/templatetags/tests_ietf_filters.py | 16 ++++++++++++++++ ietf/templates/doc/search/status_columns.html | 4 ++++ 3 files changed, 33 insertions(+) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 86507eeaaa..d4adf96a27 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -480,6 +480,19 @@ def state(doc, slug): slug = "%s-stream-%s" % (doc.type_id, doc.stream_id) return doc.get_state(slug) + +@register.filter +def is_unexpected_wg_state(doc): + """Returns a flag indicating whether the document has an unexpected wg state.""" + if not doc.type_id == "draft": + return False + + draft_iesg_state = doc.get_state("draft-iesg") + draft_stream_state = doc.get_state("draft-stream-ietf") + + return draft_iesg_state.slug != "idexists" and draft_stream_state is not None and draft_stream_state.slug != "sub-pub" + + @register.filter def statehelp(state): "Output help icon with tooltip for state." diff --git a/ietf/doc/templatetags/tests_ietf_filters.py b/ietf/doc/templatetags/tests_ietf_filters.py index f018b7d9b3..b5130849ea 100644 --- a/ietf/doc/templatetags/tests_ietf_filters.py +++ b/ietf/doc/templatetags/tests_ietf_filters.py @@ -14,12 +14,14 @@ ConflictReviewFactory, BofreqFactory, StatementFactory, + RfcFactory, ) from ietf.doc.models import DocEvent from ietf.doc.templatetags.ietf_filters import ( urlize_ietf_docs, is_valid_url, is_in_stream, + is_unexpected_wg_state, ) from ietf.person.models import Person from ietf.utils.test_utils import TestCase @@ -174,3 +176,17 @@ def test_urlize_ietf_docs(self): for input, output in cases: # debug.show("(input, urlize_ietf_docs(input), output)") self.assertEqual(urlize_ietf_docs(input), output) + + def test_is_unexpected_wg_state(self): + """ + Test that the unexpected_wg_state function works correctly + """ + # test documents with expected wg states + self.assertFalse(is_unexpected_wg_state(RfcFactory())) + self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'sub-pub')]))) + self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-iesg', 'idexists')]))) + self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'wg-cand'), ('draft-iesg','idexists')]))) + + # test documents with unexpected wg states due to invalid combination of states + self.assertTrue(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'wg-cand'), ('draft-iesg','lc-req')]))) + self.assertTrue(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'chair-w'), ('draft-iesg','pub-req')]))) diff --git a/ietf/templates/doc/search/status_columns.html b/ietf/templates/doc/search/status_columns.html index 15f284fd12..5ba41bb9c4 100644 --- a/ietf/templates/doc/search/status_columns.html +++ b/ietf/templates/doc/search/status_columns.html @@ -78,6 +78,10 @@ {% person_link action_holder.person title=action_holder.role_for_doc %}{% if action_holder|action_holder_badge %} {{ action_holder|action_holder_badge }}{% endif %}{% if not forloop.last %},{% endif %} {% endfor %} {% endif %} + {% if doc|is_unexpected_wg_state %} +
    + Unexpected WG state + {% endif %} {% else %} {# RFC #} {{ doc.std_level|safe }} RFC From aa2a3217a7006c05292650bb0d75b0243d2cc67b Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 28 Mar 2025 10:59:56 -0400 Subject: [PATCH 491/846] fix(agenda): strikethrough cancelled and rescheduled events (#8694) * fix(agenda): strikethrough cancelled and rescheduled events * fix(agenda): rescheduled + canceled badges width on mobile * fix(agenda): use em for canceled / rescheduled badge on mobile * fix: deleting badge width/display:block CSS --------- Co-authored-by: Matthew Holloway --- client/agenda/AgendaDetailsModal.vue | 1 - client/agenda/AgendaScheduleCalendar.vue | 1 - client/agenda/AgendaScheduleList.vue | 12 ++++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/client/agenda/AgendaDetailsModal.vue b/client/agenda/AgendaDetailsModal.vue index 037e32f9cb..2582bf2159 100644 --- a/client/agenda/AgendaDetailsModal.vue +++ b/client/agenda/AgendaDetailsModal.vue @@ -327,7 +327,6 @@ async function fetchSessionMaterials () { border-radius: 5px; .badge { - width: 30px; font-size: .7em; background-color: $yellow-200; border-bottom: 1px solid $yellow-500; diff --git a/client/agenda/AgendaScheduleCalendar.vue b/client/agenda/AgendaScheduleCalendar.vue index 6701ddabd7..9863296341 100644 --- a/client/agenda/AgendaScheduleCalendar.vue +++ b/client/agenda/AgendaScheduleCalendar.vue @@ -330,7 +330,6 @@ function close () { } .badge { - width: 30px; font-size: .7em; border: 1px solid #CCC; text-transform: uppercase; diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index 86c91bed85..d38c7842eb 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -1097,8 +1097,6 @@ onBeforeUnmount(() => { } @media screen and (max-width: $bs5-break-md) { - width: 30px; - display: block; margin: 2px 0 0 0; } } @@ -1321,6 +1319,11 @@ onBeforeUnmount(() => { &.agenda-table-cell-room { border-right: 1px solid darken($red-100, 5%) !important; + text-decoration: line-through; + } + + &.agenda-table-cell-name > a, &.agenda-table-cell-name > span { + text-decoration: line-through; } &:last-child { @@ -1348,6 +1351,11 @@ onBeforeUnmount(() => { &.agenda-table-cell-room { border-right: 1px solid darken($orange-100, 5%) !important; + text-decoration: line-through; + } + + &.agenda-table-cell-name > a, &.agenda-table-cell-name > span { + text-decoration: line-through; } &:last-child { From 527db359e3836a587ba67432b814004b75635022 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Tue, 1 Apr 2025 09:03:59 -0400 Subject: [PATCH 492/846] chore: fix line ending for .github/ISSUE_TEMPLATE/config.yml --- .github/ISSUE_TEMPLATE/config.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5e27af9fed..320614b17e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ -blank_issues_enabled: false -contact_links: - - name: Help and questions - url: https://github.com/ietf-tools/datatracker/discussions/categories/help-questions - about: Need help? Have a question on setting up the project or its usage? - - name: Discuss new ideas - url: https://github.com/ietf-tools/datatracker/discussions/categories/ideas - about: Submit ideas for new features or improvements to be discussed. +blank_issues_enabled: false +contact_links: + - name: Help and questions + url: https://github.com/ietf-tools/datatracker/discussions/categories/help-questions + about: Need help? Have a question on setting up the project or its usage? + - name: Discuss new ideas + url: https://github.com/ietf-tools/datatracker/discussions/categories/ideas + about: Submit ideas for new features or improvements to be discussed. From 9957cf190a4a61369f97e0224e0bb2ae6ed9c8be Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Tue, 1 Apr 2025 14:35:04 -0400 Subject: [PATCH 493/846] feat: block iesg ballot for docs from outside streams (#8761) * feat: block iesg ballot for docs from outside streams * test: correct failing irsg test * feat: improve/simplify tests and condition * test: filter out pyflakes tests related to globals --- ietf/doc/tests_ballot.py | 29 +++++++++++++++++++++++------ ietf/doc/tests_irsg_ballot.py | 2 +- ietf/doc/views_ballot.py | 5 ++++- ietf/utils/test_runner.py | 9 ++++++++- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index c7362b58e2..ec23f3d491 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -17,7 +17,7 @@ from ietf.doc.models import (Document, State, DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, TelechatDocEvent) from ietf.doc.factories import (DocumentFactory, IndividualDraftFactory, IndividualRfcFactory, WgDraftFactory, - BallotPositionDocEventFactory, BallotDocEventFactory, IRSGBallotDocEventFactory) + BallotPositionDocEventFactory, BallotDocEventFactory, IRSGBallotDocEventFactory, RgDraftFactory) from ietf.doc.templatetags.ietf_filters import can_defer from ietf.doc.utils import create_ballot_if_not_open from ietf.doc.views_ballot import parse_ballot_edit_return_point @@ -360,7 +360,7 @@ def test_request_last_call(self): self.assertTrue('aread@' in outbox[-1]['Cc']) def test_edit_ballot_writeup(self): - draft = IndividualDraftFactory(states=[('draft','active'),('draft-iesg','iesg-eva')]) + draft = IndividualDraftFactory(states=[('draft','active'),('draft-iesg','iesg-eva')], stream_id='ietf') url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) @@ -390,8 +390,25 @@ def test_edit_ballot_writeup(self): self.assertTrue("This is a simple test" in d.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text").text) self.assertTrue('iesg-eva' == d.get_state_slug('draft-iesg')) + def test_edit_ballot_writeup_unauthorized_stream(self): + # Test that accessing a document from unauthorized (irtf) stream returns a 404 error + draft = RgDraftFactory() + url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=draft.name)) + login_testing_unauthorized(self, "ad", url) + + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + + def test_edit_ballot_writeup_invalid_name(self): + # Test that accessing a non-existent document returns a 404 error + url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name="invalid_name")) + login_testing_unauthorized(self, "ad", url) + + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + def test_edit_ballot_writeup_already_approved(self): - draft = IndividualDraftFactory(states=[('draft','active'),('draft-iesg','approved')]) + draft = IndividualDraftFactory(states=[('draft','active'),('draft-iesg','approved')], stream_id='ietf') url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) @@ -465,7 +482,7 @@ def test_edit_ballot_rfceditornote(self): def test_issue_ballot(self): ad = Person.objects.get(user__username="ad") for case in ('none','past','future'): - draft = IndividualDraftFactory(ad=ad) + draft = IndividualDraftFactory(ad=ad, stream_id='ietf') if case in ('past','future'): LastCallDocEvent.objects.create( by=Person.objects.get(name='(System)'), @@ -504,7 +521,7 @@ def test_issue_ballot(self): def test_issue_ballot_auto_state_change(self): ad = Person.objects.get(user__username="ad") - draft = IndividualDraftFactory(ad=ad, states=[('draft','active'),('draft-iesg','writeupw')]) + draft = IndividualDraftFactory(ad=ad, states=[('draft','active'),('draft-iesg','writeupw')], stream_id='ietf') url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) @@ -528,7 +545,7 @@ def test_issue_ballot_auto_state_change(self): def test_issue_ballot_warn_if_early(self): ad = Person.objects.get(user__username="ad") - draft = IndividualDraftFactory(ad=ad, states=[('draft','active'),('draft-iesg','lc')]) + draft = IndividualDraftFactory(ad=ad, states=[('draft','active'),('draft-iesg','lc')], stream_id='ietf') url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) diff --git a/ietf/doc/tests_irsg_ballot.py b/ietf/doc/tests_irsg_ballot.py index 92752e48c4..aa62d8aaf9 100644 --- a/ietf/doc/tests_irsg_ballot.py +++ b/ietf/doc/tests_irsg_ballot.py @@ -288,7 +288,7 @@ def test_edit_ballot_position_permissions(self): def test_iesg_ballot_no_irsg_actions(self): ad = Person.objects.get(user__username="ad") - wg_draft = IndividualDraftFactory(ad=ad) + wg_draft = IndividualDraftFactory(ad=ad, stream_id='ietf') irsgmember = get_active_irsg()[0] url = urlreverse('ietf.doc.views_ballot.ballot_writeupnotes', kwargs=dict(name=wg_draft.name)) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 4ff40d2268..9e2a417933 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -611,6 +611,10 @@ def clean_ballot_writeup(self): def ballot_writeupnotes(request, name): """Editing of ballot write-up and notes""" doc = get_object_or_404(Document, name=name) + + if doc.stream_id is None or doc.stream_id != 'ietf': + raise Http404("The requested operation is not allowed for this document.") + prev_state = doc.get_state("draft-iesg") login = request.user.person @@ -1335,4 +1339,3 @@ def parse_ballot_edit_return_point(path, doc_name, ballot_id): "ietf.iesg.views.past_documents", } return validate_return_to_path(path, get_default_path, allowed_path_handlers) - diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 3c89a2d01c..6b6f282c49 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -263,7 +263,14 @@ def pyflakes_test(self): path = os.path.join(settings.BASE_DIR) warnings = [] warnings = pyflakes.checkPaths([path], verbosity=0) - self.assertEqual([], [str(w) for w in warnings]) + + # Filter out warnings about unused global variables + filtered_warnings = [ + w for w in warnings + if not re.search(r"`global \w+` is unused: name is never assigned in scope", str(w)) + ] + + self.assertEqual([], [str(w) for w in filtered_warnings]) class MyPyTest(TestCase): From 48f97c68406a158a4d4bf5da58e9168d12a5f92e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 1 Apr 2025 16:12:33 -0300 Subject: [PATCH 494/846] chore: fix/refactor code near unneeded global declarations (#8765) * refactor: unused vars in draft.py * refactor: unwrap/simplify random_faker() prep * chore: types/globals in test_runner.py * chore: drop unneeded globals --- ietf/doc/templatetags/wg_menu.py | 2 -- ietf/person/factories.py | 26 ++++++++++++++------------ ietf/utils/draft.py | 8 +------- ietf/utils/patch.py | 3 +-- ietf/utils/test_runner.py | 31 ++++++++++++++----------------- 5 files changed, 30 insertions(+), 40 deletions(-) diff --git a/ietf/doc/templatetags/wg_menu.py b/ietf/doc/templatetags/wg_menu.py index 76bf7eb4d0..3e8d209448 100644 --- a/ietf/doc/templatetags/wg_menu.py +++ b/ietf/doc/templatetags/wg_menu.py @@ -62,8 +62,6 @@ @register.simple_tag def wg_menu(flavor): - global parents - for p in parents: p.short_name = parent_short_names.get(p.acronym) or p.name if p.short_name.endswith(" Area"): diff --git a/ietf/person/factories.py b/ietf/person/factories.py index 45de554766..98756f26c8 100644 --- a/ietf/person/factories.py +++ b/ietf/person/factories.py @@ -26,20 +26,22 @@ fake = faker.Factory.create() -def setup(): - global acceptable_fakers - # The transliteration of some Arabic and Devanagari names introduces - # non-alphabetic characters that don't work with the draft author - # extraction code, and also don't seem to match the way people with Arabic - # names romanize Arabic names. Exclude those locales from name generation - # in order to avoid test failures. - locales = set( [ l for l in faker.config.AVAILABLE_LOCALES if not (l.startswith('ar_') or l.startswith('sg_') or l=='fr_QC') ] ) - acceptable_fakers = [faker.Faker(locale) for locale in locales] -setup() +# The transliteration of some Arabic and Devanagari names introduces +# non-alphabetic characters that don't work with the draft author +# extraction code, and also don't seem to match the way people with Arabic +# names romanize Arabic names. Exclude those locales from name generation +# in order to avoid test failures. +_acceptable_fakers = [ + faker.Faker(locale) + for locale in set(faker.config.AVAILABLE_LOCALES) + if not (locale.startswith('ar_') or locale.startswith('sg_') or locale == 'fr_QC') +] + def random_faker(): - global acceptable_fakers - return random.sample(acceptable_fakers, 1)[0] + """Helper to get a random faker acceptable for User names""" + return random.sample(_acceptable_fakers, 1)[0] + class UserFactory(factory.django.DjangoModelFactory): class Meta: diff --git a/ietf/utils/draft.py b/ietf/utils/draft.py index 50add5abba..53d3d40811 100755 --- a/ietf/utils/draft.py +++ b/ietf/utils/draft.py @@ -65,7 +65,6 @@ opt_debug = False opt_timestamp = False opt_trace = False -opt_authorinfo = False opt_attributes = False # Don't forget to add the option variable to the globals list in _main below @@ -1332,8 +1331,6 @@ def getmeta(fn): # ---------------------------------------------------------------------- def _output(docname, fields, outfile=sys.stdout): - global company_domain - if opt_attributes: def outputkey(key, fields): field = fields[key] @@ -1373,9 +1370,8 @@ def _printmeta(fn, outfile=sys.stdout): # Main # ---------------------------------------------------------------------- -company_domain = {} # type: Dict[str, str] def _main(outfile=sys.stdout): - global opt_debug, opt_timestamp, opt_trace, opt_authorinfo, files, company_domain, opt_attributes + global opt_debug, opt_timestamp, opt_trace, files, opt_attributes # set default values, if any # ---------------------------------------------------------------------- # Option processing @@ -1423,8 +1419,6 @@ def _main(outfile=sys.stdout): elif opt in ["-T", "--trace"]: # Emit trace information while working opt_trace = True - company_domain = {} - if not files: files = [ "-" ] diff --git a/ietf/utils/patch.py b/ietf/utils/patch.py index 9de2270ebb..fd3e4a165d 100644 --- a/ietf/utils/patch.py +++ b/ietf/utils/patch.py @@ -87,8 +87,7 @@ def createLock(self): debugmode = False def setdebug(): - global debugmode, streamhandler - + global debugmode debugmode = True loglevel = logging.DEBUG logformat = "%(levelname)8s %(message)s" diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 6b6f282c49..a77377ffb5 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -53,9 +53,10 @@ import factory.random import urllib3 import warnings -from urllib.parse import urlencode from fnmatch import fnmatch +from typing import Callable, Optional +from urllib.parse import urlencode from coverage.report import Reporter from coverage.results import Numbers @@ -90,11 +91,11 @@ from mypy_boto3_s3.service_resource import Bucket -loaded_templates = set() -visited_urls = set() -test_database_name = None -old_destroy = None -old_create = None +loaded_templates: set[str] = set() +visited_urls: set[str] = set() +test_database_name: Optional[str] = None +old_destroy: Optional[Callable] = None +old_create: Optional[Callable] = None template_coverage_collection = None code_coverage_collection = None @@ -230,10 +231,12 @@ def load_and_run_fixtures(verbosity): fn() def safe_create_test_db(self, verbosity, *args, **kwargs): - global test_database_name, old_create + if old_create is None: + raise RuntimeError("old_create has not been set, cannot proceed") keepdb = kwargs.get('keepdb', False) if not keepdb: print(" Creating test database...") + global test_database_name test_database_name = old_create(self, 0, *args, **kwargs) if settings.GLOBAL_TEST_FIXTURES: @@ -243,8 +246,9 @@ def safe_create_test_db(self, verbosity, *args, **kwargs): return test_database_name def safe_destroy_test_db(*args, **kwargs): + if old_destroy is None: + raise RuntimeError("old_destroy has not been set, cannot proceed") sys.stdout.write('\n') - global test_database_name, old_destroy keepdb = kwargs.get('keepdb', False) if not keepdb: if settings.DATABASES["default"]["NAME"] != test_database_name: @@ -358,15 +362,13 @@ class TemplateCoverageLoader(BaseLoader): is_usable = True def get_template(self, template_name, skip=None): - global template_coverage_collection, loaded_templates - if template_coverage_collection == True: + if template_coverage_collection: loaded_templates.add(str(template_name)) raise TemplateDoesNotExist(template_name) def record_urls_middleware(get_response): def record_urls(request): - global url_coverage_collection, visited_urls - if url_coverage_collection == True: + if url_coverage_collection: visited_urls.add(request.path) return get_response(request) return record_urls @@ -532,7 +534,6 @@ def report_test_result(self, test): ( test, test_coverage*100, latest_coverage_version, master_coverage*100, )) def template_coverage_test(self): - global loaded_templates if self.runner.check_coverage: apps = [ app.split('.')[-1] for app in self.runner.test_apps ] all = get_template_paths(apps) @@ -760,7 +761,6 @@ def __init__( self.show_logging = show_logging self.rerun = rerun self.test_labels = None - global validation_settings validation_settings["validate_html"] = self if validate_html else None validation_settings["validate_html_harder"] = self if validate_html and validate_html_harder else None validation_settings["show_logging"] = show_logging @@ -783,9 +783,6 @@ def __init__( self.blobstoremanager = TestBlobstoreManager() if manage_blobstore else None def setup_test_environment(self, **kwargs): - global template_coverage_collection - global url_coverage_collection - ietf.utils.mail.test_mode = True ietf.utils.mail.SMTP_ADDR['ip4'] = '127.0.0.1' ietf.utils.mail.SMTP_ADDR['port'] = 2025 From 48bee8a58381e5caa6cf5d6b56bd58eff614a918 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 1 Apr 2025 17:19:30 -0300 Subject: [PATCH 495/846] chore: update libreoffice install for bookworm (#8768) --- dev/build/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index cc55c92881..c25298d652 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -10,9 +10,8 @@ RUN groupadd -g 1000 datatracker && \ RUN apt-get purge -y imagemagick imagemagick-6-common # Install libreoffice (needed via PPT2PDF_COMMAND) -RUN echo "deb http://deb.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/bullseye-backports.list && \ - apt-get update && \ - apt-get -qyt bullseye-backports install libreoffice-nogui +RUN apt-get update && \ + apt-get -qy install libreoffice-nogui COPY . . COPY ./dev/build/start.sh ./start.sh From 15ef59133a0e8b62158836b697d9413dc395228f Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Thu, 3 Apr 2025 05:10:22 +1300 Subject: [PATCH 496/846] chore: libreoffice flags for resilience (#8769) --- ietf/settings.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ietf/settings.py b/ietf/settings.py index 1fe5f48229..33a2f976d9 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1103,7 +1103,12 @@ def skip_unreadable_post(record): DATATRACKER_MAX_UPLOAD_SIZE = 40960000 PPT2PDF_COMMAND = [ - "/usr/bin/soffice", "--headless", "--convert-to", "pdf:writer_globaldocument_pdf_Export", "--outdir" + "/usr/bin/soffice", + "--headless", # no GUI + "--safe-mode", # use a new libreoffice profile every time (ensures no reliance on accumulated profile config) + "--norestore", # don't attempt to restore files after a previous crash (ensures that one crash won't block future conversions until UI intervention) + "--convert-to", "pdf:writer_globaldocument_pdf_Export", + "--outdir" ] STATS_REGISTRATION_ATTENDEES_JSON_URL = 'https://registration.ietf.org/{number}/attendees/' From afa79dc55b16463d56b531bb1b6b06fbbeb12ace Mon Sep 17 00:00:00 2001 From: Jim Fenton Date: Wed, 2 Apr 2025 09:10:38 -0700 Subject: [PATCH 497/846] feat: Warn if uploading minutes before session end (#8700) * Warn if uploading minutes before sessionn end * Remove extraneous btn-primary for session future Co-authored-by: Robert Sparks * fix: guard against unscheduled sessions * fix: test addition of warning * fix: another guard against unscheduled sessions * feat: test future warning on session details pannel --------- Co-authored-by: Robert Sparks --- ietf/meeting/tests_views.py | 286 ++++++++++-------- ietf/meeting/views.py | 6 + .../meeting/session_details_panel.html | 2 +- .../meeting/upload_session_minutes.html | 5 + 4 files changed, 168 insertions(+), 131 deletions(-) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 0f91986f77..a93a26b981 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -6541,110 +6541,130 @@ def test_upload_bluesheets_interim_chair_access(self): self.assertIn('Upload', str(q("title"))) - def test_upload_minutes_agenda(self): - for doctype in ('minutes','agenda'): - session = SessionFactory(meeting__type_id='ietf') - if doctype == 'minutes': - url = urlreverse('ietf.meeting.views.upload_session_minutes',kwargs={'num':session.meeting.number,'session_id':session.id}) - else: - url = urlreverse('ietf.meeting.views.upload_session_agenda',kwargs={'num':session.meeting.number,'session_id':session.id}) - self.client.logout() - login_testing_unauthorized(self,"secretary",url) - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertIn('Upload', str(q("Title"))) - self.assertFalse(session.presentations.exists()) - self.assertFalse(q('form input[type="checkbox"]')) - - session2 = SessionFactory(meeting=session.meeting,group=session.group) - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(q('form input[type="checkbox"]')) - - # test not submitting a file - r = self.client.post(url, dict(submission_method="upload")) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(q("form .is-invalid")) - - test_file = BytesIO(b'this is some text for a test') - test_file.name = "not_really.json" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(q('form .is-invalid')) - - test_file = BytesIO(b'this is some text for a test'*1510000) - test_file.name = "not_really.pdf" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(q('form .is-invalid')) - - test_file = BytesIO(b'') - test_file.name = "not_really.html" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(q('form .is-invalid')) - - # Test html sanitization - test_file = BytesIO(b'Title

    Title

    Some text
    ') - test_file.name = "some.html" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertEqual(r.status_code, 302) - doc = session.presentations.filter(document__type_id=doctype).first().document - self.assertEqual(doc.rev,'00') - text = doc.text() - self.assertIn('Some text', text) - self.assertNotIn('
    ', text) - text = retrieve_str(doctype, f"{doc.name}-{doc.rev}.html") - self.assertIn('Some text', text) - self.assertNotIn('
    ', text) - - # txt upload - test_bytes = b'This is some text for a test, with the word\nvirtual at the beginning of a line.' - test_file = BytesIO(test_bytes) - test_file.name = "some.txt" - r = self.client.post(url,dict(submission_method="upload",file=test_file,apply_to_all=False)) - self.assertEqual(r.status_code, 302) - doc = session.presentations.filter(document__type_id=doctype).first().document - self.assertEqual(doc.rev,'01') - self.assertFalse(session2.presentations.filter(document__type_id=doctype)) - retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") - self.assertEqual(retrieved_bytes, test_bytes) - + def test_label_future_sessions(self): + self.client.login(username='secretary', password='secretary+password') + for future in (True, False): + mtg_date = date_today()+datetime.timedelta(days=180 if future else -180) + session = SessionFactory(meeting__type_id='ietf', meeting__date=mtg_date) + # Verify future warning shows on the session details panel + url = urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertIn('Revise', str(q("Title"))) - test_bytes = b'this is some different text for a test' - test_file = BytesIO(test_bytes) - test_file.name = "also_some.txt" - r = self.client.post(url,dict(submission_method="upload",file=test_file,apply_to_all=True)) - self.assertEqual(r.status_code, 302) - doc = Document.objects.get(pk=doc.pk) - self.assertEqual(doc.rev,'02') - self.assertTrue(session2.presentations.filter(document__type_id=doctype)) - retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") - self.assertEqual(retrieved_bytes, test_bytes) - - # Test bad encoding - test_file = BytesIO('

    Title

    Some\x93text
    '.encode('latin1')) - test_file.name = "some.html" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertContains(r, 'Could not identify the file encoding') - doc = Document.objects.get(pk=doc.pk) - self.assertEqual(doc.rev,'02') + self.assertTrue(r.status_code==200) + if future: + self.assertContains(r, "Session has not ended yet") + else: + self.assertNotContains(r, "Session has not ended yet") - # Verify that we don't have dead links - url = urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) - top = '/meeting/%s/' % session.meeting.number - self.requests_mock.get(f'{session.notes_url()}/download', text='markdown notes') - self.requests_mock.get(f'{session.notes_url()}/info', text=json.dumps({'title': 'title', 'updatetime': '2021-12-01T17:11:00z'})) - self.crawl_materials(url=url, top=top) + def test_upload_minutes_agenda(self): + for doctype in ('minutes','agenda'): + for future in (True, False): + mtg_date = date_today()+datetime.timedelta(days=180 if future else -180) + session = SessionFactory(meeting__type_id='ietf', meeting__date=mtg_date) + if doctype == 'minutes': + url = urlreverse('ietf.meeting.views.upload_session_minutes',kwargs={'num':session.meeting.number,'session_id':session.id}) + else: + url = urlreverse('ietf.meeting.views.upload_session_agenda',kwargs={'num':session.meeting.number,'session_id':session.id}) + self.client.logout() + login_testing_unauthorized(self,"secretary",url) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertIn('Upload', str(q("Title"))) + self.assertFalse(session.presentations.exists()) + self.assertFalse(q('form input[type="checkbox"]')) + if future and doctype == "minutes": + self.assertContains(r, "Session has not ended yet") + else: + self.assertNotContains(r, "Session has not ended yet") + + session2 = SessionFactory(meeting=session.meeting,group=session.group) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('form input[type="checkbox"]')) + + # test not submitting a file + r = self.client.post(url, dict(submission_method="upload")) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q("form .is-invalid")) + + test_file = BytesIO(b'this is some text for a test') + test_file.name = "not_really.json" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('form .is-invalid')) + + test_file = BytesIO(b'this is some text for a test'*1510000) + test_file.name = "not_really.pdf" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('form .is-invalid')) + + test_file = BytesIO(b'') + test_file.name = "not_really.html" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertTrue(q('form .is-invalid')) + + # Test html sanitization + test_file = BytesIO(b'Title

    Title

    Some text
    ') + test_file.name = "some.html" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertEqual(r.status_code, 302) + doc = session.presentations.filter(document__type_id=doctype).first().document + self.assertEqual(doc.rev,'00') + text = doc.text() + self.assertIn('Some text', text) + self.assertNotIn('
    ', text) + text = retrieve_str(doctype, f"{doc.name}-{doc.rev}.html") + self.assertIn('Some text', text) + self.assertNotIn('
    ', text) + + # txt upload + test_bytes = b'This is some text for a test, with the word\nvirtual at the beginning of a line.' + test_file = BytesIO(test_bytes) + test_file.name = "some.txt" + r = self.client.post(url,dict(submission_method="upload",file=test_file,apply_to_all=False)) + self.assertEqual(r.status_code, 302) + doc = session.presentations.filter(document__type_id=doctype).first().document + self.assertEqual(doc.rev,'01') + self.assertFalse(session2.presentations.filter(document__type_id=doctype)) + retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") + self.assertEqual(retrieved_bytes, test_bytes) + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertIn('Revise', str(q("Title"))) + test_bytes = b'this is some different text for a test' + test_file = BytesIO(test_bytes) + test_file.name = "also_some.txt" + r = self.client.post(url,dict(submission_method="upload",file=test_file,apply_to_all=True)) + self.assertEqual(r.status_code, 302) + doc = Document.objects.get(pk=doc.pk) + self.assertEqual(doc.rev,'02') + self.assertTrue(session2.presentations.filter(document__type_id=doctype)) + retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") + self.assertEqual(retrieved_bytes, test_bytes) + + # Test bad encoding + test_file = BytesIO('

    Title

    Some\x93text
    '.encode('latin1')) + test_file.name = "some.html" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertContains(r, 'Could not identify the file encoding') + doc = Document.objects.get(pk=doc.pk) + self.assertEqual(doc.rev,'02') + + # Verify that we don't have dead links + url = urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) + top = '/meeting/%s/' % session.meeting.number + self.requests_mock.get(f'{session.notes_url()}/download', text='markdown notes') + self.requests_mock.get(f'{session.notes_url()}/info', text=json.dumps({'title': 'title', 'updatetime': '2021-12-01T17:11:00z'})) + self.crawl_materials(url=url, top=top) def test_upload_minutes_agenda_unscheduled(self): for doctype in ('minutes','agenda'): @@ -6661,6 +6681,7 @@ def test_upload_minutes_agenda_unscheduled(self): self.assertIn('Upload', str(q("Title"))) self.assertFalse(session.presentations.exists()) self.assertFalse(q('form input[type="checkbox"]')) + self.assertNotContains(r, "Session has not ended yet") test_file = BytesIO(b'this is some text for a test') test_file.name = "not_really.txt" @@ -6669,35 +6690,40 @@ def test_upload_minutes_agenda_unscheduled(self): @override_settings(MEETING_MATERIALS_SERVE_LOCALLY=True) def test_upload_minutes_agenda_interim(self): - session=SessionFactory(meeting__type_id='interim') for doctype in ('minutes','agenda'): - if doctype=='minutes': - url = urlreverse('ietf.meeting.views.upload_session_minutes',kwargs={'num':session.meeting.number,'session_id':session.id}) - else: - url = urlreverse('ietf.meeting.views.upload_session_agenda',kwargs={'num':session.meeting.number,'session_id':session.id}) - self.client.logout() - login_testing_unauthorized(self,"secretary",url) - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertIn('Upload', str(q("title"))) - self.assertFalse(session.presentations.filter(document__type_id=doctype)) - test_bytes = b'this is some text for a test' - test_file = BytesIO(test_bytes) - test_file.name = "not_really.txt" - r = self.client.post(url,dict(submission_method="upload",file=test_file)) - self.assertEqual(r.status_code, 302) - doc = session.presentations.filter(document__type_id=doctype).first().document - self.assertEqual(doc.rev,'00') - retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") - self.assertEqual(retrieved_bytes, test_bytes) - - # Verify that we don't have dead links - url = urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) - top = '/meeting/%s/' % session.meeting.number - self.requests_mock.get(f'{session.notes_url()}/download', text='markdown notes') - self.requests_mock.get(f'{session.notes_url()}/info', text=json.dumps({'title': 'title', 'updatetime': '2021-12-01T17:11:00z'})) - self.crawl_materials(url=url, top=top) + for future in (True, False): + session=SessionFactory(meeting__type_id='interim', meeting__date = date_today()+datetime.timedelta(days=180 if future else -180)) + if doctype=='minutes': + url = urlreverse('ietf.meeting.views.upload_session_minutes',kwargs={'num':session.meeting.number,'session_id':session.id}) + else: + url = urlreverse('ietf.meeting.views.upload_session_agenda',kwargs={'num':session.meeting.number,'session_id':session.id}) + self.client.logout() + login_testing_unauthorized(self,"secretary",url) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertIn('Upload', str(q("title"))) + self.assertFalse(session.presentations.filter(document__type_id=doctype)) + if future and doctype == "minutes": + self.assertContains(r, "Session has not ended yet") + else: + self.assertNotContains(r, "Session has not ended yet") + test_bytes = b'this is some text for a test' + test_file = BytesIO(test_bytes) + test_file.name = "not_really.txt" + r = self.client.post(url,dict(submission_method="upload",file=test_file)) + self.assertEqual(r.status_code, 302) + doc = session.presentations.filter(document__type_id=doctype).first().document + self.assertEqual(doc.rev,'00') + retrieved_bytes = retrieve_bytes(doctype, f"{doc.name}-{doc.rev}.txt") + self.assertEqual(retrieved_bytes, test_bytes) + + # Verify that we don't have dead links + url = urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) + top = '/meeting/%s/' % session.meeting.number + self.requests_mock.get(f'{session.notes_url()}/download', text='markdown notes') + self.requests_mock.get(f'{session.notes_url()}/info', text=json.dumps({'title': 'title', 'updatetime': '2021-12-01T17:11:00z'})) + self.crawl_materials(url=url, top=top) @override_settings(MEETING_MATERIALS_SERVE_LOCALLY=True) def test_upload_narrativeminutes(self): diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 6a73059d92..722bf829e1 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -2522,6 +2522,8 @@ def session_details(request, num, acronym): else: pending_suggestions = SlideSubmission.objects.none() + tsa = session.official_timeslotassignment() + future = tsa is not None and timezone.now() < tsa.timeslot.end_time() return render(request, "meeting/session_details.html", { 'scheduled_sessions':scheduled_sessions , 'unscheduled_sessions':unscheduled_sessions , @@ -2532,6 +2534,7 @@ def session_details(request, num, acronym): 'can_manage_materials' : can_manage, 'can_view_request': can_view_request, 'thisweek': datetime_today()-datetime.timedelta(days=7), + 'future': future, }) class SessionDraftsForm(forms.Form): @@ -2823,11 +2826,14 @@ def upload_session_minutes(request, session_id, num): else: form = UploadMinutesForm(show_apply_to_all_checkbox) + tsa = session.official_timeslotassignment() + future = tsa is not None and timezone.now() < tsa.timeslot.end_time() return render(request, "meeting/upload_session_minutes.html", {'session': session, 'session_number': session_number, 'minutes_sp' : minutes_sp, 'form': form, + 'future': future, }) @role_required("Secretariat") diff --git a/ietf/templates/meeting/session_details_panel.html b/ietf/templates/meeting/session_details_panel.html index 87d9e3d672..7c52ac0b4a 100644 --- a/ietf/templates/meeting/session_details_panel.html +++ b/ietf/templates/meeting/session_details_panel.html @@ -109,7 +109,7 @@

    Agenda, Minutes, and Bluesheets

    {% endif %} {% if not session.type_counter.minutes %} - Import minutes from notes.ietf.org + Import minutes from notes.ietf.org Upload minutes diff --git a/ietf/templates/meeting/upload_session_minutes.html b/ietf/templates/meeting/upload_session_minutes.html index 30eadda277..324440681f 100644 --- a/ietf/templates/meeting/upload_session_minutes.html +++ b/ietf/templates/meeting/upload_session_minutes.html @@ -26,6 +26,11 @@

    {% if session_number %}

    Session {{ session_number }} : {{ session.official_timeslotassignment.timeslot.time|timezone:session.meeting.time_zone|date:"D M-d-Y Hi" }}

    {% endif %} + {% if future %} +

    + Caution: Session has not ended yet +

    + {% endif %}
    {% csrf_token %} {% bootstrap_form form %} From c70e67dc917dea9fe0347575811d5ab02ef91ce8 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 2 Apr 2025 13:11:08 -0300 Subject: [PATCH 498/846] chore: unpin importlib-metadata (#8762) --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8bd906c220..cd93f448e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -42,7 +42,6 @@ gunicorn>=20.1.0 hashids>=1.3.1 html2text>=2020.1.16 # Used only to clean comment field of secr/sreq html5lib>=1.1 # Only used in tests -importlib-metadata<8.5.0 # indirect req of Markdown/inflect; https://github.com/ietf-tools/datatracker/issues/7924 inflect>= 6.0.2 jsonfield>=3.1.0 # for SubmissionCheck. This is https://github.com/bradjasper/django-jsonfield/. jsonschema[format]>=4.2.1 From b95bbe670fb1f3506ef156034fd5107c1dca3365 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:24:20 +0000 Subject: [PATCH 499/846] ci: update base image target version to 20250402T1611 --- 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 c25298d652..cd0a70667c 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250327T1859 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250402T1611 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 50e8bfd839..1195fc9a0b 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250327T1859 +20250402T1611 From 2b7d4ad414e61b001cab30703a270929852a6b57 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 4 Apr 2025 02:19:43 -0400 Subject: [PATCH 500/846] ci: add update staging DB step to deploy workflow --- .github/workflows/build.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 123bd5c65a..36439aa6cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -444,6 +444,19 @@ jobs: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} steps: + - name: Refresh Staging DB + uses: the-actions-org/workflow-dispatch@v4 + with: + workflow: update-staging-db.yml + repo: ietf-tools/infra-k8s + ref: main + token: ${{ secrets.GH_INFRA_K8S_TOKEN }} + inputs: '{ "sourceDb":"datatracker" }' + wait-for-completion: true + wait-for-completion-timeout: 5m + wait-for-completion-interval: 20s + display-workflow-run-url: false + - name: Deploy to staging uses: the-actions-org/workflow-dispatch@v4 with: From f9ca03086493a00ca188cb4cd949ba1831fd452a Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Tue, 8 Apr 2025 20:24:00 -0400 Subject: [PATCH 501/846] fix: unexpected chatlog links (#8774) * fix: unexpected chatlog links * fix: separate handling of polls and chatlogs --- ietf/meeting/tests_views.py | 38 +++++++++++++++++++ ietf/meeting/views.py | 8 +++- .../meeting/session_buttons_include.html | 11 +++--- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index a93a26b981..dfb414b61b 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -7736,6 +7736,44 @@ def test_add_session_recordings(self): self.assertEqual(r.status_code, 404) self.assertFalse(mock_delete.called) + def test_show_chatlog_links(self): + meeting = MeetingFactory(type_id='ietf', number='122') + session = SessionFactory(meeting=meeting) + doc_name = 'chatlog-72-mars-197001010000' + SessionPresentation.objects.create(session=session,document=DocumentFactory(type_id='chatlog', name=doc_name)) + + session_url = urlreverse('ietf.meeting.views.session_details', + kwargs={'num':meeting.number, 'acronym':session.group.acronym}) + + r = self.client.get(session_url) + + self.assertEqual(r.status_code, 200) + + q = PyQuery(r.content) + + # Find the chatlog link in the desktop view + link_chatlog_box = q(f'a[title="Chat logs for {session.group.acronym}"]') + self.assertTrue(link_chatlog_box, 'Expected element with title "Chat logs for {group.acronym}" not found.') + self.assertEqual(link_chatlog_box.attr('href'), '/doc/'+ doc_name) + + # Find the chatlog link in the mobile view + link_chatlog_list = q('li:contains("Chat logs")') + self.assertTrue(link_chatlog_list, 'Expected
  7. element containing "Chat logs" not found.') + self.assertEqual(link_chatlog_list.find('a').attr('href'), '/doc/'+ doc_name) + + def test_hide_chatlog_links(self): + # mock meeting and session, but no chatlog document + meeting = MeetingFactory(type_id='ietf', number='122') + session = SessionFactory(meeting=meeting) + + session_url = urlreverse('ietf.meeting.views.session_details', + kwargs={'num':meeting.number, 'acronym':session.group.acronym}) + + r = self.client.get(session_url) + + self.assertEqual(r.status_code, 200) + # validate no links for chat logs exist + self.assertNotContains(r, 'Chat logs') class HasMeetingsTests(TestCase): diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 722bf829e1..591b934b58 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -23,6 +23,7 @@ from urllib.parse import parse_qs, unquote, urlencode, urlsplit, urlunsplit, urlparse from tempfile import mkstemp from wsgiref.handlers import format_date_time +from itertools import chain from django import forms from django.core.cache import caches @@ -2496,7 +2497,12 @@ def session_details(request, num, acronym): session.filtered_artifacts.sort(key=lambda d:artifact_types.index(d.document.type.slug)) session.filtered_slides = session.presentations.filter(document__type__slug='slides').order_by('order') session.filtered_drafts = session.presentations.filter(document__type__slug='draft') - session.filtered_chatlog_and_polls = session.presentations.filter(document__type__slug__in=('chatlog', 'polls')).order_by('document__type__slug') + + filtered_polls = session.presentations.filter(document__type__slug=('polls')) + filtered_chatlogs = session.presentations.filter(document__type__slug=('chatlog')) + session.filtered_chatlog_and_polls = chain(filtered_chatlogs, filtered_polls) + session.chatlog = filtered_chatlogs.first() + # TODO FIXME Deleted materials shouldn't be in the presentations for qs in [session.filtered_artifacts,session.filtered_slides,session.filtered_drafts]: qs = [p for p in qs if p.document.get_state_slug(p.document.type_id)!='deleted'] diff --git a/ietf/templates/meeting/session_buttons_include.html b/ietf/templates/meeting/session_buttons_include.html index bb5144b45d..b1fd92ba5b 100644 --- a/ietf/templates/meeting/session_buttons_include.html +++ b/ietf/templates/meeting/session_buttons_include.html @@ -2,7 +2,8 @@ {% load origin %} {% load static %} {% load textfilters tz %} -{% load ietf_filters %} +{% load ietf_filters session_filters %} + {% origin %} {% if item and item|should_show_agenda_session_buttons %} {% with slug=item.slug session=item.session timeslot=item.timeslot %} @@ -126,10 +127,10 @@ {% else %} {# chat logs #} - {% if meeting.has_chat_logs %} + {% if meeting.has_chat_logs and session.chatlog %} @@ -303,10 +304,10 @@
  8. {% else %} {# chat logs #} - {% if meeting.has_chat_logs %} + {% if meeting.has_chat_logs and session.chatlog %}
  9. + href="/doc/{{ session.chatlog.document.name }}"> Chat logs
  10. From a728cf2440ab5f4acc88714023d3b2e2f834018b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 8 Apr 2025 21:24:22 -0300 Subject: [PATCH 502/846] test: fix apparent typo / tautological test (#8773) Co-authored-by: Robert Sparks --- ietf/api/tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index ac0b37a608..7cc56c2d0a 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -1440,7 +1440,7 @@ def test_api_top_level(self): resource_list = r.json() for name in self.apps: - if not name in self.apps: + if not name in resource_list: sys.stderr.write("Expected a REST API resource for %s, but didn't find one\n" % name) for name in self.apps: From 0348dbd865b99692235c2f6e5a75a8064f8113a1 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Tue, 15 Apr 2025 07:37:40 -0700 Subject: [PATCH 503/846] feat: new meeting registration implementation (#8408) * feat: new meeting registration implementation * fix: use on_delete=models.PROTECT for certain FKs * fix: convert outlier reg_types,ticket_types on initial migration * fix: fix initial migration mistake * fix: remove management command. add task * fix: move migration 0010 to 0011 to resolve conflict * fix: add missing migration for model changes * fix: add reg type names for unknown * fix: change migration to use 'unknown'. Add test function * fix: merge migrations * fix: rename test_migrate_registrations to check_migrate_registrations * fix: update names.json * fix: fix migration issue and add task * fix: fix broken migration dependency --- ietf/api/tests.py | 193 +++++++++++++++++- ietf/api/urls.py | 1 + ietf/api/views.py | 143 ++++++++++++- ietf/meeting/admin.py | 32 ++- ietf/meeting/factories.py | 28 ++- .../0011_registration_registrationticket.py | 90 ++++++++ ietf/meeting/models.py | 41 +++- ietf/meeting/resources.py | 43 +++- ietf/meeting/tasks.py | 17 ++ ietf/meeting/tests_utils.py | 91 +++++++++ ietf/meeting/utils.py | 109 +++++++++- ietf/name/admin.py | 4 + ietf/name/fixtures/names.json | 140 +++++++++++++ ...ancetypename_registrationtickettypename.py | 47 +++++ .../migrations/0017_populate_new_reg_names.py | 39 ++++ ietf/name/models.py | 5 +- ietf/name/resources.py | 32 ++- 17 files changed, 1045 insertions(+), 10 deletions(-) create mode 100644 ietf/meeting/migrations/0011_registration_registrationticket.py create mode 100644 ietf/meeting/tests_utils.py create mode 100644 ietf/name/migrations/0016_attendancetypename_registrationtickettypename.py create mode 100644 ietf/name/migrations/0017_populate_new_reg_names.py diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 7cc56c2d0a..23e9ff0103 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -1,6 +1,7 @@ # Copyright The IETF Trust 2015-2024, All Rights Reserved # -*- coding: utf-8 -*- import base64 +import copy import datetime import json import html @@ -31,7 +32,7 @@ from ietf.doc.factories import IndividualDraftFactory, WgDraftFactory, WgRfcFactory from ietf.group.factories import RoleFactory from ietf.meeting.factories import MeetingFactory, SessionFactory -from ietf.meeting.models import Session +from ietf.meeting.models import Session, Registration from ietf.nomcom.models import Volunteer from ietf.nomcom.factories import NomComFactory, nomcom_kwargs_for_year from ietf.person.factories import PersonFactory, random_faker, EmailFactory, PersonalApiKeyFactory @@ -828,6 +829,196 @@ def test_api_new_meeting_registration_nomcom_volunteer(self): self.assertEqual(volunteer.nomcom, nomcom) self.assertEqual(volunteer.origin, 'registration') + @override_settings(APP_API_TOKENS={"ietf.api.views.api_new_meeting_registration_v2": ["valid-token"]}) + def test_api_new_meeting_registration_v2(self): + meeting = MeetingFactory(type_id='ietf') + person = PersonFactory() + regs = [ + { + 'affiliation': "Alguma Corporação", + 'country_code': 'PT', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'onsite', + 'ticket_type': 'week_pass', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + } + ] + + url = urlreverse('ietf.api.views.api_new_meeting_registration_v2') + # + # Test invalid key + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "invalid-token"}) + self.assertEqual(r.status_code, 403) + # + # Test invalid data + bad_regs = copy.deepcopy(regs) + del(bad_regs[0]['email']) + r = self.client.post(url, data=json.dumps(bad_regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 400) + # + # Test valid POST + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + # + # Check record + reg = regs[0] + objects = Registration.objects.filter(email=reg['email'], meeting__number=reg['meeting']) + self.assertEqual(objects.count(), 1) + obj = objects[0] + for key in ['affiliation', 'country_code', 'first_name', 'last_name', 'checkedin']: + self.assertEqual(getattr(obj, key), False if key=='checkedin' else reg.get(key) , "Bad data for field '%s'" % key) + self.assertEqual(obj.tickets.count(), 1) + ticket = obj.tickets.first() + self.assertEqual(ticket.ticket_type.slug, regs[0]['ticket_type']) + self.assertEqual(ticket.attendance_type.slug, regs[0]['reg_type']) + self.assertEqual(obj.person, person) + # + # Test update (switch to remote) + regs = [ + { + 'affiliation': "Alguma Corporação", + 'country_code': 'PT', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'remote', + 'ticket_type': 'week_pass', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + } + ] + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + objects = Registration.objects.filter(email=reg['email'], meeting__number=reg['meeting']) + self.assertEqual(objects.count(), 1) + obj = objects[0] + self.assertEqual(obj.tickets.count(), 1) + ticket = obj.tickets.first() + self.assertEqual(ticket.ticket_type.slug, regs[0]['ticket_type']) + self.assertEqual(ticket.attendance_type.slug, regs[0]['reg_type']) + # + # Test multiple + regs = [ + { + 'affiliation': "Alguma Corporação", + 'country_code': 'PT', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'onsite', + 'ticket_type': 'one_day', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + }, + + { + 'affiliation': "Alguma Corporação", + 'country_code': 'PT', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'remote', + 'ticket_type': 'week_pass', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + } + ] + + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + objects = Registration.objects.filter(email=reg['email'], meeting__number=reg['meeting']) + self.assertEqual(objects.count(), 1) + obj = objects[0] + self.assertEqual(obj.tickets.count(), 2) + self.assertEqual(obj.tickets.filter(attendance_type__slug='onsite').count(), 1) + self.assertEqual(obj.tickets.filter(attendance_type__slug='remote').count(), 1) + + @override_settings(APP_API_TOKENS={"ietf.api.views.api_new_meeting_registration_v2": ["valid-token"]}) + def test_api_new_meeting_registration_v2_cancelled(self): + meeting = MeetingFactory(type_id='ietf') + person = PersonFactory() + regs = [ + { + 'affiliation': "Acme", + 'country_code': 'US', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'onsite', + 'ticket_type': 'week_pass', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + } + ] + url = urlreverse('ietf.api.views.api_new_meeting_registration_v2') + self.assertEqual(Registration.objects.count(), 0) + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + self.assertEqual(Registration.objects.count(), 1) + regs[0]['cancelled'] = True + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + self.assertEqual(Registration.objects.count(), 0) + + @override_settings(APP_API_TOKENS={"ietf.api.views.api_new_meeting_registration_v2": ["valid-token"]}) + def test_api_new_meeting_registration_v2_nomcom(self): + meeting = MeetingFactory(type_id='ietf') + person = PersonFactory() + regs = [ + { + 'affiliation': "Acme", + 'country_code': 'US', + 'email': person.email().address, + 'first_name': person.first_name(), + 'last_name': person.last_name(), + 'meeting': str(meeting.number), + 'reg_type': 'onsite', + 'ticket_type': 'week_pass', + 'checkedin': False, + 'is_nomcom_volunteer': False, + 'cancelled': False, + } + ] + + url = urlreverse('ietf.api.views.api_new_meeting_registration_v2') + now = datetime.datetime.now() + if now.month > 10: + year = now.year + 1 + else: + year = now.year + # create appropriate group and nomcom objects + nomcom = NomComFactory.create(is_accepting_volunteers=True, **nomcom_kwargs_for_year(year)) + + # first test is_nomcom_volunteer False + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + # assert no Volunteers exists + self.assertEqual(Volunteer.objects.count(), 0) + + # test is_nomcom_volunteer True + regs[0]['is_nomcom_volunteer'] = True + r = self.client.post(url, data=json.dumps(regs), content_type='application/json', headers={"X-Api-Key": "valid-token"}) + self.assertContains(r, "Success", status_code=202) + # assert Volunteer exists + self.assertEqual(Volunteer.objects.count(), 1) + volunteer = Volunteer.objects.last() + self.assertEqual(volunteer.person, person) + self.assertEqual(volunteer.nomcom, nomcom) + self.assertEqual(volunteer.origin, 'registration') + def test_api_version(self): DumpInfo.objects.create(date=timezone.datetime(2022,8,31,7,10,1,tzinfo=datetime.timezone.utc), host='testapi.example.com',tz='UTC') url = urlreverse('ietf.api.views.version') diff --git a/ietf/api/urls.py b/ietf/api/urls.py index b0dbaf91ce..2fcaba6094 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -66,6 +66,7 @@ # Let MeetEcho upload session polls url(r'^notify/session/polls/?$', meeting_views.api_upload_polls), # Let the registration system notify us about registrations + url(r'^notify/meeting/registration/v2/?', api_views.api_new_meeting_registration_v2), url(r'^notify/meeting/registration/?', api_views.api_new_meeting_registration), # OpenID authentication provider url(r'^openid/$', TemplateView.as_view(template_name='api/openid-issuer.html'), name='ietf.api.urls.oidc_issuer'), diff --git a/ietf/api/views.py b/ietf/api/views.py index 2fd9d2730f..4cc3560627 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -45,7 +45,7 @@ from ietf.ietfauth.utils import role_required from ietf.ietfauth.views import send_account_creation_email from ietf.ipr.utils import ingest_response_email as ipr_ingest_response_email -from ietf.meeting.models import Meeting +from ietf.meeting.models import Meeting, Registration from ietf.nomcom.models import Volunteer, NomCom from ietf.nomcom.utils import ingest_feedback_email as nomcom_ingest_feedback_email from ietf.person.models import Person, Email @@ -236,6 +236,147 @@ def err(code, text): return HttpResponse(status=405) +_new_registration_json_validator = jsonschema.Draft202012Validator( + schema={ + "type": "array", + "items": { + "type": "object", + "properties": { + "meeting": {"type": "string"}, + "first_name": {"type": "string"}, + "last_name": {"type": "string"}, + "affiliation": {"type": "string"}, + "country_code": {"type": "string"}, + "email": {"type": "string"}, + "reg_type": {"type": "string"}, + "ticket_type": {"type": "string"}, + "checkedin": {"type": "boolean"}, + "is_nomcom_volunteer": {"type": "boolean"}, + "cancelled": {"type": "boolean"}, + }, + "required": ["meeting", "first_name", "last_name", "affiliation", "country_code", "email", "reg_type", "ticket_type", "checkedin", "is_nomcom_volunteer", "cancelled"], + "additionalProperties": "false" + } + } +) + + +@requires_api_token +@csrf_exempt +def api_new_meeting_registration_v2(request): + '''REST API to notify the datatracker about a new meeting registration''' + def _http_err(code, text): + return HttpResponse(text, status=code, content_type="text/plain") + + def _api_response(result): + return JsonResponse(data={"result": result}) + + if request.method != "POST": + return _http_err(405, "Method not allowed") + + if request.content_type != "application/json": + return _http_err(415, "Content-Type must be application/json") + + # Validate + try: + payload = json.loads(request.body) + _new_registration_json_validator.validate(payload) + except json.decoder.JSONDecodeError as err: + return _http_err(400, f"JSON parse error at line {err.lineno} col {err.colno}: {err.msg}") + except jsonschema.exceptions.ValidationError as err: + return _http_err(400, f"JSON schema error at {err.json_path}: {err.message}") + except Exception: + return _http_err(400, "Invalid request format") + + # Validate consistency + # - if receive multiple records they should be for same meeting, same person (email) + if len(payload) > 1: + if len(set([r['meeting'] for r in payload])) != 1: + return _http_err(400, "Different meeting values") + if len(set([r['email'] for r in payload])) != 1: + return _http_err(400, "Different email values") + + # Validate meeting + number = payload[0]['meeting'] + try: + meeting = Meeting.objects.get(number=number) + except Meeting.DoesNotExist: + return _http_err(400, "Invalid meeting value: '%s'" % (number, )) + + # Validate email + email = payload[0]['email'] + try: + validate_email(email) + except ValidationError: + return _http_err(400, "Invalid email value: '%s'" % (email, )) + + # get person + person = Person.objects.filter(email__address=email).first() + if not person: + log.log(f"api_new_meeting_registration_v2 no Person found for {email}") + + registration = payload[0] + # handle cancelled + if registration['cancelled']: + if len(payload) > 1: + return _http_err(400, "Error. Received cancelled registration notification with more than one record. ({})".format(email)) + try: + obj = Registration.objects.get(meeting=meeting, email=email) + except Registration.DoesNotExist: + return _http_err(400, "Error. Received cancelled registration notification for non-existing registration. ({})".format(email)) + if obj.tickets.count() == 1: + obj.delete() + else: + obj.tickets.filter( + attendance_type__slug=registration.reg_type, + ticket_type__slug=registration.ticket_type).delete() + return HttpResponse('Success', status=202, content_type='text/plain') + + # create or update MeetingRegistration + update_fields = ['first_name', 'last_name', 'affiliation', 'country_code', 'checkedin', 'is_nomcom_volunteer'] + try: + reg = Registration.objects.get(meeting=meeting, email=email) + for key, value in registration.items(): + if key in update_fields: + setattr(reg, key, value) + reg.save() + except Registration.DoesNotExist: + reg = Registration.objects.create( + meeting_id=meeting.pk, + person=person, + email=email, + first_name=registration['first_name'], + last_name=registration['last_name'], + affiliation=registration['affiliation'], + country_code=registration['country_code'], + checkedin=registration['checkedin']) + + # handle registration tickets + reg.tickets.all().delete() + for registration in payload: + reg.tickets.create( + attendance_type_id=registration['reg_type'], + ticket_type_id=registration['ticket_type'], + ) + # handle nomcom volunteer + if registration['is_nomcom_volunteer'] and person: + try: + nomcom = NomCom.objects.get(is_accepting_volunteers=True) + except (NomCom.DoesNotExist, NomCom.MultipleObjectsReturned): + nomcom = None + if nomcom: + Volunteer.objects.get_or_create( + nomcom=nomcom, + person=person, + defaults={ + "affiliation": registration["affiliation"], + "origin": "registration" + } + ) + + return HttpResponse('Success', status=202, content_type='text/plain') + + def version(request): dumpdate = None dumpinfo = DumpInfo.objects.order_by('-date').first() diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index b7e56c7b77..5d6adb7294 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -7,7 +7,7 @@ from ietf.meeting.models import (Attended, Meeting, Room, Session, TimeSlot, Constraint, Schedule, SchedTimeSessAssignment, ResourceAssociation, FloorPlan, UrlResource, SessionPresentation, ImportantDate, SlideSubmission, SchedulingEvent, BusinessConstraint, - ProceedingsMaterial, MeetingHost) + ProceedingsMaterial, MeetingHost, Registration, RegistrationTicket) class UrlResourceAdmin(admin.ModelAdmin): @@ -213,3 +213,33 @@ class AttendedAdmin(admin.ModelAdmin): search_fields = ["person__name", "session__group__acronym", "session__meeting__number", "session__name", "session__purpose__name"] raw_id_fields= ["person", "session"] admin.site.register(Attended, AttendedAdmin) + +class MeetingFilter(admin.SimpleListFilter): + title = 'Meeting Filter' + parameter_name = 'meeting_id' + + def lookups(self, request, model_admin): + # Your queryset to limit choices + choices = Meeting.objects.filter(type='ietf').values_list('id', 'number') + return choices + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(meeting__id=self.value()) + return queryset +class RegistrationAdmin(admin.ModelAdmin): + model = Registration + # list_filter = [('meeting', Meeting.objects.filter(type='ietf')), ] + list_filter = [MeetingFilter, ] + list_display = ['meeting', 'first_name', 'last_name', 'affiliation', 'country_code', 'person', 'email', ] + search_fields = ['meeting__number', 'first_name', 'last_name', 'affiliation', 'country_code', 'email', ] + raw_id_fields = ['person'] +admin.site.register(Registration, RegistrationAdmin) + +class RegistrationTicketAdmin(admin.ModelAdmin): + model = RegistrationTicket + list_filter = ['attendance_type', ] + list_display = ['registration', 'attendance_type', 'ticket_type'] + search_fields = ['registration__first_name', 'registration__last_name', 'registration__email'] + raw_id_fields = ['registration'] +admin.site.register(RegistrationTicket, RegistrationTicketAdmin) diff --git a/ietf/meeting/factories.py b/ietf/meeting/factories.py index eb36e9e756..b3d21830fe 100644 --- a/ietf/meeting/factories.py +++ b/ietf/meeting/factories.py @@ -12,7 +12,7 @@ from ietf.doc.storage_utils import store_str from ietf.meeting.models import (Attended, Meeting, Session, SchedulingEvent, Schedule, TimeSlot, SessionPresentation, FloorPlan, Room, SlideSubmission, Constraint, - MeetingHost, ProceedingsMaterial) + MeetingHost, ProceedingsMaterial, Registration, RegistrationTicket) from ietf.name.models import (ConstraintName, SessionStatusName, ProceedingsMaterialTypeName, TimerangeName, SessionPurposeName) from ietf.doc.factories import ProceedingsMaterialDocFactory @@ -318,3 +318,29 @@ class Meta: session = factory.SubFactory(SessionFactory) person = factory.SubFactory(PersonFactory) + + +class RegistrationFactory(factory.django.DjangoModelFactory): + class Meta: + model = Registration + skip_postgeneration_save = True + + meeting = factory.SubFactory(MeetingFactory) + person = factory.SubFactory(PersonFactory) + email = factory.LazyAttribute(lambda obj: obj.person.email()) + first_name = factory.LazyAttribute(lambda obj: obj.person.first_name()) + last_name = factory.LazyAttribute(lambda obj: obj.person.last_name()) + affiliation = factory.Faker('company') + country_code = factory.Faker('country_code') + attended = False + checkedin = False + + +class RegistrationTicketFactory(factory.django.DjangoModelFactory): + class Meta: + model = RegistrationTicket + skip_postgeneration_save = True + + registration = factory.SubFactory(RegistrationFactory) + attendance_type_id = 'onsite' + ticket_type_id = 'week_pass' diff --git a/ietf/meeting/migrations/0011_registration_registrationticket.py b/ietf/meeting/migrations/0011_registration_registrationticket.py new file mode 100644 index 0000000000..fc161f303d --- /dev/null +++ b/ietf/meeting/migrations/0011_registration_registrationticket.py @@ -0,0 +1,90 @@ +# Generated by Django 4.2.20 on 2025-03-16 08:37 + +from django.db import migrations, models +import django.db.models.deletion +import ietf.utils.models + + +class Migration(migrations.Migration): + + dependencies = [ + ("name", "0017_populate_new_reg_names"), + ("person", "0004_alter_person_photo_alter_person_photo_thumb"), + ("meeting", "0010_alter_floorplan_image_alter_meetinghost_logo"), + ] + + operations = [ + migrations.CreateModel( + name="Registration", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("first_name", models.CharField(max_length=255)), + ("last_name", models.CharField(max_length=255)), + ("affiliation", models.CharField(blank=True, max_length=255)), + ("country_code", models.CharField(max_length=2)), + ("email", models.EmailField(blank=True, max_length=254, null=True)), + ("attended", models.BooleanField(default=False)), + ("checkedin", models.BooleanField(default=False)), + ( + "meeting", + ietf.utils.models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="meeting.meeting", + ), + ), + ( + "person", + ietf.utils.models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="person.person", + ), + ), + ], + ), + migrations.CreateModel( + name="RegistrationTicket", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "attendance_type", + ietf.utils.models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="name.attendancetypename", + ), + ), + ( + "registration", + ietf.utils.models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="tickets", + to="meeting.registration", + ), + ), + ( + "ticket_type", + ietf.utils.models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="name.registrationtickettypename", + ), + ), + ], + ), + ] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 84d151c310..003f8cd76e 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1,5 +1,5 @@ -# Copyright The IETF Trust 2007-2024, All Rights Reserved # -*- coding: utf-8 -*- +# Copyright The IETF Trust 2007-2024, All Rights Reserved # old meeting models can be found in ../proceedings/models.py @@ -34,7 +34,7 @@ from ietf.name.models import ( MeetingTypeName, TimeSlotTypeName, SessionStatusName, ConstraintName, RoomResourceName, ImportantDateName, TimerangeName, SlideSubmissionStatusName, ProceedingsMaterialTypeName, - SessionPurposeName, + SessionPurposeName, AttendanceTypeName, RegistrationTicketTypeName ) from ietf.person.models import Person from ietf.utils.decorators import memoize @@ -1483,3 +1483,40 @@ class Meta: def __str__(self): return f'{self.person} at {self.session}' + + +class RegistrationManager(models.Manager): + def onsite(self): + return self.get_queryset().filter(registrationticket__attendance_type__slug='onsite') + + def remote(self): + return self.get_queryset().filter(registrationticket__attendance_type__slug='remote').exclude(registrationticket__attendance_type__slug='onsite') + +class Registration(models.Model): + """Registration attendee records from the IETF registration system""" + meeting = ForeignKey(Meeting) + first_name = models.CharField(max_length=255) + last_name = models.CharField(max_length=255) + affiliation = models.CharField(blank=True, max_length=255) + country_code = models.CharField(max_length=2) # ISO 3166 + person = ForeignKey(Person, blank=True, null=True, on_delete=models.PROTECT) + email = models.EmailField(blank=True, null=True) + # attended was used prior to the introduction of the ietf.meeting.Attended model and is still used by + # Meeting.get_attendance() for older meetings. It should not be used except for dealing with legacy data. + attended = models.BooleanField(default=False) + # checkedin indicates that the badge was picked up + checkedin = models.BooleanField(default=False) + + # custom manager + objects = RegistrationManager() + + def __str__(self): + return "{} {}".format(self.first_name, self.last_name) + +class RegistrationTicket(models.Model): + registration = ForeignKey(Registration, related_name='tickets') + attendance_type = ForeignKey(AttendanceTypeName, on_delete=models.PROTECT) + ticket_type = ForeignKey(RegistrationTicketTypeName, on_delete=models.PROTECT) + + def __str__(self): + return "{}:{}".format(self.attendance_type, self.ticket_type) diff --git a/ietf/meeting/resources.py b/ietf/meeting/resources.py index de9ca01476..ede2b5b993 100644 --- a/ietf/meeting/resources.py +++ b/ietf/meeting/resources.py @@ -14,7 +14,8 @@ from ietf.meeting.models import ( Meeting, ResourceAssociation, Constraint, Room, Schedule, Session, TimeSlot, SchedTimeSessAssignment, SessionPresentation, FloorPlan, UrlResource, ImportantDate, SlideSubmission, SchedulingEvent, - BusinessConstraint, ProceedingsMaterial, MeetingHost, Attended) + BusinessConstraint, ProceedingsMaterial, MeetingHost, Attended, + Registration, RegistrationTicket) from ietf.name.resources import MeetingTypeNameResource class MeetingResource(ModelResource): @@ -431,3 +432,43 @@ class Meta: "session": ALL_WITH_RELATIONS, } 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) + class Meta: + queryset = Registration.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'registration' + ordering = ['id', ] + filtering = { + "id": ALL, + "first_name": ALL, + "last_name": ALL, + "affiliation": ALL, + "country_code": ALL, + "email": ALL, + "attended": ALL, + "meeting": ALL_WITH_RELATIONS, + "person": ALL_WITH_RELATIONS, + } +api.meeting.register(RegistrationResource()) + +class RegistrationTicketResource(ModelResource): + registration = ToOneField(RegistrationResource, 'registration') + class Meta: + queryset = RegistrationTicket.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'registrationticket' + ordering = ['id', ] + filtering = { + "id": ALL, + "ticket_type": ALL, + "attendance_type": ALL, + "registration": ALL_WITH_RELATIONS, + } +api.meeting.register(RegistrationTicketResource()) diff --git a/ietf/meeting/tasks.py b/ietf/meeting/tasks.py index 2b7c2fca91..f1b7e8e079 100644 --- a/ietf/meeting/tasks.py +++ b/ietf/meeting/tasks.py @@ -9,6 +9,7 @@ from .models import Meeting from .utils import generate_proceedings_content from .views import generate_agenda_data +from .utils import migrate_registrations, check_migrate_registrations @shared_task @@ -17,6 +18,22 @@ def agenda_data_refresh(): @shared_task +def migrate_registrations_task(initial=False): + """ Migrate ietf.stats.MeetingRegistration to ietf.meeting.Registration + If initial is True, migrate all meetings otherwise only future meetings. + This function is idempotent. It can be run regularly from cron. + """ + migrate_registrations(initial=initial) + + +@shared_task +def check_migrate_registrations_task(): + """ Compare MeetingRegistration with Registration to ensure + all records migrated + """ + check_migrate_registrations() + + def proceedings_content_refresh_task(*, all=False): """Refresh meeting proceedings cache diff --git a/ietf/meeting/tests_utils.py b/ietf/meeting/tests_utils.py new file mode 100644 index 0000000000..4bda3a65fa --- /dev/null +++ b/ietf/meeting/tests_utils.py @@ -0,0 +1,91 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +# -*- coding: utf-8 -*- + +import datetime +import debug # pyflakes: ignore +from ietf.meeting.factories import MeetingFactory # RegistrationFactory, RegistrationTicketFactory +from ietf.meeting.models import Registration +from ietf.meeting.utils import migrate_registrations, get_preferred +from ietf.stats.factories import MeetingRegistrationFactory +from ietf.utils.test_utils import TestCase + + +class MigrateRegistrationsTests(TestCase): + def test_new_meeting_registration(self): + meeting = MeetingFactory(type_id='ietf', number='109') + reg = MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + self.assertEqual(Registration.objects.count(), 0) + migrate_registrations(initial=True) + self.assertEqual(Registration.objects.count(), 1) + new = Registration.objects.first() + self.assertEqual(new.first_name, reg.first_name) + self.assertEqual(new.last_name, reg.last_name) + self.assertEqual(new.email, reg.email) + self.assertEqual(new.person, reg.person) + self.assertEqual(new.meeting, meeting) + self.assertEqual(new.affiliation, reg.affiliation) + self.assertEqual(new.country_code, reg.country_code) + self.assertEqual(new.checkedin, reg.checkedin) + self.assertEqual(new.attended, reg.attended) + + def test_migrate_non_initial(self): + # with only old meeting + meeting = MeetingFactory(type_id='ietf', number='109') + MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + self.assertEqual(Registration.objects.count(), 0) + migrate_registrations() + self.assertEqual(Registration.objects.count(), 0) + # with new meeting + new_meeting = MeetingFactory(type_id='ietf', number='150') + new_meeting.date = datetime.date.today() + datetime.timedelta(days=30) + new_meeting.save() + MeetingRegistrationFactory(meeting=new_meeting, reg_type='onsite', ticket_type='week_pass') + migrate_registrations() + self.assertEqual(Registration.objects.count(), 1) + + def test_updated_meeting_registration(self): + # setup test initial conditions + meeting = MeetingFactory(type_id='ietf', number='109') + reg = MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + migrate_registrations(initial=True) + # change first_name and save + original = reg.first_name + reg.first_name = 'NewBob' + reg.save() + new = Registration.objects.first() + self.assertEqual(new.first_name, original) + migrate_registrations(initial=True) + new.refresh_from_db() + self.assertEqual(new.first_name, reg.first_name) + + def test_additional_ticket(self): + # setup test initial conditions + meeting = MeetingFactory(type_id='ietf', number='109') + reg = MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + migrate_registrations(initial=True) + new = Registration.objects.first() + self.assertEqual(new.tickets.count(), 1) + # add a second ticket + reg.reg_type = 'remote' + reg.pk = None + reg.save() + migrate_registrations(initial=True) + # new.refresh_from_db() + self.assertEqual(new.tickets.count(), 2) + + def test_cancelled_registration(self): + # setup test initial conditions + meeting = MeetingFactory(type_id='ietf', number='109') + reg = MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + migrate_registrations(initial=True) + reg.delete() + # do test + migrate_registrations(initial=True) + self.assertEqual(Registration.objects.count(), 0) + + def test_get_preferred(self): + meeting = MeetingFactory(type_id='ietf', number='109') + onsite = MeetingRegistrationFactory(meeting=meeting, reg_type='onsite', ticket_type='week_pass') + hackathon = MeetingRegistrationFactory(meeting=meeting, reg_type='hackathon_onsite', ticket_type='week_pass') + result = get_preferred([onsite, hackathon]) + self.assertEqual(result, onsite) diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index 9603278399..d35914fd60 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -26,7 +26,8 @@ from ietf.dbtemplate.models import DBTemplate from ietf.doc.storage_utils import store_bytes, store_str from ietf.meeting.models import (Session, SchedulingEvent, TimeSlot, - Constraint, SchedTimeSessAssignment, SessionPresentation, Attended) + Constraint, SchedTimeSessAssignment, SessionPresentation, Attended, + Registration, Meeting) from ietf.doc.models import Document, State, NewRevisionDocEvent, StateDocEvent from ietf.doc.models import DocEvent from ietf.group.models import Group @@ -1013,6 +1014,112 @@ def participants_for_meeting(meeting): return (checked_in, attended) +def get_preferred(regs): + """ Return a preferred regular registration (non hackathon) from + a list of registrations if there is one, otherwise any. + """ + for reg in regs: + if reg.reg_type in ['onsite', 'remote']: + return reg + return reg + + +def migrate_registrations(initial=False): + """ Migrate ietf.stats.MeetingRegistration to ietf.meeting.Registration + If initial is True, migrate all meetings otherwise only future meetings. + This function is idempotent. It can be run regularly from cron. + """ + if initial: + meetings = Meeting.objects.filter(type='ietf') + MeetingRegistration.objects.filter(reg_type='hackathon').update(reg_type='hackathon_remote') + MeetingRegistration.objects.filter(ticket_type='full_week_pass').update(ticket_type='week_pass') + MeetingRegistration.objects.filter(pk=49645).update(ticket_type='one_day') + MeetingRegistration.objects.filter(pk=50804).update(ticket_type='week_pass') + MeetingRegistration.objects.filter(pk=42386).update(ticket_type='week_pass') + MeetingRegistration.objects.filter(pk=42782).update(ticket_type='one_day') + MeetingRegistration.objects.filter(pk=43464).update(ticket_type='week_pass') + else: + # still process records during week of meeting + one_week_ago = datetime.date.today() - datetime.timedelta(days=7) + meetings = Meeting.objects.filter(type='ietf', date__gt=one_week_ago) + + for meeting in meetings: + # gather all MeetingRegistrations by person (email) + emails = {} + for meeting_reg in MeetingRegistration.objects.filter(meeting=meeting): + if meeting_reg.email in emails: + emails[meeting_reg.email].append(meeting_reg) + else: + emails[meeting_reg.email] = [meeting_reg] + # process each person's registrations + for email, meeting_regs in emails.items(): + preferred_reg = get_preferred(meeting_regs) + reg, created = Registration.objects.get_or_create( + meeting=meeting, + email=email, + defaults={ + 'first_name': preferred_reg.first_name, + 'last_name': preferred_reg.last_name, + 'affiliation': preferred_reg.affiliation, + 'country_code': preferred_reg.country_code, + 'person': preferred_reg.person, + 'attended': preferred_reg.attended, + 'checkedin': preferred_reg.checkedin, + } + ) + if created: + for meeting_reg in meeting_regs: + reg.tickets.create( + attendance_type_id=meeting_reg.reg_type or 'unknown', + ticket_type_id=meeting_reg.ticket_type or 'unknown', + ) + else: + # check if tickets differ + reg_tuple_list = [(t.attendance_type_id, t.ticket_type_id) for t in reg.tickets.all()] + meeting_reg_tuple_list = [(mr.reg_type or 'unknown', mr.ticket_type or 'unknown') for mr in meeting_regs] + if not set(reg_tuple_list) == set(meeting_reg_tuple_list): + # update tickets + reg.tickets.all().delete() + for meeting_reg in meeting_regs: + reg.tickets.create( + attendance_type_id=meeting_reg.reg_type or 'unknown', + ticket_type_id=meeting_reg.ticket_type or 'unknown', + ) + # check fields for updates + fields_to_check = [ + 'first_name', 'last_name', 'affiliation', 'country_code', + 'attended', 'checkedin' + ] + + changed = False + for field in fields_to_check: + new_value = getattr(preferred_reg, field) + if getattr(reg, field) != new_value: + setattr(reg, field, new_value) + changed = True + + if changed: + reg.save() + # delete cancelled Registrations + meeting_reg_email_set = set(emails.keys()) + reg_email_set = set(Registration.objects.filter(meeting=meeting).values_list('email', flat=True)) + for email in reg_email_set - meeting_reg_email_set: + Registration.objects.filter(meeting=meeting, email=email).delete() + + return + + +def check_migrate_registrations(): + """A simple utility function to test that all MeetingRegistration + records got migrated + """ + for mr in MeetingRegistration.objects.all(): + reg = Registration.objects.get(meeting=mr.meeting, email=mr.email) + assert reg.tickets.filter( + attendance_type__slug=mr.reg_type or 'unknown', + ticket_type__slug=mr.ticket_type or 'unknown').exists() + + def generate_proceedings_content(meeting, force_refresh=False): """Render proceedings content for a meeting and update cache diff --git a/ietf/name/admin.py b/ietf/name/admin.py index 2458da37d9..4336e0569c 100644 --- a/ietf/name/admin.py +++ b/ietf/name/admin.py @@ -3,6 +3,7 @@ from ietf.name.models import ( AgendaTypeName, + AttendanceTypeName, BallotPositionName, ConstraintName, ContinentName, @@ -29,6 +30,7 @@ LiaisonStatementTagName, MeetingTypeName, NomineePositionStateName, + RegistrationTicketTypeName, ReviewRequestStateName, ReviewResultName, ReviewTypeName, @@ -137,6 +139,7 @@ class ProceedingsMaterialTypeNameAdmin(NameAdmin): admin.site.register(AgendaFilterTypeName, NameAdmin) admin.site.register(AgendaTypeName, NameAdmin) admin.site.register(AppealArtifactTypeName, NameAdmin) +admin.site.register(AttendanceTypeName, NameAdmin) admin.site.register(BallotPositionName, NameAdmin) admin.site.register(ConstraintName, NameAdmin) admin.site.register(ContinentName, NameAdmin) @@ -158,6 +161,7 @@ class ProceedingsMaterialTypeNameAdmin(NameAdmin): admin.site.register(LiaisonStatementTagName, NameAdmin) admin.site.register(MeetingTypeName, NameAdmin) admin.site.register(NomineePositionStateName, NameAdmin) +admin.site.register(RegistrationTicketTypeName, NameAdmin) admin.site.register(ReviewRequestStateName, NameAdmin) admin.site.register(ReviewAssignmentStateName, NameAdmin) admin.site.register(ReviewResultName, NameAdmin) diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 96273fbc35..15ae71d849 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -6827,6 +6827,66 @@ "model": "name.appealartifacttypename", "pk": "response" }, + { + "fields": { + "desc": "", + "name": "ANRW Onsite", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "anrw_onsite" + }, + { + "fields": { + "desc": "", + "name": "Hackathon Onsite", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "hackathon_onsite" + }, + { + "fields": { + "desc": "", + "name": "Hackathon Remote", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "hackathon_remote" + }, + { + "fields": { + "desc": "", + "name": "Onsite", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "onsite" + }, + { + "fields": { + "desc": "", + "name": "Remote", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "remote" + }, + { + "fields": { + "desc": "", + "name": "Unknown", + "order": 0, + "used": true + }, + "model": "name.attendancetypename", + "pk": "unknown" + }, { "fields": { "blocking": false, @@ -12877,6 +12937,86 @@ "model": "name.proceedingsmaterialtypename", "pk": "wiki" }, + { + "fields": { + "desc": "", + "name": "ANRW Combo", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "anrw_combo" + }, + { + "fields": { + "desc": "", + "name": "ANRW Only", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "anrw_only" + }, + { + "fields": { + "desc": "", + "name": "Hackathon Combo", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "hackathon_combo" + }, + { + "fields": { + "desc": "", + "name": "Hackathon Only", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "hackathon_only" + }, + { + "fields": { + "desc": "", + "name": "One Day", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "one_day" + }, + { + "fields": { + "desc": "", + "name": "Student", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "student" + }, + { + "fields": { + "desc": "", + "name": "Unknown", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "unknown" + }, + { + "fields": { + "desc": "", + "name": "Week Pass", + "order": 0, + "used": true + }, + "model": "name.registrationtickettypename", + "pk": "week_pass" + }, { "fields": { "desc": "The reviewer has accepted the assignment", diff --git a/ietf/name/migrations/0016_attendancetypename_registrationtickettypename.py b/ietf/name/migrations/0016_attendancetypename_registrationtickettypename.py new file mode 100644 index 0000000000..9376d3a4c6 --- /dev/null +++ b/ietf/name/migrations/0016_attendancetypename_registrationtickettypename.py @@ -0,0 +1,47 @@ +# Generated by Django 4.2.17 on 2025-01-02 18:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("name", "0015_last_call_name"), + ] + + operations = [ + migrations.CreateModel( + name="AttendanceTypeName", + fields=[ + ( + "slug", + models.CharField(max_length=32, primary_key=True, serialize=False), + ), + ("name", models.CharField(max_length=255)), + ("desc", models.TextField(blank=True)), + ("used", models.BooleanField(default=True)), + ("order", models.IntegerField(default=0)), + ], + options={ + "ordering": ["order", "name"], + "abstract": False, + }, + ), + migrations.CreateModel( + name="RegistrationTicketTypeName", + fields=[ + ( + "slug", + models.CharField(max_length=32, primary_key=True, serialize=False), + ), + ("name", models.CharField(max_length=255)), + ("desc", models.TextField(blank=True)), + ("used", models.BooleanField(default=True)), + ("order", models.IntegerField(default=0)), + ], + options={ + "ordering": ["order", "name"], + "abstract": False, + }, + ), + ] diff --git a/ietf/name/migrations/0017_populate_new_reg_names.py b/ietf/name/migrations/0017_populate_new_reg_names.py new file mode 100644 index 0000000000..51954885c0 --- /dev/null +++ b/ietf/name/migrations/0017_populate_new_reg_names.py @@ -0,0 +1,39 @@ +# Generated by Django 4.2.17 on 2025-01-02 18:26 + +from django.db import migrations + +def forward(apps, schema_editor): + AttendanceTypeName = apps.get_model('name', 'AttendanceTypeName') + RegistrationTicketTypeName = apps.get_model('name', 'RegistrationTicketTypeName') + AttendanceTypeName.objects.create(slug='onsite', name='Onsite') + AttendanceTypeName.objects.create(slug='remote', name='Remote') + AttendanceTypeName.objects.create(slug='hackathon_onsite', name='Hackathon Onsite') + AttendanceTypeName.objects.create(slug='hackathon_remote', name='Hackathon Remote') + AttendanceTypeName.objects.create(slug='anrw_onsite', name='ANRW Onsite') + AttendanceTypeName.objects.create(slug='unknown', name='Unknown') + RegistrationTicketTypeName.objects.create(slug='week_pass', name='Week Pass') + RegistrationTicketTypeName.objects.create(slug='one_day', name='One Day') + RegistrationTicketTypeName.objects.create(slug='student', name='Student') + RegistrationTicketTypeName.objects.create(slug='hackathon_only', name='Hackathon Only') + RegistrationTicketTypeName.objects.create(slug='hackathon_combo', name='Hackathon Combo') + RegistrationTicketTypeName.objects.create(slug='anrw_only', name='ANRW Only') + RegistrationTicketTypeName.objects.create(slug='anrw_combo', name='ANRW Combo') + RegistrationTicketTypeName.objects.create(slug='unknown', name='Unknown') + + +def reverse(apps, schema_editor): + AttendanceTypeName = apps.get_model('name', 'AttendanceTypeName') + RegistrationTicketTypeName = apps.get_model('name', 'RegistrationTicketTypeName') + AttendanceTypeName.objects.delete() + RegistrationTicketTypeName.objects.delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ("name", "0016_attendancetypename_registrationtickettypename"), + ] + + operations = [ + migrations.RunPython(forward, reverse), + ] diff --git a/ietf/name/models.py b/ietf/name/models.py index 8c2520a489..0e87d43548 100644 --- a/ietf/name/models.py +++ b/ietf/name/models.py @@ -151,6 +151,9 @@ class SlideSubmissionStatusName(NameModel): "Pending, Accepted, Rejected" class TelechatAgendaSectionName(NameModel): """roll_call, minutes, action_items""" - class AppealArtifactTypeName(NameModel): pass +class AttendanceTypeName(NameModel): + """onsite, remote, hackathon_onsite, hackathon_remote""" +class RegistrationTicketTypeName(NameModel): + """week, one_day, student""" diff --git a/ietf/name/resources.py b/ietf/name/resources.py index dffa7669db..0cb0e41e0b 100644 --- a/ietf/name/resources.py +++ b/ietf/name/resources.py @@ -19,7 +19,7 @@ RoleName, RoomResourceName, SessionStatusName, StdLevelName, StreamName, TimeSlotTypeName, TopicAudienceName, ReviewerQueuePolicyName, TimerangeName, ExtResourceTypeName, ExtResourceName, SlideSubmissionStatusName, ProceedingsMaterialTypeName, SessionPurposeName, TelechatAgendaSectionName, - AppealArtifactTypeName ) + AppealArtifactTypeName, AttendanceTypeName, RegistrationTicketTypeName ) class TimeSlotTypeNameResource(ModelResource): class Meta: @@ -752,3 +752,33 @@ class Meta: "order": ALL, } api.name.register(AppealArtifactTypeNameResource()) + + +class AttendanceTypeNameResource(ModelResource): + class Meta: + cache = SimpleCache() + queryset = AttendanceTypeName.objects.all() + serializer = api.Serializer() + filtering = { + "slug": ALL, + "name": ALL, + "desc": ALL, + "used": ALL, + "order": ALL, + } +api.name.register(AttendanceTypeNameResource()) + + +class RegistrationTicketTypeNameResource(ModelResource): + class Meta: + cache = SimpleCache() + queryset = RegistrationTicketTypeName.objects.all() + serializer = api.Serializer() + filtering = { + "slug": ALL, + "name": ALL, + "desc": ALL, + "used": ALL, + "order": ALL, + } +api.name.register(RegistrationTicketTypeNameResource()) From d5e3840d4dbeec37415fae89ab578b1b71046b6a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 15 Apr 2025 11:17:33 -0400 Subject: [PATCH 504/846] fix: 500->400 for bad /api/v1/ requests (#8802) * fix: 400->500 for bad /api/v1/ requests * chore: remove unused import --- ietf/api/views.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ietf/api/views.py b/ietf/api/views.py index 4cc3560627..e5b1f96aed 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -18,7 +18,7 @@ from django.contrib.auth.models import User from django.core.exceptions import ValidationError from django.core.validators import validate_email -from django.http import HttpResponse, Http404, JsonResponse +from django.http import HttpResponse, Http404, JsonResponse, HttpResponseBadRequest from django.shortcuts import render, get_object_or_404 from django.urls import reverse from django.utils.decorators import method_decorator @@ -68,7 +68,10 @@ def top_level(request): } serializer = Serializer() - desired_format = determine_format(request, serializer) + try: + desired_format = determine_format(request, serializer) + except BadRequest as err: + return HttpResponseBadRequest(str(err)) options = {} @@ -76,10 +79,12 @@ def top_level(request): callback = request.GET.get('callback', 'callback') if not is_valid_jsonp_callback_value(callback): - raise BadRequest('JSONP callback name is invalid.') + return HttpResponseBadRequest("JSONP callback name is invalid") options['callback'] = callback + # This might raise UnsupportedFormat, but that indicates a real server misconfiguration + # so let it bubble up unhandled and trigger a 500 / email to admins. serialized = serializer.serialize(available_resources, desired_format, options) return HttpResponse(content=serialized, content_type=build_content_type(desired_format)) From 86988eb6072b1331c393f5f7999350f45d653f04 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Tue, 15 Apr 2025 11:45:48 -0400 Subject: [PATCH 505/846] fix: remove credentials omit from agenda fetch call (#8779) --- client/agenda/store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/agenda/store.js b/client/agenda/store.js index 359c5fbf05..b5498303a6 100644 --- a/client/agenda/store.js +++ b/client/agenda/store.js @@ -141,7 +141,7 @@ export const useAgendaStore = defineStore('agenda', { meetingNumber = meetingData.meetingNumber } - const resp = await fetch(`/api/meeting/${meetingNumber}/agenda-data`, { credentials: 'omit' }) + const resp = await fetch(`/api/meeting/${meetingNumber}/agenda-data`) if (!resp.ok) { throw new Error(resp.statusText) } From be06d7c4d34a6fc18bc30d4a064dc3ffcf18c2cf Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 16 Apr 2025 12:00:04 -0500 Subject: [PATCH 506/846] chore: reorder migrations (#8804) * chore: reorder migrations * chore: copyright --- ...ationticket.py => 0012_registration_registrationticket.py} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename ietf/meeting/migrations/{0011_registration_registrationticket.py => 0012_registration_registrationticket.py} (96%) diff --git a/ietf/meeting/migrations/0011_registration_registrationticket.py b/ietf/meeting/migrations/0012_registration_registrationticket.py similarity index 96% rename from ietf/meeting/migrations/0011_registration_registrationticket.py rename to ietf/meeting/migrations/0012_registration_registrationticket.py index fc161f303d..c555f52e8b 100644 --- a/ietf/meeting/migrations/0011_registration_registrationticket.py +++ b/ietf/meeting/migrations/0012_registration_registrationticket.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.20 on 2025-03-16 08:37 +# Copyright The IETF Trust 2025, All Rights Reserved from django.db import migrations, models import django.db.models.deletion @@ -10,7 +10,7 @@ class Migration(migrations.Migration): dependencies = [ ("name", "0017_populate_new_reg_names"), ("person", "0004_alter_person_photo_alter_person_photo_thumb"), - ("meeting", "0010_alter_floorplan_image_alter_meetinghost_logo"), + ("meeting", "0011_alter_slidesubmission_doc"), ] operations = [ From 3d69b2c03e24d78f28a824e04f2254ff33f651d7 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Wed, 16 Apr 2025 12:46:27 -0700 Subject: [PATCH 507/846] feat: add API for related emails (#8671) * feat: add api for related emails. Fixes #8275 * fix: switch from querystring parameter to URL parameter * fix: exclude null character in URL regex --------- Co-authored-by: Robert Sparks --- ietf/api/tests.py | 33 +++++++++++++++++++++++++++++++++ ietf/api/urls.py | 2 ++ ietf/api/views.py | 25 +++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 23e9ff0103..809b45cc2b 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -1164,6 +1164,39 @@ def test_active_email_list(self): self.assertCountEqual(result.keys(), ["addresses"]) self.assertCountEqual(result["addresses"], Email.objects.filter(active=True).values_list("address", flat=True)) + @override_settings(APP_API_TOKENS={"ietf.api.views.related_email_list": ["valid-token"]}) + def test_related_email_list(self): + joe = EmailFactory(address='joe@work.com') + EmailFactory(address='joe@home.com', person=joe.person) + EmailFactory(address='jòe@spain.com', person=joe.person) + url = urlreverse("ietf.api.views.related_email_list", kwargs={'email': 'joe@home.com'}) + # no api key + r = self.client.get(url, headers={}) + self.assertEqual(r.status_code, 403) + # invalid api key + r = self.client.get(url, headers={"X-Api-Key": "not-the-valid-token"}) + self.assertEqual(r.status_code, 403) + # wrong method + r = self.client.post(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 405) + # valid + r = self.client.get(url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200) + self.assertEqual(r.headers["Content-Type"], "application/json") + result = json.loads(r.content) + self.assertCountEqual(result.keys(), ["addresses"]) + self.assertCountEqual(result["addresses"], joe.person.email_set.exclude(address='joe@home.com').values_list("address", flat=True)) + # non-ascii + non_ascii_url = urlreverse("ietf.api.views.related_email_list", kwargs={'email': 'jòe@spain.com'}) + r = self.client.get(non_ascii_url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 200) + result = json.loads(r.content) + self.assertTrue('joe@home.com' in result["addresses"]) + # email not found + not_found_url = urlreverse("ietf.api.views.related_email_list", kwargs={'email': 'nobody@nowhere.com'}) + r = self.client.get(not_found_url, headers={"X-Api-Key": "valid-token"}) + self.assertEqual(r.status_code, 404) + @override_settings(APP_API_TOKENS={"ietf.api.views.role_holder_addresses": ["valid-token"]}) def test_role_holder_addresses(self): url = urlreverse("ietf.api.views.role_holder_addresses") diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 2fcaba6094..bafd5c5b76 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -73,6 +73,8 @@ url(r'^openid/', include('oidc_provider.urls', namespace='oidc_provider')), # Email alias listing url(r'^person/email/$', api_views.active_email_list), + # Related Email listing + url(r'^person/email/(?P[^/\x00]+)/related/$', api_views.related_email_list), # Draft submission API url(r'^submit/?$', submit_views.api_submit_tombstone), # Draft upload API diff --git a/ietf/api/views.py b/ietf/api/views.py index e5b1f96aed..97b9793048 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -691,6 +691,31 @@ def active_email_list(request): return HttpResponse(status=405) +@requires_api_token +@csrf_exempt +def related_email_list(request, email): + """Given an email address, returns all other email addresses known + to Datatracker, via Person object + """ + def _http_err(code, text): + return HttpResponse(text, status=code, content_type="text/plain") + + if request.method == "GET": + try: + email_obj = Email.objects.get(address=email) + except Email.DoesNotExist: + return _http_err(404, "Email not found") + person = email_obj.person + if not person: + return JsonResponse({"addresses": []}) + return JsonResponse( + { + "addresses": list(person.email_set.exclude(address=email).values_list("address", flat=True)), + } + ) + return HttpResponse(status=405) + + @requires_api_token def role_holder_addresses(request): if request.method == "GET": From 4a5716e2e89044981905e9af08775ba2f5386fa7 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 18 Apr 2025 19:39:32 -0400 Subject: [PATCH 508/846] ci: Update build workflow to handle AWS breaking things for no reason --- .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 36439aa6cf..e5c627c950 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -235,7 +235,7 @@ jobs: docker run --rm --name collectstatics -v $(pwd):/workspace ghcr.io/ietf-tools/datatracker-app-base:${{ env.TARGET_BASE }} sh dev/build/collectstatics.sh echo "Pushing statics..." cd static - aws s3 sync . s3://static/dt/$PKG_VERSION --only-show-errors + aws s3 sync . s3://static/dt/$PKG_VERSION --only-show-errors --checksum-algorithm CRC32 - name: Augment dockerignore for docker image build env: From 24042631348135dd8b345715526815f245f9ad51 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 21 Apr 2025 13:00:32 -0300 Subject: [PATCH 509/846] refactor: smtpd->aiosmtpd (#8805) * refactor: smtpd -> aiosmtpd * test: set mock return value for EmailOnFailureCommandTests The test has been working, but in a broken way, for as long as it has existed. The smtpd-based test_smtpserver was masking an exception that did not interfere with the test's effectiveness. * test: increase SMTP.line_length_limit --- ietf/utils/management/tests.py | 2 +- ietf/utils/test_runner.py | 2 +- ietf/utils/test_smtpserver.py | 116 ++++++++++++--------------------- requirements.txt | 1 + 4 files changed, 43 insertions(+), 78 deletions(-) diff --git a/ietf/utils/management/tests.py b/ietf/utils/management/tests.py index e94c39354f..d704999cd1 100644 --- a/ietf/utils/management/tests.py +++ b/ietf/utils/management/tests.py @@ -12,7 +12,7 @@ from ietf.utils.test_utils import TestCase -@mock.patch.object(EmailOnFailureCommand, 'handle') +@mock.patch.object(EmailOnFailureCommand, 'handle', return_value=None) class EmailOnFailureCommandTests(TestCase): def test_calls_handle(self, handle_method): call_command(EmailOnFailureCommand()) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index a77377ffb5..c06e7876db 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -863,7 +863,7 @@ def setup_test_environment(self, **kwargs): try: # remember the value so ietf.utils.mail.send_smtp() will use the same ietf.utils.mail.SMTP_ADDR['port'] = base + offset - self.smtpd_driver = SMTPTestServerDriver((ietf.utils.mail.SMTP_ADDR['ip4'],ietf.utils.mail.SMTP_ADDR['port']),None) + self.smtpd_driver = SMTPTestServerDriver(ietf.utils.mail.SMTP_ADDR['ip4'],ietf.utils.mail.SMTP_ADDR['port'], None) self.smtpd_driver.start() print((" Running an SMTP test server on %(ip4)s:%(port)s to catch outgoing email." % ietf.utils.mail.SMTP_ADDR)) break diff --git a/ietf/utils/test_smtpserver.py b/ietf/utils/test_smtpserver.py index 66675aa0b1..40da758d66 100644 --- a/ietf/utils/test_smtpserver.py +++ b/ietf/utils/test_smtpserver.py @@ -1,92 +1,56 @@ -# Copyright The IETF Trust 2014-2020, All Rights Reserved +# Copyright The IETF Trust 2014-2025, All Rights Reserved # -*- coding: utf-8 -*- +from aiosmtpd.controller import Controller +from aiosmtpd.smtp import SMTP +from email.utils import parseaddr +from typing import Optional -import smtpd -import threading -import asyncore -import debug # pyflakes:ignore +class SMTPTestHandler: -class AsyncCoreLoopThread(object): + def __init__(self, inbox: list): + self.inbox = inbox - def wrap_loop(self, exit_condition, timeout=1.0, use_poll=False, map=None): - if map is None: - map = asyncore.socket_map - while map and not exit_condition: - asyncore.loop(timeout=1.0, use_poll=False, map=map, count=1) + async def handle_DATA(self, server, session, envelope): + """Handle the DATA command and 'deliver' the message""" - def start(self): - """Start the listening service""" - self.exit_condition = [] - kwargs={'exit_condition':self.exit_condition,'timeout':1.0} - self.thread = threading.Thread(target=self.wrap_loop, kwargs=kwargs) - self.thread.daemon = True - self.thread.daemon = True - self.thread.start() - - def stop(self): - """Stop the listening service""" - self.exit_condition.append(True) - self.thread.join() - - -class SMTPTestChannel(smtpd.SMTPChannel): + self.inbox.append(envelope.content) + # Per RFC2033: https://datatracker.ietf.org/doc/html/rfc2033.html#section-4.2 + # ...after the final ".", the server returns one reply + # for each previously successful RCPT command in the mail transaction, + # in the order that the RCPT commands were issued. Even if there were + # multiple successful RCPT commands giving the same forward-path, there + # must be one reply for each successful RCPT command. + return "\n".join("250 OK" for _ in envelope.rcpt_tos) -# mail_options = ['BODY=8BITMIME', 'SMTPUTF8'] - - def smtp_RCPT(self, arg): - if not self.mailfrom: - self.push(str('503 Error: need MAIL command')) - return - arg = self._strip_command_keyword('TO:', arg) - address, __ = self._getaddr(arg) - if not address: - self.push(str('501 Syntax: RCPT TO:
    ')) - return + async def handle_RCPT(self, server, session, envelope, address, rcpt_options): + """Handle an RCPT command and add the address to the envelope if it is acceptable""" + _, address = parseaddr(address) + if address == "": + return "501 Syntax: RCPT TO:
    " if "poison" in address: - self.push(str('550 Error: Not touching that')) - return - self.rcpt_options = [] - self.rcpttos.append(address) - self.push(str('250 Ok')) - -class SMTPTestServer(smtpd.SMTPServer): - - def __init__(self,localaddr,remoteaddr,inbox): - if inbox is not None: - self.inbox=inbox - else: - self.inbox = [] - smtpd.SMTPServer.__init__(self,localaddr,remoteaddr) + return "550 Error: Not touching that" + # At this point the address is acceptable + envelope.rcpt_tos.append(address) + return "250 OK" - def handle_accept(self): - pair = self.accept() - if pair is not None: - conn, addr = pair - #channel = SMTPTestChannel(self, conn, addr) - SMTPTestChannel(self, conn, addr) - def process_message(self, peer, mailfrom, rcpttos, data, mail_options=None, rcpt_options=None): - self.inbox.append(data) +class SMTPTestServerDriver: - -class SMTPTestServerDriver(object): - def __init__(self, localaddr, remoteaddr, inbox=None): - self.localaddr=localaddr - self.remoteaddr=remoteaddr - if inbox is not None: - self.inbox = inbox - else: - self.inbox = [] - self.thread_driver = None + def __init__(self, address: str, port: int, inbox: Optional[list] = None): + # Allow longer lines than the 1001 that RFC 5321 requires. As of 2025-04-16 the + # datatracker emits some non-compliant messages. + # See https://aiosmtpd.aio-libs.org/en/latest/smtp.html + SMTP.line_length_limit = 4000 # tests start failing between 3000 and 4000 + self.controller = Controller( + hostname=address, + port=port, + handler=SMTPTestHandler(inbox=[] if inbox is None else inbox), + ) def start(self): - self.smtpserver = SMTPTestServer(self.localaddr,self.remoteaddr,self.inbox) - self.thread_driver = AsyncCoreLoopThread() - self.thread_driver.start() + self.controller.start() def stop(self): - if self.thread_driver: - self.thread_driver.stop() - + self.controller.stop() diff --git a/requirements.txt b/requirements.txt index cd93f448e2..b00a21ab49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ # -*- conf-mode -*- setuptools>=51.1.0 # Require this first, to prevent later errors # +aiosmtpd>=1.4.6 argon2-cffi>=21.3.0 # For the Argon2 password hasher option beautifulsoup4>=4.11.1 # Only used in tests bibtexparser>=1.2.0 # Only used in tests From 2652c96c8db968a021f6f95953d8ab2337aa167e Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:13:32 +0000 Subject: [PATCH 510/846] ci: update base image target version to 20250421T1600 --- 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 cd0a70667c..bdf3cff0e4 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250402T1611 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250421T1600 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 1195fc9a0b..bdfdb2eed1 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250402T1611 +20250421T1600 From 35db33961d91ada14c5744af3cf8c160e02c5614 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 22 Apr 2025 12:31:07 -0500 Subject: [PATCH 511/846] fix: lengthen liaison response_contact field (#8823) --- ...lter_liaisonstatement_response_contacts.py | 20 +++++++++++++++++++ ietf/liaisons/models.py | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 ietf/liaisons/migrations/0002_alter_liaisonstatement_response_contacts.py diff --git a/ietf/liaisons/migrations/0002_alter_liaisonstatement_response_contacts.py b/ietf/liaisons/migrations/0002_alter_liaisonstatement_response_contacts.py new file mode 100644 index 0000000000..ac0a11101b --- /dev/null +++ b/ietf/liaisons/migrations/0002_alter_liaisonstatement_response_contacts.py @@ -0,0 +1,20 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("liaisons", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="liaisonstatement", + name="response_contacts", + field=models.TextField( + blank=True, help_text="Where to send a response", max_length=1024 + ), + ), + ] diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index f357d6cf8c..2ad502102c 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -33,7 +33,7 @@ class LiaisonStatement(models.Model): to_groups = models.ManyToManyField(Group, blank=True, related_name='liaisonstatement_to_set') to_contacts = models.CharField(max_length=2000, help_text="Contacts at recipient group") - response_contacts = models.CharField(blank=True, max_length=255, help_text="Where to send a response") # RFC4053 + response_contacts = models.TextField(blank=True, max_length=1024, help_text="Where to send a response") # RFC4053 technical_contacts = models.CharField(blank=True, max_length=255, help_text="Who to contact for clarification") # RFC4053 action_holder_contacts = models.CharField(blank=True, max_length=255, help_text="Who makes sure action is completed") # incoming only? cc_contacts = models.TextField(blank=True) From 7be503cf1c6c02ed7715f6b72417cbc760369175 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Wed, 23 Apr 2025 08:33:13 -0700 Subject: [PATCH 512/846] feat: use new mail archive search API for review app lookups (#8788) * feat: use new mail archive search API for review app lookups * fix: fix patch call * fix: remove url from query_data * fix: force utc timezone on datetime from archive API * fix: remove query_data['url'] from test --- ietf/doc/tests_review.py | 220 ++++++++++-------- ietf/doc/views_review.py | 22 +- ietf/review/mailarch.py | 126 ++++------ ietf/settings.py | 2 + .../templates/doc/review/complete_review.html | 4 +- 5 files changed, 176 insertions(+), 198 deletions(-) diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index 13ddbc22ba..9850beca75 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -3,12 +3,12 @@ from pathlib import Path -import datetime, os, shutil +import datetime import io -import tarfile, tempfile, mailbox -import email.mime.multipart, email.mime.text, email.utils +import os +import shutil -from mock import patch +from mock import patch, Mock from requests import Response from django.apps import apps @@ -650,112 +650,132 @@ def test_accept_reviewer_assignment_after_reject(self): assignment = reload_db_objects(assignment) self.assertEqual(assignment.state_id, "accepted") - def make_test_mbox_tarball(self, review_req): - mbox_path = os.path.join(self.review_dir, "testmbox.tar.gz") - with tarfile.open(mbox_path, "w:gz") as tar: - with tempfile.NamedTemporaryFile(dir=self.review_dir, suffix=".mbox") as tmp: - mbox = mailbox.mbox(tmp.name) + @patch('ietf.review.mailarch.requests.post') + def test_retrieve_messages(self, mock_post): + mock_data = { + "results": [ + { + "from": "Alice ", + "subject": "Hello", + "content": "Hi\n This is a really good document.\n", + "message_id": "abc123", + "url": "https://example.com/message", + "date": "2025-04-07T12:00:00", + } + ] + } + mock_post.return_value.json.return_value = mock_data - # plain text - msg = email.mime.text.MIMEText("Hello,\n\nI have reviewed the document and did not find any problems.\n\nJohn Doe") - msg["From"] = "John Doe " - msg["To"] = review_req.team.list_email - msg["Subject"] = "Review of {}-01".format(review_req.doc.name) - msg["Message-ID"] = email.utils.make_msgid() - msg["Archived-At"] = "" - msg["Date"] = email.utils.formatdate() - - mbox.add(msg) - - # plain text + HTML - msg = email.mime.multipart.MIMEMultipart('alternative') - msg["From"] = "John Doe II " - msg["To"] = review_req.team.list_email - msg["Subject"] = "Review of {}".format(review_req.doc.name) - msg["Message-ID"] = email.utils.make_msgid() - msg["Archived-At"] = "" - - msg.attach(email.mime.text.MIMEText("Hi!,\r\nLooks OK!\r\n-John", "plain")) - msg.attach(email.mime.text.MIMEText("

    Hi!,

    Looks OK!

    -John

    ", "html")) - mbox.add(msg) - - tmp.flush() - - tar.add(os.path.relpath(tmp.name)) + doc = WgDraftFactory(group__acronym='mars', rev='01') + review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut")) + rev_role = RoleFactory(group=review_team, person__user__username='reviewer', person__user__email='reviewer@example.com', name_id='reviewer') + RoleFactory(group=review_team, person__user__username='reviewsecretary', person__user__email='reviewsecretary@example.com', name_id='secr') + review_req = ReviewRequestFactory(doc=doc, team=review_team, type_id='early', state_id='assigned', requested_by=rev_role.person, deadline=timezone.now() + datetime.timedelta(days=20)) + ReviewAssignmentFactory(review_request=review_req, reviewer=rev_role.person.email_set.first(), state_id='accepted') - mbox.close() + query_data = ietf.review.mailarch.construct_query_data(doc, review_team, query=None) + response = ietf.review.mailarch.retrieve_messages(query_data) - return mbox_path + self.assertEqual(len(response), 1) + self.assertEqual(response[0]['from'], 'Alice ') + self.assertEqual(response[0]['splitfrom'], ('Alice', 'alice@example.com')) + self.assertEqual(response[0]['subject'], 'Hello') + self.assertEqual(response[0]['content'], 'Hi\n This is a really good document.') + self.assertEqual(response[0]['message_id'], 'abc123') + self.assertEqual(response[0]['url'], 'https://example.com/message') + self.assertEqual(response[0]['utcdate'], ('2025-04-07', '12:00:00')) - def test_search_mail_archive(self): - doc = WgDraftFactory(group__acronym='mars',rev='01') + def test_construct_query_data(self): + doc = WgDraftFactory(group__acronym='mars', rev='01') review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut")) - rev_role = RoleFactory(group=review_team,person__user__username='reviewer',person__user__email='reviewer@example.com',name_id='reviewer') - RoleFactory(group=review_team,person__user__username='reviewsecretary',person__user__email='reviewsecretary@example.com',name_id='secr') - review_req = ReviewRequestFactory(doc=doc,team=review_team,type_id='early',state_id='assigned',requested_by=rev_role.person,deadline=timezone.now()+datetime.timedelta(days=20)) + data = ietf.review.mailarch.construct_query_data(doc, review_team, query=None) + self.assertEqual(data['start_date'], (date_today() - datetime.timedelta(days=180)).isoformat()) + self.assertEqual(data['email_list'], 'reviewteam') + self.assertEqual(data['query_value'], doc.name) + self.assertEqual(data['query'], f'subject:({doc.name})') + self.assertEqual(data['limit'], '30') + + @patch('ietf.doc.views_review.requests.post') + def test_search_mail_archive(self, mock_post): + doc = WgDraftFactory(group__acronym='mars', rev='01') + review_team = ReviewTeamFactory(acronym="reviewteam", name="Review Team", type_id="review", list_email="reviewteam@ietf.org", parent=Group.objects.get(acronym="farfut")) + rev_role = RoleFactory(group=review_team, person__user__username='reviewer', person__user__email='reviewer@example.com', name_id='reviewer') + RoleFactory(group=review_team, person__user__username='reviewsecretary', person__user__email='reviewsecretary@example.com', name_id='secr') + review_req = ReviewRequestFactory(doc=doc, team=review_team, type_id='early', state_id='assigned', requested_by=rev_role.person, deadline=timezone.now() + datetime.timedelta(days=20)) assignment = ReviewAssignmentFactory(review_request=review_req, reviewer=rev_role.person.email_set.first(), state_id='accepted') + mock_data = { + "results": [ + { + "from": "Alice ", + "subject": "Review of {}-01".format(review_req.doc.name), + "content": "Hi\n This is a really good document.\n", + "message_id": "abc123", + "url": "https://example.com/message", + "date": "2025-04-07T12:00:00", + }, + { + "from": "Joe ", + "subject": "Review of {}".format(review_req.doc.name), + "content": "Hi\n I believe this is the best document.\n", + "message_id": "abc456", + "url": "https://example.com/message", + "date": "2025-04-07T12:00:00", + } + ] + } + response1 = Mock() + response1.json.return_value = mock_data + + response2 = Mock() + response2.json.return_value = mock_data + + response3 = Mock() + response3.json.return_value = {"results": []} + + mock_post.side_effect = [response1, response2, response3] + # test URL construction - query_urls = ietf.review.mailarch.construct_query_urls(doc, review_team) - self.assertTrue(review_req.doc.name in query_urls["query_data_url"]) + query_data = ietf.review.mailarch.construct_query_data(doc, review_team) + self.assertTrue(review_req.doc.name in query_data["query_value"]) - # test parsing - mbox_path = self.make_test_mbox_tarball(review_req) + url = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={"name": doc.name, "assignment_id": assignment.pk}) + url2 = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={"name": doc.name, "acronym": review_team.acronym}) + login_testing_unauthorized(self, "reviewsecretary", url) - try: - # mock URL generator and point it to local file - for this - # to work, the module (and not the function) must be - # imported in the view - real_fn = ietf.review.mailarch.construct_query_urls - ietf.review.mailarch.construct_query_urls = lambda doc, team, query=None: { "query_data_url": "file://" + os.path.abspath(mbox_path) } - url = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={ "name": doc.name, "assignment_id": assignment.pk }) - url2 = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={ "name": doc.name, "acronym": review_team.acronym }) - login_testing_unauthorized(self, "reviewsecretary", url) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - messages = r.json()["messages"] - self.assertEqual(len(messages), 2) - - r = self.client.get(url2) - self.assertEqual(r.status_code, 200) - messages = r.json()["messages"] - self.assertEqual(len(messages), 2) - - today = date_today(datetime.timezone.utc) - - self.assertEqual(messages[0]["url"], "https://www.example.com/testmessage") - self.assertTrue("John Doe" in messages[0]["content"]) - self.assertEqual(messages[0]["subject"], "Review of {}-01".format(review_req.doc.name)) - self.assertEqual(messages[0]["revision_guess"], "01") - self.assertEqual(messages[0]["splitfrom"], ["John Doe", "johndoe@example.com"]) - self.assertEqual(messages[0]["utcdate"][0], today.isoformat()) - - self.assertEqual(messages[1]["url"], "https://www.example.com/testmessage2") - self.assertTrue("Looks OK" in messages[1]["content"]) - self.assertTrue("" not in messages[1]["content"]) - self.assertEqual(messages[1]["subject"], "Review of {}".format(review_req.doc.name)) - self.assertFalse('revision_guess' in messages[1]) - self.assertEqual(messages[1]["splitfrom"], ["John Doe II", "johndoe2@example.com"]) - self.assertEqual(messages[1]["utcdate"][0], "") - - - # Test failure to return mailarch results - no_result_path = os.path.join(self.review_dir, "mailarch_no_result.html") - with io.open(no_result_path, "w") as f: - f.write('Content-Type: text/html\n\n
    No results found
    ') - ietf.review.mailarch.construct_query_urls = lambda doc, team, query=None: { "query_data_url": "file://" + os.path.abspath(no_result_path) } - - url = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={ "name": doc.name, "assignment_id": assignment.pk }) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - result = r.json() - self.assertNotIn('messages', result) - self.assertIn('No results found', result['error']) - - finally: - ietf.review.mailarch.construct_query_urls = real_fn + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + messages = r.json()["messages"] + self.assertEqual(len(messages), 2) + + r = self.client.get(url2) + self.assertEqual(r.status_code, 200) + messages = r.json()["messages"] + self.assertEqual(len(messages), 2) + + self.assertEqual(messages[0]["url"], "https://example.com/message") + self.assertTrue("Hi" in messages[0]["content"]) + self.assertEqual(messages[0]["subject"], "Review of {}-01".format(review_req.doc.name)) + self.assertEqual(messages[0]["revision_guess"], "01") + self.assertEqual(messages[0]["splitfrom"], ["Alice", "alice@example.com"]) + self.assertEqual(messages[0]["utcdate"], ['2025-04-07', '12:00:00']) + + self.assertEqual(messages[1]["url"], "https://example.com/message") + self.assertTrue("Hi" in messages[1]["content"]) + self.assertTrue("" not in messages[1]["content"]) + self.assertEqual(messages[1]["subject"], "Review of {}".format(review_req.doc.name)) + self.assertFalse('revision_guess' in messages[1]) + self.assertEqual(messages[1]["splitfrom"], ["Joe", "joe@example.com"]) + self.assertEqual(messages[1]["utcdate"], ['2025-04-07', '12:00:00']) + + # Test failure to return mailarch results + url = urlreverse('ietf.doc.views_review.search_mail_archive', kwargs={"name": doc.name, "assignment_id": assignment.pk}) + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + result = r.json() + self.assertNotIn('messages', result) + self.assertIn('No results found', result['error']) def test_submit_unsolicited_review_choose_team(self): doc = WgDraftFactory(group__acronym='mars', rev='01') diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index 1f23c435fa..6ac0e17791 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -958,14 +958,14 @@ def complete_review(request, name, assignment_id=None, acronym=None): form = CompleteReviewForm(assignment, doc, team, is_reviewer, initial=initial) - mail_archive_query_urls = mailarch.construct_query_urls(doc, team) + mail_archive_query_data = mailarch.construct_query_data(doc, team) return render(request, 'doc/review/complete_review.html', { 'doc': doc, 'team': team, 'assignment': assignment, 'form': form, - 'mail_archive_query_urls': mail_archive_query_urls, + 'mail_archive_query_data': mail_archive_query_data, 'revising_review': revising_review, 'review_to': to, 'review_cc': cc, @@ -987,27 +987,25 @@ def search_mail_archive(request, name, acronym=None, assignment_id=None): if not (is_reviewer or can_manage_request): permission_denied(request, "You do not have permission to perform this action") - res = mailarch.construct_query_urls(doc, team, query=request.GET.get("query")) - if not res: - return JsonResponse({ "error": "Couldn't do lookup in mail archive - don't know where to look"}) - - MAX_RESULTS = 30 + query_data = mailarch.construct_query_data(doc, team, query=request.GET.get("query")) + if not query_data: + return JsonResponse({"error": "Couldn't do lookup in mail archive - don't know where to look"}) try: - res["messages"] = mailarch.retrieve_messages(res["query_data_url"])[:MAX_RESULTS] - for message in res["messages"]: + query_data["messages"] = mailarch.retrieve_messages(query_data) + for message in query_data["messages"]: try: revision_guess = message["subject"].split(name)[1].split('-')[1] message["revision_guess"] = revision_guess if revision_guess.isnumeric() else None except IndexError: pass except KeyError as e: - res["error"] = "No results found (%s)" % str(e) + query_data["error"] = "No results found (%s)" % str(e) except Exception as e: - res["error"] = "Retrieval from mail archive failed: %s" % str(e) + query_data["error"] = "Retrieval from mail archive failed: %s" % str(e) # raise # useful when debugging - return JsonResponse(res) + return JsonResponse(query_data) class EditReviewRequestCommentForm(forms.ModelForm): comment = forms.CharField(widget=forms.Textarea, strip=False) diff --git a/ietf/review/mailarch.py b/ietf/review/mailarch.py index c34a6079ce..61abc83aa5 100644 --- a/ietf/review/mailarch.py +++ b/ietf/review/mailarch.py @@ -6,25 +6,18 @@ # mailarchive.ietf.org import base64 -import contextlib import datetime import email.utils import hashlib -import mailbox -import tarfile -import tempfile - -from urllib.parse import urlencode -from urllib.request import urlopen +import requests import debug # pyflakes:ignore -from pyquery import PyQuery from django.conf import settings from django.utils.encoding import force_bytes, force_str -from ietf.utils.mail import get_payload_text +from ietf.utils.log import log from ietf.utils.timezone import date_today @@ -43,7 +36,7 @@ def hash_list_message_id(list_name, msgid): sha.update(force_bytes(list_name)) return force_str(base64.urlsafe_b64encode(sha.digest()).rstrip(b"=")) -def construct_query_urls(doc, team, query=None): +def construct_query_data(doc, team, query=None): list_name = list_name_from_email(team.list_email) if not list_name: return None @@ -51,83 +44,48 @@ def construct_query_urls(doc, team, query=None): if not query: query = doc.name - encoded_query = "?" + urlencode({ - "qdr": "c", # custom time frame - "start_date": (date_today() - datetime.timedelta(days=180)).isoformat(), - "email_list": list_name, - "q": "subject:({})".format(query), - "as": "1", # this is an advanced search - }) - - return { - "query": query, - "query_url": settings.MAILING_LIST_ARCHIVE_URL + "/arch/search/" + encoded_query, - "query_data_url": settings.MAILING_LIST_ARCHIVE_URL + "/arch/export/mbox/" + encoded_query, + query_data = { + 'start_date': (date_today() - datetime.timedelta(days=180)).isoformat(), + 'email_list': list_name, + 'query_value': query, + 'query': f'subject:({query})', + 'limit': '30', } + return query_data def construct_message_url(list_name, msgid): return "{}/arch/msg/{}/{}".format(settings.MAILING_LIST_ARCHIVE_URL, list_name, hash_list_message_id(list_name, msgid)) -def retrieve_messages_from_mbox(mbox_fileobj): - """Return selected content in message from mbox from mailarch.""" - res = [] - with tempfile.NamedTemporaryFile(suffix=".mbox") as mbox_file: - # mailbox.mbox needs a path, so we need to put the contents - # into a file - mbox_data = mbox_fileobj.read() - mbox_file.write(mbox_data) - mbox_file.flush() - - mbox = mailbox.mbox(mbox_file.name, create=False) - for msg in mbox: - content = "" - - for part in msg.walk(): - if part.get_content_type() == "text/plain": - charset = part.get_content_charset() or "utf-8" - content += get_payload_text(part, default_charset=charset) - - # parse a couple of things for the front end - utcdate = None - d = email.utils.parsedate_tz(msg["Date"]) - if d: - utcdate = datetime.datetime.fromtimestamp(email.utils.mktime_tz(d), datetime.timezone.utc) - - res.append({ - "from": msg["From"], - "splitfrom": email.utils.parseaddr(msg["From"]), - "subject": msg["Subject"], - "content": content.replace("\r\n", "\n").replace("\r", "\n").strip("\n"), - "message_id": email.utils.unquote(msg["Message-ID"].strip()), - "url": email.utils.unquote(msg["Archived-At"].strip()), - "date": msg["Date"], - "utcdate": (utcdate.date().isoformat(), utcdate.time().isoformat()) if utcdate else ("", ""), - }) - mbox.close() - - return res - -def retrieve_messages(query_data_url): +def retrieve_messages(query_data): """Retrieve and return selected content from mailarch.""" - res = [] - - # This has not been rewritten to use requests.get() because get() does - # not handle file URLs out of the box, which we need for tesing - with contextlib.closing(urlopen(query_data_url, timeout=15)) as fileobj: - content_type = fileobj.info()["Content-type"] - if not content_type.startswith("application/x-tar"): - if content_type.startswith("text/html"): - r = fileobj.read(20000) - q = PyQuery(r) - div = q('div[class~="no-results"]') - if div: - raise KeyError("No results: %s -> %s" % (query_data_url, div.text(), )) - raise Exception("Export failed - this usually means no matches were found") - - with tarfile.open(fileobj=fileobj, mode='r|*') as tar: - for entry in tar: - if entry.isfile(): - mbox_fileobj = tar.extractfile(entry) - res.extend(retrieve_messages_from_mbox(mbox_fileobj)) - - return res + + headers = {'X-Api-Key': settings.MAILING_LIST_ARCHIVE_API_KEY} + try: + response = requests.post( + settings.MAILING_LIST_ARCHIVE_SEARCH_URL, + headers=headers, + json=query_data, + timeout=settings.DEFAULT_REQUESTS_TIMEOUT) + except requests.Timeout as exc: + log(f'POST request failed for [{query_data["url"]}]: {exc}') + raise RuntimeError(f'Timeout retrieving [{query_data["url"]}]') from exc + + results = [] + jresponse = response.json() + if 'results' not in jresponse or len(jresponse['results']) == 0: + raise KeyError(f'No results: {query_data["query"]}') + for msg in jresponse['results']: + # datetime is already UTC + dt = datetime.datetime.fromisoformat(msg['date']) + dt_utc = dt.replace(tzinfo=datetime.timezone.utc) + results.append({ + "from": msg["from"], + "splitfrom": email.utils.parseaddr(msg["from"]), + "subject": msg["subject"], + "content": msg["content"].replace("\r\n", "\n").replace("\r", "\n").strip("\n"), + "message_id": msg["message_id"], + "url": msg["url"], + "utcdate": (dt_utc.date().isoformat(), dt_utc.time().isoformat()), + }) + + return results diff --git a/ietf/settings.py b/ietf/settings.py index 33a2f976d9..8005aca8cc 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -808,6 +808,8 @@ def skip_unreadable_post(record): # Mailing list info URL for lists hosted on the IETF servers MAILING_LIST_INFO_URL = "https://mailman3.%(domain)s/mailman3/lists/%(list_addr)s.%(domain)s" MAILING_LIST_ARCHIVE_URL = "https://mailarchive.ietf.org" +MAILING_LIST_ARCHIVE_SEARCH_URL = "https://mailarchive.ietf.org/api/v1/message/search/" +MAILING_LIST_ARCHIVE_API_KEY = "changeme" # Liaison Statement Tool settings (one is used in DOC_HREFS below) LIAISON_UNIVERSAL_FROM = 'Liaison Statement Management Tool ' diff --git a/ietf/templates/doc/review/complete_review.html b/ietf/templates/doc/review/complete_review.html index 091f30532e..8aeb1486a4 100644 --- a/ietf/templates/doc/review/complete_review.html +++ b/ietf/templates/doc/review/complete_review.html @@ -93,7 +93,7 @@

    Back {% endif %}
    - {% if mail_archive_query_urls %} + {% if mail_archive_query_data %}
    - {% if person.photo %} + {% if person.photo or person.role_set.exists %}
    -
    {% include "person/photo.html" with person=person %}
    +
    + {% if person.photo %} + {% include "person/photo.html" with person=person %} + {% endif %} + {% if person.role_set.exists %} +

    Email support@ietf.org + to update your photo.

    + {% endif %}
    {% endif %}
    From e55162360c198765ae16f2baa8413ed1b502fa9c Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Thu, 24 Jul 2025 14:25:49 +0200 Subject: [PATCH 597/846] fix: Improvements to registration admin views (#9185) * fix: add tickets to Registration admin * fix: more improvements to registration admin views * fix: add ignore for mypy * fix: remove unused import * fix: add new admin templates to TEST_TEMPLATE_IGNORE * fix: use full path for TEST_TEMPLATE_IGNORE --- ietf/meeting/admin.py | 56 ++++++++++++++++--- ietf/settings.py | 2 + .../meeting/Registration/change_list.html | 10 ++++ .../RegistrationTicket/change_list.html | 10 ++++ 4 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 ietf/templates/admin/meeting/Registration/change_list.html create mode 100644 ietf/templates/admin/meeting/RegistrationTicket/change_list.html diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index 1c5d5c67b5..d886a9a4b6 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -3,11 +3,13 @@ from django.contrib import admin +from django.db.models import Count from ietf.meeting.models import (Attended, Meeting, Room, Session, TimeSlot, Constraint, Schedule, SchedTimeSessAssignment, ResourceAssociation, FloorPlan, UrlResource, SessionPresentation, ImportantDate, SlideSubmission, SchedulingEvent, BusinessConstraint, - ProceedingsMaterial, MeetingHost, Registration, RegistrationTicket) + ProceedingsMaterial, MeetingHost, Registration, RegistrationTicket, + AttendanceTypeName) class UrlResourceAdmin(admin.ModelAdmin): @@ -219,8 +221,9 @@ class MeetingFilter(admin.SimpleListFilter): parameter_name = 'meeting_id' def lookups(self, request, model_admin): - # Your queryset to limit choices - choices = Meeting.objects.filter(type='ietf').values_list('id', 'number') + # only include meetings with registration records + meetings = Meeting.objects.filter(type='ietf').annotate(reg_count=Count('registration')).filter(reg_count__gt=0).order_by('-date') + choices = meetings.values_list('id', 'number') return choices def queryset(self, request, queryset): @@ -228,23 +231,60 @@ def queryset(self, request, queryset): return queryset.filter(meeting__id=self.value()) return queryset +class AttendanceFilter(admin.SimpleListFilter): + title = 'Attendance Type' + parameter_name = 'attendance_type' + + def lookups(self, request, model_admin): + choices = AttendanceTypeName.objects.all().values_list('slug', 'name') + return choices + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(tickets__attendance_type__slug=self.value()).distinct() + return queryset + class RegistrationTicketInline(admin.TabularInline): model = RegistrationTicket class RegistrationAdmin(admin.ModelAdmin): model = Registration - # list_filter = [('meeting', Meeting.objects.filter(type='ietf')), ] - list_filter = [MeetingFilter, ] - list_display = ['meeting', 'first_name', 'last_name', 'affiliation', 'country_code', 'person', 'email', ] - search_fields = ['meeting__number', 'first_name', 'last_name', 'affiliation', 'country_code', 'email', ] + list_filter = [AttendanceFilter, MeetingFilter] + list_display = ['meeting', 'first_name', 'last_name', 'display_attendance', 'affiliation', 'country_code', 'email', ] + search_fields = ['first_name', 'last_name', 'affiliation', 'country_code', 'email', ] raw_id_fields = ['person'] inlines = [RegistrationTicketInline, ] + ordering = ['-meeting__date', 'last_name'] + + def display_attendance(self, instance): + '''Only display the most significant ticket in the list. + To see all the tickets inspect the individual instance + ''' + if instance.tickets.filter(attendance_type__slug='onsite').exists(): + return 'onsite' + elif instance.tickets.filter(attendance_type__slug='remote').exists(): + return 'remote' + elif instance.tickets.filter(attendance_type__slug='hackathon_onsite').exists(): + return 'hackathon onsite' + elif instance.tickets.filter(attendance_type__slug='hackathon_remote').exists(): + return 'hackathon remote' + display_attendance.short_description = "Attendance" # type: ignore # https://github.com/python/mypy/issues/2087 + admin.site.register(Registration, RegistrationAdmin) class RegistrationTicketAdmin(admin.ModelAdmin): model = RegistrationTicket list_filter = ['attendance_type', ] - list_display = ['registration', 'attendance_type', 'ticket_type'] + # not available until Django 5.2, the name of a related field, using the __ notation + # list_display = ['registration__meeting', 'registration', 'attendance_type', 'ticket_type', 'registration__email'] + # list_select_related = ('registration',) + list_display = ['registration', 'attendance_type', 'ticket_type', 'display_meeting'] search_fields = ['registration__first_name', 'registration__last_name', 'registration__email'] raw_id_fields = ['registration'] + ordering = ['-registration__meeting__date', 'registration__last_name'] + + def display_meeting(self, instance): + return instance.registration.meeting.number + display_meeting.short_description = "Meeting" # type: ignore # https://github.com/python/mypy/issues/2087 + admin.site.register(RegistrationTicket, RegistrationTicketAdmin) diff --git a/ietf/settings.py b/ietf/settings.py index 64679ca1d8..3af01d76e6 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -729,6 +729,8 @@ def skip_unreadable_post(record): "*~", # tilde temp-files "#*", # files beginning with a hashmark "500.html", # isn't loaded by regular loader, but checked by test_500_page() + "ietf/templates/admin/meeting/RegistrationTicket/change_list.html", + "ietf/templates/admin/meeting/Registration/change_list.html", ] TEST_COVERAGE_MAIN_FILE = os.path.join(BASE_DIR, "../release-coverage.json") diff --git a/ietf/templates/admin/meeting/Registration/change_list.html b/ietf/templates/admin/meeting/Registration/change_list.html new file mode 100644 index 0000000000..62784b2cb6 --- /dev/null +++ b/ietf/templates/admin/meeting/Registration/change_list.html @@ -0,0 +1,10 @@ +{% extends "admin/change_list.html" %} + +{% block search %} + {{ block.super }} {# This includes the original search form #} + {% if cl.search_fields %} {# Only show if search is enabled for the model #} +

    + Hint: Search by: {{ cl.search_fields|join:", "|capfirst }}. +

    + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/admin/meeting/RegistrationTicket/change_list.html b/ietf/templates/admin/meeting/RegistrationTicket/change_list.html new file mode 100644 index 0000000000..62784b2cb6 --- /dev/null +++ b/ietf/templates/admin/meeting/RegistrationTicket/change_list.html @@ -0,0 +1,10 @@ +{% extends "admin/change_list.html" %} + +{% block search %} + {{ block.super }} {# This includes the original search form #} + {% if cl.search_fields %} {# Only show if search is enabled for the model #} +

    + Hint: Search by: {{ cl.search_fields|join:", "|capfirst }}. +

    + {% endif %} +{% endblock %} \ No newline at end of file From ea8377db0d4ba8bc990c3f29386fba942f55c84f Mon Sep 17 00:00:00 2001 From: Tero Kivinen Date: Mon, 28 Jul 2025 16:18:13 +0300 Subject: [PATCH 598/846] fix: Add Reviews history page to review teams group page. (fixes #9190) (#9191) * Add Reviews history page to review teams group page. * fix: Added test cases. Fixed html to validate, moved sort text to data-text from comments. Added test cases. fixes #9190 --- ietf/group/tests_review.py | 128 ++++++++++++++++++ ietf/group/urls.py | 1 + ietf/group/utils.py | 1 + ietf/group/views.py | 50 +++++++ .../group/review_requests_history.html | 90 ++++++++++++ 5 files changed, 270 insertions(+) create mode 100644 ietf/templates/group/review_requests_history.html diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index a03b806f8f..d671228953 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -815,3 +815,131 @@ def test_reset_next_reviewer(self): self.assertEqual(NextReviewerInTeam.objects.get(team=group).next_reviewer, reviewers[target_index].person) self.client.logout() target_index += 2 + +class RequestsHistoryTests(TestCase): + def test_requests_history_overview_page(self): + # Make assigned assignment + review_req = ReviewRequestFactory(state_id='assigned') + assignment = ReviewAssignmentFactory(review_request=review_req, + state_id='assigned', + reviewer=EmailFactory(), + assigned_on = review_req.time) + group = review_req.team + + for url in [urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }), + urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym , + 'group_type': group.type_id}), + urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + + '?since=3m', + urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym , + 'group_type': group.type_id }) + + '?since=3m']: + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertContains(r, review_req.doc.name) + self.assertContains(r, 'Assigned') + self.assertContains(r, escape(assignment.reviewer.person.name)) + + url = urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + + assignment.state = ReviewAssignmentStateName.objects.get(slug="completed") + assignment.result = ReviewResultName.objects.get(slug="ready") + assignment.save() + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertContains(r, review_req.doc.name) + self.assertContains(r, 'Assigned') + self.assertContains(r, 'Completed') + + def test_requests_history_filter_page(self): + # First assignment as assigned + review_req = ReviewRequestFactory(state_id = 'assigned', + doc = DocumentFactory()) + assignment = ReviewAssignmentFactory(review_request = review_req, + state_id = 'assigned', + reviewer = EmailFactory(), + assigned_on = review_req.time) + group = review_req.team + + # Second assignment in same group as accepted + review_req2 = ReviewRequestFactory(state_id = 'assigned', + team = review_req.team, + doc = DocumentFactory()) + assignment2 = ReviewAssignmentFactory(review_request = review_req2, + state_id='accepted', + reviewer = EmailFactory(), + assigned_on = review_req2.time) + + # Modify the assignment to be completed, and mark it ready + assignment2.state = ReviewAssignmentStateName.objects.get(slug="completed") + assignment2.result = ReviewResultName.objects.get(slug="ready") + assignment2.save() + + # Check that we have all information when we do not filter + url = urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertContains(r, review_req.doc.name) + self.assertContains(r, review_req2.doc.name) + self.assertContains(r, 'Assigned') + self.assertContains(r, 'Accepted') + self.assertContains(r, 'Completed') + self.assertContains(r, 'Ready') + self.assertContains(r, escape(assignment.reviewer.person.name)) + self.assertContains(r, escape(assignment2.reviewer.person.name)) + + # Check first reviewer history + for url in [urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + + '?reviewer_email=' + str(assignment.reviewer), + urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym , + 'group_type': group.type_id}) + + '?reviewer_email=' + str(assignment.reviewer)]: + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertContains(r, review_req.doc.name) + self.assertNotContains(r, review_req2.doc.name) + self.assertContains(r, 'Assigned') + self.assertNotContains(r, 'Accepted') + self.assertNotContains(r, 'Completed') + self.assertNotContains(r, 'Ready') + self.assertContains(r, escape(assignment.reviewer.person.name)) + self.assertNotContains(r, escape(assignment2.reviewer.person.name)) + + # Check second reviewer history + for url in [urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + + '?reviewer_email=' + str(assignment2.reviewer), + urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym , + 'group_type': group.type_id}) + + '?reviewer_email=' + str(assignment2.reviewer)]: + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertNotContains(r, review_req.doc.name) + self.assertContains(r, review_req2.doc.name) + self.assertNotContains(r, 'Assigned') + self.assertContains(r, 'Accepted') + self.assertContains(r, 'Completed') + self.assertContains(r, 'Ready') + self.assertNotContains(r, escape(assignment.reviewer.person.name)) + self.assertContains(r, escape(assignment2.reviewer.person.name)) + + # Check for reviewer that does not have anything + url = urlreverse(ietf.group.views.review_requests_history, + kwargs={ 'acronym': group.acronym }) + '?reviewer_email=nobody@nowhere.example.org' + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertNotContains(r, review_req.doc.name) + self.assertNotContains(r, 'Assigned') + self.assertNotContains(r, 'Accepted') + self.assertNotContains(r, 'Completed') diff --git a/ietf/group/urls.py b/ietf/group/urls.py index 1824564c4d..8354aba063 100644 --- a/ietf/group/urls.py +++ b/ietf/group/urls.py @@ -24,6 +24,7 @@ url(r'^about/status/edit/$', views.group_about_status_edit), url(r'^about/status/meeting/(?P\d+)/$', views.group_about_status_meeting), url(r'^history/$',views.history), + url(r'^requestshistory/$',views.review_requests_history), url(r'^history/addcomment/$',views.add_comment), url(r'^email/$', views.email), url(r'^deps\.json$', views.dependencies), diff --git a/ietf/group/utils.py b/ietf/group/utils.py index dcf9d83e6f..29cfff2c2d 100644 --- a/ietf/group/utils.py +++ b/ietf/group/utils.py @@ -236,6 +236,7 @@ def construct_group_menu_context(request, group, selected, group_type, others): import ietf.group.views entries.append(("Review requests", urlreverse(ietf.group.views.review_requests, kwargs=kwargs))) entries.append(("Reviewers", urlreverse(ietf.group.views.reviewer_overview, kwargs=kwargs))) + entries.append(("Reviews History", urlreverse(ietf.group.views.review_requests_history, kwargs=kwargs))) if group.features.has_meetings: entries.append(("Meetings", urlreverse("ietf.group.views.meetings", kwargs=kwargs))) diff --git a/ietf/group/views.py b/ietf/group/views.py index 0c89302c6a..bc79599722 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -686,6 +686,56 @@ def history(request, acronym, group_type=None): "can_add_comment": can_add_comment, })) +def review_requests_history(request, acronym, group_type=None): + group = get_group_or_404(acronym, group_type) + if not group.features.has_reviews: + raise Http404 + + reviewer_email = request.GET.get("reviewer_email", None) + + if reviewer_email: + history = ReviewAssignment.history.model.objects.filter( + review_request__team__acronym=acronym, + reviewer=reviewer_email) + else: + history = ReviewAssignment.history.model.objects.filter( + review_request__team__acronym=acronym) + reviewer_email = '' + + since_choices = [ + (None, "1 month"), + ("3m", "3 months"), + ("6m", "6 months"), + ("1y", "1 year"), + ("2y", "2 years"), + ("all", "All"), + ] + since = request.GET.get("since", None) + + if since not in [key for key, label in since_choices]: + since = None + + if since != "all": + date_limit = { + None: datetime.timedelta(days=31), + "3m": datetime.timedelta(days=31 * 3), + "6m": datetime.timedelta(days=180), + "1y": datetime.timedelta(days=365), + "2y": datetime.timedelta(days=2 * 365), + }[since] + + history = history.filter(review_request__time__gte=datetime_today(DEADLINE_TZINFO) - date_limit) + + return render(request, 'group/review_requests_history.html', + construct_group_menu_context(request, group, "reviews history", group_type, { + "group": group, + "acronym": acronym, + "history": history, + "since_choices": since_choices, + "since": since, + "reviewer_email": reviewer_email + })) + def materials(request, acronym, group_type=None): group = get_group_or_404(acronym, group_type) if not group.features.has_nonsession_materials: diff --git a/ietf/templates/group/review_requests_history.html b/ietf/templates/group/review_requests_history.html new file mode 100644 index 0000000000..1b1fb4d263 --- /dev/null +++ b/ietf/templates/group/review_requests_history.html @@ -0,0 +1,90 @@ +{% extends "group/group_base.html" %} +{# Copyright The IETF Trust 2015, All Rights Reserved #} +{% load origin %} +{% load tz %} +{% load ietf_filters person_filters textfilters %} +{% load static %} +{% block pagehead %} + +{% endblock %} +{% block group_content %} + {% origin %} + {% if reviewer_email %} +

    Review requests history of {{ reviewer_email }}

    + {% else %} +

    Review requests history

    + {% endif %} +
    +
    + + + +
    +
    + Past: +
    + {% for key, label in since_choices %} + + {% endfor %} +
    +
    +
    + + + + + + + + + + + + + + {% if history %} + + {% for h in history %} + + + + + + + + + + {% endfor %} + + {% endif %} +
    Date (UTC)ByDocumentStateReviewerResultDescription
    {{ h.history_date|utc|date:"Y-m-d H:i:s" }}{% person_link h.history_user.person %}{% if h.reviewed_rev %} + + {{ h.review_request.doc.name }}-{{ h.reviewed_rev }} + + {% else %} + {{ h.review_request.doc.name }} + {% endif %} + + {{ h.state }} + + {% person_link h.reviewer.person %} + + (set as filter) + + + {% if h.review %} + {{ h.result }} + {% else %} + {{ h.result }} + {% endif %} + {{ h.history_change_reason }}
    +{% endblock %} +{% block js %} + +{% endblock %} From 4762e252552587bfc80c91244c9acb9cc59d820b Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:02:44 -0300 Subject: [PATCH 599/846] test: replace mock with unittest.mock (#9286) --- ietf/api/tests.py | 2 +- ietf/community/tests.py | 2 +- ietf/doc/tests.py | 2 +- ietf/doc/tests_ballot.py | 2 +- ietf/doc/tests_draft.py | 2 +- ietf/doc/tests_material.py | 2 +- ietf/doc/tests_review.py | 2 +- ietf/doc/tests_tasks.py | 2 +- ietf/group/tests.py | 2 +- ietf/group/tests_info.py | 2 +- ietf/idindex/tests.py | 2 +- ietf/ipr/management/tests.py | 2 +- ietf/ipr/tests.py | 2 +- ietf/meeting/tests_models.py | 2 +- ietf/meeting/tests_tasks.py | 2 +- ietf/meeting/tests_utils.py | 2 +- ietf/meeting/tests_views.py | 2 +- ietf/message/tests.py | 2 +- ietf/nomcom/management/tests.py | 2 +- ietf/nomcom/tests.py | 2 +- ietf/person/tests.py | 2 +- ietf/review/tests.py | 2 +- ietf/submit/tests.py | 2 +- ietf/sync/tests.py | 2 +- ietf/utils/management/tests.py | 2 +- ietf/utils/tests.py | 2 +- requirements.txt | 2 -- 27 files changed, 26 insertions(+), 28 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 93a2195467..93515dd0cb 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -5,7 +5,7 @@ import datetime import json import html -import mock +from unittest import mock import os import sys diff --git a/ietf/community/tests.py b/ietf/community/tests.py index 1255ba46eb..04f1433d61 100644 --- a/ietf/community/tests.py +++ b/ietf/community/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2016-2023, All Rights Reserved # -*- coding: utf-8 -*- -import mock +from unittest import mock from pyquery import PyQuery from django.test.utils import override_settings diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 1229df46c5..d3fba03bcc 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -10,7 +10,7 @@ from django.http import HttpRequest import lxml import bibtexparser -import mock +from unittest import mock import json import copy import random diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index ec23f3d491..810ee598f6 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -3,7 +3,7 @@ import datetime -import mock +from unittest import mock from pyquery import PyQuery diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index 4753c4ff0c..576feb0582 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -5,7 +5,7 @@ import os import datetime import io -import mock +from unittest import mock from collections import Counter from pathlib import Path diff --git a/ietf/doc/tests_material.py b/ietf/doc/tests_material.py index c87341c95b..04779bdaf1 100644 --- a/ietf/doc/tests_material.py +++ b/ietf/doc/tests_material.py @@ -6,7 +6,7 @@ import shutil import io -from mock import call, patch +from unittest.mock import call, patch from pathlib import Path from pyquery import PyQuery diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index 9850beca75..8c1fc99ffe 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -8,7 +8,7 @@ import os import shutil -from mock import patch, Mock +from unittest.mock import patch, Mock from requests import Response from django.apps import apps diff --git a/ietf/doc/tests_tasks.py b/ietf/doc/tests_tasks.py index 8a6ffa8be1..29689cd596 100644 --- a/ietf/doc/tests_tasks.py +++ b/ietf/doc/tests_tasks.py @@ -2,7 +2,7 @@ import debug # pyflakes:ignore import datetime -import mock +from unittest import mock from pathlib import Path diff --git a/ietf/group/tests.py b/ietf/group/tests.py index 31f8cc45b5..229744388c 100644 --- a/ietf/group/tests.py +++ b/ietf/group/tests.py @@ -3,7 +3,7 @@ import datetime import json -import mock +from unittest import mock from django.urls import reverse as urlreverse from django.db.models import Q diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index aaf937ee43..eb85860ece 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -6,7 +6,7 @@ import datetime import io import bleach -import mock +from unittest import mock from unittest.mock import call, patch from pathlib import Path diff --git a/ietf/idindex/tests.py b/ietf/idindex/tests.py index 5cc7a7b3bb..ba6100550d 100644 --- a/ietf/idindex/tests.py +++ b/ietf/idindex/tests.py @@ -3,7 +3,7 @@ import datetime -import mock +from unittest import mock from pathlib import Path from tempfile import TemporaryDirectory diff --git a/ietf/ipr/management/tests.py b/ietf/ipr/management/tests.py index d84b0cfef4..d7acd65042 100644 --- a/ietf/ipr/management/tests.py +++ b/ietf/ipr/management/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2021, All Rights Reserved # -*- coding: utf-8 -*- """Tests of ipr management commands""" -import mock +from unittest import mock import sys from django.core.management import call_command diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index e0d00b5d1a..74fa540126 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -3,7 +3,7 @@ import datetime -import mock +from unittest import mock import re from pyquery import PyQuery diff --git a/ietf/meeting/tests_models.py b/ietf/meeting/tests_models.py index e333ddad9a..869d9ec814 100644 --- a/ietf/meeting/tests_models.py +++ b/ietf/meeting/tests_models.py @@ -3,7 +3,7 @@ """Tests of models in the Meeting application""" import datetime -from mock import patch +from unittest.mock import patch from django.conf import settings from django.test import override_settings diff --git a/ietf/meeting/tests_tasks.py b/ietf/meeting/tests_tasks.py index 66de212899..0c442c4bf7 100644 --- a/ietf/meeting/tests_tasks.py +++ b/ietf/meeting/tests_tasks.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2025, All Rights Reserved import datetime -from mock import patch, call +from unittest.mock import patch, call from ietf.utils.test_utils import TestCase from ietf.utils.timezone import date_today from .factories import MeetingFactory diff --git a/ietf/meeting/tests_utils.py b/ietf/meeting/tests_utils.py index 391e017d68..7dd8f435e1 100644 --- a/ietf/meeting/tests_utils.py +++ b/ietf/meeting/tests_utils.py @@ -7,7 +7,7 @@ import json import jsonschema from json import JSONDecodeError -from mock import patch, Mock +from unittest.mock import patch, Mock from django.http import HttpResponse, JsonResponse from ietf.meeting.factories import MeetingFactory, RegistrationFactory, RegistrationTicketFactory diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 1aac2a6523..96a29c2297 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -12,7 +12,7 @@ import requests_mock from unittest import skipIf -from mock import call, patch, PropertyMock +from unittest.mock import call, patch, PropertyMock from pyquery import PyQuery from lxml.etree import tostring from io import StringIO, BytesIO diff --git a/ietf/message/tests.py b/ietf/message/tests.py index a677d5477e..e1bad9a1e6 100644 --- a/ietf/message/tests.py +++ b/ietf/message/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- import datetime -import mock +from unittest import mock from smtplib import SMTPException diff --git a/ietf/nomcom/management/tests.py b/ietf/nomcom/management/tests.py index 7bda2b5aa5..08c0e1fe32 100644 --- a/ietf/nomcom/management/tests.py +++ b/ietf/nomcom/management/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2021, All Rights Reserved # -*- coding: utf-8 -*- """Tests of nomcom management commands""" -import mock +from unittest import mock import sys from collections import namedtuple diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index ea17da6707..cc2e0826d3 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -4,7 +4,7 @@ import datetime import io -import mock +from unittest import mock import random import shutil diff --git a/ietf/person/tests.py b/ietf/person/tests.py index 61d9b0ed70..6326362fd8 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -4,7 +4,7 @@ import datetime import json -import mock +from unittest import mock from io import StringIO, BytesIO from PIL import Image diff --git a/ietf/review/tests.py b/ietf/review/tests.py index e9ddbd47af..5dc8f11e8e 100644 --- a/ietf/review/tests.py +++ b/ietf/review/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- import datetime -import mock +from unittest import mock import debug # pyflakes:ignore from pyquery import PyQuery diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 7e70c55965..6b9002502b 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -5,7 +5,7 @@ import datetime import email import io -import mock +from unittest import mock import os import re import sys diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index 14d65de0b2..182b6e24c4 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -6,7 +6,7 @@ import io import json import datetime -import mock +from unittest import mock import quopri import requests diff --git a/ietf/utils/management/tests.py b/ietf/utils/management/tests.py index d704999cd1..38be464c7f 100644 --- a/ietf/utils/management/tests.py +++ b/ietf/utils/management/tests.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -import mock +from unittest import mock from django.core.management import call_command, CommandError from django.test import override_settings diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index ce1842236d..01433888fe 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -11,7 +11,7 @@ import shutil import types -from mock import call, patch +from unittest.mock import call, patch from pyquery import PyQuery from typing import Dict, List # pyflakes:ignore diff --git a/requirements.txt b/requirements.txt index 4eb573ce36..8ed354192a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -51,8 +51,6 @@ logging_tree>=1.9 # Used only by the showloggers management command lxml>=5.3.0 markdown>=3.3.6 types-markdown>=3.3.6 -mock>=4.0.3 # Used only by tests, of course -types-mock>=4.0.3 mypy~=1.7.0 # Version requirements determined by django-stubs. oic>=1.3 # Used only by tests Pillow>=9.1.0 From e0546b1543565c0a293d198db9b15f1dd5121600 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:04:09 -0300 Subject: [PATCH 600/846] fix: blank=True for xml_version (#9285) --- .../0002_alter_submission_xml_version.py | 18 ++++++++++++++++++ ietf/submit/models.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 ietf/submit/migrations/0002_alter_submission_xml_version.py diff --git a/ietf/submit/migrations/0002_alter_submission_xml_version.py b/ietf/submit/migrations/0002_alter_submission_xml_version.py new file mode 100644 index 0000000000..275e6efd95 --- /dev/null +++ b/ietf/submit/migrations/0002_alter_submission_xml_version.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.23 on 2025-08-01 19:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("submit", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="submission", + name="xml_version", + field=models.CharField(blank=True, default=None, max_length=4, null=True), + ), + ] diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 51f7541e31..1145f761b4 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -55,7 +55,7 @@ class Submission(models.Model): file_size = models.IntegerField(null=True, blank=True) document_date = models.DateField(null=True, blank=True) submission_date = models.DateField(default=date_today) - xml_version = models.CharField(null=True, max_length=4, default=None) + xml_version = models.CharField(null=True, blank=True, max_length=4, default=None) submitter = models.CharField(max_length=255, blank=True, help_text="Name and email of submitter, e.g. \"John Doe <john@example.org>\".") From 827f4e74a1b9a8e872634f31e9484a3dc8cd0842 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:09:15 -0300 Subject: [PATCH 601/846] fix: escape nulls in XML api responses (#9283) * fix: escape nulls in XML api responses * refactor: use \u2400 instead of \0 Less likely to lead to null injection down the road * test: modern naming/python * test: test null char handling * test: remove unused vars --- ietf/api/__init__.py | 21 +++++++++++++++++++++ ietf/api/tests.py | 20 ++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index 9fadab8e6f..d70866083e 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -145,5 +145,26 @@ def dehydrate(self, bundle, for_list=True): class Serializer(tastypie.serializers.Serializer): + OPTION_ESCAPE_NULLS = "datatracker-escape-nulls" + def format_datetime(self, data): return data.astimezone(datetime.timezone.utc).replace(tzinfo=None).isoformat(timespec="seconds") + "Z" + + def to_simple(self, data, options): + options = options or {} + simple_data = super().to_simple(data, options) + if ( + options.get(self.OPTION_ESCAPE_NULLS, False) + and isinstance(simple_data, str) + ): + # replace nulls with unicode "symbol for null character", \u2400 + simple_data = simple_data.replace("\x00", "\u2400") + return simple_data + + def to_etree(self, data, options=None, name=None, depth=0): + # lxml does not escape nulls on its own, so ask to_simple() to do it. + # This is mostly (only?) an issue when generating errors responses for + # fuzzers. + options = options or {} + options[self.OPTION_ESCAPE_NULLS] = True + return super().to_etree(data, options, name, depth) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 93515dd0cb..865f877bfb 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -41,6 +41,7 @@ from ietf.utils.models import DumpInfo from ietf.utils.test_utils import TestCase, login_testing_unauthorized, reload_db_objects +from . import Serializer from .ietf_utils import is_valid_token, requires_api_token from .views import EmailIngestionError @@ -1496,7 +1497,7 @@ def test_good_password(self): data = self.response_data(r) self.assertEqual(data["result"], "success") -class TastypieApiTestCase(ResourceTestCaseMixin, TestCase): +class TastypieApiTests(ResourceTestCaseMixin, TestCase): def __init__(self, *args, **kwargs): self.apps = {} for app_name in settings.INSTALLED_APPS: @@ -1506,7 +1507,7 @@ def __init__(self, *args, **kwargs): models_path = os.path.join(os.path.dirname(app.__file__), "models.py") if os.path.exists(models_path): self.apps[name] = app_name - super(TastypieApiTestCase, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def test_api_top_level(self): client = Client(Accept='application/json') @@ -1541,6 +1542,21 @@ def test_all_model_resources_exist(self): self.assertIn(model._meta.model_name, list(app_resources.keys()), "There doesn't seem to be any API resource for model %s.models.%s"%(app.__name__,model.__name__,)) + def test_serializer_to_etree_handles_nulls(self): + """Serializer to_etree() should handle a null character""" + serializer = Serializer() + try: + serializer.to_etree("string with no nulls in it") + except ValueError: + self.fail("serializer.to_etree raised ValueError on an ordinary string") + try: + serializer.to_etree("string with a \x00 in it") + except ValueError: + self.fail( + "serializer.to_etree raised ValueError on a string " + "containing a null character" + ) + class RfcdiffSupportTests(TestCase): From 8c4bff875398fb7fc7de624c8155c8377276cec0 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:11:12 -0300 Subject: [PATCH 602/846] test: guard against empty path (#9282) --- ietf/utils/test_runner.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index d0a5496283..a9b2e5d572 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -432,7 +432,11 @@ def get_template_paths(apps=None) -> list[str]: relative_path = pathlib.Path( dirpath.removeprefix(templatepath).lstrip("/") ) - if apps and relative_path.parts[0] not in apps: + if ( + apps + and len(relative_path.parts) > 0 + and relative_path.parts[0] not in apps + ): continue # skip uninteresting apps for filename in files: file_path = project_path / filename From 649de73cab6c3aed3e909280e80e02272bc362a8 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:13:46 -0300 Subject: [PATCH 603/846] fix: validate review_requests_history params (#9281) * test: test null chars in GET params * fix: validate GET params --- ietf/group/tests_review.py | 39 +++++++++++++++++++++++++++++++++ ietf/group/views.py | 45 +++++++++++++++++++++++--------------- 2 files changed, 66 insertions(+), 18 deletions(-) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index d671228953..89c755bb26 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -943,3 +943,42 @@ def test_requests_history_filter_page(self): self.assertNotContains(r, 'Assigned') self.assertNotContains(r, 'Accepted') self.assertNotContains(r, 'Completed') + + def test_requests_history_invalid_filter_parameters(self): + # First assignment as assigned + review_req = ReviewRequestFactory(state_id="assigned", doc=DocumentFactory()) + group = review_req.team + url = urlreverse( + "ietf.group.views.review_requests_history", + kwargs={"acronym": group.acronym}, + ) + invalid_reviewer_emails = [ + "%00null@example.com", # urlencoded null character + "null@exa%00mple.com", # urlencoded null character + "\x00null@example.com", # literal null character + "null@ex\x00ample.com", # literal null character + ] + for invalid_email in invalid_reviewer_emails: + r = self.client.get( + url + f"?reviewer_email={invalid_email}" + ) + self.assertEqual( + r.status_code, + 400, + f"should return a 400 response for reviewer_email={repr(invalid_email)}" + ) + + invalid_since_choices = [ + "forever", # not an option + "all\x00", # literal null character + "a%00ll", # urlencoded null character + ] + for invalid_since in invalid_since_choices: + r = self.client.get( + url + f"?since={invalid_since}" + ) + self.assertEqual( + r.status_code, + 400, + f"should return a 400 response for since={repr(invalid_since)}" + ) diff --git a/ietf/group/views.py b/ietf/group/views.py index bc79599722..3529b31f68 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -51,7 +51,13 @@ from django.contrib.auth.decorators import login_required from django.db.models import Count, F, OuterRef, Prefetch, Q, Subquery, TextField, Value from django.db.models.functions import Coalesce -from django.http import HttpResponse, HttpResponseRedirect, Http404, JsonResponse +from django.http import ( + HttpResponse, + HttpResponseRedirect, + Http404, + JsonResponse, + HttpResponseBadRequest, +) from django.shortcuts import render, redirect, get_object_or_404 from django.template.loader import render_to_string from django.urls import reverse as urlreverse @@ -96,11 +102,9 @@ from ietf.review.policies import get_reviewer_queue_policy from ietf.review.utils import (can_manage_review_requests_for_team, can_access_review_stats_for_team, - extract_revision_ordered_review_requests_for_documents_and_replaced, assign_review_request_to_reviewer, close_review_request, - suggested_review_requests_for_team, unavailable_periods_to_list, current_unavailable_periods_for_reviewers, @@ -686,13 +690,30 @@ def history(request, acronym, group_type=None): "can_add_comment": can_add_comment, })) + +class RequestsHistoryParamsForm(forms.Form): + SINCE_CHOICES = ( + (None, "1 month"), + ("3m", "3 months"), + ("6m", "6 months"), + ("1y", "1 year"), + ("2y", "2 years"), + ("all", "All"), + ) + + reviewer_email = forms.EmailField(required=False) + since = forms.ChoiceField(choices=SINCE_CHOICES, required=False) + def review_requests_history(request, acronym, group_type=None): group = get_group_or_404(acronym, group_type) if not group.features.has_reviews: raise Http404 - reviewer_email = request.GET.get("reviewer_email", None) + params = RequestsHistoryParamsForm(request.GET) + if not params.is_valid(): + return HttpResponseBadRequest("Invalid parameters") + reviewer_email = params.cleaned_data["reviewer_email"] or None if reviewer_email: history = ReviewAssignment.history.model.objects.filter( review_request__team__acronym=acronym, @@ -702,19 +723,7 @@ def review_requests_history(request, acronym, group_type=None): review_request__team__acronym=acronym) reviewer_email = '' - since_choices = [ - (None, "1 month"), - ("3m", "3 months"), - ("6m", "6 months"), - ("1y", "1 year"), - ("2y", "2 years"), - ("all", "All"), - ] - since = request.GET.get("since", None) - - if since not in [key for key, label in since_choices]: - since = None - + since = params.cleaned_data["since"] or None if since != "all": date_limit = { None: datetime.timedelta(days=31), @@ -731,7 +740,7 @@ def review_requests_history(request, acronym, group_type=None): "group": group, "acronym": acronym, "history": history, - "since_choices": since_choices, + "since_choices": params.SINCE_CHOICES, "since": since, "reviewer_email": reviewer_email })) From 39165a0b5d079459da601ea82f87c9981f6508b7 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 15:25:54 -0300 Subject: [PATCH 604/846] fix: serve materials w/mixed-case exts (#9273) * fix: serve materials w/ mixed-case exts * fix: another endpoint+reorder regex --- ietf/meeting/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index 5da24ddb6f..18b123b4d8 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -64,7 +64,7 @@ def get_redirect_url(self, *args, **kwargs): type_interim_patterns = [ url(r'^agenda/(?P[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf), url(r'^agenda/(?P[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile), - url(r'^materials/%(document)s(?P\.[a-z0-9]+)$' % settings.URL_REGEXPS, views.materials_document), + url(r'^materials/%(document)s(?P\.[A-Za-z0-9]+)$' % settings.URL_REGEXPS, views.materials_document), url(r'^materials/%(document)s/?$' % settings.URL_REGEXPS, views.materials_document), url(r'^agenda.json$', views.agenda_json) ] @@ -85,7 +85,7 @@ def get_redirect_url(self, *args, **kwargs): url(r'^week-view(?:.html)?/?$', AgendaRedirectView.as_view(pattern_name='agenda', permanent=True)), url(r'^materials(?:.html)?/?$', views.materials), url(r'^request_minutes/?$', views.request_minutes), - url(r'^materials/%(document)s(?P\.[a-z0-9]+)?/?$' % settings.URL_REGEXPS, views.materials_document), + url(r'^materials/%(document)s(?P\.[A-Za-z0-9]+)?/?$' % settings.URL_REGEXPS, views.materials_document), url(r'^session/?$', views.materials_editable_groups), url(r'^proceedings(?:.html)?/?$', views.proceedings), url(r'^proceedings(?:.html)?/finalize/?$', views.finalize_proceedings), From afb0d2d245a11384d73e8f0cc0d31150dd91f80a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 17:16:47 -0300 Subject: [PATCH 605/846] chore(deps): pin jsonfield version (#9267) At least nominally, 3.2.0 requires py3.10. Package is deprecated. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ed354192a..1b00cf81a2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -44,7 +44,7 @@ hashids>=1.3.1 html2text>=2020.1.16 # Used only to clean comment field of secr/sreq html5lib>=1.1 # Only used in tests inflect>= 6.0.2 -jsonfield>=3.1.0 # for SubmissionCheck. This is https://github.com/bradjasper/django-jsonfield/. +jsonfield>=3.1.0,<3.2.0 # 3.2.0 needs py3.10; deprecated-replace with Django JSONField jsonschema[format]>=4.2.1 jwcrypto>=1.2 # for signed notifications - this is aspirational, and is not really used. logging_tree>=1.9 # Used only by the showloggers management command From 6494ce880631ce798424a3a57db88f50f6ebf370 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Mon, 4 Aug 2025 20:29:21 +0000 Subject: [PATCH 606/846] ci: update base image target version to 20250804T2017 --- 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 8317195446..662aee950f 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250624T1543 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250804T2017 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 1f2e39a0a2..d2c3dd6fc9 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250624T1543 +20250804T2017 From e220bc89b464aab54e11c6698f074ed51982c715 Mon Sep 17 00:00:00 2001 From: Eric Vyncke Date: Mon, 4 Aug 2025 22:43:44 +0200 Subject: [PATCH 607/846] Add link to reviewers's reviews (#9272) --- ietf/templates/person/profile.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ietf/templates/person/profile.html b/ietf/templates/person/profile.html index 1424f037a1..a78a90412f 100644 --- a/ietf/templates/person/profile.html +++ b/ietf/templates/person/profile.html @@ -50,7 +50,11 @@

    Roles

    {{ role.name.name }}{{ role.name.name }} + {% if role.name.name == 'Reviewer' %} + (See reviews) + {% endif %} + {{ role.group.name }} ({{ role.group.acronym }}) From e3b87d9459c597731d828482bd13041931fe0a2d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 4 Aug 2025 22:28:31 -0300 Subject: [PATCH 608/846] chore: different celery path for sandboxes (#9300) * chore: different celery path for sandboxes * chore: typo --- docker/scripts/app-init-celery.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docker/scripts/app-init-celery.sh b/docker/scripts/app-init-celery.sh index 5788b943da..17925633d2 100755 --- a/docker/scripts/app-init-celery.sh +++ b/docker/scripts/app-init-celery.sh @@ -92,7 +92,14 @@ fi USER_BIN_PATH="/home/dev/.local/bin" WATCHMEDO="$USER_BIN_PATH/watchmedo" -CELERY="$USER_BIN_PATH/celery" +# Find a celery that works +if [[ -x "$USER_BIN_PATH/celery" ]]; then + # This branch is used for dev + CELERY="$USER_BIN_PATH/celery" +else + # This branch is used for sandbox instances + CELERY="/usr/local/bin/celery" +fi trap 'trap "" TERM; cleanup' TERM # start celery in the background so we can trap the TERM signal if [[ -n "${DEV_MODE}" && -x "${WATCHMEDO}" ]]; then From b8e135b928f9d67c83e6ef6fda6c273fdb106748 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 5 Aug 2025 14:38:30 -0300 Subject: [PATCH 609/846] chore: remove find_github_backup_info.py (#9307) --- .../commands/find_github_backup_info.py | 74 ------------------- requirements.txt | 1 - 2 files changed, 75 deletions(-) delete mode 100644 ietf/doc/management/commands/find_github_backup_info.py diff --git a/ietf/doc/management/commands/find_github_backup_info.py b/ietf/doc/management/commands/find_github_backup_info.py deleted file mode 100644 index f1f71452df..0000000000 --- a/ietf/doc/management/commands/find_github_backup_info.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright The IETF Trust 2020, All Rights Reserved - - -import github3 - -from collections import Counter -from urllib.parse import urlparse - -from django.conf import settings -from django.core.management.base import BaseCommand, CommandError - -from ietf.doc.models import DocExtResource -from ietf.group.models import GroupExtResource -from ietf.person.models import PersonExtResource - -# TODO: Think more about submodules. This currently will only take top level repos, with the assumption that the clone will include arguments to grab all the submodules. -# As a consequence, we might end up pulling more than we need (or that the org or user expected) -# Make sure this is what we want. - -class Command(BaseCommand): - help = ('Locate information about github repositories to backup') - - def add_arguments(self, parser): - parser.add_argument('--verbose', dest='verbose', action='store_true', help='Show counts of types of repositories') - - def handle(self, *args, **options): - - if not (hasattr(settings,'GITHUB_BACKUP_API_KEY') and settings.GITHUB_BACKUP_API_KEY): - raise CommandError("ERROR: can't find GITHUB_BACKUP_API_KEY") # TODO: at >= py3.1, use returncode - - github = github3.login(token = settings.GITHUB_BACKUP_API_KEY) - owners = dict() - repos = set() - - for cls in (DocExtResource, GroupExtResource, PersonExtResource): - for res in cls.objects.filter(name_id__in=('github_repo','github_org')): - path_parts = urlparse(res.value).path.strip('/').split('/') - if not path_parts or not path_parts[0]: - continue - - owner = path_parts[0] - - if owner not in owners: - try: - gh_owner = github.user(username=owner) - owners[owner] = gh_owner - except github3.exceptions.NotFoundError: - continue - - if gh_owner.type in ('User', 'Organization'): - if len(path_parts) > 1: - repo = path_parts[1] - if (owner, repo) not in repos: - try: - github.repository(owner,repo) - repos.add( (owner, repo) ) - except github3.exceptions.NotFoundError: - continue - else: - for repo in github.repositories_by(owner): - repos.add( (owner, repo.name) ) - - owner_types = Counter([owners[owner].type for owner in owners]) - if options['verbose']: - self.stdout.write("Owners:") - for key in owner_types: - self.stdout.write(" %s: %s"%(key,owner_types[key])) - self.stdout.write("Repositories: %d" % len(repos)) - for repo in sorted(repos): - self.stdout.write(" https://github.com/%s/%s" % repo ) - else: - for repo in sorted(repos): - self.stdout.write("%s/%s" % repo ) - diff --git a/requirements.txt b/requirements.txt index 1b00cf81a2..f82bfc4101 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,7 +38,6 @@ drf-spectacular>=0.27 drf-standardized-errors[openapi] >= 0.14 types-docutils>=0.18.1 factory-boy>=3.3 -github3.py>=3.2.0 gunicorn>=20.1.0 hashids>=1.3.1 html2text>=2020.1.16 # Used only to clean comment field of secr/sreq From beb873efc8a98cc5fe144304ebc050faeb814371 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:51:24 +0000 Subject: [PATCH 610/846] ci: update base image target version to 20250805T1738 --- 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 662aee950f..3d5520babe 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250804T2017 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250805T1738 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index d2c3dd6fc9..90d83abf03 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250804T2017 +20250805T1738 From ebe6fbf046590c9b6f08560075b760f2164f1f2a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 7 Aug 2025 12:13:41 -0300 Subject: [PATCH 611/846] feat: personless User deletion via admin (#9312) * feat: admin to allow user deletion * fix: permissions + drop dangerous action * chore: minor style lint * fix: avoid limit on a queryset delete * feat: User age filter * feat: show useful fields on User admin * chore: fix lint * fix: reverse direction of age filter --- ietf/ietfauth/admin.py | 136 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 ietf/ietfauth/admin.py diff --git a/ietf/ietfauth/admin.py b/ietf/ietfauth/admin.py new file mode 100644 index 0000000000..c2914f9efa --- /dev/null +++ b/ietf/ietfauth/admin.py @@ -0,0 +1,136 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +import datetime + +from django.conf import settings +from django.contrib import admin, messages +from django.contrib.admin import action +from django.contrib.admin.actions import delete_selected as default_delete_selected +from django.contrib.auth.admin import UserAdmin +from django.contrib.auth.models import User +from django.utils import timezone + + +# Replace default UserAdmin with our custom one +admin.site.unregister(User) + + +class AgeListFilter(admin.SimpleListFilter): + title = "account age" + parameter_name = "age" + + def lookups(self, request, model_admin): + return [ + ("1day", "> 1 day"), + ("3days", "> 3 days"), + ("1week", "> 1 week"), + ("1month", "> 1 month"), + ("1year", "> 1 year"), + ] + + def queryset(self, request, queryset): + deltas = { + "1day": datetime.timedelta(days=1), + "3days": datetime.timedelta(days=3), + "1week": datetime.timedelta(weeks=1), + "1month": datetime.timedelta(days=30), + "1year": datetime.timedelta(days=365), + } + if self.value(): + return queryset.filter(date_joined__lt=timezone.now()-deltas[self.value()]) + return queryset + + +@admin.register(User) +class CustomUserAdmin(UserAdmin): + list_display = ( + "username", + "person", + "date_joined", + "last_login", + "is_staff", + ) + list_filter = list(UserAdmin.list_filter) + [ + AgeListFilter, + ("person", admin.EmptyFieldListFilter), + ] + actions = ["delete_selected"] + + @action( + permissions=["delete"], description="Delete personless %(verbose_name_plural)s" + ) + def delete_selected(self, request, queryset): + """Delete selected action restricted to Users with a null Person field + + This displaces the default delete_selected action with a safer one that will + only delete personless Users. It is done this way instead of by introducing + a new action so that we can simply hand off to the default action (imported + as default_delete_selected()) without having to adjust its template (and maybe + other things) to make it work with a different action name. + """ + already_confirmed = bool(request.POST.get("post")) + personless_queryset = queryset.filter(person__isnull=True) + original_count = queryset.count() + personless_count = personless_queryset.count() + if personless_count > original_count: + # Refuse to act if the count increased! + self.message_user( + request, + ( + "Limiting the selection to Users without a Person INCREASED the " + "count from {} to {}. This should not happen and probably means a " + "concurrent change to the database affected this request. Please " + "try again.".format(original_count, personless_count) + ), + level=messages.ERROR, + ) + return None # return to changelist + + # Display warning/info if this is showing the confirmation page + if not already_confirmed: + if personless_count < original_count: + self.message_user( + request, + ( + "Limiting the selection to Users without a Person reduced the " + "count from {} to {}. Only {} will be deleted.".format( + original_count, personless_count, personless_count + ) + ), + level=messages.WARNING, + ) + else: + self.message_user( + request, + "Confirmed that all selected Users had no Persons.", + ) + + # Django limits the number of fields in a request. The delete form itself + # includes a few metadata fields, so give it a little padding. The default + # limit is 1000 and everything will break if it's a small number, so not + # bothering to check that it's > 10. + max_count = settings.DATA_UPLOAD_MAX_NUMBER_FIELDS - 10 + if personless_count > max_count: + self.message_user( + request, + ( + f"Only {max_count} Users can be deleted at once. Will only delete " + f"the first {max_count} selected Personless Users." + ), + level=messages.WARNING, + ) + # delete() doesn't like a queryset limited via [:max_count], so do an + # equivalent filter. + last_to_delete = personless_queryset.order_by("pk")[max_count] + personless_queryset = personless_queryset.filter(pk__lt=last_to_delete.pk) + + if already_confirmed and personless_count != original_count: + # After confirmation, none of the above filtering should change anything. + # Refuse to delete if the DB moved underneath us. + self.message_user( + request, + "Queryset count changed, nothing deleted. Please try again.", + level=messages.ERROR, + ) + return None + + return default_delete_selected(self, request, personless_queryset) From 86bce86731048f2dde04ace47af6425b775e23e9 Mon Sep 17 00:00:00 2001 From: Rudi Matz Date: Thu, 7 Aug 2025 11:14:20 -0400 Subject: [PATCH 612/846] feat: use icalendar instead manual template (#9187) * feat: use icalendar instead manual template * avoid code duplication * code cleanup * ruff ruff * remove comments * add custom field with meeting's local Time zone * more code cleanup * remove unused template for ical * pyflakes: remove unused imports and vars * improve tests and code coverage * remove commented line * change URL in ical to use session material page --- ietf/meeting/tests_views.py | 53 +++++++---- ietf/meeting/views.py | 148 +++++++++++++++++++++++++++--- ietf/templates/meeting/agenda.ics | 32 ------- requirements.txt | 1 + 4 files changed, 168 insertions(+), 66 deletions(-) delete mode 100644 ietf/templates/meeting/agenda.ics diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 96a29c2297..f382772485 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -15,6 +15,7 @@ from unittest.mock import call, patch, PropertyMock from pyquery import PyQuery from lxml.etree import tostring +from icalendar import Calendar from io import StringIO, BytesIO from bs4 import BeautifulSoup from urllib.parse import urlparse, urlsplit @@ -384,9 +385,6 @@ def test_meeting_agenda(self): r = self.client.get(ical_url) assert_ical_response_is_valid(self, r) - self.assertContains(r, "BEGIN:VTIMEZONE") - self.assertContains(r, "END:VTIMEZONE") - self.assertContains(r, meeting.time_zone, msg_prefix="time_zone should appear in its original case") self.assertNotEqual( meeting.time_zone, meeting.time_zone.lower(), @@ -405,21 +403,32 @@ def test_meeting_agenda(self): assert_ical_response_is_valid(self, r) self.assertContains(r, session.group.acronym) self.assertContains(r, session.group.name) - self.assertContains(r, session.remote_instructions) - self.assertContains(r, slot.location.name) - self.assertContains(r, 'https://onsite.example.com') - self.assertContains(r, 'https://meetecho.example.com') - self.assertContains(r, "BEGIN:VTIMEZONE") - self.assertContains(r, "END:VTIMEZONE") - self.assertContains(r, session.agenda().get_href()) - self.assertContains( - r, + cal = Calendar.from_ical(r.content) + events = [component for component in cal.walk() if component.name == "VEVENT"] + + self.assertEqual(len(events), 2) + self.assertIn(session.remote_instructions, events[0].get('description')) + self.assertIn("Onsite tool: https://onsite.example.com", events[0].get('description')) + self.assertIn("Meetecho: https://meetecho.example.com", events[0].get('description')) + self.assertIn(f"Agenda {session.agenda().get_href()}", events[0].get('description')) + session_materials_url = settings.IDTRACKER_BASE_URL + urlreverse( + 'ietf.meeting.views.session_details', + kwargs=dict(num=meeting.number, acronym=session.group.acronym) + ) + self.assertIn(f"Session materials: {session_materials_url}", events[0].get('description')) + self.assertIn( urlreverse( 'ietf.meeting.views.session_details', kwargs=dict(num=meeting.number, acronym=session.group.acronym)), - msg_prefix='ical should contain link to meeting materials page for session') + events[0].get('description')) + self.assertEqual( + session_materials_url, + events[0].get('url') + ) + self.assertContains(r, f"LOCATION:{slot.location.name}") + # Floor Plan r = self.client.get(urlreverse('floor-plan', kwargs=dict(num=meeting.number))) self.assertEqual(r.status_code, 200) @@ -1049,32 +1058,36 @@ def test_group_ical(self): s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first() a1 = s1.official_timeslotassignment() t1 = a1.timeslot + # Create an extra session t2 = TimeSlotFactory.create( meeting=meeting, - time=meeting.tz().localize( + time=pytz.utc.localize( datetime.datetime.combine(meeting.date, datetime.time(11, 30)) ) ) + s2 = SessionFactory.create(meeting=meeting, group=s1.group, add_to_schedule=False) SchedTimeSessAssignment.objects.create(timeslot=t2, session=s2, schedule=meeting.schedule) - # + url = urlreverse('ietf.meeting.views.agenda_ical', kwargs={'num':meeting.number, 'acronym':s1.group.acronym, }) r = self.client.get(url) assert_ical_response_is_valid(self, r, expected_event_summaries=['mars - Martian Special Interest Group'], expected_event_count=2) - self.assertContains(r, t1.local_start_time().strftime('%Y%m%dT%H%M%S')) - self.assertContains(r, t2.local_start_time().strftime('%Y%m%dT%H%M%S')) - # + self.assertContains(r, f"DTSTART:{t1.time.strftime('%Y%m%dT%H%M%SZ')}") + self.assertContains(r, f"DTEND:{(t1.time + t1.duration).strftime('%Y%m%dT%H%M%SZ')}") + self.assertContains(r, f"DTSTART:{t2.time.strftime('%Y%m%dT%H%M%SZ')}") + self.assertContains(r, f"DTEND:{(t2.time + t2.duration).strftime('%Y%m%dT%H%M%SZ')}") + url = urlreverse('ietf.meeting.views.agenda_ical', kwargs={'num':meeting.number, 'session_id':s1.id, }) r = self.client.get(url) assert_ical_response_is_valid(self, r, expected_event_summaries=['mars - Martian Special Interest Group'], expected_event_count=1) - self.assertContains(r, t1.local_start_time().strftime('%Y%m%dT%H%M%S')) - self.assertNotContains(r, t2.local_start_time().strftime('%Y%m%dT%H%M%S')) + self.assertContains(r, f"DTSTART:{t1.time.strftime('%Y%m%dT%H%M%SZ')}") + self.assertNotContains(r, f"DTSTART:{t2.time.strftime('%Y%m%dT%H%M%SZ')}") def test_parse_agenda_filter_params(self): def _r(show=(), hide=(), showtypes=(), hidetypes=()): diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 85eda5a8f4..7fa3d21259 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -118,6 +118,9 @@ UploadAgendaForm, UploadBlueSheetForm, UploadMinutesForm, UploadSlidesForm, UploadNarrativeMinutesForm) +from icalendar import Calendar, Event +from ietf.doc.templatetags.ietf_filters import absurl + request_summary_exclude_group_types = ['team'] @@ -137,6 +140,10 @@ def send_interim_change_notice(request, meeting): message.related_groups.add(group) send_mail_message(request, message) +def parse_ical_line_endings(ical): + """Parse icalendar line endings to ensure they are RFC 5545 compliant""" + return re.sub(r'\r(?!\n)|(?=20.1.0 hashids>=1.3.1 html2text>=2020.1.16 # Used only to clean comment field of secr/sreq html5lib>=1.1 # Only used in tests +icalendar>=5.0.0 inflect>= 6.0.2 jsonfield>=3.1.0,<3.2.0 # 3.2.0 needs py3.10; deprecated-replace with Django JSONField jsonschema[format]>=4.2.1 From 666e9c53b45bc2eeda80ccbea66abeaa01df9830 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Thu, 7 Aug 2025 15:27:02 +0000 Subject: [PATCH 613/846] ci: update base image target version to 20250807T1514 --- 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 3d5520babe..0ecf9566ef 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250805T1738 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250807T1514 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 90d83abf03..327fb48da4 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250805T1738 +20250807T1514 From a1a19e5b6cef8ddc8b6443b2e2844ee20be988fa Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 11 Aug 2025 14:00:51 -0300 Subject: [PATCH 614/846] fix: tz-aware tastypie datetimes (#9330) * fix: tz-aware tastypie datetimes * chore: comment * chore: clarify comment --- ietf/api/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index d70866083e..e236347975 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -4,6 +4,7 @@ import datetime import re +import sys from urllib.parse import urlencode @@ -25,6 +26,9 @@ OMITTED_APPS_APIS = ["ietf.status"] +# Pre-py3.11, fromisoformat() does not handle Z or +HH tz offsets +HAVE_BROKEN_FROMISOFORMAT = sys.version_info < (3, 11, 0, "", 0) + def populate_api_list(): _module_dict = globals() for app_config in django_apps.get_app_configs(): @@ -58,6 +62,35 @@ def generate_cache_key(self, *args, **kwargs): # Use a list plus a ``.join()`` because it's faster than concatenation. return "%s:%s:%s:%s" % (self._meta.api_name, self._meta.resource_name, ':'.join(args), smooshed) + def _z_aware_fromisoformat(self, value): + """datetime.datetie.fromisoformat replacement that works with python < 3.11""" + if HAVE_BROKEN_FROMISOFORMAT: + if value.upper().endswith("Z"): + value = value[:-1] + "+00:00" # Z -> UTC + elif re.match(r"[+-][0-9][0-9]$", value[-3:]): + value = value + ":00" # -04 -> -04:00 + return value + + def filter_value_to_python( + self, value, field_name, filters, filter_expr, filter_type + ): + py_value = super().filter_value_to_python( + value, field_name, filters, filter_expr, filter_type + ) + if isinstance( + self.fields[field_name], tastypie.fields.DateTimeField + ) and isinstance(py_value, str): + # Ensure datetime values are TZ-aware, using UTC by default + try: + dt = self._z_aware_fromisoformat(py_value) + except ValueError: + pass # let tastypie deal with the original value + else: + if dt.tzinfo is None: + dt = dt.replace(tzinfo=datetime.timezone.utc) + py_value = dt.isoformat() + return py_value + TIMEDELTA_REGEX = re.compile(r'^(?P\d+d)?\s?(?P\d+h)?\s?(?P\d+m)?\s?(?P\d+s?)$') From 369e38f0b2ffe564340db6b6bcd64124d3190aa8 Mon Sep 17 00:00:00 2001 From: Eric Vyncke Date: Mon, 11 Aug 2025 19:05:59 +0200 Subject: [PATCH 615/846] Less shaded dark theme colors (#9335) --- ietf/static/css/ietf.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ietf/static/css/ietf.scss b/ietf/static/css/ietf.scss index 014213c3e5..df973863d5 100644 --- a/ietf/static/css/ietf.scss +++ b/ietf/static/css/ietf.scss @@ -510,23 +510,23 @@ td.position-empty { tr.position-notready-row, tr.position-discuss-row, tr.position-block-row { - background-color: shade-color($color-discuss, 85%); + background-color: shade-color($color-discuss, 65%); } tr.position-yes-row { - background-color: shade-color($color-yes, 75%); + background-color: shade-color($color-yes, 65%); } tr.position-noobj-row { - background-color: shade-color($color-noobj, 75%); + background-color: shade-color($color-noobj, 65%); } tr.position-abstain-row { - background-color: shade-color($color-abstain, 85%); + background-color: shade-color($color-abstain, 65%); } tr.position-recuse-row { - background-color: shade-color($color-recuse, 85%); + background-color: shade-color($color-recuse, 65%); } } From 37e3ffc8c41ad5e15464af4d242b2d6ee09c3775 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 11 Aug 2025 18:37:43 -0500 Subject: [PATCH 616/846] fix: allow RFC Editor to add comments to RFC history (#9344) --- ietf/doc/tests.py | 34 ++++++++++++++++++++++++---------- ietf/doc/views_doc.py | 2 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index d3fba03bcc..fa8c7fa4fc 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -66,7 +66,7 @@ from ietf.name.models import SessionStatusName, BallotPositionName, DocTypeName, RoleName from ietf.person.models import Person from ietf.person.factories import PersonFactory, EmailFactory -from ietf.utils.mail import outbox, empty_outbox +from ietf.utils.mail import get_payload_text, outbox, empty_outbox from ietf.utils.test_utils import login_testing_unauthorized, unicontent from ietf.utils.test_utils import TestCase from ietf.utils.text import normalize_text @@ -2172,20 +2172,19 @@ def test_trailing_hypen_digit_name_bibxml(self): class AddCommentTestCase(TestCase): def test_add_comment(self): - draft = WgDraftFactory(name='draft-ietf-mars-test',group__acronym='mars') - url = urlreverse('ietf.doc.views_doc.add_comment', kwargs=dict(name=draft.name)) + draft = WgDraftFactory(name="draft-ietf-mars-test", group__acronym="mars") + url = urlreverse("ietf.doc.views_doc.add_comment", kwargs=dict(name=draft.name)) login_testing_unauthorized(self, "secretary", url) # normal get r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(unicontent(r)) - self.assertEqual(len(q('form textarea[name=comment]')), 1) + self.assertEqual(len(q("form textarea[name=comment]")), 1) - # request resurrect events_before = draft.docevent_set.count() mailbox_before = len(outbox) - + r = self.client.post(url, dict(comment="This is a test.")) self.assertEqual(r.status_code, 302) @@ -2193,9 +2192,9 @@ def test_add_comment(self): self.assertEqual("This is a test.", draft.latest_event().desc) self.assertEqual("added_comment", draft.latest_event().type) self.assertEqual(len(outbox), mailbox_before + 1) - self.assertIn("Comment added", outbox[-1]['Subject']) - self.assertIn(draft.name, outbox[-1]['Subject']) - self.assertIn('draft-ietf-mars-test@', outbox[-1]['To']) + self.assertIn("Comment added", outbox[-1]["Subject"]) + self.assertIn(draft.name, outbox[-1]["Subject"]) + self.assertIn("draft-ietf-mars-test@", outbox[-1]["To"]) # Make sure we can also do it as IANA self.client.login(username="iana", password="iana+password") @@ -2204,7 +2203,22 @@ def test_add_comment(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(unicontent(r)) - self.assertEqual(len(q('form textarea[name=comment]')), 1) + self.assertEqual(len(q("form textarea[name=comment]")), 1) + + empty_outbox() + rfc = WgRfcFactory() + self.client.login(username="rfc", password="rfc+password") + url = urlreverse("ietf.doc.views_doc.add_comment", kwargs=dict(name=rfc.name)) + r = self.client.post( + url, dict(comment="This is an RFC Editor comment on an RFC.") + ) + self.assertEqual(r.status_code, 302) + + self.assertEqual( + "This is an RFC Editor comment on an RFC.", rfc.latest_event().desc + ) + self.assertEqual(len(outbox), 1) + self.assertIn("This is an RFC Editor comment on an RFC.", get_payload_text(outbox[0])) class TemplateTagTest(TestCase): diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 591a72d907..4a20db3c89 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1687,7 +1687,7 @@ def add_comment(request, name): group__acronym=doc.group.acronym, person__user=request.user))) else: - can_add_comment = has_role(request.user, ("Area Director", "Secretariat", "IRTF Chair")) + can_add_comment = has_role(request.user, ("Area Director", "Secretariat", "IRTF Chair", "RFC Editor")) if not can_add_comment: # The user is a chair or secretary, but not for this WG or RG permission_denied(request, "You need to be a chair or secretary of this group to add a comment.") From 00264a4cb0f43df07e39beda8f74e1aa36814e71 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 14 Aug 2025 11:18:56 -0300 Subject: [PATCH 617/846] ci: ensure blobdbs exist for sandboxen --- dev/deploy-to-container/start.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dev/deploy-to-container/start.sh b/dev/deploy-to-container/start.sh index 2c83d6970c..5d976f80ea 100644 --- a/dev/deploy-to-container/start.sh +++ b/dev/deploy-to-container/start.sh @@ -35,6 +35,18 @@ echo "Running Datatracker checks..." # Migrate, adjusting to what the current state of the underlying database might be: +# On production, the blobdb tables are in a separate database. Manipulate migration +# history to ensure that they're created for the sandbox environment that runs it +# all from a single database. +echo "Ensuring blobdb relations exist..." +/usr/local/bin/python ./ietf/manage.py migrate --settings=settings_local --fake blobdb zero +if ! /usr/local/bin/python ./ietf/manage.py migrate --settings=settings_local blobdb; then + # If we are restarting a sandbox, the migration may already have run and re-running + # it will fail. Assume that happened and fake it. + /usr/local/bin/python ./ietf/manage.py migrate --settings=settings_local --fake blobdb +fi + +# Now run the migrations for real echo "Running Datatracker migrations..." /usr/local/bin/python ./ietf/manage.py migrate --settings=settings_local From f13a1a55774c9605b79e2db6f41dbe0ceb0d400a Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 15 Aug 2025 15:55:08 -0400 Subject: [PATCH 618/846] ci: Update db.Dockerfile to postgres 17 --- docker/db.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/db.Dockerfile b/docker/db.Dockerfile index 0b57a80b70..48ab298780 100644 --- a/docker/db.Dockerfile +++ b/docker/db.Dockerfile @@ -1,7 +1,7 @@ # ===================== # --- Builder Stage --- # ===================== -FROM postgres:16 AS builder +FROM postgres:17 AS builder ENV POSTGRES_PASSWORD=hk2j22sfiv ENV POSTGRES_USER=django @@ -19,7 +19,7 @@ RUN ["/usr/local/bin/docker-entrypoint.sh", "postgres"] # =================== # --- Final Image --- # =================== -FROM postgres:16 +FROM postgres:17 LABEL maintainer="IETF Tools Team " COPY --from=builder /data $PGDATA From 0694863763509369228849b876b99666aaa70092 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 15 Aug 2025 17:05:40 -0300 Subject: [PATCH 619/846] refactor: jsonfield pkg->Django JSONField (#9284) * refactor: drop jsonfield pkg in code It still exists in migrations * refactor: callable JSONField defaults * chore: migrations * chore: unused import * chore: fix nulls in authors; renumber migrations * fix: rename IETFJSONField to fix migration * chore: update names.json JSONField representation has changed * fix: missed renaming; hide dead code from coverage --- .../0008_alter_group_used_roles_and_more.py | 107 ++ ietf/group/models.py | 55 +- ietf/name/fixtures/names.json | 1202 +++++++++++++---- ...alter_sessionpurposename_timeslot_types.py | 27 + ietf/name/models.py | 6 +- ...icalperson_pronouns_selectable_and_more.py | 34 + ietf/person/models.py | 3 +- ...ion_authors_alter_submissioncheck_items.py | 46 + ietf/submit/models.py | 7 +- ietf/utils/db.py | 26 +- ietf/utils/fields.py | 19 +- 11 files changed, 1259 insertions(+), 273 deletions(-) create mode 100644 ietf/group/migrations/0008_alter_group_used_roles_and_more.py create mode 100644 ietf/name/migrations/0019_alter_sessionpurposename_timeslot_types.py create mode 100644 ietf/person/migrations/0005_alter_historicalperson_pronouns_selectable_and_more.py create mode 100644 ietf/submit/migrations/0003_alter_submission_authors_alter_submissioncheck_items.py diff --git a/ietf/group/migrations/0008_alter_group_used_roles_and_more.py b/ietf/group/migrations/0008_alter_group_used_roles_and_more.py new file mode 100644 index 0000000000..28f345df00 --- /dev/null +++ b/ietf/group/migrations/0008_alter_group_used_roles_and_more.py @@ -0,0 +1,107 @@ +# Generated by Django 4.2.23 on 2025-08-15 16:46 + +from django.db import migrations, models +import ietf.group.models +import ietf.name.models +import ietf.utils.db +import ietf.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ("group", "0007_used_roles"), + ] + + operations = [ + migrations.AlterField( + model_name="group", + name="used_roles", + field=models.JSONField( + blank=True, + default=list, + help_text="Leave an empty list to get the group_type's default used roles", + max_length=256, + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="admin_roles", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_admin_roles, max_length=64 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="default_used_roles", + field=ietf.utils.db.EmptyAwareJSONField(default=list, max_length=256), + ), + migrations.AlterField( + model_name="groupfeatures", + name="docman_roles", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_docman_roles, max_length=128 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="groupman_authroles", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_groupman_authroles, max_length=128 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="groupman_roles", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_groupman_roles, max_length=128 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="material_types", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_material_types, max_length=64 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="matman_roles", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_matman_roles, max_length=128 + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="role_order", + field=ietf.utils.db.EmptyAwareJSONField( + default=ietf.group.models.default_role_order, + help_text="The order in which roles are shown, for instance on photo pages. Enter valid JSON.", + max_length=128, + ), + ), + migrations.AlterField( + model_name="groupfeatures", + name="session_purposes", + field=ietf.utils.db.EmptyAwareJSONField( + default=list, + help_text="Allowed session purposes for this group type", + max_length=256, + validators=[ + ietf.utils.validators.JSONForeignKeyListValidator( + ietf.name.models.SessionPurposeName + ) + ], + ), + ), + migrations.AlterField( + model_name="grouphistory", + name="used_roles", + field=models.JSONField( + blank=True, + default=list, + help_text="Leave an empty list to get the group_type's default used roles", + max_length=256, + ), + ), + ] diff --git a/ietf/group/models.py b/ietf/group/models.py index 52549e8cc1..608dcc86b9 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -3,7 +3,6 @@ import email.utils -import jsonfield import os import re @@ -21,7 +20,7 @@ AgendaTypeName, AgendaFilterTypeName, ExtResourceName, SessionPurposeName, AppealArtifactTypeName ) from ietf.person.models import Email, Person -from ietf.utils.db import IETFJSONField +from ietf.utils.db import EmptyAwareJSONField from ietf.utils.mail import formataddr, send_mail_text from ietf.utils import log from ietf.utils.models import ForeignKey, OneToOneField @@ -46,7 +45,7 @@ class GroupInfo(models.Model): unused_states = models.ManyToManyField('doc.State', help_text="Document states that have been disabled for the group.", blank=True) unused_tags = models.ManyToManyField(DocTagName, help_text="Document tags that have been disabled for the group.", blank=True) - used_roles = jsonfield.JSONField(max_length=256, blank=True, default=[], help_text="Leave an empty list to get the group_type's default used roles") + used_roles = models.JSONField(max_length=256, blank=True, default=list, help_text="Leave an empty list to get the group_type's default used roles") uses_milestone_dates = models.BooleanField(default=True) @@ -235,6 +234,36 @@ def chat_archive_url(self): ) +# JSONFields need callable defaults that work with migrations to avoid sharing +# data structures between instances. These helpers provide that. +def default_material_types(): + return ["slides"] + + +def default_admin_roles(): + return ["chair"] + + +def default_docman_roles(): + return ["ad", "chair", "delegate", "secr"] + + +def default_groupman_roles(): + return ["ad", "chair"] + + +def default_groupman_authroles(): + return ["Secretariat"] + + +def default_matman_roles(): + return ["ad", "chair", "delegate", "secr"] + + +def default_role_order(): + return ["chair", "secr", "member"] + + class GroupFeatures(models.Model): type = OneToOneField(GroupTypeName, primary_key=True, null=False, related_name='features') #history = HistoricalRecords() @@ -268,16 +297,16 @@ class GroupFeatures(models.Model): agenda_type = models.ForeignKey(AgendaTypeName, null=True, default="ietf", on_delete=CASCADE) about_page = models.CharField(max_length=64, blank=False, default="ietf.group.views.group_about" ) default_tab = models.CharField(max_length=64, blank=False, default="ietf.group.views.group_about" ) - material_types = IETFJSONField(max_length=64, accepted_empty_values=[[], {}], blank=False, default=["slides"]) - default_used_roles = IETFJSONField(max_length=256, accepted_empty_values=[[], {}], blank=False, default=[]) - admin_roles = IETFJSONField(max_length=64, accepted_empty_values=[[], {}], blank=False, default=["chair"]) # Trac Admin - docman_roles = IETFJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=["ad","chair","delegate","secr"]) - groupman_roles = IETFJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=["ad","chair",]) - groupman_authroles = IETFJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=["Secretariat",]) - matman_roles = IETFJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=["ad","chair","delegate","secr"]) - role_order = IETFJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=["chair","secr","member"], - help_text="The order in which roles are shown, for instance on photo pages. Enter valid JSON.") - session_purposes = IETFJSONField(max_length=256, accepted_empty_values=[[], {}], blank=False, default=[], + material_types = EmptyAwareJSONField(max_length=64, accepted_empty_values=[[], {}], blank=False, default=default_material_types) + default_used_roles = EmptyAwareJSONField(max_length=256, accepted_empty_values=[[], {}], blank=False, default=list) + admin_roles = EmptyAwareJSONField(max_length=64, accepted_empty_values=[[], {}], blank=False, default=default_admin_roles) # Trac Admin + docman_roles = EmptyAwareJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=default_docman_roles) + groupman_roles = EmptyAwareJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=default_groupman_roles) + groupman_authroles = EmptyAwareJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=default_groupman_authroles) + matman_roles = EmptyAwareJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=default_matman_roles) + role_order = EmptyAwareJSONField(max_length=128, accepted_empty_values=[[], {}], blank=False, default=default_role_order, + help_text="The order in which roles are shown, for instance on photo pages. Enter valid JSON.") + session_purposes = EmptyAwareJSONField(max_length=256, accepted_empty_values=[[], {}], blank=False, default=list, help_text="Allowed session purposes for this group type", validators=[JSONForeignKeyListValidator(SessionPurposeName)]) diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index ebdda1a1fa..0724cbb4b5 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -2630,6 +2630,19 @@ "model": "doc.state", "pk": 181 }, + { + "fields": { + "desc": "The statement has been marked historic", + "name": "Historic", + "next_states": [], + "order": 0, + "slug": "historic", + "type": "statement", + "used": true + }, + "model": "doc.state", + "pk": 182 + }, { "fields": { "label": "State" @@ -2872,7 +2885,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "special", "agenda_type": "ietf", "create_wiki": true, @@ -2880,10 +2895,24 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"matman\",\n \"ad\",\n \"chair\",\n \"lead\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"lead\",\n \"delegate\"\n]", + "default_used_roles": [ + "matman", + "ad", + "chair", + "lead", + "delegate" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "lead", + "delegate" + ], "has_chartering_process": false, "has_default_chat": true, "has_documents": false, @@ -2893,15 +2922,29 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"lead\",\n \"delegate\",\n \"matman\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "lead", + "delegate", + "matman" + ], "need_parent": false, "parent_types": [ "ietf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"lead\",\n \"delegate\",\n \"matman\"\n]", - "session_purposes": "[\n \"presentation\"\n]", + "role_order": [ + "chair", + "lead", + "delegate", + "matman" + ], + "session_purposes": [ + "presentation" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -2911,7 +2954,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "heading", "agenda_type": "ietf", "create_wiki": false, @@ -2919,10 +2964,19 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"member\",\n \"chair\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "member", + "chair" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -2932,13 +2986,22 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [], "req_subm_approval": false, - "role_order": "[\n \"chair\"\n]", - "session_purposes": "[\n \"closed_meeting\",\n \"officehours\"\n]", + "role_order": [ + "chair" + ], + "session_purposes": [ + "closed_meeting", + "officehours" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -2948,7 +3011,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": true, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": true, @@ -2956,10 +3021,26 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\",\n \"chair\",\n \"secr\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"Area Director\"\n]", - "groupman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "ad", + "chair", + "secr", + "delegate" + ], + "docman_roles": [ + "chair", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "Area Director" + ], + "groupman_roles": [ + "ad", + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": true, @@ -2969,16 +3050,28 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "need_parent": false, "parent_types": [ "area", "ietf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -2988,7 +3081,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"ad\"\n]", + "admin_roles": [ + "ad" + ], "agenda_filter_type": "heading", "agenda_type": "ietf", "create_wiki": true, @@ -2996,10 +3091,22 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\",\n \"liaison_contact\",\n \"liaison_cc_contact\"\n]", - "docman_roles": "[\n \"ad\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"ad\"\n]", + "default_used_roles": [ + "ad", + "liaison_contact", + "liaison_cc_contact" + ], + "docman_roles": [ + "ad", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "ad" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3009,15 +3116,27 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "need_parent": true, "parent_types": [ "ietf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3027,7 +3146,10 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\",\n \"secr\"\n]", + "admin_roles": [ + "chair", + "secr" + ], "agenda_filter_type": "special", "agenda_type": "ad", "create_wiki": true, @@ -3035,10 +3157,25 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\",\n \"chair\",\n \"reviewer\",\n \"secr\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"ad\",\n \"secr\",\n \"delegate\",\n \"chair\"\n]", + "default_used_roles": [ + "ad", + "chair", + "reviewer", + "secr", + "delegate" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "ad", + "secr", + "delegate", + "chair" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3048,15 +3185,31 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "need_parent": true, "parent_types": [ "area" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"open_meeting\",\n \"presentation\",\n \"regular\",\n \"social\",\n \"tutorial\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "open_meeting", + "presentation", + "regular", + "social", + "tutorial" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3066,7 +3219,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": false, @@ -3074,10 +3229,19 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"chair\",\n \"member\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "chair", + "member" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": true, "has_documents": false, @@ -3087,13 +3251,23 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [], "req_subm_approval": false, - "role_order": "[\n \"chair\",\n \"member\"\n]", - "session_purposes": "[\n \"officehours\",\n \"regular\"\n]", + "role_order": [ + "chair", + "member" + ], + "session_purposes": [ + "officehours", + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3103,7 +3277,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": true, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": false, @@ -3111,10 +3287,18 @@ "customize_workflow": true, "default_parent": "", "default_tab": "ietf.group.views.group_documents", - "default_used_roles": "[\n \"chair\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "chair" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": true, "has_documents": true, @@ -3124,15 +3308,23 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [ "rfcedtyp" ], "req_subm_approval": true, - "role_order": "[\n \"chair\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3142,7 +3334,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": false, @@ -3150,10 +3344,16 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"chair\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[]", + "default_used_roles": [ + "chair" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3163,15 +3363,26 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate" + ], "need_parent": false, "parent_types": [ "ietf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"closed_meeting\",\n \"regular\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "closed_meeting", + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3181,7 +3392,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"lead\"\n]", + "admin_roles": [ + "lead" + ], "agenda_filter_type": "none", "agenda_type": "ad", "create_wiki": false, @@ -3189,10 +3402,27 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"member\",\n \"chair\",\n \"lead\",\n \"delegate\"\n]", - "docman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"IAB\"\n]", - "groupman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\",\n \"delegate\"\n]", + "default_used_roles": [ + "member", + "chair", + "lead", + "delegate" + ], + "docman_roles": [ + "lead", + "chair", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "IAB" + ], + "groupman_roles": [ + "lead", + "chair", + "secr", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": true, @@ -3202,15 +3432,29 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "lead", + "chair", + "secr" + ], "need_parent": false, "parent_types": [ "ietf" ], "req_subm_approval": false, - "role_order": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"closed_meeting\",\n \"officehours\",\n \"open_meeting\"\n]", + "role_order": [ + "lead", + "chair", + "secr" + ], + "session_purposes": [ + "closed_meeting", + "officehours", + "open_meeting" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3220,7 +3464,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": "ietf", "create_wiki": false, @@ -3228,10 +3474,20 @@ "customize_workflow": false, "default_parent": "iab", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[]", - "docman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"ad\",\n \"chair\"\n]", + "default_used_roles": [], + "docman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "ad", + "chair" + ], "has_chartering_process": false, "has_default_chat": true, "has_documents": true, @@ -3241,15 +3497,26 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "need_parent": true, "parent_types": [ "ietf" ], "req_subm_approval": false, - "role_order": "[\n \"chair\",\n \"secr\",\n \"member\"\n]", - "session_purposes": "\"[\\\"regular\\\"]\"", + "role_order": [ + "chair", + "secr", + "member" + ], + "session_purposes": "[\"regular\"]", "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3259,7 +3526,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": "ietf", "create_wiki": false, @@ -3267,10 +3536,18 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"auth\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "auth" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3280,13 +3557,21 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [], "req_subm_approval": false, - "role_order": "[\n \"chair\"\n]", - "session_purposes": "[\n \"officehours\"\n]", + "role_order": [ + "chair" + ], + "session_purposes": [ + "officehours" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3296,7 +3581,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": "ad", "create_wiki": false, @@ -3304,10 +3591,19 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "delegate" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3317,13 +3613,24 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "\"[]\"", - "matman_roles": "[\n \"chair\",\n \"delegate\",\n \"member\"\n]", + "material_types": "[]", + "matman_roles": [ + "chair", + "delegate", + "member" + ], "need_parent": false, "parent_types": [], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"delegate\",\n \"member\"\n]", - "session_purposes": "[\n \"closed_meeting\",\n \"open_meeting\"\n]", + "role_order": [ + "chair", + "delegate", + "member" + ], + "session_purposes": [ + "closed_meeting", + "open_meeting" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3333,7 +3640,10 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\",\n \"lead\"\n]", + "admin_roles": [ + "chair", + "lead" + ], "agenda_filter_type": "heading", "agenda_type": "ietf", "create_wiki": false, @@ -3341,10 +3651,26 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\",\n \"member\",\n \"comdir\",\n \"delegate\",\n \"execdir\",\n \"recman\",\n \"secr\",\n \"chair\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "ad", + "member", + "comdir", + "delegate", + "execdir", + "recman", + "secr", + "chair" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3354,15 +3680,29 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate" + ], "need_parent": false, "parent_types": [ "ietf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"admin\",\n \"plenary\",\n \"presentation\",\n \"social\",\n \"officehours\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "admin", + "plenary", + "presentation", + "social", + "officehours" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3372,7 +3712,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": "ad", "create_wiki": false, @@ -3380,10 +3722,16 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\"\n]", - "docman_roles": "[\n \"auth\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[]", + "default_used_roles": [ + "ad" + ], + "docman_roles": [ + "auth" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3393,15 +3741,20 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[]", + "material_types": [ + "slides" + ], + "matman_roles": [], "need_parent": true, "parent_types": [ "area" ], "req_subm_approval": false, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3411,7 +3764,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "heading", "agenda_type": "ietf", "create_wiki": false, @@ -3419,10 +3774,20 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"member\",\n \"atlarge\",\n \"chair\",\n \"delegate\"\n]", - "docman_roles": "[]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "member", + "atlarge", + "chair", + "delegate" + ], + "docman_roles": [], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3432,15 +3797,24 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate", + "secr" + ], "need_parent": false, "parent_types": [ "irtf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3450,7 +3824,10 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\",\n \"lead\"\n]", + "admin_roles": [ + "chair", + "lead" + ], "agenda_filter_type": "heading", "agenda_type": "ietf", "create_wiki": false, @@ -3458,10 +3835,20 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"chair\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "chair", + "delegate" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": true, @@ -3471,13 +3858,24 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate" + ], "need_parent": false, "parent_types": [], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"delegate\"\n]", - "session_purposes": "[\n \"officehours\",\n \"regular\"\n]", + "role_order": [ + "chair", + "delegate" + ], + "session_purposes": [ + "officehours", + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3487,7 +3885,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": null, "create_wiki": false, @@ -3495,10 +3895,17 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"chair\",\n \"ceo\"\n]", - "docman_roles": "[]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "chair", + "ceo" + ], + "docman_roles": [], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3508,15 +3915,27 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "secr" + ], "need_parent": false, "parent_types": [ "isoc" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"officehours\",\n \"open_meeting\",\n \"presentation\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "officehours", + "open_meeting", + "presentation" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3526,7 +3945,10 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\",\n \"advisor\"\n]", + "admin_roles": [ + "chair", + "advisor" + ], "agenda_filter_type": "none", "agenda_type": "side", "create_wiki": true, @@ -3534,10 +3956,23 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"member\",\n \"advisor\",\n \"liaison\",\n \"chair\",\n \"techadv\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\",\n \"advisor\"\n]", + "default_used_roles": [ + "member", + "advisor", + "liaison", + "chair", + "techadv" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair", + "advisor" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3547,15 +3982,26 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [ "area" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"member\",\n \"advisor\"\n]", - "session_purposes": "[\n \"closed_meeting\",\n \"officehours\"\n]", + "role_order": [ + "chair", + "member", + "advisor" + ], + "session_purposes": [ + "closed_meeting", + "officehours" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3565,7 +4011,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"lead\"\n]", + "admin_roles": [ + "lead" + ], "agenda_filter_type": "normal", "agenda_type": "ad", "create_wiki": false, @@ -3573,10 +4021,27 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"member\",\n \"chair\",\n \"lead\",\n \"delegate\"\n]", - "docman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"IAB\"\n]", - "groupman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\",\n \"delegate\"\n]", + "default_used_roles": [ + "member", + "chair", + "lead", + "delegate" + ], + "docman_roles": [ + "lead", + "chair", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "IAB" + ], + "groupman_roles": [ + "lead", + "chair", + "secr", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": true, @@ -3586,15 +4051,28 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "lead", + "chair", + "secr" + ], "need_parent": false, "parent_types": [ "ietf" ], "req_subm_approval": false, - "role_order": "[\n \"lead\",\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"regular\",\n \"tutorial\"\n]", + "role_order": [ + "lead", + "chair", + "secr" + ], + "session_purposes": [ + "regular", + "tutorial" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3604,7 +4082,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": true, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": true, @@ -3612,10 +4092,24 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"chair\",\n \"secr\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"IRTF Chair\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "chair", + "secr", + "delegate" + ], + "docman_roles": [ + "chair", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "IRTF Chair" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": true, @@ -3625,15 +4119,26 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate", + "secr" + ], "need_parent": false, "parent_types": [ "irtf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3643,7 +4148,10 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\",\n \"secr\"\n]", + "admin_roles": [ + "chair", + "secr" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": true, @@ -3651,10 +4159,24 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.review_requests", - "default_used_roles": "[\n \"ad\",\n \"chair\",\n \"reviewer\",\n \"secr\",\n \"delegate\"\n]", - "docman_roles": "[\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"ad\",\n \"secr\",\n \"delegate\"\n]", + "default_used_roles": [ + "ad", + "chair", + "reviewer", + "secr", + "delegate" + ], + "docman_roles": [ + "secr" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "ad", + "secr", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3664,15 +4186,26 @@ "has_reviews": true, "has_session_materials": true, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "secr" + ], "need_parent": true, "parent_types": [ "area" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"open_meeting\",\n \"social\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "open_meeting", + "social" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3682,7 +4215,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": false, @@ -3690,10 +4225,19 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"auth\",\n \"chair\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[\n \"chair\"\n]", + "default_used_roles": [ + "auth", + "chair" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [ + "chair" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3703,13 +4247,23 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair" + ], "need_parent": false, "parent_types": [], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\"\n]", - "session_purposes": "[\n \"officehours\",\n \"regular\"\n]", + "role_order": [ + "chair", + "secr" + ], + "session_purposes": [ + "officehours", + "regular" + ], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3719,7 +4273,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": true, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": true, @@ -3727,10 +4283,25 @@ "customize_workflow": true, "default_parent": "irtf", "default_tab": "ietf.group.views.group_documents", - "default_used_roles": "[\n \"chair\",\n \"techadv\",\n \"secr\",\n \"delegate\"\n]", - "docman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"IRTF Chair\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "chair", + "techadv", + "secr", + "delegate" + ], + "docman_roles": [ + "chair", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "IRTF Chair" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": true, "has_default_chat": true, "has_documents": true, @@ -3740,15 +4311,27 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "delegate", + "secr" + ], "need_parent": true, "parent_types": [ "irtf" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair", + "delegate", + "secr" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3758,7 +4341,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "none", "agenda_type": null, "create_wiki": false, @@ -3766,10 +4351,23 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"liaiman\",\n \"ceo\",\n \"coord\",\n \"auth\",\n \"chair\",\n \"liaison_contact\",\n \"liaison_cc_contact\"\n]", - "docman_roles": "[\n \"liaiman\",\n \"matman\"\n]", - "groupman_authroles": "[\n \"Secretariat\"\n]", - "groupman_roles": "[]", + "default_used_roles": [ + "liaiman", + "ceo", + "coord", + "auth", + "chair", + "liaison_contact", + "liaison_cc_contact" + ], + "docman_roles": [ + "liaiman", + "matman" + ], + "groupman_authroles": [ + "Secretariat" + ], + "groupman_roles": [], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3779,16 +4377,20 @@ "has_reviews": false, "has_session_materials": false, "is_schedulable": false, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[]", + "material_types": [ + "slides" + ], + "matman_roles": [], "need_parent": false, "parent_types": [ "area", "sdo" ], "req_subm_approval": true, - "role_order": "[\n \"liaiman\"\n]", - "session_purposes": "[]", + "role_order": [ + "liaiman" + ], + "session_purposes": [], "show_on_agenda": false }, "model": "group.groupfeatures", @@ -3798,7 +4400,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": false, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "special", "agenda_type": "ietf", "create_wiki": true, @@ -3806,10 +4410,28 @@ "customize_workflow": false, "default_parent": "", "default_tab": "ietf.group.views.group_about", - "default_used_roles": "[\n \"ad\",\n \"member\",\n \"delegate\",\n \"secr\",\n \"liaison\",\n \"atlarge\",\n \"chair\",\n \"matman\",\n \"techadv\"\n]", - "docman_roles": "[\n \"chair\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"Area Director\"\n]", - "groupman_roles": "[\n \"chair\",\n \"delegate\"\n]", + "default_used_roles": [ + "ad", + "member", + "delegate", + "secr", + "liaison", + "atlarge", + "chair", + "matman", + "techadv" + ], + "docman_roles": [ + "chair" + ], + "groupman_authroles": [ + "Secretariat", + "Area Director" + ], + "groupman_roles": [ + "chair", + "delegate" + ], "has_chartering_process": false, "has_default_chat": false, "has_documents": false, @@ -3819,15 +4441,29 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"chair\",\n \"matman\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "chair", + "matman" + ], "need_parent": false, "parent_types": [ "area" ], "req_subm_approval": false, - "role_order": "[\n \"chair\",\n \"member\",\n \"matman\"\n]", - "session_purposes": "[\n \"coding\",\n \"presentation\",\n \"social\",\n \"tutorial\"\n]", + "role_order": [ + "chair", + "member", + "matman" + ], + "session_purposes": [ + "coding", + "presentation", + "social", + "tutorial" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -3837,7 +4473,9 @@ "fields": { "about_page": "ietf.group.views.group_about", "acts_like_wg": true, - "admin_roles": "[\n \"chair\"\n]", + "admin_roles": [ + "chair" + ], "agenda_filter_type": "normal", "agenda_type": "ietf", "create_wiki": true, @@ -3845,10 +4483,32 @@ "customize_workflow": true, "default_parent": "", "default_tab": "ietf.group.views.group_documents", - "default_used_roles": "[\n \"ad\",\n \"editor\",\n \"delegate\",\n \"secr\",\n \"chair\",\n \"matman\",\n \"techadv\",\n \"liaison_contact\",\n \"liaison_cc_contact\"\n]", - "docman_roles": "[\n \"chair\",\n \"delegate\",\n \"secr\"\n]", - "groupman_authroles": "[\n \"Secretariat\",\n \"Area Director\"\n]", - "groupman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "default_used_roles": [ + "ad", + "editor", + "delegate", + "secr", + "chair", + "matman", + "techadv", + "liaison_contact", + "liaison_cc_contact" + ], + "docman_roles": [ + "chair", + "delegate", + "secr" + ], + "groupman_authroles": [ + "Secretariat", + "Area Director" + ], + "groupman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "has_chartering_process": true, "has_default_chat": true, "has_documents": true, @@ -3858,15 +4518,28 @@ "has_reviews": false, "has_session_materials": true, "is_schedulable": true, - "material_types": "[\n \"slides\"\n]", - "matman_roles": "[\n \"ad\",\n \"chair\",\n \"delegate\",\n \"secr\"\n]", + "material_types": [ + "slides" + ], + "matman_roles": [ + "ad", + "chair", + "delegate", + "secr" + ], "need_parent": false, "parent_types": [ "area" ], "req_subm_approval": true, - "role_order": "[\n \"chair\",\n \"secr\",\n \"delegate\"\n]", - "session_purposes": "[\n \"regular\"\n]", + "role_order": [ + "chair", + "secr", + "delegate" + ], + "session_purposes": [ + "regular" + ], "show_on_agenda": true }, "model": "group.groupfeatures", @@ -5392,6 +6065,21 @@ "model": "mailtrigger.mailtrigger", "pk": "review_completed_opsdir_telechat" }, + { + "fields": { + "cc": [ + "ietf_last_call", + "review_doc_all_parties", + "review_doc_group_mail_list" + ], + "desc": "Recipients when a perfmetrdir IETF Last Call review is completed", + "to": [ + "review_team_mail_list" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "review_completed_perfmetrdir_lc" + }, { "fields": { "cc": [ @@ -13849,7 +14537,10 @@ "name": "Administrative", "on_agenda": true, "order": 5, - "timeslot_types": "[\n \"other\",\n \"reg\"\n]", + "timeslot_types": [ + "other", + "reg" + ], "used": true }, "model": "name.sessionpurposename", @@ -13861,7 +14552,10 @@ "name": "Closed meeting", "on_agenda": false, "order": 10, - "timeslot_types": "[\n \"other\",\n \"regular\"\n]", + "timeslot_types": [ + "other", + "regular" + ], "used": true }, "model": "name.sessionpurposename", @@ -13873,7 +14567,9 @@ "name": "Coding", "on_agenda": true, "order": 4, - "timeslot_types": "[\n \"other\"\n]", + "timeslot_types": [ + "other" + ], "used": true }, "model": "name.sessionpurposename", @@ -13885,7 +14581,7 @@ "name": "None", "on_agenda": true, "order": 0, - "timeslot_types": "[]", + "timeslot_types": [], "used": false }, "model": "name.sessionpurposename", @@ -13897,7 +14593,9 @@ "name": "Office hours", "on_agenda": true, "order": 3, - "timeslot_types": "[\n \"other\"\n]", + "timeslot_types": [ + "other" + ], "used": true }, "model": "name.sessionpurposename", @@ -13909,7 +14607,9 @@ "name": "Open meeting", "on_agenda": true, "order": 9, - "timeslot_types": "[\n \"other\"\n]", + "timeslot_types": [ + "other" + ], "used": true }, "model": "name.sessionpurposename", @@ -13921,7 +14621,9 @@ "name": "Plenary", "on_agenda": true, "order": 7, - "timeslot_types": "[\n \"plenary\"\n]", + "timeslot_types": [ + "plenary" + ], "used": true }, "model": "name.sessionpurposename", @@ -13933,7 +14635,10 @@ "name": "Presentation", "on_agenda": true, "order": 8, - "timeslot_types": "[\n \"other\",\n \"regular\"\n]", + "timeslot_types": [ + "other", + "regular" + ], "used": true }, "model": "name.sessionpurposename", @@ -13945,7 +14650,9 @@ "name": "Regular", "on_agenda": true, "order": 1, - "timeslot_types": "[\n \"regular\"\n]", + "timeslot_types": [ + "regular" + ], "used": true }, "model": "name.sessionpurposename", @@ -13957,7 +14664,10 @@ "name": "Social", "on_agenda": true, "order": 6, - "timeslot_types": "[\n \"break\",\n \"other\"\n]", + "timeslot_types": [ + "break", + "other" + ], "used": true }, "model": "name.sessionpurposename", @@ -13969,7 +14679,9 @@ "name": "Tutorial", "on_agenda": true, "order": 2, - "timeslot_types": "[\n \"other\"\n]", + "timeslot_types": [ + "other" + ], "used": true }, "model": "name.sessionpurposename", diff --git a/ietf/name/migrations/0019_alter_sessionpurposename_timeslot_types.py b/ietf/name/migrations/0019_alter_sessionpurposename_timeslot_types.py new file mode 100644 index 0000000000..a0ca81836d --- /dev/null +++ b/ietf/name/migrations/0019_alter_sessionpurposename_timeslot_types.py @@ -0,0 +1,27 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models +import ietf.utils.validators + + +class Migration(migrations.Migration): + dependencies = [ + ("name", "0018_alter_rolenames"), + ] + + operations = [ + migrations.AlterField( + model_name="sessionpurposename", + name="timeslot_types", + field=models.JSONField( + default=list, + help_text="Allowed TimeSlotTypeNames", + max_length=256, + validators=[ + ietf.utils.validators.JSONForeignKeyListValidator( + "name.TimeSlotTypeName" + ) + ], + ), + ), + ] diff --git a/ietf/name/models.py b/ietf/name/models.py index 0e87d43548..24104c5f45 100644 --- a/ietf/name/models.py +++ b/ietf/name/models.py @@ -1,8 +1,6 @@ # Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -import jsonfield - from django.db import models from ietf.utils.models import ForeignKey @@ -73,8 +71,8 @@ class SessionStatusName(NameModel): """Waiting for Approval, Approved, Waiting for Scheduling, Scheduled, Cancelled, Disapproved""" class SessionPurposeName(NameModel): """Regular, Tutorial, Office Hours, Coding, Social, Admin""" - timeslot_types = jsonfield.JSONField( - max_length=256, blank=False, default=[], + timeslot_types = models.JSONField( + max_length=256, blank=False, default=list, help_text='Allowed TimeSlotTypeNames', validators=[JSONForeignKeyListValidator('name.TimeSlotTypeName')], ) diff --git a/ietf/person/migrations/0005_alter_historicalperson_pronouns_selectable_and_more.py b/ietf/person/migrations/0005_alter_historicalperson_pronouns_selectable_and_more.py new file mode 100644 index 0000000000..2af874b1fa --- /dev/null +++ b/ietf/person/migrations/0005_alter_historicalperson_pronouns_selectable_and_more.py @@ -0,0 +1,34 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("person", "0004_alter_person_photo_alter_person_photo_thumb"), + ] + + operations = [ + migrations.AlterField( + model_name="historicalperson", + name="pronouns_selectable", + field=models.JSONField( + blank=True, + default=list, + max_length=120, + null=True, + verbose_name="Pronouns", + ), + ), + migrations.AlterField( + model_name="person", + name="pronouns_selectable", + field=models.JSONField( + blank=True, + default=list, + max_length=120, + null=True, + verbose_name="Pronouns", + ), + ), + ] diff --git a/ietf/person/models.py b/ietf/person/models.py index 93364478ae..03cf0c87fb 100644 --- a/ietf/person/models.py +++ b/ietf/person/models.py @@ -4,7 +4,6 @@ import email.utils import email.header -import jsonfield import uuid from hashids import Hashids @@ -57,7 +56,7 @@ class Person(models.Model): ascii = models.CharField("Full Name (ASCII)", max_length=255, help_text="Name as rendered in ASCII (Latin, unaccented) characters.", validators=[name_character_validator]) # The short ascii-form of the name. Also in alias table if non-null ascii_short = models.CharField("Abbreviated Name (ASCII)", max_length=32, null=True, blank=True, help_text="Example: A. Nonymous. Fill in this with initials and surname only if taking the initials and surname of the ASCII name above produces an incorrect initials-only form. (Blank is OK).", validators=[name_character_validator]) - pronouns_selectable = jsonfield.JSONCharField("Pronouns", max_length=120, blank=True, null=True, default=list ) + pronouns_selectable = models.JSONField("Pronouns", max_length=120, blank=True, null=True, default=list ) pronouns_freetext = models.CharField(" ", max_length=30, null=True, blank=True, help_text="Optionally provide your personal pronouns. These will be displayed on your public profile page and alongside your name in Meetecho and, in future, other systems. Select any number of the checkboxes OR provide a custom string up to 30 characters.") biography = models.TextField(blank=True, help_text="Short biography for use on leadership pages. Use plain text or reStructuredText markup.") photo = models.ImageField( diff --git a/ietf/submit/migrations/0003_alter_submission_authors_alter_submissioncheck_items.py b/ietf/submit/migrations/0003_alter_submission_authors_alter_submissioncheck_items.py new file mode 100644 index 0000000000..2c51659204 --- /dev/null +++ b/ietf/submit/migrations/0003_alter_submission_authors_alter_submissioncheck_items.py @@ -0,0 +1,46 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +def forward(apps, schema_editor): + JSON_ENCODED_NULL = r"\u0000" + NULL = "\x00" + NUL_SYMBOL = "\u2400" # Unicode single-char "NUL" symbol + + Submission = apps.get_model("submit", "Submission") + # The qs filter sees the serialized JSON string... + null_in_authors = Submission.objects.filter(authors__contains=JSON_ENCODED_NULL) + for submission in null_in_authors: + # submission.authors is now deserialized into Python objects + for author in submission.authors: + for k in author: + author[k] = author[k].replace(NULL, NUL_SYMBOL) + submission.save() + + +def reverse(apps, schema_editor): + pass # don't restore invalid data + + +class Migration(migrations.Migration): + dependencies = [ + ("submit", "0002_alter_submission_xml_version"), + ] + + operations = [ + migrations.RunPython(forward, reverse), + migrations.AlterField( + model_name="submission", + name="authors", + field=models.JSONField( + default=list, + help_text="List of authors with name, email, affiliation and country.", + ), + ), + migrations.AlterField( + model_name="submissioncheck", + name="items", + field=models.JSONField(blank=True, default=dict, null=True), + ), + ] diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 1145f761b4..576ba3e114 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -3,7 +3,6 @@ import email -import jsonfield from django.db import models from django.utils import timezone @@ -46,7 +45,9 @@ class Submission(models.Model): words = models.IntegerField(null=True, blank=True) formal_languages = models.ManyToManyField(FormalLanguageName, blank=True, help_text="Formal languages used in document") - authors = jsonfield.JSONField(default=list, help_text="List of authors with name, email, affiliation and country.") + authors = models.JSONField(default=list, help_text="List of authors with name, email, affiliation and country.") + # Schema note: authors is a list of authors. Each author is a JSON object with + # "name", "email", "affiliation", and "country" keys. All values are strings. note = models.TextField(blank=True) replaces = models.CharField(max_length=1000, blank=True) @@ -135,7 +136,7 @@ class SubmissionCheck(models.Model): message = models.TextField(null=True, blank=True) errors = models.IntegerField(null=True, blank=True, default=None) warnings = models.IntegerField(null=True, blank=True, default=None) - items = jsonfield.JSONField(null=True, blank=True, default='{}') + items = models.JSONField(null=True, blank=True, default=dict) symbol = models.CharField(max_length=64, default='') # def __str__(self): diff --git a/ietf/utils/db.py b/ietf/utils/db.py index d451f6cfd8..865c9b999f 100644 --- a/ietf/utils/db.py +++ b/ietf/utils/db.py @@ -6,12 +6,34 @@ # # JSONField should recognize {}, (), and [] as valid, non-empty JSON # values. However, the base Field class excludes them + import jsonfield +from django.db import models + +from ietf.utils.fields import IETFJSONField as FormIETFJSONField, EmptyAwareJSONField as FormEmptyAwareJSONField + + +class EmptyAwareJSONField(models.JSONField): + form_class = FormEmptyAwareJSONField + + def __init__(self, *args, empty_values=FormEmptyAwareJSONField.empty_values, accepted_empty_values=None, **kwargs): + if accepted_empty_values is None: + accepted_empty_values = [] + self.empty_values = [x + for x in empty_values + if x not in accepted_empty_values] + super().__init__(*args, **kwargs) -from ietf.utils.fields import IETFJSONField as FormIETFJSONField + def formfield(self, **kwargs): + if 'form_class' not in kwargs or issubclass(kwargs['form_class'], FormEmptyAwareJSONField): + kwargs.setdefault('empty_values', self.empty_values) + return super().formfield(**{**kwargs}) -class IETFJSONField(jsonfield.JSONField): +class IETFJSONField(jsonfield.JSONField): # pragma: no cover + # Deprecated - use EmptyAwareJSONField instead (different base class requires a + # new field name) + # Remove this class when migrations are squashed and it is no longer referenced form_class = FormIETFJSONField def __init__(self, *args, empty_values=FormIETFJSONField.empty_values, accepted_empty_values=None, **kwargs): diff --git a/ietf/utils/fields.py b/ietf/utils/fields.py index 3e6f56d45e..ba3fecebc6 100644 --- a/ietf/utils/fields.py +++ b/ietf/utils/fields.py @@ -6,8 +6,6 @@ import json import re -import jsonfield - import debug # pyflakes:ignore from typing import Optional, Type # pyflakes:ignore @@ -328,8 +326,21 @@ def has_changed(self, initial, data): return super().has_changed(initial, data) -class IETFJSONField(jsonfield.fields.forms.JSONField): - def __init__(self, *args, empty_values=jsonfield.fields.forms.JSONField.empty_values, +class IETFJSONField(forms.JSONField): # pragma: no cover + # Deprecated - use EmptyAwareJSONField instead + def __init__(self, *args, empty_values=forms.JSONField.empty_values, + accepted_empty_values=None, **kwargs): + if accepted_empty_values is None: + accepted_empty_values = [] + self.empty_values = [x + for x in empty_values + if x not in accepted_empty_values] + + super().__init__(*args, **kwargs) + + +class EmptyAwareJSONField(forms.JSONField): + def __init__(self, *args, empty_values=forms.JSONField.empty_values, accepted_empty_values=None, **kwargs): if accepted_empty_values is None: accepted_empty_values = [] From 711313d983d1d5ec9afe8c014a76959e04c04632 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 19 Aug 2025 12:08:11 -0300 Subject: [PATCH 620/846] chore: postgresql-client-17 for base.Dockerfile (#9378) --- docker/base.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile index f364456c7a..57aac8ee56 100644 --- a/docker/base.Dockerfile +++ b/docker/base.Dockerfile @@ -69,7 +69,7 @@ RUN apt-get update --fix-missing && apt-get install -qy --no-install-recommends nodejs \ pgloader \ pigz \ - postgresql-client-14 \ + postgresql-client-17 \ pv \ python3-ipython \ ripgrep \ From 811216838823507b911635967a012bc41f43edd5 Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Tue, 19 Aug 2025 15:21:46 +0000 Subject: [PATCH 621/846] ci: update base image target version to 20250819T1508 --- 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 0ecf9566ef..756b7021b7 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250807T1514 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250819T1508 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 327fb48da4..2e0f1519da 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250807T1514 +20250819T1508 From 566cf50b39fa4b0e7882a12b8ce977c29192009f Mon Sep 17 00:00:00 2001 From: "A. Nour" Date: Tue, 19 Aug 2025 17:52:56 +0100 Subject: [PATCH 622/846] feat: add auto-generated IPR email notifications on WG Call for Adoption or WG Last Call (#9322) * feat(documents): add auto-generated IPR email notifications on WG Call for Adoption or WG Last Call * fix: edit call durations in mails and call logic under new_state in views * fix: calc end_date as 7 * call_duration * feat(mailtrigger): added new mailtrigger for wg-lc and rfc stream states * test: add mailtrigger test fixtures and new tests * fix: use two action-oriented mailtrigger names The two actions have the same recipients to start with, but that may change over time. Mailtrigger names should describe "what happened to trigger this email?". Changed the utility names to match the actions. * fix: send from whomever issued the call Using a list name as the From will not work - the mail infrastructure blocks such mail when it is submitted. * chore: revert ietf/doc/tests_draft.py * fix: trigger call for adoption email from manage adoption view * fix: changed template names to match functions * fix: match the subject requested in the issue * fix: Initial tests * fix: pass duration to the email message generator * fix: only issue the c-adopt and wg-lc email for ietf-stream docs * chore: remove stray whitespace --------- Co-authored-by: Robert Sparks --- ietf/doc/mails.py | 55 +++++ ietf/doc/tests_draft.py | 205 +++++++++++++++++- ietf/doc/views_draft.py | 17 +- ..._call_for_adoption_and_last_call_issued.py | 43 ++++ ietf/name/fixtures/names.json | 28 +++ .../doc/mail/wg_call_for_adoption_issued.txt | 21 ++ .../doc/mail/wg_last_call_issued.txt | 22 ++ 7 files changed, 385 insertions(+), 6 deletions(-) create mode 100644 ietf/mailtrigger/migrations/0006_call_for_adoption_and_last_call_issued.py create mode 100644 ietf/templates/doc/mail/wg_call_for_adoption_issued.txt create mode 100644 ietf/templates/doc/mail/wg_last_call_issued.txt diff --git a/ietf/doc/mails.py b/ietf/doc/mails.py index ddecbb6b54..f20d398c3c 100644 --- a/ietf/doc/mails.py +++ b/ietf/doc/mails.py @@ -103,6 +103,61 @@ def email_stream_changed(request, doc, old_stream, new_stream, text=""): dict(text=text, url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()), cc=cc) + +def email_wg_call_for_adoption_issued(request, doc, cfa_duration_weeks=None): + if cfa_duration_weeks is None: + cfa_duration_weeks=2 + (to, cc) = gather_address_lists("doc_wg_call_for_adoption_issued", doc=doc) + frm = request.user.person.formatted_email() + + end_date = date_today(DEADLINE_TZINFO) + datetime.timedelta(days=7 * cfa_duration_weeks) + + subject = f"Call for adoption: {doc.name}-{doc.rev} (Ends {end_date})" + + send_mail( + request, + to, + frm, + subject, + "doc/mail/wg_call_for_adoption_issued.txt", + dict( + doc=doc, + subject=subject, + url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(), + end_date=end_date, + cfa_duration_weeks=cfa_duration_weeks, + wg_list=doc.group.list_email, + ), + cc=cc, + ) + + +def email_wg_last_call_issued(request, doc, wglc_duration_weeks=None): + if wglc_duration_weeks is None: + wglc_duration_weeks = 2 + (to, cc) = gather_address_lists("doc_wg_last_call_issued", doc=doc) + frm = request.user.person.formatted_email() + + + end_date = date_today(DEADLINE_TZINFO) + datetime.timedelta(days=7 * wglc_duration_weeks) + subject = f"WG Last Call: {doc.name}-{doc.rev} (Ends {end_date})" + + send_mail( + request, + to, + frm, + subject, + "doc/mail/wg_last_call_issued.txt", + dict( + doc=doc, + subject=subject, + url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(), + end_date=end_date, + wglc_duration_weeks=wglc_duration_weeks, + wg_list=doc.group.list_email, + ), + cc=cc, + ) def email_pulled_from_rfc_queue(request, doc, comment, prev_state, next_state): extra=extra_automation_headers(doc) diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index 576feb0582..ab7eaba768 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -1707,11 +1707,12 @@ def test_adopt_document(self): self.assertEqual(draft.group, chair_role.group) self.assertEqual(draft.stream_id, stream_state_type_slug[type_id][13:]) # trim off "draft-stream-" self.assertEqual(draft.docevent_set.count() - events_before, 5) - self.assertEqual(len(outbox), 1) - self.assertTrue("Call For Adoption" in outbox[-1]["Subject"]) - self.assertTrue(f"{chair_role.group.acronym}-chairs@" in outbox[-1]['To']) - self.assertTrue(f"{draft.name}@" in outbox[-1]['To']) - self.assertTrue(f"{chair_role.group.acronym}@" in outbox[-1]['To']) + self.assertEqual(len(outbox), 2) + self.assertTrue("Call For Adoption" in outbox[0]["Subject"]) + self.assertTrue(f"{chair_role.group.acronym}-chairs@" in outbox[0]['To']) + self.assertTrue(f"{draft.name}@" in outbox[0]['To']) + self.assertTrue(f"{chair_role.group.acronym}@" in outbox[0]['To']) + # contents of outbox[1] are tested elsewhere # adopt empty_outbox() @@ -2001,6 +2002,200 @@ def test_set_state(self): self.assertTrue("mars-chairs@ietf.org" in outbox[0].as_string()) self.assertTrue("marsdelegate@ietf.org" in outbox[0].as_string()) + def test_wg_call_for_adoption_issued(self): + role = RoleFactory( + name_id="chair", + group__acronym="mars", + group__list_email="mars-wg@ietf.org", + person__user__username="marschairman", + person__name="WG Cháir Man", + ) + # First test the usual workflow through the manage adoption view + draft = IndividualDraftFactory() + url = urlreverse( + "ietf.doc.views_draft.adopt_draft", kwargs=dict(name=draft.name) + ) + login_testing_unauthorized(self, "marschairman", url) + empty_outbox() + call_issued = State.objects.get(type="draft-stream-ietf", slug="c-adopt") + r = self.client.post( + url, + dict( + comment="some comment", + group=role.group.pk, + newstate=call_issued.pk, + weeks="10", + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("Call for adoption", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 10-week", body) + # Test not entering a duration on the form + draft = IndividualDraftFactory() + url = urlreverse( + "ietf.doc.views_draft.adopt_draft", kwargs=dict(name=draft.name) + ) + empty_outbox() + call_issued = State.objects.get(type="draft-stream-ietf", slug="c-adopt") + r = self.client.post( + url, + dict( + comment="some comment", + group=role.group.pk, + newstate=call_issued.pk, + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("Call for adoption", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 2-week", body) + + # Test the less usual workflow of issuing a call for adoption + # of a document that's already in the ietf stream + draft = WgDraftFactory(group=role.group) + url = urlreverse( + "ietf.doc.views_draft.change_stream_state", + kwargs=dict(name=draft.name, state_type="draft-stream-ietf"), + ) + old_state = draft.get_state("draft-stream-%s" % draft.stream_id) + new_state = State.objects.get( + used=True, type="draft-stream-%s" % draft.stream_id, slug="c-adopt" + ) + self.assertNotEqual(old_state, new_state) + empty_outbox() + r = self.client.post( + url, + dict( + new_state=new_state.pk, + comment="some comment", + weeks="10", + tags=[ + t.pk + for t in draft.tags.filter( + slug__in=get_tags_for_stream_id(draft.stream_id) + ) + ], + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("Call for adoption", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 10-week", body) + draft = WgDraftFactory(group=role.group) + url = urlreverse( + "ietf.doc.views_draft.change_stream_state", + kwargs=dict(name=draft.name, state_type="draft-stream-ietf"), + ) + old_state = draft.get_state("draft-stream-%s" % draft.stream_id) + new_state = State.objects.get( + used=True, type="draft-stream-%s" % draft.stream_id, slug="c-adopt" + ) + self.assertNotEqual(old_state, new_state) + empty_outbox() + r = self.client.post( + url, + dict( + new_state=new_state.pk, + comment="some comment", + tags=[ + t.pk + for t in draft.tags.filter( + slug__in=get_tags_for_stream_id(draft.stream_id) + ) + ], + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("Call for adoption", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 2-week", body) + + def test_wg_last_call_issued(self): + role = RoleFactory( + name_id="chair", + group__acronym="mars", + group__list_email="mars-wg@ietf.org", + person__user__username="marschairman", + person__name="WG Cháir Man", + ) + draft = WgDraftFactory(group=role.group) + url = urlreverse( + "ietf.doc.views_draft.change_stream_state", + kwargs=dict(name=draft.name, state_type="draft-stream-ietf"), + ) + login_testing_unauthorized(self, "marschairman", url) + old_state = draft.get_state("draft-stream-%s" % draft.stream_id) + new_state = State.objects.get( + used=True, type="draft-stream-%s" % draft.stream_id, slug="wg-lc" + ) + self.assertNotEqual(old_state, new_state) + empty_outbox() + r = self.client.post( + url, + dict( + new_state=new_state.pk, + comment="some comment", + weeks="10", + tags=[ + t.pk + for t in draft.tags.filter( + slug__in=get_tags_for_stream_id(draft.stream_id) + ) + ], + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("WG Last Call", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 10-week", body) + draft = WgDraftFactory(group=role.group) + url = urlreverse( + "ietf.doc.views_draft.change_stream_state", + kwargs=dict(name=draft.name, state_type="draft-stream-ietf"), + ) + old_state = draft.get_state("draft-stream-%s" % draft.stream_id) + new_state = State.objects.get( + used=True, type="draft-stream-%s" % draft.stream_id, slug="wg-lc" + ) + self.assertNotEqual(old_state, new_state) + empty_outbox() + r = self.client.post( + url, + dict( + new_state=new_state.pk, + comment="some comment", + tags=[ + t.pk + for t in draft.tags.filter( + slug__in=get_tags_for_stream_id(draft.stream_id) + ) + ], + ), + ) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(outbox), 2) + self.assertIn("mars-wg@ietf.org", outbox[1]["To"]) + self.assertIn("WG Last Call", outbox[1]["Subject"]) + body = get_payload_text(outbox[1]) + self.assertIn("disclosure obligations", body) + self.assertIn("starts a 2-week", body) + def test_pubreq_validation(self): role = RoleFactory(name_id='chair',group__acronym='mars',group__list_email='mars-wg@ietf.org',person__user__username='marschairman',person__name='WG Cháir Man') RoleFactory(name_id='delegate',group=role.group,person__user__email='marsdelegate@ietf.org') diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index c80537afb3..16d04ee66a 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -28,6 +28,7 @@ IanaExpertDocEvent, IESG_SUBSTATE_TAGS) from ietf.doc.mails import ( email_pulled_from_rfc_queue, email_resurrect_requested, email_resurrection_completed, email_state_changed, email_stream_changed, + email_wg_call_for_adoption_issued, email_wg_last_call_issued, email_stream_state_changed, email_stream_tags_changed, extra_automation_headers, generate_publication_request, email_adopted, email_intended_status_changed, email_iesg_processing_document, email_ad_approved_doc, @@ -1568,8 +1569,15 @@ def adopt_draft(request, name): update_reminder(doc, "stream-s", e, due_date) + # The following call name is very misleading - the view allows + # setting states that are _not_ the adopted state. email_adopted(request, doc, prev_state, new_state, by, comment) + # Currently only the IETF stream uses the c-adopt state - guard against other + # streams starting to use it asthe IPR rules for those streams will be different. + if doc.stream_id == "ietf" and new_state.slug == "c-adopt": + email_wg_call_for_adoption_issued(request, doc, cfa_duration_weeks=form.cleaned_data["weeks"]) + # comment if comment: e = DocEvent(type="added_comment", doc=doc, rev=doc.rev, by=by) @@ -1754,13 +1762,20 @@ def change_stream_state(request, name, state_type): events.append(e) due_date = None - if form.cleaned_data["weeks"] != None: + if form.cleaned_data["weeks"] is not None: due_date = datetime_today(DEADLINE_TZINFO) + datetime.timedelta(weeks=form.cleaned_data["weeks"]) update_reminder(doc, "stream-s", e, due_date) email_stream_state_changed(request, doc, prev_state, new_state, by, comment) + if doc.stream_id == "ietf": + if new_state.slug == "c-adopt": + email_wg_call_for_adoption_issued(request, doc, cfa_duration_weeks=form.cleaned_data["weeks"]) + + if new_state.slug == "wg-lc": + email_wg_last_call_issued(request, doc, wglc_duration_weeks=form.cleaned_data["weeks"]) + # tags existing_tags = set(doc.tags.all()) new_tags = set(form.cleaned_data["tags"]) diff --git a/ietf/mailtrigger/migrations/0006_call_for_adoption_and_last_call_issued.py b/ietf/mailtrigger/migrations/0006_call_for_adoption_and_last_call_issued.py new file mode 100644 index 0000000000..7adad150eb --- /dev/null +++ b/ietf/mailtrigger/migrations/0006_call_for_adoption_and_last_call_issued.py @@ -0,0 +1,43 @@ +# Copyright The IETF Trust 2023, All Rights Reserved + +from django.db import migrations + + +def forward(apps, schema_editor): + MailTrigger = apps.get_model("mailtrigger", "MailTrigger") + Recipient = apps.get_model("mailtrigger", "Recipient") + recipients = list( + Recipient.objects.filter( + slug__in=( + "doc_group_mail_list", + "doc_authors", + "doc_group_chairs", + "doc_shepherd", + ) + ) + ) + call_for_adoption = MailTrigger.objects.create( + slug="doc_wg_call_for_adoption_issued", + desc="Recipients when a working group call for adoption is issued", + ) + call_for_adoption.to.add(*recipients) + wg_last_call = MailTrigger.objects.create( + slug="doc_wg_last_call_issued", + desc="Recipients when a working group last call is issued", + ) + wg_last_call.to.add(*recipients) + + +def reverse(apps, schema_editor): + MailTrigger = apps.get_model("mailtrigger", "MailTrigger") + MailTrigger.objects.filter( + slug_in=("doc_wg_call_for_adoption_issued", "doc_wg_last_call_issued") + ).delete() + + +class Migration(migrations.Migration): + dependencies = [ + ("mailtrigger", "0005_rfc_recipients"), + ] + + operations = [migrations.RunPython(forward, reverse)] diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 0724cbb4b5..c94e15a459 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -5116,6 +5116,34 @@ "model": "mailtrigger.mailtrigger", "pk": "doc_telechat_details_changed" }, + { + "fields": { + "cc": [], + "desc": "Recipients when a working group call for adoption is issued", + "to": [ + "doc_authors", + "doc_group_chairs", + "doc_group_mail_list", + "doc_shepherd" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "doc_wg_call_for_adoption_issued" + }, + { + "fields": { + "cc": [], + "desc": "Recipients when a working group last call is issued", + "to": [ + "doc_authors", + "doc_group_chairs", + "doc_group_mail_list", + "doc_shepherd" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "doc_wg_last_call_issued" + }, { "fields": { "cc": [], diff --git a/ietf/templates/doc/mail/wg_call_for_adoption_issued.txt b/ietf/templates/doc/mail/wg_call_for_adoption_issued.txt new file mode 100644 index 0000000000..c4a2401bc2 --- /dev/null +++ b/ietf/templates/doc/mail/wg_call_for_adoption_issued.txt @@ -0,0 +1,21 @@ +{% load ietf_filters %}{% load mail_filters %}{% autoescape off %}{% filter wordwrap:78 %} +Subject: {{ subject }} + +This message starts a {{ cfa_duration_weeks }}-week Call for Adoption for this document. + +Abstract: +{{ doc.abstract }} + +File can be retrieved from: +{{ url }} + +Please reply to this message keeping {{ wg_list }} in copy by indicating whether you support or not the adoption of this draft as a WG document. Comments to motivate your preference are highly appreciated. + +Authors, and WG participants in general, are reminded of the Intellectual Property Rights (IPR) disclosure obligations described in BCP 79 [2]. Appropriate IPR disclosures required for full conformance with the provisions of BCP 78 [1] and BCP 79 [2] must be filed, if you are aware of any. Sanctions available for application to violators of IETF IPR Policy can be found at [3]. + +Thank you. +[1] https://datatracker.ietf.org/doc/bcp78/ +[2] https://datatracker.ietf.org/doc/bcp79/ +[3] https://datatracker.ietf.org/doc/rfc6701/ +{% endfilter %} +{% endautoescape %} diff --git a/ietf/templates/doc/mail/wg_last_call_issued.txt b/ietf/templates/doc/mail/wg_last_call_issued.txt new file mode 100644 index 0000000000..35b1e149d7 --- /dev/null +++ b/ietf/templates/doc/mail/wg_last_call_issued.txt @@ -0,0 +1,22 @@ +{% load ietf_filters %}{% load mail_filters %}{% autoescape off %}{% filter wordwrap:78 %} +Subject: {{ subject }} + +This message starts a {{ wglc_duration_weeks }}-week WG Last Call for this document. + +Abstract: +{{ doc.abstract }} + +File can be retrieved from: +{{ url }} + +Please review and indicate your support or objection to proceed with the publication of this document by replying to this email keeping {{ wg_list }} in copy. Objections should be motivated and suggestions to resolve them are highly appreciated. + +Authors, and WG participants in general, are reminded again of the Intellectual Property Rights (IPR) disclosure obligations described in BCP 79 [1]. Appropriate IPR disclosures required for full conformance with the provisions of BCP 78 [1] and BCP 79 [2] must be filed, if you are aware of any. Sanctions available for application to violators of IETF IPR Policy can be found at [3]. + +Thank you. + +[1] https://datatracker.ietf.org/doc/bcp78/ +[2] https://datatracker.ietf.org/doc/bcp79/ +[3] https://datatracker.ietf.org/doc/rfc6701/ +{% endfilter %} +{% endautoescape %} From 1e451fbac105b18a3539c406b8380890ee701ef8 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 19 Aug 2025 18:12:38 -0300 Subject: [PATCH 623/846] ci: replace DOCKER_BUILD_NO_SUMMARY (#9383) Option is deprecated; replace with DOCKER_BUILD_SUMMARY: false --- .github/workflows/build-base-app.yml | 2 +- .github/workflows/build-devblobstore.yml | 2 +- .github/workflows/build-mq-broker.yml | 2 +- .github/workflows/dev-assets-sync-nightly.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index 479cd7cadf..ef8a17f6b4 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -43,7 +43,7 @@ jobs: - name: Docker Build & Push uses: docker/build-push-action@v6 env: - DOCKER_BUILD_NO_SUMMARY: true + DOCKER_BUILD_SUMMARY: false with: context: . file: docker/base.Dockerfile diff --git a/.github/workflows/build-devblobstore.yml b/.github/workflows/build-devblobstore.yml index 2d8214b448..f49a11af19 100644 --- a/.github/workflows/build-devblobstore.yml +++ b/.github/workflows/build-devblobstore.yml @@ -35,7 +35,7 @@ jobs: - name: Docker Build & Push uses: docker/build-push-action@v6 env: - DOCKER_BUILD_NO_SUMMARY: true + DOCKER_BUILD_SUMMARY: false with: context: . file: docker/devblobstore.Dockerfile diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 85c27c23cc..4de861dbcd 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -42,7 +42,7 @@ jobs: - name: Docker Build & Push uses: docker/build-push-action@v6 env: - DOCKER_BUILD_NO_SUMMARY: true + DOCKER_BUILD_SUMMARY: false with: context: . file: dev/mq/Dockerfile diff --git a/.github/workflows/dev-assets-sync-nightly.yml b/.github/workflows/dev-assets-sync-nightly.yml index a7fe67f012..19933bddfd 100644 --- a/.github/workflows/dev-assets-sync-nightly.yml +++ b/.github/workflows/dev-assets-sync-nightly.yml @@ -41,7 +41,7 @@ jobs: - name: Docker Build & Push uses: docker/build-push-action@v6 env: - DOCKER_BUILD_NO_SUMMARY: true + DOCKER_BUILD_SUMMARY: false with: context: . file: dev/shared-assets-sync/Dockerfile From b7da3d7a779f310f765f205119624229d9a860d7 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 21 Aug 2025 10:25:49 -0300 Subject: [PATCH 624/846] fix: escape linkify filter input (#9389) * fix: escape linkify filter input * test: exercise linkify * chore: lint --- ietf/utils/templatetags/tests.py | 66 ++++++++++++++++++++++++++ ietf/utils/templatetags/textfilters.py | 10 ++-- ietf/utils/text.py | 6 +++ 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/ietf/utils/templatetags/tests.py b/ietf/utils/templatetags/tests.py index a93bf2d94d..859319be3d 100644 --- a/ietf/utils/templatetags/tests.py +++ b/ietf/utils/templatetags/tests.py @@ -3,6 +3,7 @@ from django.template import Context, Origin, Template from django.test import override_settings +from ietf.utils.templatetags.textfilters import linkify from ietf.utils.test_utils import TestCase import debug # pyflakes: ignore @@ -39,3 +40,68 @@ def test_origin_outside_base_dir(self): output = template.render(Context()) self.assertNotIn(component, output, 'Full path components should not be revealed in html') + + +class TextfiltersTests(TestCase): + def test_linkify(self): + # Cases with autoescape = True (the default) + self.assertEqual( + linkify("plain string"), + "plain string", + ) + self.assertEqual( + linkify("https://www.ietf.org"), + 'https://www.ietf.org', + ) + self.assertEqual( + linkify('IETF'), + ( + '<a href="https://www.ietf.org">IETF</a>' + ), + ) + self.assertEqual( + linkify("somebody@example.com"), + 'somebody@example.com', + ) + self.assertEqual( + linkify("Some Body "), + ( + 'Some Body <' + 'somebody@example.com>' + ), + ) + self.assertEqual( + linkify(""), + "<script>alert('h4x0r3d');</script>", + ) + + # Cases with autoescape = False (these are dangerous and assume the caller + # has sanitized already) + self.assertEqual( + linkify("plain string", autoescape=False), + "plain string", + ) + self.assertEqual( + linkify("https://www.ietf.org", autoescape=False), + 'https://www.ietf.org', + ) + self.assertEqual( + linkify('IETF', autoescape=False), + 'IETF', + ) + self.assertEqual( + linkify("somebody@example.com", autoescape=False), + 'somebody@example.com', + ) + # bleach.Linkifier translates the < -> < and > -> > on this one + self.assertEqual( + linkify("Some Body ", autoescape=False), + ( + 'Some Body <' + 'somebody@example.com>' + ), + ) + self.assertEqual( + linkify("", autoescape=False), + "", + ) diff --git a/ietf/utils/templatetags/textfilters.py b/ietf/utils/templatetags/textfilters.py index 3b240740e0..e3bfbe0c56 100644 --- a/ietf/utils/templatetags/textfilters.py +++ b/ietf/utils/templatetags/textfilters.py @@ -7,6 +7,7 @@ from django import template from django.conf import settings from django.template.defaultfilters import stringfilter +from django.utils.html import conditional_escape from django.utils.safestring import mark_safe import debug # pyflakes:ignore @@ -71,10 +72,13 @@ def texescape_filter(value): "A TeX escape filter" return texescape(value) -@register.filter +@register.filter(needs_autoescape=True) @stringfilter -def linkify(value): - text = mark_safe(_linkify(value)) +def linkify(value, autoescape=True): + if autoescape: + # Escape unless the input was already a SafeString + value = conditional_escape(value) + text = mark_safe(_linkify(value)) # _linkify is a safe operation return text @register.filter diff --git a/ietf/utils/text.py b/ietf/utils/text.py index 4e5d5b6cd5..590ec3fd30 100644 --- a/ietf/utils/text.py +++ b/ietf/utils/text.py @@ -60,6 +60,12 @@ def check_url_validity(attrs, new=False): def linkify(text): + """Convert URL-ish substrings into HTML links + + This does no sanitization whatsoever. Caller must sanitize the input or output as + contextually appropriate. Do not call `mark_safe()` on the output if the input is + user-provided unless it has been sanitized or escaped. + """ return _bleach_linker.linkify(text) From 450ffd8e9e586fbfbc9c583a01ee4770de4f62d9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 21 Aug 2025 10:26:38 -0300 Subject: [PATCH 625/846] chore(deps): bump pytz (#9385) * chore(deps): bump pytz * chore(deps): fix copy/paste error --- ...meeting_country_alter_meeting_time_zone.py | 693 ++++++++++++++++++ requirements.txt | 4 +- 2 files changed, 695 insertions(+), 2 deletions(-) create mode 100644 ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py diff --git a/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py b/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py new file mode 100644 index 0000000000..8f5db26112 --- /dev/null +++ b/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py @@ -0,0 +1,693 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("meeting", "0015_alter_meeting_time_zone"), + ] + + operations = [ + migrations.AlterField( + model_name="meeting", + name="country", + field=models.CharField( + blank=True, + choices=[ + ("", "---------"), + ("AF", "Afghanistan"), + ("AL", "Albania"), + ("DZ", "Algeria"), + ("AD", "Andorra"), + ("AO", "Angola"), + ("AI", "Anguilla"), + ("AQ", "Antarctica"), + ("AG", "Antigua & Barbuda"), + ("AR", "Argentina"), + ("AM", "Armenia"), + ("AW", "Aruba"), + ("AU", "Australia"), + ("AT", "Austria"), + ("AZ", "Azerbaijan"), + ("BS", "Bahamas"), + ("BH", "Bahrain"), + ("BD", "Bangladesh"), + ("BB", "Barbados"), + ("BY", "Belarus"), + ("BE", "Belgium"), + ("BZ", "Belize"), + ("BJ", "Benin"), + ("BM", "Bermuda"), + ("BT", "Bhutan"), + ("BO", "Bolivia"), + ("BA", "Bosnia & Herzegovina"), + ("BW", "Botswana"), + ("BV", "Bouvet Island"), + ("BR", "Brazil"), + ("GB", "Britain (UK)"), + ("IO", "British Indian Ocean Territory"), + ("BN", "Brunei"), + ("BG", "Bulgaria"), + ("BF", "Burkina Faso"), + ("BI", "Burundi"), + ("KH", "Cambodia"), + ("CM", "Cameroon"), + ("CA", "Canada"), + ("CV", "Cape Verde"), + ("BQ", "Caribbean NL"), + ("KY", "Cayman Islands"), + ("CF", "Central African Rep."), + ("TD", "Chad"), + ("CL", "Chile"), + ("CN", "China"), + ("CX", "Christmas Island"), + ("CC", "Cocos (Keeling) Islands"), + ("CO", "Colombia"), + ("KM", "Comoros"), + ("CD", "Congo (Dem. Rep.)"), + ("CG", "Congo (Rep.)"), + ("CK", "Cook Islands"), + ("CR", "Costa Rica"), + ("HR", "Croatia"), + ("CU", "Cuba"), + ("CW", "Curaçao"), + ("CY", "Cyprus"), + ("CZ", "Czech Republic"), + ("CI", "Côte d'Ivoire"), + ("DK", "Denmark"), + ("DJ", "Djibouti"), + ("DM", "Dominica"), + ("DO", "Dominican Republic"), + ("TL", "East Timor"), + ("EC", "Ecuador"), + ("EG", "Egypt"), + ("SV", "El Salvador"), + ("GQ", "Equatorial Guinea"), + ("ER", "Eritrea"), + ("EE", "Estonia"), + ("SZ", "Eswatini (Swaziland)"), + ("ET", "Ethiopia"), + ("FK", "Falkland Islands"), + ("FO", "Faroe Islands"), + ("FJ", "Fiji"), + ("FI", "Finland"), + ("FR", "France"), + ("GF", "French Guiana"), + ("PF", "French Polynesia"), + ("TF", "French S. Terr."), + ("GA", "Gabon"), + ("GM", "Gambia"), + ("GE", "Georgia"), + ("DE", "Germany"), + ("GH", "Ghana"), + ("GI", "Gibraltar"), + ("GR", "Greece"), + ("GL", "Greenland"), + ("GD", "Grenada"), + ("GP", "Guadeloupe"), + ("GU", "Guam"), + ("GT", "Guatemala"), + ("GG", "Guernsey"), + ("GN", "Guinea"), + ("GW", "Guinea-Bissau"), + ("GY", "Guyana"), + ("HT", "Haiti"), + ("HM", "Heard Island & McDonald Islands"), + ("HN", "Honduras"), + ("HK", "Hong Kong"), + ("HU", "Hungary"), + ("IS", "Iceland"), + ("IN", "India"), + ("ID", "Indonesia"), + ("IR", "Iran"), + ("IQ", "Iraq"), + ("IE", "Ireland"), + ("IM", "Isle of Man"), + ("IL", "Israel"), + ("IT", "Italy"), + ("JM", "Jamaica"), + ("JP", "Japan"), + ("JE", "Jersey"), + ("JO", "Jordan"), + ("KZ", "Kazakhstan"), + ("KE", "Kenya"), + ("KI", "Kiribati"), + ("KP", "Korea (North)"), + ("KR", "Korea (South)"), + ("KW", "Kuwait"), + ("KG", "Kyrgyzstan"), + ("LA", "Laos"), + ("LV", "Latvia"), + ("LB", "Lebanon"), + ("LS", "Lesotho"), + ("LR", "Liberia"), + ("LY", "Libya"), + ("LI", "Liechtenstein"), + ("LT", "Lithuania"), + ("LU", "Luxembourg"), + ("MO", "Macau"), + ("MG", "Madagascar"), + ("MW", "Malawi"), + ("MY", "Malaysia"), + ("MV", "Maldives"), + ("ML", "Mali"), + ("MT", "Malta"), + ("MH", "Marshall Islands"), + ("MQ", "Martinique"), + ("MR", "Mauritania"), + ("MU", "Mauritius"), + ("YT", "Mayotte"), + ("MX", "Mexico"), + ("FM", "Micronesia"), + ("MD", "Moldova"), + ("MC", "Monaco"), + ("MN", "Mongolia"), + ("ME", "Montenegro"), + ("MS", "Montserrat"), + ("MA", "Morocco"), + ("MZ", "Mozambique"), + ("MM", "Myanmar (Burma)"), + ("NA", "Namibia"), + ("NR", "Nauru"), + ("NP", "Nepal"), + ("NL", "Netherlands"), + ("NC", "New Caledonia"), + ("NZ", "New Zealand"), + ("NI", "Nicaragua"), + ("NE", "Niger"), + ("NG", "Nigeria"), + ("NU", "Niue"), + ("NF", "Norfolk Island"), + ("MK", "North Macedonia"), + ("MP", "Northern Mariana Islands"), + ("NO", "Norway"), + ("OM", "Oman"), + ("PK", "Pakistan"), + ("PW", "Palau"), + ("PS", "Palestine"), + ("PA", "Panama"), + ("PG", "Papua New Guinea"), + ("PY", "Paraguay"), + ("PE", "Peru"), + ("PH", "Philippines"), + ("PN", "Pitcairn"), + ("PL", "Poland"), + ("PT", "Portugal"), + ("PR", "Puerto Rico"), + ("QA", "Qatar"), + ("RO", "Romania"), + ("RU", "Russia"), + ("RW", "Rwanda"), + ("RE", "Réunion"), + ("AS", "Samoa (American)"), + ("WS", "Samoa (western)"), + ("SM", "San Marino"), + ("ST", "Sao Tome & Principe"), + ("SA", "Saudi Arabia"), + ("SN", "Senegal"), + ("RS", "Serbia"), + ("SC", "Seychelles"), + ("SL", "Sierra Leone"), + ("SG", "Singapore"), + ("SK", "Slovakia"), + ("SI", "Slovenia"), + ("SB", "Solomon Islands"), + ("SO", "Somalia"), + ("ZA", "South Africa"), + ("GS", "South Georgia & the South Sandwich Islands"), + ("SS", "South Sudan"), + ("ES", "Spain"), + ("LK", "Sri Lanka"), + ("BL", "St Barthelemy"), + ("SH", "St Helena"), + ("KN", "St Kitts & Nevis"), + ("LC", "St Lucia"), + ("SX", "St Maarten (Dutch)"), + ("MF", "St Martin (French)"), + ("PM", "St Pierre & Miquelon"), + ("VC", "St Vincent"), + ("SD", "Sudan"), + ("SR", "Suriname"), + ("SJ", "Svalbard & Jan Mayen"), + ("SE", "Sweden"), + ("CH", "Switzerland"), + ("SY", "Syria"), + ("TW", "Taiwan"), + ("TJ", "Tajikistan"), + ("TZ", "Tanzania"), + ("TH", "Thailand"), + ("TG", "Togo"), + ("TK", "Tokelau"), + ("TO", "Tonga"), + ("TT", "Trinidad & Tobago"), + ("TN", "Tunisia"), + ("TR", "Turkey"), + ("TM", "Turkmenistan"), + ("TC", "Turks & Caicos Is"), + ("TV", "Tuvalu"), + ("UM", "US minor outlying islands"), + ("UG", "Uganda"), + ("UA", "Ukraine"), + ("AE", "United Arab Emirates"), + ("US", "United States"), + ("UY", "Uruguay"), + ("UZ", "Uzbekistan"), + ("VU", "Vanuatu"), + ("VA", "Vatican City"), + ("VE", "Venezuela"), + ("VN", "Vietnam"), + ("VG", "Virgin Islands (UK)"), + ("VI", "Virgin Islands (US)"), + ("WF", "Wallis & Futuna"), + ("EH", "Western Sahara"), + ("YE", "Yemen"), + ("ZM", "Zambia"), + ("ZW", "Zimbabwe"), + ("AX", "Åland Islands"), + ], + max_length=2, + ), + ), + migrations.AlterField( + model_name="meeting", + name="time_zone", + field=models.CharField( + choices=[ + ("", "---------"), + ("Africa/Abidjan", "Africa/Abidjan"), + ("Africa/Accra", "Africa/Accra"), + ("Africa/Addis_Ababa", "Africa/Addis_Ababa"), + ("Africa/Algiers", "Africa/Algiers"), + ("Africa/Asmara", "Africa/Asmara"), + ("Africa/Bamako", "Africa/Bamako"), + ("Africa/Bangui", "Africa/Bangui"), + ("Africa/Banjul", "Africa/Banjul"), + ("Africa/Bissau", "Africa/Bissau"), + ("Africa/Blantyre", "Africa/Blantyre"), + ("Africa/Brazzaville", "Africa/Brazzaville"), + ("Africa/Bujumbura", "Africa/Bujumbura"), + ("Africa/Cairo", "Africa/Cairo"), + ("Africa/Casablanca", "Africa/Casablanca"), + ("Africa/Ceuta", "Africa/Ceuta"), + ("Africa/Conakry", "Africa/Conakry"), + ("Africa/Dakar", "Africa/Dakar"), + ("Africa/Dar_es_Salaam", "Africa/Dar_es_Salaam"), + ("Africa/Djibouti", "Africa/Djibouti"), + ("Africa/Douala", "Africa/Douala"), + ("Africa/El_Aaiun", "Africa/El_Aaiun"), + ("Africa/Freetown", "Africa/Freetown"), + ("Africa/Gaborone", "Africa/Gaborone"), + ("Africa/Harare", "Africa/Harare"), + ("Africa/Johannesburg", "Africa/Johannesburg"), + ("Africa/Juba", "Africa/Juba"), + ("Africa/Kampala", "Africa/Kampala"), + ("Africa/Khartoum", "Africa/Khartoum"), + ("Africa/Kigali", "Africa/Kigali"), + ("Africa/Kinshasa", "Africa/Kinshasa"), + ("Africa/Lagos", "Africa/Lagos"), + ("Africa/Libreville", "Africa/Libreville"), + ("Africa/Lome", "Africa/Lome"), + ("Africa/Luanda", "Africa/Luanda"), + ("Africa/Lubumbashi", "Africa/Lubumbashi"), + ("Africa/Lusaka", "Africa/Lusaka"), + ("Africa/Malabo", "Africa/Malabo"), + ("Africa/Maputo", "Africa/Maputo"), + ("Africa/Maseru", "Africa/Maseru"), + ("Africa/Mbabane", "Africa/Mbabane"), + ("Africa/Mogadishu", "Africa/Mogadishu"), + ("Africa/Monrovia", "Africa/Monrovia"), + ("Africa/Nairobi", "Africa/Nairobi"), + ("Africa/Ndjamena", "Africa/Ndjamena"), + ("Africa/Niamey", "Africa/Niamey"), + ("Africa/Nouakchott", "Africa/Nouakchott"), + ("Africa/Ouagadougou", "Africa/Ouagadougou"), + ("Africa/Porto-Novo", "Africa/Porto-Novo"), + ("Africa/Sao_Tome", "Africa/Sao_Tome"), + ("Africa/Tripoli", "Africa/Tripoli"), + ("Africa/Tunis", "Africa/Tunis"), + ("Africa/Windhoek", "Africa/Windhoek"), + ("America/Adak", "America/Adak"), + ("America/Anchorage", "America/Anchorage"), + ("America/Anguilla", "America/Anguilla"), + ("America/Antigua", "America/Antigua"), + ("America/Araguaina", "America/Araguaina"), + ( + "America/Argentina/Buenos_Aires", + "America/Argentina/Buenos_Aires", + ), + ("America/Argentina/Catamarca", "America/Argentina/Catamarca"), + ("America/Argentina/Cordoba", "America/Argentina/Cordoba"), + ("America/Argentina/Jujuy", "America/Argentina/Jujuy"), + ("America/Argentina/La_Rioja", "America/Argentina/La_Rioja"), + ("America/Argentina/Mendoza", "America/Argentina/Mendoza"), + ( + "America/Argentina/Rio_Gallegos", + "America/Argentina/Rio_Gallegos", + ), + ("America/Argentina/Salta", "America/Argentina/Salta"), + ("America/Argentina/San_Juan", "America/Argentina/San_Juan"), + ("America/Argentina/San_Luis", "America/Argentina/San_Luis"), + ("America/Argentina/Tucuman", "America/Argentina/Tucuman"), + ("America/Argentina/Ushuaia", "America/Argentina/Ushuaia"), + ("America/Aruba", "America/Aruba"), + ("America/Asuncion", "America/Asuncion"), + ("America/Atikokan", "America/Atikokan"), + ("America/Bahia", "America/Bahia"), + ("America/Bahia_Banderas", "America/Bahia_Banderas"), + ("America/Barbados", "America/Barbados"), + ("America/Belem", "America/Belem"), + ("America/Belize", "America/Belize"), + ("America/Blanc-Sablon", "America/Blanc-Sablon"), + ("America/Boa_Vista", "America/Boa_Vista"), + ("America/Bogota", "America/Bogota"), + ("America/Boise", "America/Boise"), + ("America/Cambridge_Bay", "America/Cambridge_Bay"), + ("America/Campo_Grande", "America/Campo_Grande"), + ("America/Cancun", "America/Cancun"), + ("America/Caracas", "America/Caracas"), + ("America/Cayenne", "America/Cayenne"), + ("America/Cayman", "America/Cayman"), + ("America/Chicago", "America/Chicago"), + ("America/Chihuahua", "America/Chihuahua"), + ("America/Ciudad_Juarez", "America/Ciudad_Juarez"), + ("America/Costa_Rica", "America/Costa_Rica"), + ("America/Coyhaique", "America/Coyhaique"), + ("America/Creston", "America/Creston"), + ("America/Cuiaba", "America/Cuiaba"), + ("America/Curacao", "America/Curacao"), + ("America/Danmarkshavn", "America/Danmarkshavn"), + ("America/Dawson", "America/Dawson"), + ("America/Dawson_Creek", "America/Dawson_Creek"), + ("America/Denver", "America/Denver"), + ("America/Detroit", "America/Detroit"), + ("America/Dominica", "America/Dominica"), + ("America/Edmonton", "America/Edmonton"), + ("America/Eirunepe", "America/Eirunepe"), + ("America/El_Salvador", "America/El_Salvador"), + ("America/Fort_Nelson", "America/Fort_Nelson"), + ("America/Fortaleza", "America/Fortaleza"), + ("America/Glace_Bay", "America/Glace_Bay"), + ("America/Goose_Bay", "America/Goose_Bay"), + ("America/Grand_Turk", "America/Grand_Turk"), + ("America/Grenada", "America/Grenada"), + ("America/Guadeloupe", "America/Guadeloupe"), + ("America/Guatemala", "America/Guatemala"), + ("America/Guayaquil", "America/Guayaquil"), + ("America/Guyana", "America/Guyana"), + ("America/Halifax", "America/Halifax"), + ("America/Havana", "America/Havana"), + ("America/Hermosillo", "America/Hermosillo"), + ("America/Indiana/Indianapolis", "America/Indiana/Indianapolis"), + ("America/Indiana/Knox", "America/Indiana/Knox"), + ("America/Indiana/Marengo", "America/Indiana/Marengo"), + ("America/Indiana/Petersburg", "America/Indiana/Petersburg"), + ("America/Indiana/Tell_City", "America/Indiana/Tell_City"), + ("America/Indiana/Vevay", "America/Indiana/Vevay"), + ("America/Indiana/Vincennes", "America/Indiana/Vincennes"), + ("America/Indiana/Winamac", "America/Indiana/Winamac"), + ("America/Inuvik", "America/Inuvik"), + ("America/Iqaluit", "America/Iqaluit"), + ("America/Jamaica", "America/Jamaica"), + ("America/Juneau", "America/Juneau"), + ("America/Kentucky/Louisville", "America/Kentucky/Louisville"), + ("America/Kentucky/Monticello", "America/Kentucky/Monticello"), + ("America/La_Paz", "America/La_Paz"), + ("America/Lima", "America/Lima"), + ("America/Los_Angeles", "America/Los_Angeles"), + ("America/Maceio", "America/Maceio"), + ("America/Managua", "America/Managua"), + ("America/Manaus", "America/Manaus"), + ("America/Martinique", "America/Martinique"), + ("America/Matamoros", "America/Matamoros"), + ("America/Mazatlan", "America/Mazatlan"), + ("America/Menominee", "America/Menominee"), + ("America/Merida", "America/Merida"), + ("America/Metlakatla", "America/Metlakatla"), + ("America/Mexico_City", "America/Mexico_City"), + ("America/Miquelon", "America/Miquelon"), + ("America/Moncton", "America/Moncton"), + ("America/Monterrey", "America/Monterrey"), + ("America/Montevideo", "America/Montevideo"), + ("America/Montserrat", "America/Montserrat"), + ("America/Nassau", "America/Nassau"), + ("America/New_York", "America/New_York"), + ("America/Nome", "America/Nome"), + ("America/Noronha", "America/Noronha"), + ("America/North_Dakota/Beulah", "America/North_Dakota/Beulah"), + ("America/North_Dakota/Center", "America/North_Dakota/Center"), + ( + "America/North_Dakota/New_Salem", + "America/North_Dakota/New_Salem", + ), + ("America/Nuuk", "America/Nuuk"), + ("America/Ojinaga", "America/Ojinaga"), + ("America/Panama", "America/Panama"), + ("America/Paramaribo", "America/Paramaribo"), + ("America/Phoenix", "America/Phoenix"), + ("America/Port-au-Prince", "America/Port-au-Prince"), + ("America/Port_of_Spain", "America/Port_of_Spain"), + ("America/Porto_Velho", "America/Porto_Velho"), + ("America/Puerto_Rico", "America/Puerto_Rico"), + ("America/Punta_Arenas", "America/Punta_Arenas"), + ("America/Rankin_Inlet", "America/Rankin_Inlet"), + ("America/Recife", "America/Recife"), + ("America/Regina", "America/Regina"), + ("America/Resolute", "America/Resolute"), + ("America/Rio_Branco", "America/Rio_Branco"), + ("America/Santarem", "America/Santarem"), + ("America/Santiago", "America/Santiago"), + ("America/Santo_Domingo", "America/Santo_Domingo"), + ("America/Sao_Paulo", "America/Sao_Paulo"), + ("America/Scoresbysund", "America/Scoresbysund"), + ("America/Sitka", "America/Sitka"), + ("America/St_Johns", "America/St_Johns"), + ("America/St_Kitts", "America/St_Kitts"), + ("America/St_Lucia", "America/St_Lucia"), + ("America/St_Thomas", "America/St_Thomas"), + ("America/St_Vincent", "America/St_Vincent"), + ("America/Swift_Current", "America/Swift_Current"), + ("America/Tegucigalpa", "America/Tegucigalpa"), + ("America/Thule", "America/Thule"), + ("America/Tijuana", "America/Tijuana"), + ("America/Toronto", "America/Toronto"), + ("America/Tortola", "America/Tortola"), + ("America/Vancouver", "America/Vancouver"), + ("America/Whitehorse", "America/Whitehorse"), + ("America/Winnipeg", "America/Winnipeg"), + ("America/Yakutat", "America/Yakutat"), + ("Antarctica/Casey", "Antarctica/Casey"), + ("Antarctica/Davis", "Antarctica/Davis"), + ("Antarctica/DumontDUrville", "Antarctica/DumontDUrville"), + ("Antarctica/Macquarie", "Antarctica/Macquarie"), + ("Antarctica/Mawson", "Antarctica/Mawson"), + ("Antarctica/McMurdo", "Antarctica/McMurdo"), + ("Antarctica/Palmer", "Antarctica/Palmer"), + ("Antarctica/Rothera", "Antarctica/Rothera"), + ("Antarctica/Syowa", "Antarctica/Syowa"), + ("Antarctica/Troll", "Antarctica/Troll"), + ("Antarctica/Vostok", "Antarctica/Vostok"), + ("Asia/Aden", "Asia/Aden"), + ("Asia/Almaty", "Asia/Almaty"), + ("Asia/Amman", "Asia/Amman"), + ("Asia/Anadyr", "Asia/Anadyr"), + ("Asia/Aqtau", "Asia/Aqtau"), + ("Asia/Aqtobe", "Asia/Aqtobe"), + ("Asia/Ashgabat", "Asia/Ashgabat"), + ("Asia/Atyrau", "Asia/Atyrau"), + ("Asia/Baghdad", "Asia/Baghdad"), + ("Asia/Bahrain", "Asia/Bahrain"), + ("Asia/Baku", "Asia/Baku"), + ("Asia/Bangkok", "Asia/Bangkok"), + ("Asia/Barnaul", "Asia/Barnaul"), + ("Asia/Beirut", "Asia/Beirut"), + ("Asia/Bishkek", "Asia/Bishkek"), + ("Asia/Brunei", "Asia/Brunei"), + ("Asia/Chita", "Asia/Chita"), + ("Asia/Colombo", "Asia/Colombo"), + ("Asia/Damascus", "Asia/Damascus"), + ("Asia/Dhaka", "Asia/Dhaka"), + ("Asia/Dili", "Asia/Dili"), + ("Asia/Dubai", "Asia/Dubai"), + ("Asia/Dushanbe", "Asia/Dushanbe"), + ("Asia/Famagusta", "Asia/Famagusta"), + ("Asia/Gaza", "Asia/Gaza"), + ("Asia/Hebron", "Asia/Hebron"), + ("Asia/Ho_Chi_Minh", "Asia/Ho_Chi_Minh"), + ("Asia/Hong_Kong", "Asia/Hong_Kong"), + ("Asia/Hovd", "Asia/Hovd"), + ("Asia/Irkutsk", "Asia/Irkutsk"), + ("Asia/Jakarta", "Asia/Jakarta"), + ("Asia/Jayapura", "Asia/Jayapura"), + ("Asia/Jerusalem", "Asia/Jerusalem"), + ("Asia/Kabul", "Asia/Kabul"), + ("Asia/Kamchatka", "Asia/Kamchatka"), + ("Asia/Karachi", "Asia/Karachi"), + ("Asia/Kathmandu", "Asia/Kathmandu"), + ("Asia/Khandyga", "Asia/Khandyga"), + ("Asia/Kolkata", "Asia/Kolkata"), + ("Asia/Krasnoyarsk", "Asia/Krasnoyarsk"), + ("Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"), + ("Asia/Kuching", "Asia/Kuching"), + ("Asia/Kuwait", "Asia/Kuwait"), + ("Asia/Macau", "Asia/Macau"), + ("Asia/Magadan", "Asia/Magadan"), + ("Asia/Makassar", "Asia/Makassar"), + ("Asia/Manila", "Asia/Manila"), + ("Asia/Muscat", "Asia/Muscat"), + ("Asia/Nicosia", "Asia/Nicosia"), + ("Asia/Novokuznetsk", "Asia/Novokuznetsk"), + ("Asia/Novosibirsk", "Asia/Novosibirsk"), + ("Asia/Omsk", "Asia/Omsk"), + ("Asia/Oral", "Asia/Oral"), + ("Asia/Phnom_Penh", "Asia/Phnom_Penh"), + ("Asia/Pontianak", "Asia/Pontianak"), + ("Asia/Pyongyang", "Asia/Pyongyang"), + ("Asia/Qatar", "Asia/Qatar"), + ("Asia/Qostanay", "Asia/Qostanay"), + ("Asia/Qyzylorda", "Asia/Qyzylorda"), + ("Asia/Riyadh", "Asia/Riyadh"), + ("Asia/Sakhalin", "Asia/Sakhalin"), + ("Asia/Samarkand", "Asia/Samarkand"), + ("Asia/Seoul", "Asia/Seoul"), + ("Asia/Shanghai", "Asia/Shanghai"), + ("Asia/Singapore", "Asia/Singapore"), + ("Asia/Srednekolymsk", "Asia/Srednekolymsk"), + ("Asia/Taipei", "Asia/Taipei"), + ("Asia/Tashkent", "Asia/Tashkent"), + ("Asia/Tbilisi", "Asia/Tbilisi"), + ("Asia/Tehran", "Asia/Tehran"), + ("Asia/Thimphu", "Asia/Thimphu"), + ("Asia/Tokyo", "Asia/Tokyo"), + ("Asia/Tomsk", "Asia/Tomsk"), + ("Asia/Ulaanbaatar", "Asia/Ulaanbaatar"), + ("Asia/Urumqi", "Asia/Urumqi"), + ("Asia/Ust-Nera", "Asia/Ust-Nera"), + ("Asia/Vientiane", "Asia/Vientiane"), + ("Asia/Vladivostok", "Asia/Vladivostok"), + ("Asia/Yakutsk", "Asia/Yakutsk"), + ("Asia/Yangon", "Asia/Yangon"), + ("Asia/Yekaterinburg", "Asia/Yekaterinburg"), + ("Asia/Yerevan", "Asia/Yerevan"), + ("Atlantic/Azores", "Atlantic/Azores"), + ("Atlantic/Bermuda", "Atlantic/Bermuda"), + ("Atlantic/Canary", "Atlantic/Canary"), + ("Atlantic/Cape_Verde", "Atlantic/Cape_Verde"), + ("Atlantic/Faroe", "Atlantic/Faroe"), + ("Atlantic/Madeira", "Atlantic/Madeira"), + ("Atlantic/Reykjavik", "Atlantic/Reykjavik"), + ("Atlantic/South_Georgia", "Atlantic/South_Georgia"), + ("Atlantic/St_Helena", "Atlantic/St_Helena"), + ("Atlantic/Stanley", "Atlantic/Stanley"), + ("Australia/Adelaide", "Australia/Adelaide"), + ("Australia/Brisbane", "Australia/Brisbane"), + ("Australia/Broken_Hill", "Australia/Broken_Hill"), + ("Australia/Darwin", "Australia/Darwin"), + ("Australia/Eucla", "Australia/Eucla"), + ("Australia/Hobart", "Australia/Hobart"), + ("Australia/Lindeman", "Australia/Lindeman"), + ("Australia/Lord_Howe", "Australia/Lord_Howe"), + ("Australia/Melbourne", "Australia/Melbourne"), + ("Australia/Perth", "Australia/Perth"), + ("Australia/Sydney", "Australia/Sydney"), + ("Europe/Amsterdam", "Europe/Amsterdam"), + ("Europe/Andorra", "Europe/Andorra"), + ("Europe/Astrakhan", "Europe/Astrakhan"), + ("Europe/Athens", "Europe/Athens"), + ("Europe/Belgrade", "Europe/Belgrade"), + ("Europe/Berlin", "Europe/Berlin"), + ("Europe/Brussels", "Europe/Brussels"), + ("Europe/Bucharest", "Europe/Bucharest"), + ("Europe/Budapest", "Europe/Budapest"), + ("Europe/Chisinau", "Europe/Chisinau"), + ("Europe/Copenhagen", "Europe/Copenhagen"), + ("Europe/Dublin", "Europe/Dublin"), + ("Europe/Gibraltar", "Europe/Gibraltar"), + ("Europe/Helsinki", "Europe/Helsinki"), + ("Europe/Istanbul", "Europe/Istanbul"), + ("Europe/Kaliningrad", "Europe/Kaliningrad"), + ("Europe/Kirov", "Europe/Kirov"), + ("Europe/Kyiv", "Europe/Kyiv"), + ("Europe/Lisbon", "Europe/Lisbon"), + ("Europe/London", "Europe/London"), + ("Europe/Luxembourg", "Europe/Luxembourg"), + ("Europe/Madrid", "Europe/Madrid"), + ("Europe/Malta", "Europe/Malta"), + ("Europe/Minsk", "Europe/Minsk"), + ("Europe/Monaco", "Europe/Monaco"), + ("Europe/Moscow", "Europe/Moscow"), + ("Europe/Oslo", "Europe/Oslo"), + ("Europe/Paris", "Europe/Paris"), + ("Europe/Prague", "Europe/Prague"), + ("Europe/Riga", "Europe/Riga"), + ("Europe/Rome", "Europe/Rome"), + ("Europe/Samara", "Europe/Samara"), + ("Europe/Saratov", "Europe/Saratov"), + ("Europe/Simferopol", "Europe/Simferopol"), + ("Europe/Sofia", "Europe/Sofia"), + ("Europe/Stockholm", "Europe/Stockholm"), + ("Europe/Tallinn", "Europe/Tallinn"), + ("Europe/Tirane", "Europe/Tirane"), + ("Europe/Ulyanovsk", "Europe/Ulyanovsk"), + ("Europe/Vaduz", "Europe/Vaduz"), + ("Europe/Vienna", "Europe/Vienna"), + ("Europe/Vilnius", "Europe/Vilnius"), + ("Europe/Volgograd", "Europe/Volgograd"), + ("Europe/Warsaw", "Europe/Warsaw"), + ("Europe/Zurich", "Europe/Zurich"), + ("Indian/Antananarivo", "Indian/Antananarivo"), + ("Indian/Chagos", "Indian/Chagos"), + ("Indian/Christmas", "Indian/Christmas"), + ("Indian/Cocos", "Indian/Cocos"), + ("Indian/Comoro", "Indian/Comoro"), + ("Indian/Kerguelen", "Indian/Kerguelen"), + ("Indian/Mahe", "Indian/Mahe"), + ("Indian/Maldives", "Indian/Maldives"), + ("Indian/Mauritius", "Indian/Mauritius"), + ("Indian/Mayotte", "Indian/Mayotte"), + ("Indian/Reunion", "Indian/Reunion"), + ("Pacific/Apia", "Pacific/Apia"), + ("Pacific/Auckland", "Pacific/Auckland"), + ("Pacific/Bougainville", "Pacific/Bougainville"), + ("Pacific/Chatham", "Pacific/Chatham"), + ("Pacific/Chuuk", "Pacific/Chuuk"), + ("Pacific/Easter", "Pacific/Easter"), + ("Pacific/Efate", "Pacific/Efate"), + ("Pacific/Fakaofo", "Pacific/Fakaofo"), + ("Pacific/Fiji", "Pacific/Fiji"), + ("Pacific/Funafuti", "Pacific/Funafuti"), + ("Pacific/Galapagos", "Pacific/Galapagos"), + ("Pacific/Gambier", "Pacific/Gambier"), + ("Pacific/Guadalcanal", "Pacific/Guadalcanal"), + ("Pacific/Guam", "Pacific/Guam"), + ("Pacific/Honolulu", "Pacific/Honolulu"), + ("Pacific/Kanton", "Pacific/Kanton"), + ("Pacific/Kiritimati", "Pacific/Kiritimati"), + ("Pacific/Kosrae", "Pacific/Kosrae"), + ("Pacific/Kwajalein", "Pacific/Kwajalein"), + ("Pacific/Majuro", "Pacific/Majuro"), + ("Pacific/Marquesas", "Pacific/Marquesas"), + ("Pacific/Midway", "Pacific/Midway"), + ("Pacific/Nauru", "Pacific/Nauru"), + ("Pacific/Niue", "Pacific/Niue"), + ("Pacific/Norfolk", "Pacific/Norfolk"), + ("Pacific/Noumea", "Pacific/Noumea"), + ("Pacific/Pago_Pago", "Pacific/Pago_Pago"), + ("Pacific/Palau", "Pacific/Palau"), + ("Pacific/Pitcairn", "Pacific/Pitcairn"), + ("Pacific/Pohnpei", "Pacific/Pohnpei"), + ("Pacific/Port_Moresby", "Pacific/Port_Moresby"), + ("Pacific/Rarotonga", "Pacific/Rarotonga"), + ("Pacific/Saipan", "Pacific/Saipan"), + ("Pacific/Tahiti", "Pacific/Tahiti"), + ("Pacific/Tarawa", "Pacific/Tarawa"), + ("Pacific/Tongatapu", "Pacific/Tongatapu"), + ("Pacific/Wake", "Pacific/Wake"), + ("Pacific/Wallis", "Pacific/Wallis"), + ("UTC", "UTC"), + ], + default="UTC", + max_length=255, + ), + ), + ] diff --git a/requirements.txt b/requirements.txt index 7aadc7bf7f..b3226d24b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -66,8 +66,8 @@ python-json-logger>=3.1.0 python-magic==0.4.18 # Versions beyond the yanked .19 and .20 introduce form failures pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache python-mimeparse>=1.6 # from TastyPie -pytz==2022.2.1 # Pinned as changes need to be vetted for their effect on Meeting fields -types-pytz==2022.2.1 # match pytz version +pytz==2025.2 # Pinned as changes need to be vetted for their effect on Meeting fields +types-pytz==2025.2.0.20250516 # match pytz versionrequests>=2.31.0 requests>=2.31.0 types-requests>=2.27.1 requests-mock>=1.9.3 From 891049aa28c12b1afab4e16561bd31316e3b508e Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Thu, 21 Aug 2025 13:39:47 +0000 Subject: [PATCH 626/846] ci: update base image target version to 20250821T1326 --- 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 756b7021b7..9019dbb626 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250819T1508 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250821T1326 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 2e0f1519da..c5c7fb37b9 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250819T1508 +20250821T1326 From 86f2cfa29b8958633bf9dd23b624cfb4246f5693 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Aug 2025 08:59:40 -0500 Subject: [PATCH 627/846] chore(deps): bump types-pytz from 2022.2.1 to 2025.2.0.20250809 (#9339) Bumps [types-pytz](https://github.com/typeshed-internal/stub_uploader) from 2022.2.1 to 2025.2.0.20250809. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-pytz dependency-version: 2025.2.0.20250809 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> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b3226d24b1..60d3d8152e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -67,7 +67,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>=1.6 # from TastyPie pytz==2025.2 # Pinned as changes need to be vetted for their effect on Meeting fields -types-pytz==2025.2.0.20250516 # match pytz versionrequests>=2.31.0 +types-pytz==2025.2.0.20250809 # match pytz versionrequests>=2.31.0 requests>=2.31.0 types-requests>=2.27.1 requests-mock>=1.9.3 From f84f2e5b4ade1bff90feb845707f70f5a317253c Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Thu, 21 Aug 2025 14:13:02 +0000 Subject: [PATCH 628/846] ci: update base image target version to 20250821T1359 --- 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 9019dbb626..d619ee99ee 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250821T1326 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250821T1359 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index c5c7fb37b9..b6fc12e128 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250821T1326 +20250821T1359 From 64884e78ad3169a0d488ae3d046c1d65acf376b4 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 21 Aug 2025 15:03:05 -0300 Subject: [PATCH 629/846] fix: actually call fromisoformat() (#9399) --- ietf/api/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index e236347975..230f8339bd 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -62,14 +62,14 @@ def generate_cache_key(self, *args, **kwargs): # Use a list plus a ``.join()`` because it's faster than concatenation. return "%s:%s:%s:%s" % (self._meta.api_name, self._meta.resource_name, ':'.join(args), smooshed) - def _z_aware_fromisoformat(self, value): - """datetime.datetie.fromisoformat replacement that works with python < 3.11""" + def _z_aware_fromisoformat(self, value: str) -> datetime.datetime: + """datetime.datetime.fromisoformat replacement that works with python < 3.11""" if HAVE_BROKEN_FROMISOFORMAT: if value.upper().endswith("Z"): value = value[:-1] + "+00:00" # Z -> UTC elif re.match(r"[+-][0-9][0-9]$", value[-3:]): value = value + ":00" # -04 -> -04:00 - return value + return datetime.datetime.fromisoformat(value) def filter_value_to_python( self, value, field_name, filters, filter_expr, filter_type From 3b6b4770d67a8c88aee642db7129c35be930da12 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 22 Aug 2025 03:58:37 -0400 Subject: [PATCH 630/846] ci: Fix build.yml for staging db recreate --- .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 9c24380764..79ef750b5d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -448,11 +448,11 @@ jobs: - name: Refresh Staging DB uses: the-actions-org/workflow-dispatch@v4 with: - workflow: update-staging-db.yml + workflow: deploy-db.yml repo: ietf-tools/infra-k8s ref: main token: ${{ secrets.GH_INFRA_K8S_TOKEN }} - inputs: '{ "sourceDb":"datatracker" }' + inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "manifest":"postgres", "forceRecreate":true, "waitClusterReady":true }' wait-for-completion: true wait-for-completion-timeout: 10m wait-for-completion-interval: 20s From 82a241084954146152196d612a13074bdc1b5de9 Mon Sep 17 00:00:00 2001 From: Eric Vyncke Date: Fri, 22 Aug 2025 17:46:45 +0200 Subject: [PATCH 631/846] feat: updated text for BoF request (per IESG demand) (#9406) --- ietf/templates/doc/bofreq/bofreq_template.md | 10 +++---- ietf/templates/doc/bofreq/new_bofreq.html | 30 ++++++++++++++++++-- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/ietf/templates/doc/bofreq/bofreq_template.md b/ietf/templates/doc/bofreq/bofreq_template.md index 78949ba7bd..49c5e511a5 100644 --- a/ietf/templates/doc/bofreq/bofreq_template.md +++ b/ietf/templates/doc/bofreq/bofreq_template.md @@ -1,15 +1,15 @@ -# Name: Exact MPLS Edges (EXAMPLE) (There's an acronym for anything if you really want one ;-) +# Name: EXAct MPLs Edges (EXAMPLE) (There's an acronym for anything if you really want one ;-) ## Description Replace this with a few paragraphs describing the BOF request. Fill in the details below. Keep items in the order they appear here. ## Required Details -- Status: (not) WG Forming -- Responsible AD: name +- Status: "not WG Forming" or "WG forming" +- Responsible AD: name (or at least area(s) if you know) - BOF proponents: name , name (1-3 people - who are requesting and coordinating discussion for proposal) - Number of people expected to attend: 100 -- Length of session (1 or 2 hours): 2 hours +- Length of session (1 or usually 2 hours): 2 hours - Conflicts (whole Areas and/or WGs) - Chair Conflicts: TBD - Technology Overlap: TBD @@ -27,7 +27,7 @@ To allow evaluation of your proposal, please include the following items: - Items, Internet-Drafts, speakers, timing - Or a URL -## Links to the mailing list, draft charter if any, relevant Internet-Drafts, etc. +## Links to the mailing list, draft charter if any (for WG-forming BoF), relevant Internet-Drafts, etc. - Mailing List: https://www.ietf.org/mailman/listinfo/example - Draft charter: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name='charter-ietf-EXAMPLE' %} - Relevant Internet-Drafts: diff --git a/ietf/templates/doc/bofreq/new_bofreq.html b/ietf/templates/doc/bofreq/new_bofreq.html index 9506d9c8e6..c6aa0054f9 100644 --- a/ietf/templates/doc/bofreq/new_bofreq.html +++ b/ietf/templates/doc/bofreq/new_bofreq.html @@ -6,15 +6,39 @@ {% origin %}

    Start a new BOF Request

    - 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. + BoF proponents are strongly encouraged to review the following sources before submitting requests: +

    + + {# 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.

    - Choose a short descriptive title for your request. Take time to choose a good initial title - it will be used to make the filename for your request's content. The title can be changed later, but the filename will not change. + Choose a short descriptive title for your request. Take time to choose a good initial title - it will be used to make the filename for your request's content. + The title can be changed later, but the filename will not change.

    For example, a request with a title of "A new important bit" will be saved as bofreq-{{ user.person.last_name|xslugify|slice:"64" }}-a-new-important-bit-00.md.

    -

    All the items in the template MUST be filed in.

    +

    All the items in the template MUST be filed in.

    From b1cfa7082f60343210b8116668f182e3c67207bf Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 22 Aug 2025 22:08:59 -0400 Subject: [PATCH 632/846] ci: Increase wait-for-completion timeout to 30 minutes for staging refresh db step Increased the wait-for-completion timeout from 10 minutes to 30 minutes in the build workflow. --- .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 79ef750b5d..8567446cae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -454,7 +454,7 @@ jobs: token: ${{ secrets.GH_INFRA_K8S_TOKEN }} inputs: '{ "environment":"${{ secrets.GHA_K8S_CLUSTER }}", "app":"datatracker", "manifest":"postgres", "forceRecreate":true, "waitClusterReady":true }' wait-for-completion: true - wait-for-completion-timeout: 10m + wait-for-completion-timeout: 30m wait-for-completion-interval: 20s display-workflow-run-url: false From b3f2756f6b5d6adf853eb7779412950291169c38 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 27 Aug 2025 13:06:48 -0500 Subject: [PATCH 633/846] fix: clearly show To and From groups in liaison statement email (#9432) --- ietf/group/templatetags/group_filters.py | 7 +++++++ ietf/templates/liaisons/liaison_mail.txt | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ietf/group/templatetags/group_filters.py b/ietf/group/templatetags/group_filters.py index c9481b767b..bf2ad71949 100644 --- a/ietf/group/templatetags/group_filters.py +++ b/ietf/group/templatetags/group_filters.py @@ -37,3 +37,10 @@ def role_person_link(role, **kwargs): plain_name = role.person.plain_name() email = role.email.address return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls} + +@register.filter +def name_with_conditional_acronym(group): + if group.type_id in ("sdo", "isoc", "individ", "nomcom", "ietf", "irtf", ): + return group.name + else: + return f"{group.name} ({group.acronym})" diff --git a/ietf/templates/liaisons/liaison_mail.txt b/ietf/templates/liaisons/liaison_mail.txt index 6d6a07d7ef..18dfe610fd 100644 --- a/ietf/templates/liaisons/liaison_mail.txt +++ b/ietf/templates/liaisons/liaison_mail.txt @@ -1,13 +1,20 @@ -{% load ietf_filters %}{% autoescape off %}Title: {{ liaison.title|clean_whitespace }} +{% load ietf_filters group_filters %}{% autoescape off %}Title: {{ liaison.title|clean_whitespace }} Submission Date: {{ liaison.submitted|date:"Y-m-d" }} URL of the IETF Web page: {{ liaison.get_absolute_url }} + +To: {% for g in liaison.to_groups.all %}{{g|name_with_conditional_acronym}}{% if not forloop.last %}, {% endif %}{% endfor %} +From: {% for g in liaison.from_groups.all %}{{g|name_with_conditional_acronym}}{% if not forloop.last %}, {% endif %}{% endfor %} +Purpose: {{ liaison.purpose.name }} {% if liaison.deadline %}Please reply by {{ liaison.deadline }}{% endif %} + +Email Addresses +--------------- From: {% if liaison.from_contact %}{{ liaison.from_contact }}{% endif %} To: {{ liaison.to_contacts }} Cc: {{ liaison.cc_contacts }} Response Contacts: {{ liaison.response_contacts }} Technical Contacts: {{ liaison.technical_contacts }} -Purpose: {{ liaison.purpose.name }} + {% for related in liaison.source_of_set.all %} Referenced liaison: {% if related.target.title %}{{ related.target.title }}{% else %}Liaison #{{ related.target.pk }}{% endif %} ({{ related.target.get_absolute_url }}) {% endfor %} From 6e62bb32771cb564f52201a376ad6e754155343c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 29 Aug 2025 10:44:51 -0500 Subject: [PATCH 634/846] fix: remove iab executive director specialization from the liaison app (#9435) --- ietf/liaisons/forms.py | 3 +-- ietf/liaisons/tests.py | 12 ------------ ietf/liaisons/tests_forms.py | 12 ------------ ietf/liaisons/utils.py | 1 - ietf/liaisons/views.py | 17 +++++++---------- 5 files changed, 8 insertions(+), 37 deletions(-) diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index 7483981595..ef5b29535e 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -105,7 +105,6 @@ def internal_groups_for_person(person: Optional[Person]): "Secretariat", "IETF Chair", "IAB Chair", - "IAB Executive Director", "Liaison Manager", "Liaison Coordinator", "Authorized Individual", @@ -115,7 +114,7 @@ def internal_groups_for_person(person: Optional[Person]): # Interesting roles, as Group queries queries = [ Q(role__person=person, role__name="chair", acronym="ietf"), - Q(role__person=person, role__name__in=("chair", "execdir"), acronym="iab"), + Q(role__person=person, role__name="chair", acronym="iab"), Q(role__person=person, role__name="ad", type="area", state="active"), Q( role__person=person, diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index 1d6cfe0c14..8bbaa4f053 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -123,7 +123,6 @@ def test_get_cc(self): cc = get_cc(Group.objects.get(acronym='iab')) self.assertTrue(EMAIL_ALIASES['IAB'] in cc) self.assertTrue(EMAIL_ALIASES['IABCHAIR'] in cc) - self.assertTrue(EMAIL_ALIASES['IABEXECUTIVEDIRECTOR'] in cc) # test an Area area = Group.objects.filter(type='area').first() cc = get_cc(area) @@ -166,7 +165,6 @@ def test_get_contacts_for_group(self): # test iab contacts = get_contacts_for_group(Group.objects.get(acronym='iab')) self.assertTrue(EMAIL_ALIASES['IABCHAIR'] in contacts) - self.assertTrue(EMAIL_ALIASES['IABEXECUTIVEDIRECTOR'] in contacts) # test iesg contacts = get_contacts_for_group(Group.objects.get(acronym='iesg')) self.assertTrue(EMAIL_ALIASES['IESG'] in contacts) @@ -534,7 +532,6 @@ def test_outgoing_access(self): RoleFactory(name_id='liaison_coordinator', group__acronym='iab', person__user__username='liaison-coordinator') mars = RoleFactory(name_id='chair',person__user__username='marschairman',group__acronym='mars').group RoleFactory(name_id='secr',group=mars,person__user__username='mars-secr') - RoleFactory(name_id='execdir',group=Group.objects.get(acronym='iab'),person__user__username='iab-execdir') url = urlreverse('ietf.liaisons.views.liaison_list') addurl = urlreverse('ietf.liaisons.views.liaison_add', kwargs={'type':'outgoing'}) @@ -592,15 +589,6 @@ def test_outgoing_access(self): r = self.client.get(addurl) self.assertEqual(r.status_code, 200) - # IAB Executive Director - self.assertTrue(self.client.login(username="iab-execdir", password="iab-execdir+password")) - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertEqual(len(q("a.btn:contains('New outgoing liaison')")), 1) - r = self.client.get(addurl) - self.assertEqual(r.status_code, 200) - # Liaison Manager has access self.assertTrue(self.client.login(username="ulm-liaiman", password="ulm-liaiman+password")) r = self.client.get(url) diff --git a/ietf/liaisons/tests_forms.py b/ietf/liaisons/tests_forms.py index c2afddea65..101c0c8298 100644 --- a/ietf/liaisons/tests_forms.py +++ b/ietf/liaisons/tests_forms.py @@ -94,11 +94,6 @@ def test_all_internal_groups(self): def test_internal_groups_for_person(self): # test relies on the data created in ietf.utils.test_data.make_immutable_test_data() # todo add liaison coordinator when modeled - RoleFactory( - name_id="execdir", - group=Group.objects.get(acronym="iab"), - person__user__username="iab-execdir", - ) RoleFactory( name_id="auth", group__type_id="sdo", @@ -121,7 +116,6 @@ def test_internal_groups_for_person(self): "secretary", "ietf-chair", "iab-chair", - "iab-execdir", "sdo-authperson", ): returned_queryset = internal_groups_for_person( @@ -151,11 +145,6 @@ def test_internal_groups_for_person(self): ) def test_external_groups_for_person(self): - RoleFactory( - name_id="execdir", - group=Group.objects.get(acronym="iab"), - person__user__username="iab-execdir", - ) RoleFactory(name_id="liaison_coordinator", group__acronym="iab", person__user__username="liaison-coordinator") the_sdo = GroupFactory(type_id="sdo", acronym="the-sdo") liaison_manager = RoleFactory(name_id="liaiman", group=the_sdo).person @@ -166,7 +155,6 @@ def test_external_groups_for_person(self): "secretary", "ietf-chair", "iab-chair", - "iab-execdir", "liaison-coordinator", "ad", "sopschairman", diff --git a/ietf/liaisons/utils.py b/ietf/liaisons/utils.py index ea06c5988e..469bbc5c87 100644 --- a/ietf/liaisons/utils.py +++ b/ietf/liaisons/utils.py @@ -8,7 +8,6 @@ OUTGOING_LIAISON_ROLES = [ "Area Director", "IAB Chair", - "IAB Executive Director", "IETF Chair", "Liaison Manager", "Liaison Coordinator", diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 1b7e8d63bb..9710149c90 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -30,11 +30,12 @@ from ietf.utils.response import permission_denied EMAIL_ALIASES = { - 'IETFCHAIR':'The IETF Chair ', - 'IESG':'The IESG ', - 'IAB':'The IAB ', - 'IABCHAIR':'The IAB Chair ', - 'IABEXECUTIVEDIRECTOR':'The IAB Executive Director '} + "IETFCHAIR": "The IETF Chair ", + "IESG": "The IESG ", + "IAB": "The IAB ", + "IABCHAIR": "The IAB Chair ", +} + # ------------------------------------------------- # Helper Functions @@ -84,8 +85,6 @@ def _find_person_in_emails(liaison, person): return True elif addr in ('iab@iab.org', 'iab-chair@iab.org') and has_role(person.user, "IAB Chair"): return True - elif addr in ('execd@iab.org', ) and has_role(person.user, "IAB Executive Director"): - return True return False @@ -110,7 +109,6 @@ def get_cc(group): elif group.acronym in ('iab'): emails.append(EMAIL_ALIASES['IAB']) emails.append(EMAIL_ALIASES['IABCHAIR']) - emails.append(EMAIL_ALIASES['IABEXECUTIVEDIRECTOR']) elif group.type_id == 'area': emails.append(EMAIL_ALIASES['IETFCHAIR']) ad_roles = group.role_set.filter(name='ad') @@ -151,7 +149,6 @@ def get_contacts_for_group(group): contacts.append(EMAIL_ALIASES['IETFCHAIR']) elif group.acronym == 'iab': contacts.append(EMAIL_ALIASES['IABCHAIR']) - contacts.append(EMAIL_ALIASES['IABEXECUTIVEDIRECTOR']) elif group.acronym == 'iesg': contacts.append(EMAIL_ALIASES['IESG']) @@ -171,7 +168,7 @@ def needs_approval(group,person): user = person.user if group.acronym in ('ietf','iesg') and has_role(user, 'IETF Chair'): return False - if group.acronym == 'iab' and (has_role(user,'IAB Chair') or has_role(user,'IAB Executive Director')): + if group.acronym == 'iab' and has_role(user,'IAB Chair'): return False if group.type_id == 'area' and group.role_set.filter(name='ad',person=person): return False From 3ca4eec5abb6927837fbc849809b587f4bde6419 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 2 Sep 2025 14:41:52 -0300 Subject: [PATCH 635/846] feat: expose State.used in admin (#9449) --- ietf/doc/admin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index b492aa3423..745536f9a1 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -22,8 +22,8 @@ class StateTypeAdmin(admin.ModelAdmin): admin.site.register(StateType, StateTypeAdmin) class StateAdmin(admin.ModelAdmin): - list_display = ["slug", "type", 'name', 'order', 'desc'] - list_filter = ["type", ] + list_display = ["slug", "type", 'name', 'order', 'desc', "used"] + list_filter = ["type", "used"] search_fields = ["slug", "type__label", "type__slug", "name", "desc"] filter_horizontal = ["next_states"] admin.site.register(State, StateAdmin) From 02dbe17fe7bfe707594531bb16dffd905c5c2a53 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 2 Sep 2025 16:48:38 -0300 Subject: [PATCH 636/846] feat: history for mailtrigger models (#9452) * feat: history for mailtrigger models * chore: update copyright years * fix: use py3.9-compatible call_command syntax It seems `option=[...]` does not work with positional arguments in py3.9's argparse. * chore: update resources --- ietf/mailtrigger/admin.py | 7 +- ...storicalrecipient_historicalmailtrigger.py | 122 ++++++++++++++++++ ietf/mailtrigger/models.py | 6 +- ietf/mailtrigger/resources.py | 42 +++++- 4 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 ietf/mailtrigger/migrations/0007_historicalrecipient_historicalmailtrigger.py diff --git a/ietf/mailtrigger/admin.py b/ietf/mailtrigger/admin.py index a60fd5b072..8c73f2ae02 100644 --- a/ietf/mailtrigger/admin.py +++ b/ietf/mailtrigger/admin.py @@ -1,9 +1,10 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2025, All Rights Reserved from django.contrib import admin +from simple_history.admin import SimpleHistoryAdmin from ietf.mailtrigger.models import MailTrigger, Recipient -class RecipientAdmin(admin.ModelAdmin): +class RecipientAdmin(SimpleHistoryAdmin): list_display = [ 'slug', 'desc', 'template', 'has_code', ] def has_code(self, obj): return hasattr(obj,'gather_%s'%obj.slug) @@ -11,7 +12,7 @@ def has_code(self, obj): admin.site.register(Recipient, RecipientAdmin) -class MailTriggerAdmin(admin.ModelAdmin): +class MailTriggerAdmin(SimpleHistoryAdmin): list_display = [ 'slug', 'desc', ] filter_horizontal = [ 'to', 'cc', ] admin.site.register(MailTrigger, MailTriggerAdmin) diff --git a/ietf/mailtrigger/migrations/0007_historicalrecipient_historicalmailtrigger.py b/ietf/mailtrigger/migrations/0007_historicalrecipient_historicalmailtrigger.py new file mode 100644 index 0000000000..d23b72d737 --- /dev/null +++ b/ietf/mailtrigger/migrations/0007_historicalrecipient_historicalmailtrigger.py @@ -0,0 +1,122 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +from io import StringIO + +from django.conf import settings +from django.core import management +from django.db import migrations, models +import django.db.models.deletion +import simple_history.models + +from ietf.utils.log import log + + +def forward(apps, schema_editor): + # Fill in history for existing data using the populate_history management command + captured_stdout = StringIO() + captured_stderr = StringIO() + try: + management.call_command( + "populate_history", + "mailtrigger.MailTrigger", + "mailtrigger.Recipient", + stdout=captured_stdout, + stderr=captured_stderr, + ) + except management.CommandError as err: + log( + "Failed to populate history for mailtrigger models.\n" + "\n" + f"stdout:\n{captured_stdout.getvalue() or ''}\n" + "\n" + f"stderr:\n{captured_stderr.getvalue() or ''}\n" + ) + raise RuntimeError("Failed to populate history for mailtrigger models") from err + log( + "Populated history for mailtrigger models.\n" + "\n" + f"stdout:\n{captured_stdout.getvalue() or ''}\n" + "\n" + f"stderr:\n{captured_stderr.getvalue() or ''}\n" + ) + + +def reverse(apps, schema_editor): + pass # nothing to do + + +class Migration(migrations.Migration): + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("mailtrigger", "0006_call_for_adoption_and_last_call_issued"), + ] + + operations = [ + migrations.CreateModel( + name="HistoricalRecipient", + fields=[ + ("slug", models.CharField(db_index=True, max_length=32)), + ("desc", models.TextField(blank=True)), + ("template", models.TextField(blank=True, null=True)), + ("history_id", models.AutoField(primary_key=True, serialize=False)), + ("history_date", models.DateTimeField(db_index=True)), + ("history_change_reason", models.CharField(max_length=100, null=True)), + ( + "history_type", + models.CharField( + choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")], + max_length=1, + ), + ), + ( + "history_user", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "historical recipient", + "verbose_name_plural": "historical recipients", + "ordering": ("-history_date", "-history_id"), + "get_latest_by": ("history_date", "history_id"), + }, + bases=(simple_history.models.HistoricalChanges, models.Model), + ), + migrations.CreateModel( + name="HistoricalMailTrigger", + fields=[ + ("slug", models.CharField(db_index=True, max_length=64)), + ("desc", models.TextField(blank=True)), + ("history_id", models.AutoField(primary_key=True, serialize=False)), + ("history_date", models.DateTimeField(db_index=True)), + ("history_change_reason", models.CharField(max_length=100, null=True)), + ( + "history_type", + models.CharField( + choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")], + max_length=1, + ), + ), + ( + "history_user", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "historical mail trigger", + "verbose_name_plural": "historical mail triggers", + "ordering": ("-history_date", "-history_id"), + "get_latest_by": ("history_date", "history_id"), + }, + bases=(simple_history.models.HistoricalChanges, models.Model), + ), + migrations.RunPython(forward, reverse), + ] diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 66b7139fa5..435729f893 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2015-2020, All Rights Reserved +# Copyright The IETF Trust 2015-2025, All Rights Reserved # -*- coding: utf-8 -*- @@ -7,6 +7,8 @@ from email.utils import parseaddr +from simple_history.models import HistoricalRecords + from ietf.doc.utils_bofreq import bofreq_editors, bofreq_responsible from ietf.utils.mail import formataddr, get_email_addresses_from_text from ietf.group.models import Group, Role @@ -38,6 +40,7 @@ class MailTrigger(models.Model): desc = models.TextField(blank=True) to = models.ManyToManyField('mailtrigger.Recipient', blank=True, related_name='used_in_to') cc = models.ManyToManyField('mailtrigger.Recipient', blank=True, related_name='used_in_cc') + history = HistoricalRecords() class Meta: ordering = ["slug"] @@ -49,6 +52,7 @@ class Recipient(models.Model): slug = models.CharField(max_length=32, primary_key=True) desc = models.TextField(blank=True) template = models.TextField(null=True, blank=True) + history = HistoricalRecords() class Meta: ordering = ["slug"] diff --git a/ietf/mailtrigger/resources.py b/ietf/mailtrigger/resources.py index eb5466618a..daca055bf4 100644 --- a/ietf/mailtrigger/resources.py +++ b/ietf/mailtrigger/resources.py @@ -7,7 +7,7 @@ from ietf import api -from ietf.mailtrigger.models import Recipient, MailTrigger +from ietf.mailtrigger.models import MailTrigger, Recipient class RecipientResource(ModelResource): @@ -37,3 +37,43 @@ class Meta: } api.mailtrigger.register(MailTriggerResource()) +from ietf.utils.resources import UserResource +class HistoricalMailTriggerResource(ModelResource): + history_user = ToOneField(UserResource, 'history_user', null=True) + class Meta: + queryset = MailTrigger.history.model.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'historicalmailtrigger' + ordering = ['history_id', ] + filtering = { + "slug": ALL, + "desc": ALL, + "history_id": ALL, + "history_date": ALL, + "history_change_reason": ALL, + "history_type": ALL, + "history_user": ALL_WITH_RELATIONS, + } +api.mailtrigger.register(HistoricalMailTriggerResource()) + +from ietf.utils.resources import UserResource +class HistoricalRecipientResource(ModelResource): + history_user = ToOneField(UserResource, 'history_user', null=True) + class Meta: + queryset = Recipient.history.model.objects.all() + serializer = api.Serializer() + cache = SimpleCache() + #resource_name = 'historicalrecipient' + ordering = ['history_id', ] + filtering = { + "slug": ALL, + "desc": ALL, + "template": ALL, + "history_id": ALL, + "history_date": ALL, + "history_change_reason": ALL, + "history_type": ALL, + "history_user": ALL_WITH_RELATIONS, + } +api.mailtrigger.register(HistoricalRecipientResource()) From 2960164714f0c0380d3259408b028a9150c8c27e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 3 Sep 2025 19:16:26 -0300 Subject: [PATCH 637/846] feat: Python 3.12 (#8811) * refactor: smtpd -> aiosmtpd * test: set mock return value for EmailOnFailureCommandTests The test has been working, but in a broken way, for as long as it has existed. The smtpd-based test_smtpserver was masking an exception that did not interfere with the test's effectiveness. * test: increase SMTP.line_length_limit * chore: suppress known deprecation warnings * refactor: utcfromtimestamp->fromtimestamp * refactor: it's now spelled "datetime.UTC" * feat: python 3.12 * chore: suppress deprecation warning * fix: utcnow() -> now(datetime.UTC) * chore: suppress deprecation warning * chore: more deprecation warnings * ci: update base image target version to 20250417T1507 * chore: reorg / clean up deprecation ignore list Removed a few suppressions that were OBE based on running the tests and checking versions of the dependencies that were causing them. Reordered kwargs to make it more readable (to me anyway). * chore: disable coverage test for now See the comment in settings.py for details. tl;dr coverage is unusably slow under python 3.12 as we're using it * ci: update base image target version to 20250422T1458 * ci: update base image target version to 20250604T2012 * ci: build/use py312 images (#9168) * ci: tag py312 base app * ci: datatrackerbase-app:latest -> py312 * ci: update base image target version to 20250719T0833 * refactor: update to coverage 7.9.2 + cleanup (#9256) * refactor: drop unused code_coverage_collection var * refactor: @skip_coverage -> pragma: no cover * chore(deps): bump coverage to current ver * refactor: split up set_coverage_checking() * refactor: inline IetfLiveServerTestCase (there's only one subclass) * feat: disable_coverage context mgr * chore: remove unused import * refactor: set_coverage_checking -> disable_coverage * refactor: elim more set_coverage_checking * refactor: start using coverage 7.9.2 * feat: working coverage 7.9 implementation * Extract coverage tools to ietf.utils.coverage * Revert to starting checker in settings_test Does not exactly match previous coverage reports. Need to investigate. * refactor: CustomJsonReporter->CustomDictReporter * chore: remove "migration" coverage entry Has not been populated in quite some time * test: test CoverageManager class * chore: exclude CustomDictReporter from coverage Setting up to test this will be complex and we'll notice other test failures/coverage weirdness if this does not behave. * chore: exclude coverage.py from coverage Way too meta * chore: update deps for py3.12 (#9270) * chore(deps): argon2-cffi (supports py3.14) * chore(deps): setuptools to latest (py3.9+) * chore(deps): bump beautifulsoup4 (py3.7+) * chore(deps): bump bibtexparser (py3) * chore(deps): bump bleach (py3.13) * chore(deps): bump bleach (py3.13) * chore(deps): lift pin on boto3 + adjust settings * chore(deps): bump celery (py3.13) * chore(deps): bump django-admin-rangefilter (py3.12) * chore(deps): bump django-analytical (py3.13) * chore(deps): bump django-bootstrap5 (py3.13) * chore(deps): bump django-celery-beat (py3.12) Still holding back until their #894 is conclusively resolved. The 2.8.x release adds official py3.13 support. * chore(deps): bump django-celery-results (py3.13) * chore(deps): remove django-csp (not used) * chore(deps): bump django-cors-headers (py3.13) * chore(deps): bump django-debug-toolbar (py3.13) * refactor: drop stale django-referrer-policy pkg Supported via django's SecurityMiddleware since longtime * chore(deps): bump django-simple-history (py3.13) * chore(deps): bump django-storages (py3.12) * chore(deps): bump django-tastypie+update patch * chore(deps): bump django_vite+update config * chore(deps): bump djangorestframework+remove cap * chore(deps): remove djlint * chore(deps): bump docutils (py3.14) * chore(deps): bump drf-standardized-errors (py3.13) * chore(deps): bump factory-boy (py3.13) * chore(deps): bump github3.py (py3.11??) * chore(deps): bump gunicorn (py3.12) * chore(deps): bump html2text (py3.13) * chore(deps): bump inflect * chore(deps): bump jsonfield (py3.10-3.13) * chore(deps): bump jsonschema (py3.13) * chore(deps): bump logging_tree (py3.12) * chore(deps): bump lxml (py3.13) * chore(deps): bump markdown (py3.13) * chore(deps): bump mock * chore(deps): bump oic (py3.11) * chore(deps): bump pillow (py3.13) * chore(deps): bump psycopg2 (py3.13) * chore(deps): bump pyang (py3.11) * chore(deps): bump pydyf (py3.12) * chore(deps): bump pyflakes (py3.9+) * chore(deps): bump pyopenssl (py3.13) * chore(deps): bump pyquery (py3.12) * chore(deps): bump python-dateutil (py3.12) * chore(deps): bump python-json-logger (py3.13) * chore(deps): bump python-mimeparse (py3.13) * chore(deps): bump pytz (py3.13) Brings a meeting migration to adjust tz/country choices. * chore(deps): bump requests (py3.13) * chore(deps): bump requests-mock (py3.12) * chore(deps): bump scout-apm (py3.12) * chore(deps): bump selenium (py3.13) * chore(deps): bump tblib (py3.13) * chore(deps): bump tqdm (py3.12) * chore(deps): bump unidecode (py3.11) * chore(deps): adjust requirements.txt to install correctly * chore(deps): bump urllib3, remove pin (py3.13) Situation requiring the pin to < 2.0 appears to have resolved. * chore(deps): bump weasyprint (py3.13) * chore(deps): bump xml2rfc (py3.13) * fix: lint * ci: py312 base for celery in sandbox * ci: update base image target version to 20250819T1645 * chore: finish dropping smtpd (#9384) * chore: smtpd debug server -> aiosmtpd * chore(dev): accept long SMTP lines * chore(dev): use correct aiosmtpd handler * chore: update copyright years * Revert "chore: update copyright years" This reverts commit 2814cb85dc43c9a27f9834c629474e58d1dfb0f7. --------- Co-authored-by: jennifer-richards <19472766+jennifer-richards@users.noreply.github.com> --- .github/workflows/build-base-app.yml | 1 + .github/workflows/tests-az.yml | 2 +- .vscode/tasks.json | 5 +- README.md | 2 +- dev/build/Dockerfile | 2 +- dev/build/TARGET_BASE | 2 +- dev/celery/Dockerfile | 0 dev/deploy-to-container/cli.js | 6 +- dev/diff/cli.js | 6 +- dev/tests/debug.sh | 2 +- dev/tests/docker-compose.debug.yml | 2 +- docker/app.Dockerfile | 2 +- docker/base.Dockerfile | 2 +- docker/celery.Dockerfile | 2 +- docker/configs/settings_local.py | 2 + docker/configs/settings_local_vite.py | 6 +- docker/scripts/app-configure-blobstore.py | 6 +- docker/scripts/app-init.sh | 2 +- ietf/api/__init__.py | 2 +- ietf/api/tests.py | 6 +- ietf/bin/aliases-from-json.py | 2 +- ietf/doc/models.py | 2 +- ietf/doc/templatetags/ballot_icon.py | 2 +- ietf/doc/tests_draft.py | 4 +- ietf/doc/tests_utils.py | 2 +- ietf/doc/views_stats.py | 6 +- ietf/group/views.py | 2 +- ietf/idindex/index.py | 4 +- ietf/iesg/views.py | 2 +- ietf/ietfauth/views.py | 2 +- ietf/ipr/mail.py | 4 +- ietf/ipr/views.py | 14 +- ietf/liaisons/tests.py | 8 +- ...meeting_country_alter_meeting_time_zone.py | 1 + ietf/meeting/models.py | 6 +- ietf/meeting/tests_js.py | 2 +- ietf/meeting/tests_tasks.py | 2 +- ietf/meeting/tests_views.py | 29 ++-- ietf/meeting/views.py | 6 +- ietf/nomcom/tests.py | 2 +- ietf/nomcom/views.py | 4 +- ietf/settings.py | 48 +++--- ietf/settings_test.py | 5 +- ietf/submit/checkers.py | 57 ++++--- ietf/sync/iana.py | 8 +- ietf/sync/tasks.py | 2 +- ietf/sync/tests.py | 6 +- .../utils/{test_smtpserver.py => aiosmtpd.py} | 21 ++- ietf/utils/coverage.py | 90 ++++++++++ ietf/utils/decorators.py | 12 -- ietf/utils/jstest.py | 41 ++++- ietf/utils/meetecho.py | 4 +- ietf/utils/serialize.py | 2 +- ietf/utils/test_runner.py | 155 ++++++------------ ietf/utils/tests.py | 14 +- ietf/utils/tests_coverage.py | 56 +++++++ ietf/utils/tests_meetecho.py | 26 +-- ietf/utils/timezone.py | 2 +- k8s/settings_local.py | 6 +- ...astypie-django22-fielderror-response.patch | 8 +- requirements.txt | 135 ++++++++------- 61 files changed, 505 insertions(+), 359 deletions(-) create mode 100644 dev/celery/Dockerfile rename ietf/utils/{test_smtpserver.py => aiosmtpd.py} (72%) create mode 100644 ietf/utils/coverage.py create mode 100644 ietf/utils/tests_coverage.py diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index ef8a17f6b4..4a4394fca0 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -51,6 +51,7 @@ jobs: push: true tags: | ghcr.io/ietf-tools/datatracker-app-base:${{ env.IMGVERSION }} + ghcr.io/ietf-tools/datatracker-app-base:py312 ${{ github.ref == 'refs/heads/main' && 'ghcr.io/ietf-tools/datatracker-app-base:latest' || '' }} - name: Update version references diff --git a/.github/workflows/tests-az.yml b/.github/workflows/tests-az.yml index 8553563a19..d1fe0cdf62 100644 --- a/.github/workflows/tests-az.yml +++ b/.github/workflows/tests-az.yml @@ -62,7 +62,7 @@ jobs: echo "Starting Containers..." sudo docker network create dtnet sudo docker run -d --name db --network=dtnet ghcr.io/ietf-tools/datatracker-db:latest & - sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:latest sleep infinity & + sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:py312 sleep infinity & wait echo "Cloning datatracker repo..." diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 4bd0b99363..8b36b0e6ac 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -105,10 +105,11 @@ "command": "/usr/local/bin/python", "args": [ "-m", - "smtpd", + "aiosmtpd", "-n", "-c", - "DebuggingServer", + "ietf.utils.aiosmtpd.DevDebuggingHandler", + "-l", "localhost:2025" ], "presentation": { diff --git a/README.md b/README.md index abebb7ca02..4e1b7e1a45 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Pages will gradually be updated to Vue 3 components. These components are locate Each Vue 3 app has its own sub-directory. For example, the agenda app is located under `/client/agenda`. -The datatracker makes use of the Django-Vite plugin to point to either the Vite.js server or the precompiled production files. The `DJANGO_VITE_DEV_MODE` flag, found in the `ietf/settings_local.py` file determines whether the Vite.js server is used or not. +The datatracker makes use of the Django-Vite plugin to point to either the Vite.js server or the precompiled production files. The `DJANGO_VITE["default"]["dev_mode"]` flag, found in the `ietf/settings_local.py` file determines whether the Vite.js server is used or not. In development mode, you must start the Vite.js development server, in addition to the usual Datatracker server: diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index d619ee99ee..658f1e5695 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250821T1359 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250819T1645 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index b6fc12e128..9e510ad8db 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250821T1359 +20250819T1645 diff --git a/dev/celery/Dockerfile b/dev/celery/Dockerfile new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dev/deploy-to-container/cli.js b/dev/deploy-to-container/cli.js index 1a2d993ac4..2f0faad151 100644 --- a/dev/deploy-to-container/cli.js +++ b/dev/deploy-to-container/cli.js @@ -85,7 +85,7 @@ async function main () { // Pull latest Datatracker Base image console.info('Pulling latest Datatracker base docker image...') - const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:latest') + const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:py312') await new Promise((resolve, reject) => { dock.modem.followProgress(appImagePullStream, (err, res) => err ? reject(err) : resolve(res)) }) @@ -214,7 +214,7 @@ async function main () { const celeryContainers = {} for (const conConf of conConfs) { celeryContainers[conConf.name] = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', name: `dt-${conConf.name}-${branch}`, Hostname: `dt-${conConf.name}-${branch}`, Env: [ @@ -244,7 +244,7 @@ async function main () { // Create Datatracker container console.info(`Creating Datatracker docker container... [dt-app-${branch}]`) const appContainer = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', name: `dt-app-${branch}`, Hostname: `dt-app-${branch}`, Env: [ diff --git a/dev/diff/cli.js b/dev/diff/cli.js index 461b0c37a0..0cf353cc65 100644 --- a/dev/diff/cli.js +++ b/dev/diff/cli.js @@ -567,7 +567,7 @@ async function main () { { title: 'Pulling latest Datatracker base docker image...', task: async (subctx, subtask) => { - const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:latest') + const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:py312') await new Promise((resolve, reject) => { dock.modem.followProgress(appImagePullStream, (err, res) => err ? reject(err) : resolve(res)) }) @@ -648,7 +648,7 @@ async function main () { title: 'Creating source Datatracker docker container...', task: async (subctx, subtask) => { containers.appSource = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', name: 'dt-diff-app-source', Tty: true, Hostname: 'appsource', @@ -664,7 +664,7 @@ async function main () { title: 'Creating target Datatracker docker container...', task: async (subctx, subtask) => { containers.appTarget = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', name: 'dt-diff-app-target', Tty: true, Hostname: 'apptarget', diff --git a/dev/tests/debug.sh b/dev/tests/debug.sh index d87c504bb9..e92e6d9b2a 100644 --- a/dev/tests/debug.sh +++ b/dev/tests/debug.sh @@ -9,7 +9,7 @@ # Simply type "exit" + ENTER to exit and shutdown this test environment. echo "Fetching latest images..." -docker pull ghcr.io/ietf-tools/datatracker-app-base:latest +docker pull ghcr.io/ietf-tools/datatracker-app-base:py312 docker pull ghcr.io/ietf-tools/datatracker-db:latest echo "Starting containers..." docker compose -f docker-compose.debug.yml -p dtdebug --compatibility up -d diff --git a/dev/tests/docker-compose.debug.yml b/dev/tests/docker-compose.debug.yml index 8117b92375..168bbd4e92 100644 --- a/dev/tests/docker-compose.debug.yml +++ b/dev/tests/docker-compose.debug.yml @@ -5,7 +5,7 @@ version: '3.8' services: app: - image: ghcr.io/ietf-tools/datatracker-app-base:latest + image: ghcr.io/ietf-tools/datatracker-app-base:py312 command: -f /dev/null working_dir: /__w/datatracker/datatracker entrypoint: tail diff --git a/docker/app.Dockerfile b/docker/app.Dockerfile index fee3833733..e3df9bd4b4 100644 --- a/docker/app.Dockerfile +++ b/docker/app.Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:latest +FROM ghcr.io/ietf-tools/datatracker-app-base:py312 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile index 57aac8ee56..c1fe5b093e 100644 --- a/docker/base.Dockerfile +++ b/docker/base.Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-bookworm +FROM python:3.12-bookworm LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/celery.Dockerfile b/docker/celery.Dockerfile index e7c7b9cc3f..279d5c7550 100644 --- a/docker/celery.Dockerfile +++ b/docker/celery.Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:latest +FROM ghcr.io/ietf-tools/datatracker-app-base:py312 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index ca51871463..3ee7a4295d 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -89,6 +89,8 @@ secret_key="minio_pass", security_token=None, client_config=botocore.config.Config( + request_checksum_calculation="when_required", + response_checksum_validation="when_required", signature_version="s3v4", connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, read_timeout=BLOBSTORAGE_READ_TIMEOUT, diff --git a/docker/configs/settings_local_vite.py b/docker/configs/settings_local_vite.py index 7fb12a003d..9116905b12 100644 --- a/docker/configs/settings_local_vite.py +++ b/docker/configs/settings_local_vite.py @@ -2,5 +2,9 @@ # -*- coding: utf-8 -*- from ietf.settings_local import * # pyflakes:ignore +from ietf.settings_local import DJANGO_VITE -DJANGO_VITE_DEV_MODE = True +DJANGO_VITE["default"] |= { + "dev_mode": True, + "dev_server_port": 3000, +} diff --git a/docker/scripts/app-configure-blobstore.py b/docker/scripts/app-configure-blobstore.py index df4685b246..3140e39306 100755 --- a/docker/scripts/app-configure-blobstore.py +++ b/docker/scripts/app-configure-blobstore.py @@ -17,7 +17,11 @@ def init_blobstore(): aws_access_key_id=os.environ.get("BLOB_STORE_ACCESS_KEY", "minio_root"), aws_secret_access_key=os.environ.get("BLOB_STORE_SECRET_KEY", "minio_pass"), aws_session_token=None, - config=botocore.config.Config(signature_version="s3v4"), + config=botocore.config.Config( + request_checksum_calculation="when_required", + response_checksum_validation="when_required", + signature_version="s3v4", + ), ) for bucketname in ARTIFACT_STORAGE_NAMES: try: diff --git a/docker/scripts/app-init.sh b/docker/scripts/app-init.sh index 17e0c6c764..1d895cdf53 100755 --- a/docker/scripts/app-init.sh +++ b/docker/scripts/app-init.sh @@ -108,7 +108,7 @@ echo "Running initial checks..." if [ -z "$EDITOR_VSCODE" ]; then CODE=0 - python -m smtpd -n -c DebuggingServer localhost:2025 & + python -m aiosmtpd -n -c ietf.utils.aiosmtpd.DevDebuggingHandler -l localhost:2025 & if [ -z "$*" ]; then echo "-----------------------------------------------------------------" echo "Ready!" diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index 230f8339bd..d4562f97dd 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -181,7 +181,7 @@ class Serializer(tastypie.serializers.Serializer): OPTION_ESCAPE_NULLS = "datatracker-escape-nulls" def format_datetime(self, data): - return data.astimezone(datetime.timezone.utc).replace(tzinfo=None).isoformat(timespec="seconds") + "Z" + return data.astimezone(datetime.UTC).replace(tzinfo=None).isoformat(timespec="seconds") + "Z" def to_simple(self, data, options): options = options or {} diff --git a/ietf/api/tests.py b/ietf/api/tests.py index 865f877bfb..2a44791a5c 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -462,12 +462,12 @@ def test_api_add_session_attendees(self): self.assertTrue(session.attended_set.filter(person=recman).exists()) self.assertEqual( session.attended_set.get(person=recman).time, - datetime.datetime(2023, 9, 3, 12, 34, 56, tzinfo=datetime.timezone.utc), + datetime.datetime(2023, 9, 3, 12, 34, 56, tzinfo=datetime.UTC), ) self.assertTrue(session.attended_set.filter(person=otherperson).exists()) self.assertEqual( session.attended_set.get(person=otherperson).time, - datetime.datetime(2023, 9, 3, 3, 0, 19, tzinfo=datetime.timezone.utc), + datetime.datetime(2023, 9, 3, 3, 0, 19, tzinfo=datetime.UTC), ) def test_api_upload_polls_and_chatlog(self): @@ -871,7 +871,7 @@ def test_api_new_meeting_registration_v2_nomcom(self): self.assertEqual(volunteer.origin, 'registration') def test_api_version(self): - DumpInfo.objects.create(date=timezone.datetime(2022,8,31,7,10,1,tzinfo=datetime.timezone.utc), host='testapi.example.com',tz='UTC') + DumpInfo.objects.create(date=timezone.datetime(2022,8,31,7,10,1,tzinfo=datetime.UTC), host='testapi.example.com',tz='UTC') url = urlreverse('ietf.api.views.version') r = self.client.get(url) data = r.json() diff --git a/ietf/bin/aliases-from-json.py b/ietf/bin/aliases-from-json.py index a0c383a1ac..0da5d1f8b9 100644 --- a/ietf/bin/aliases-from-json.py +++ b/ietf/bin/aliases-from-json.py @@ -38,7 +38,7 @@ def generate_files(records, adest, vdest, postconfirm, vdomain): vpath = tmppath / "virtual" with apath.open("w") as afile, vpath.open("w") as vfile: - date = datetime.datetime.now(datetime.timezone.utc) + date = datetime.datetime.now(datetime.UTC) signature = f"# Generated by {Path(__file__).absolute()} at {date}\n" afile.write(signature) vfile.write(signature) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index b6f36cb8a7..25ee734cbe 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1157,7 +1157,7 @@ def fake_history_obj(self, rev): elif rev_events.exists(): time = rev_events.first().time else: - time = datetime.datetime.fromtimestamp(0, datetime.timezone.utc) + time = datetime.datetime.fromtimestamp(0, datetime.UTC) dh = DocHistory(name=self.name, rev=rev, doc=self, time=time, type=self.type, title=self.title, stream=self.stream, group=self.group) diff --git a/ietf/doc/templatetags/ballot_icon.py b/ietf/doc/templatetags/ballot_icon.py index a94c145007..07a6c7f926 100644 --- a/ietf/doc/templatetags/ballot_icon.py +++ b/ietf/doc/templatetags/ballot_icon.py @@ -196,7 +196,7 @@ def state_age_colored(doc): .time ) except IndexError: - state_datetime = datetime.datetime(1990, 1, 1, tzinfo=datetime.timezone.utc) + state_datetime = datetime.datetime(1990, 1, 1, tzinfo=datetime.UTC) days = (timezone.now() - state_datetime).days # loosely based on the Publish Path page at the iesg wiki if iesg_state == "lc": diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index ab7eaba768..ab33acebe6 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -678,11 +678,11 @@ def test_in_draft_expire_freeze(self): datetime.datetime.combine( ietf_monday - datetime.timedelta(days=1), datetime.time(0, 0, 0), - tzinfo=datetime.timezone.utc, + tzinfo=datetime.UTC, ) )) self.assertFalse(in_draft_expire_freeze( - datetime.datetime.combine(ietf_monday, datetime.time(0, 0, 0), tzinfo=datetime.timezone.utc) + datetime.datetime.combine(ietf_monday, datetime.time(0, 0, 0), tzinfo=datetime.UTC) )) def test_warn_expirable_drafts(self): diff --git a/ietf/doc/tests_utils.py b/ietf/doc/tests_utils.py index f610fe3d76..7db59819da 100644 --- a/ietf/doc/tests_utils.py +++ b/ietf/doc/tests_utils.py @@ -148,7 +148,7 @@ def test_update_action_holders_resets_age(self): doc = self.doc_in_iesg_state('pub-req') doc.action_holders.set([self.ad]) dah = doc.documentactionholder_set.get(person=self.ad) - dah.time_added = datetime.datetime(2020, 1, 1, tzinfo=datetime.timezone.utc) # arbitrary date in the past + dah.time_added = datetime.datetime(2020, 1, 1, tzinfo=datetime.UTC) # arbitrary date in the past dah.save() right_now = timezone.now() diff --git a/ietf/doc/views_stats.py b/ietf/doc/views_stats.py index 0bbf0b91c5..028573b338 100644 --- a/ietf/doc/views_stats.py +++ b/ietf/doc/views_stats.py @@ -18,7 +18,7 @@ from ietf.utils.timezone import date_today -epochday = datetime.datetime.utcfromtimestamp(0).date().toordinal() +epochday = datetime.datetime.fromtimestamp(0, datetime.UTC).date().toordinal() def dt(s): @@ -35,13 +35,13 @@ def model_to_timeline_data(model, field='time', **kwargs): assert field in [ f.name for f in model._meta.get_fields() ] objects = ( model.objects.filter(**kwargs) - .annotate(date=TruncDate(field, tzinfo=datetime.timezone.utc)) + .annotate(date=TruncDate(field, tzinfo=datetime.UTC)) .order_by('date') .values('date') .annotate(count=Count('id'))) if objects.exists(): obj_list = list(objects) - today = date_today(datetime.timezone.utc) + today = date_today(datetime.UTC) if not obj_list[-1]['date'] == today: obj_list += [ {'date': today, 'count': 0} ] data = [ ((e['date'].toordinal()-epochday)*1000*60*60*24, e['count']) for e in obj_list ] diff --git a/ietf/group/views.py b/ietf/group/views.py index 3529b31f68..bc785ff81e 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -941,7 +941,7 @@ def meetings(request, acronym, group_type=None): cutoff_date = revsub_dates_by_meeting[s.meeting.pk] else: cutoff_date = s.meeting.date + datetime.timedelta(days=s.meeting.submission_correction_day_offset) - s.cached_is_cutoff = date_today(datetime.timezone.utc) > cutoff_date + s.cached_is_cutoff = date_today(datetime.UTC) > cutoff_date future, in_progress, recent, past = group_sessions(sessions) diff --git a/ietf/idindex/index.py b/ietf/idindex/index.py index 4f021c0dc7..19eb29d4da 100644 --- a/ietf/idindex/index.py +++ b/ietf/idindex/index.py @@ -276,7 +276,7 @@ def active_drafts_index_by_group(extra_values=()): groups = [g for g in groups_dict.values() if hasattr(g, "active_drafts")] groups.sort(key=lambda g: g.acronym) - fallback_time = datetime.datetime(1950, 1, 1, tzinfo=datetime.timezone.utc) + fallback_time = datetime.datetime(1950, 1, 1, tzinfo=datetime.UTC) for g in groups: g.active_drafts.sort(key=lambda d: d.get("initial_rev_time", fallback_time)) @@ -302,6 +302,6 @@ def id_index_txt(with_abstracts=False): return render_to_string("idindex/id_index.txt", { 'groups': groups, - 'time': timezone.now().astimezone(datetime.timezone.utc).strftime("%Y-%m-%d %H:%M:%S %Z"), + 'time': timezone.now().astimezone(datetime.UTC).strftime("%Y-%m-%d %H:%M:%S %Z"), 'with_abstracts': with_abstracts, }) diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index 7b9f489b44..ffd4515c98 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -101,7 +101,7 @@ def agenda_json(request, date=None): res = { "telechat-date": str(data["date"]), - "as-of": str(datetime.datetime.utcnow()), + "as-of": str(datetime.datetime.now(datetime.UTC)), "page-counts": telechat_page_count(date=get_agenda_date(date))._asdict(), "sections": {}, } diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 4219747e12..b5256b14f8 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -517,7 +517,7 @@ def confirm_password_reset(request, auth): password = data['password'] last_login = None if data['last_login']: - last_login = datetime.datetime.fromtimestamp(data['last_login'], datetime.timezone.utc) + last_login = datetime.datetime.fromtimestamp(data['last_login'], datetime.UTC) except django.core.signing.BadSignature: raise Http404("Invalid or expired auth") diff --git a/ietf/ipr/mail.py b/ietf/ipr/mail.py index 167b11956c..9bef751b95 100644 --- a/ietf/ipr/mail.py +++ b/ietf/ipr/mail.py @@ -66,9 +66,9 @@ def utc_from_string(s): if date is None: return None elif is_aware(date): - return date.astimezone(datetime.timezone.utc) + return date.astimezone(datetime.UTC) else: - return date.replace(tzinfo=datetime.timezone.utc) + return date.replace(tzinfo=datetime.UTC) # ---------------------------------------------------------------- # Email Functions diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 24453df2d2..08979a3972 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -152,13 +152,13 @@ def ipr_rfc_number(disclosureDate, thirdPartyDisclosureFlag): # RFC publication date comes from the RFC Editor announcement ipr_rfc_pub_datetime = { - 1310 : datetime.datetime(1992, 3, 13, 0, 0, tzinfo=datetime.timezone.utc), - 1802 : datetime.datetime(1994, 3, 23, 0, 0, tzinfo=datetime.timezone.utc), - 2026 : datetime.datetime(1996, 10, 29, 0, 0, tzinfo=datetime.timezone.utc), - 3668 : datetime.datetime(2004, 2, 18, 0, 0, tzinfo=datetime.timezone.utc), - 3979 : datetime.datetime(2005, 3, 2, 2, 23, tzinfo=datetime.timezone.utc), - 4879 : datetime.datetime(2007, 4, 10, 18, 21, tzinfo=datetime.timezone.utc), - 8179 : datetime.datetime(2017, 5, 31, 23, 1, tzinfo=datetime.timezone.utc), + 1310 : datetime.datetime(1992, 3, 13, 0, 0, tzinfo=datetime.UTC), + 1802 : datetime.datetime(1994, 3, 23, 0, 0, tzinfo=datetime.UTC), + 2026 : datetime.datetime(1996, 10, 29, 0, 0, tzinfo=datetime.UTC), + 3668 : datetime.datetime(2004, 2, 18, 0, 0, tzinfo=datetime.UTC), + 3979 : datetime.datetime(2005, 3, 2, 2, 23, tzinfo=datetime.UTC), + 4879 : datetime.datetime(2007, 4, 10, 18, 21, tzinfo=datetime.UTC), + 8179 : datetime.datetime(2017, 5, 31, 23, 1, tzinfo=datetime.UTC), } if disclosureDate < ipr_rfc_pub_datetime[1310]: diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index 8bbaa4f053..a1fbf77841 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -723,7 +723,7 @@ def test_add_incoming_liaison(self): from_groups = [ str(g.pk) for g in Group.objects.filter(type="sdo") ] to_group = Group.objects.get(acronym="mars") submitter = Person.objects.get(user__username="marschairman") - today = date_today(datetime.timezone.utc) + today = date_today(datetime.UTC) related_liaison = liaison r = self.client.post(url, dict(from_groups=from_groups, @@ -808,7 +808,7 @@ def test_add_outgoing_liaison(self): from_group = Group.objects.get(acronym="mars") to_group = Group.objects.filter(type="sdo")[0] submitter = Person.objects.get(user__username="marschairman") - today = date_today(datetime.timezone.utc) + today = date_today(datetime.UTC) related_liaison = liaison r = self.client.post(url, dict(from_groups=str(from_group.pk), @@ -878,7 +878,7 @@ def test_add_outgoing_liaison_unapproved_post_only(self): from_group = Group.objects.get(acronym="mars") to_group = Group.objects.filter(type="sdo")[0] submitter = Person.objects.get(user__username="marschairman") - today = date_today(datetime.timezone.utc) + today = date_today(datetime.UTC) r = self.client.post(url, dict(from_groups=str(from_group.pk), from_contact=submitter.email_address(), @@ -1062,7 +1062,7 @@ def test_search(self): LiaisonStatementEventFactory(type_id='posted', statement__body="Has recently in its body",statement__from_groups=[GroupFactory(type_id='sdo',acronym='ulm'),]) # Statement 2 s2 = LiaisonStatementEventFactory(type_id='posted', statement__body="That word does not occur here", statement__title="Nor does it occur here") - s2.time=datetime.datetime(2010, 1, 1, tzinfo=datetime.timezone.utc) + s2.time=datetime.datetime(2010, 1, 1, tzinfo=datetime.UTC) s2.save() # test list only, no search filters diff --git a/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py b/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py index 8f5db26112..8c467ea156 100644 --- a/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py +++ b/ietf/meeting/migrations/0016_alter_meeting_country_alter_meeting_time_zone.py @@ -4,6 +4,7 @@ class Migration(migrations.Migration): + dependencies = [ ("meeting", "0015_alter_meeting_time_zone"), ] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index de0192769e..f3df23e916 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -149,7 +149,7 @@ def get_00_cutoff(self): cutoff_date = importantdate.date else: cutoff_date = self.date + datetime.timedelta(days=ImportantDateName.objects.get(slug='idcutoff').default_offset_days) - cutoff_time = datetime_from_date(cutoff_date, datetime.timezone.utc) + self.idsubmit_cutoff_time_utc + cutoff_time = datetime_from_date(cutoff_date, datetime.UTC) + self.idsubmit_cutoff_time_utc return cutoff_time def get_01_cutoff(self): @@ -161,7 +161,7 @@ def get_01_cutoff(self): cutoff_date = importantdate.date else: cutoff_date = self.date + datetime.timedelta(days=ImportantDateName.objects.get(slug='idcutoff').default_offset_days) - cutoff_time = datetime_from_date(cutoff_date, datetime.timezone.utc) + self.idsubmit_cutoff_time_utc + cutoff_time = datetime_from_date(cutoff_date, datetime.UTC) + self.idsubmit_cutoff_time_utc return cutoff_time def get_reopen_time(self): @@ -1172,7 +1172,7 @@ def can_manage_materials(self, user): return can_manage_materials(user,self.group) def is_material_submission_cutoff(self): - return date_today(datetime.timezone.utc) > self.meeting.get_submission_correction_date() + return date_today(datetime.UTC) > self.meeting.get_submission_correction_date() def joint_with_groups_acronyms(self): return [group.acronym for group in self.joint_with_groups.all()] diff --git a/ietf/meeting/tests_js.py b/ietf/meeting/tests_js.py index a184a7c6d0..262b47652c 100644 --- a/ietf/meeting/tests_js.py +++ b/ietf/meeting/tests_js.py @@ -1576,7 +1576,7 @@ def test_delete_timeslot_cancel(self): def do_delete_time_interval_test(self, cancel=False): delete_time_local = datetime_from_date(self.meeting.date, self.meeting.tz()).replace(hour=10) - delete_time = delete_time_local.astimezone(datetime.timezone.utc) + delete_time = delete_time_local.astimezone(datetime.UTC) duration = datetime.timedelta(minutes=60) delete: [TimeSlot] = TimeSlotFactory.create_batch( # type: ignore[annotation-unchecked] diff --git a/ietf/meeting/tests_tasks.py b/ietf/meeting/tests_tasks.py index 0c442c4bf7..a5da00ecbf 100644 --- a/ietf/meeting/tests_tasks.py +++ b/ietf/meeting/tests_tasks.py @@ -23,7 +23,7 @@ def test_proceedings_content_refresh_task(self, mock_generate): meeting127 = MeetingFactory(type_id="ietf", number="127") # 24 * 5 + 7 # Times to be returned - now_utc = datetime.datetime.now(tz=datetime.timezone.utc) + now_utc = datetime.datetime.now(tz=datetime.UTC) hour_00_utc = now_utc.replace(hour=0) hour_01_utc = now_utc.replace(hour=1) hour_07_utc = now_utc.replace(hour=7) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index f382772485..bd3ab772fc 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -55,9 +55,8 @@ from ietf.meeting.views import session_draft_list, parse_agenda_filter_params, sessions_post_save, agenda_extract_schedule from ietf.meeting.views import get_summary_by_area, get_summary_by_type, get_summary_by_purpose, generate_agenda_data from ietf.name.models import SessionStatusName, ImportantDateName, RoleName, ProceedingsMaterialTypeName -from ietf.utils.decorators import skip_coverage from ietf.utils.mail import outbox, empty_outbox, get_payload_text -from ietf.utils.test_runner import TestBlobstoreManager +from ietf.utils.test_runner import TestBlobstoreManager, disable_coverage from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent from ietf.utils.timezone import date_today, time_now @@ -321,11 +320,11 @@ def test_meeting_agenda(self): self.assertContains(r, session.group.parent.acronym.upper()) self.assertContains(r, slot.location.name) self.assertContains(r, "{}-{}".format( - slot.time.astimezone(datetime.timezone.utc).strftime("%H%M"), - (slot.time + slot.duration).astimezone(datetime.timezone.utc).strftime("%H%M"), + slot.time.astimezone(datetime.UTC).strftime("%H%M"), + (slot.time + slot.duration).astimezone(datetime.UTC).strftime("%H%M"), )) self.assertContains(r, "shown in UTC") - updated = meeting.updated().astimezone(datetime.timezone.utc).strftime("%Y-%m-%d %H:%M:%S %Z") + updated = meeting.updated().astimezone(datetime.UTC).strftime("%Y-%m-%d %H:%M:%S %Z") self.assertContains(r, f"Updated {updated}") # text, invalid updated (none) @@ -369,8 +368,8 @@ def test_meeting_agenda(self): self.assertContains(r, session.group.parent.acronym.upper()) self.assertContains(r, slot.location.name) self.assertContains(r, registration_text) - start_time = slot.time.astimezone(datetime.timezone.utc) - end_time = slot.end_time().astimezone(datetime.timezone.utc) + start_time = slot.time.astimezone(datetime.UTC) + end_time = slot.end_time().astimezone(datetime.UTC) self.assertContains(r, '"{}","{}","{}"'.format( start_time.strftime("%Y-%m-%d"), start_time.strftime("%H%M"), @@ -1037,7 +1036,7 @@ def test_important_dates_ical(self): updated = meeting.updated() self.assertIsNotNone(updated) - expected_updated = updated.astimezone(datetime.timezone.utc).strftime("%Y%m%dT%H%M%SZ") + expected_updated = updated.astimezone(datetime.UTC).strftime("%Y%m%dT%H%M%SZ") self.assertContains(r, f"DTSTAMP:{expected_updated}") dtstamps_count = r.content.decode("utf-8").count(f"DTSTAMP:{expected_updated}") self.assertEqual(dtstamps_count, meeting.importantdate_set.count()) @@ -1181,8 +1180,8 @@ def test_session_draft_tarfile(self): os.unlink(filename) @skipIf(skip_pdf_tests, skip_message) - @skip_coverage - def test_session_draft_pdf(self): + @disable_coverage() + def test_session_draft_pdf(self): # pragma: no cover session, filenames = self.build_session_setup() try: url = urlreverse('ietf.meeting.views.session_draft_pdf', kwargs={'num':session.meeting.number,'acronym':session.group.acronym}) @@ -2117,8 +2116,8 @@ def test_editor_time_zone(self): # strftime() does not seem to support hours without leading 0, so do this manually time_label_string = f'{ts_start.hour:d}:{ts_start.minute:02d} - {ts_end.hour:d}:{ts_end.minute:02d}' self.assertIn(time_label_string, time_label.text()) - self.assertEqual(time_label.attr('data-start'), ts_start.astimezone(datetime.timezone.utc).isoformat()) - self.assertEqual(time_label.attr('data-end'), ts_end.astimezone(datetime.timezone.utc).isoformat()) + self.assertEqual(time_label.attr('data-start'), ts_start.astimezone(datetime.UTC).isoformat()) + self.assertEqual(time_label.attr('data-end'), ts_end.astimezone(datetime.UTC).isoformat()) ts_swap = time_label.find('.swap-timeslot-col') origin_label = ts_swap.attr('data-origin-label') @@ -2129,8 +2128,8 @@ def test_editor_time_zone(self): timeslot_elt = pq(f'#timeslot{timeslot.pk}') self.assertEqual(len(timeslot_elt), 1) - self.assertEqual(timeslot_elt.attr('data-start'), ts_start.astimezone(datetime.timezone.utc).isoformat()) - self.assertEqual(timeslot_elt.attr('data-end'), ts_end.astimezone(datetime.timezone.utc).isoformat()) + self.assertEqual(timeslot_elt.attr('data-start'), ts_start.astimezone(datetime.UTC).isoformat()) + self.assertEqual(timeslot_elt.attr('data-end'), ts_end.astimezone(datetime.UTC).isoformat()) timeslot_label = pq(f'#timeslot{timeslot.pk} .time-label') self.assertEqual(len(timeslot_label), 1) @@ -5233,7 +5232,7 @@ def test_upcoming_ical(self): updated = meeting.updated() self.assertIsNotNone(updated) - expected_updated = updated.astimezone(datetime.timezone.utc).strftime("%Y%m%dT%H%M%SZ") + expected_updated = updated.astimezone(datetime.UTC).strftime("%Y%m%dT%H%M%SZ") self.assertContains(r, f"DTSTAMP:{expected_updated}") # With default cached_updated, 1970-01-01 diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 7fa3d21259..fcc9312609 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -153,7 +153,7 @@ def materials(request, num=None): begin_date = meeting.get_submission_start_date() cut_off_date = meeting.get_submission_cut_off_date() cor_cut_off_date = meeting.get_submission_correction_date() - today_utc = date_today(datetime.timezone.utc) + today_utc = date_today(datetime.UTC) old = timezone.now() - datetime.timedelta(days=1) if settings.SERVER_MODE != 'production' and '_testoverride' in request.GET: pass @@ -1921,7 +1921,7 @@ def slides_field(item): write_row(headings) - tz = datetime.timezone.utc if utc else schedule.meeting.tz() + tz = datetime.UTC if utc else schedule.meeting.tz() for item in filtered_assignments: row = [] row.append(item.timeslot.time.astimezone(tz).strftime("%Y-%m-%d")) @@ -2814,7 +2814,7 @@ def session_attendance(request, session_id, num): raise Http404("Bluesheets not found") cor_cut_off_date = session.meeting.get_submission_correction_date() - today_utc = date_today(datetime.timezone.utc) + today_utc = date_today(datetime.UTC) was_there = False can_add = False if request.user.is_authenticated: diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index cc2e0826d3..dcdb9ef836 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -2930,7 +2930,7 @@ def test_decorate_volunteers_with_qualifications(self): elig_date.year - 3, elig_date.month, 28 if elig_date.month == 2 and elig_date.day == 29 else elig_date.day, - tzinfo=datetime.timezone.utc, + tzinfo=datetime.UTC, ) ) nomcom.volunteer_set.create(person=author_person) diff --git a/ietf/nomcom/views.py b/ietf/nomcom/views.py index c04e13f92b..3f90be5253 100644 --- a/ietf/nomcom/views.py +++ b/ietf/nomcom/views.py @@ -981,7 +981,7 @@ def view_feedback_topic(request, year, topic_id): reviewer = request.user.person last_seen = TopicFeedbackLastSeen.objects.filter(reviewer=reviewer,topic=topic).first() - last_seen_time = (last_seen and last_seen.time) or datetime.datetime(year=1, month=1, day=1, tzinfo=datetime.timezone.utc) + last_seen_time = (last_seen and last_seen.time) or datetime.datetime(year=1, month=1, day=1, tzinfo=datetime.UTC) if last_seen: last_seen.save() else: @@ -1044,7 +1044,7 @@ def view_feedback_nominee(request, year, nominee_id): }) last_seen = FeedbackLastSeen.objects.filter(reviewer=reviewer,nominee=nominee).first() - last_seen_time = (last_seen and last_seen.time) or datetime.datetime(year=1, month=1, day=1, tzinfo=datetime.timezone.utc) + last_seen_time = (last_seen and last_seen.time) or datetime.datetime(year=1, month=1, day=1, tzinfo=datetime.UTC) if last_seen: last_seen.save() else: diff --git a/ietf/settings.py b/ietf/settings.py index 3af01d76e6..753508dc99 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -14,19 +14,27 @@ from hashlib import sha384 from typing import Any, Dict, List, Tuple # pyflakes:ignore +# DeprecationWarnings are suppressed by default, enable them warnings.simplefilter("always", DeprecationWarning) -warnings.filterwarnings("ignore", message="pkg_resources is deprecated as an API") -warnings.filterwarnings("ignore", "Log out via GET requests is deprecated") # happens in oidc_provider -warnings.filterwarnings("ignore", module="tastypie", message="The django.utils.datetime_safe module is deprecated.") -warnings.filterwarnings("ignore", module="oidc_provider", message="The django.utils.timezone.utc alias is deprecated.") + +# Warnings that must be resolved for Django 5.x +warnings.filterwarnings("ignore", "Log out via GET requests is deprecated") # caused by oidc_provider +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 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 -warnings.filterwarnings("ignore", message="'urllib3\\[secure\\]' extra is deprecated") -warnings.filterwarnings("ignore", message="The logout\\(\\) view is superseded by") + +# Other DeprecationWarnings +warnings.filterwarnings("ignore", message="pkg_resources is deprecated as an API", module="pyang.plugin") warnings.filterwarnings("ignore", message="Report.file_reporters will no longer be available in Coverage.py 4.2", module="coverage.report") -warnings.filterwarnings("ignore", message="Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated", module="bleach") -warnings.filterwarnings("ignore", message="HTTPResponse.getheader\\(\\) is deprecated", module='selenium.webdriver') +warnings.filterwarnings("ignore", message="currentThread\\(\\) is deprecated", module="coverage.pytracer") +warnings.filterwarnings("ignore", message="co_lnotab is deprecated", module="coverage.parser") +warnings.filterwarnings("ignore", message="datetime.datetime.utcnow\\(\\) is deprecated", module="botocore.auth") +warnings.filterwarnings("ignore", message="datetime.datetime.utcnow\\(\\) is deprecated", module="oic.utils.time_util") +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") + base_path = pathlib.Path(__file__).resolve().parent BASE_DIR = str(base_path) @@ -447,23 +455,24 @@ def skip_unreadable_post(record): "ietf.middleware.SMTPExceptionMiddleware", "ietf.middleware.Utf8ExceptionMiddleware", "ietf.middleware.redirect_trailing_period_middleware", - "django_referrer_policy.middleware.ReferrerPolicyMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.security.SecurityMiddleware", - #"csp.middleware.CSPMiddleware", "ietf.middleware.unicode_nfkc_normalization_middleware", "ietf.middleware.is_authenticated_header_middleware", ] ROOT_URLCONF = 'ietf.urls' -DJANGO_VITE_ASSETS_PATH = os.path.join(BASE_DIR, 'static/dist-neue') +# Configure django_vite +DJANGO_VITE: dict = {"default": {}} if DEBUG: - DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, 'static/dist-neue/manifest.json') + DJANGO_VITE["default"]["manifest_path"] = os.path.join( + BASE_DIR, 'static/dist-neue/manifest.json' + ) # Additional locations of static files (in addition to each app's static/ dir) STATICFILES_DIRS = ( - DJANGO_VITE_ASSETS_PATH, + os.path.join(BASE_DIR, "static/dist-neue"), # for django_vite os.path.join(BASE_DIR, 'static/dist'), os.path.join(BASE_DIR, 'secr/static/dist'), ) @@ -567,8 +576,6 @@ def skip_unreadable_post(record): CORS_ALLOW_METHODS = ( 'GET', 'OPTIONS', ) CORS_URLS_REGEX = r'^(/api/.*|.*\.json|.*/json/?)$' -# Setting for django_referrer_policy.middleware.ReferrerPolicyMiddleware -REFERRER_POLICY = 'strict-origin-when-cross-origin' # django.middleware.security.SecurityMiddleware SECURE_BROWSER_XSS_FILTER = True @@ -581,6 +588,7 @@ def skip_unreadable_post(record): #SECURE_SSL_REDIRECT = True # Relax the COOP policy to allow Meetecho authentication pop-up SECURE_CROSS_ORIGIN_OPENER_POLICY = "unsafe-none" +SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin" # Override this in your settings_local with the IP addresses relevant for you: INTERNAL_IPS = ( @@ -666,11 +674,6 @@ def skip_unreadable_post(record): IDNITS3_BASE_URL = "https://author-tools.ietf.org/idnits3/results" IDNITS_SERVICE_URL = "https://author-tools.ietf.org/idnits" -# Content security policy configuration (django-csp) -# (In current production, the Content-Security-Policy header is completely set by nginx configuration, but -# we try to keep this in sync to avoid confusion) -CSP_DEFAULT_SRC = ("'self'", "'unsafe-inline'", f"data: {IDTRACKER_BASE_URL} http://ietf.org/ https://www.ietf.org/ https://analytics.ietf.org/ https://static.ietf.org") - # The name of the method to use to invoke the test suite TEST_RUNNER = 'ietf.utils.test_runner.IetfTestRunner' @@ -709,6 +712,7 @@ def skip_unreadable_post(record): "ietf/utils/patch.py", "ietf/utils/test_data.py", "ietf/utils/jstest.py", + "ietf/utils/coverage.py", ] # These are code line regex patterns @@ -738,8 +742,8 @@ def skip_unreadable_post(record): TEST_CODE_COVERAGE_CHECKER = None if SERVER_MODE != 'production': - import coverage - TEST_CODE_COVERAGE_CHECKER = coverage.Coverage(source=[ BASE_DIR ], cover_pylib=False, omit=TEST_CODE_COVERAGE_EXCLUDE_FILES) + from ietf.utils.coverage import CoverageManager + TEST_CODE_COVERAGE_CHECKER = CoverageManager() TEST_CODE_COVERAGE_REPORT_PATH = "coverage/" TEST_CODE_COVERAGE_REPORT_URL = os.path.join(STATIC_URL, TEST_CODE_COVERAGE_REPORT_PATH, "index.html") diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 9a42e8b99d..6479069db0 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 TEST_CODE_COVERAGE_CHECKER, ORIG_AUTH_PASSWORD_VALIDATORS +from ietf.settings import ORIG_AUTH_PASSWORD_VALIDATORS import debug # pyflakes:ignore debug.debug = True @@ -52,10 +52,9 @@ def __getitem__(self, item): BLOBDB_DATABASE = "default" DATABASE_ROUTERS = [] # type: ignore -if TEST_CODE_COVERAGE_CHECKER and not TEST_CODE_COVERAGE_CHECKER._started: # pyflakes:ignore +if TEST_CODE_COVERAGE_CHECKER: # pyflakes:ignore TEST_CODE_COVERAGE_CHECKER.start() # pyflakes:ignore - def tempdir_with_cleanup(**kwargs): """Utility to create a temporary dir and arrange cleanup""" _dir = tempfile.mkdtemp(**kwargs) diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 89908748a7..e02b686576 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -18,7 +18,7 @@ from ietf.utils import tool_version from ietf.utils.log import log, assertion from ietf.utils.pipe import pipe -from ietf.utils.test_runner import set_coverage_checking +from ietf.utils.test_runner import disable_coverage class DraftSubmissionChecker(object): name = "" @@ -247,34 +247,33 @@ def check_file_txt(self, path): ) # yanglint - set_coverage_checking(False) # we can't count the following as it may or may not be run, depending on setup - if settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY): - cmd_template = settings.SUBMIT_YANGLINT_COMMAND - command = [ w for w in cmd_template.split() if not '=' in w ][0] - cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, - draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, - cataloglib=settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ) - code, out, err = pipe(cmd) - out = out.decode('utf-8') - err = err.decode('utf-8') - if code > 0 or len(err.strip()) > 0: - err_lines = err.splitlines() - for line in err_lines: - if line.strip(): - try: - if 'err : ' in line: - errors += 1 - if 'warn: ' in line: - warnings += 1 - except ValueError: - pass - #passed = passed and code == 0 # For the submission tool. Yang checks always pass - message += "{version}: {template}:\n{output}\n".format( - version=tool_version[command], - template=cmd_template, - output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, - ) - set_coverage_checking(True) + with disable_coverage(): # pragma: no cover + if settings.SUBMIT_YANGLINT_COMMAND and os.path.exists(settings.YANGLINT_BINARY): + cmd_template = settings.SUBMIT_YANGLINT_COMMAND + command = [ w for w in cmd_template.split() if not '=' in w ][0] + cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, + draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, + cataloglib=settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ) + code, out, err = pipe(cmd) + out = out.decode('utf-8') + err = err.decode('utf-8') + if code > 0 or len(err.strip()) > 0: + err_lines = err.splitlines() + for line in err_lines: + if line.strip(): + try: + if 'err : ' in line: + errors += 1 + if 'warn: ' in line: + warnings += 1 + except ValueError: + pass + #passed = passed and code == 0 # For the submission tool. Yang checks always pass + message += "{version}: {template}:\n{output}\n".format( + version=tool_version[command], + template=cmd_template, + output=out + "No validation errors\n" if (code == 0 and len(err) == 0) else out + err, + ) else: errors += 1 message += "No such file: %s\nPossible mismatch between extracted xym file name and returned module name?\n" % (path) diff --git a/ietf/sync/iana.py b/ietf/sync/iana.py index f46fe407d4..0d40c5337e 100644 --- a/ietf/sync/iana.py +++ b/ietf/sync/iana.py @@ -66,8 +66,8 @@ def update_rfc_log_from_protocol_page(rfc_names, rfc_must_published_later_than): def fetch_changes_json(url, start, end): - url += "?start=%s&end=%s" % (urlquote(start.astimezone(datetime.timezone.utc).strftime("%Y-%m-%d %H:%M:%S")), - urlquote(end.astimezone(datetime.timezone.utc).strftime("%Y-%m-%d %H:%M:%S"))) + url += "?start=%s&end=%s" % (urlquote(start.astimezone(datetime.UTC).strftime("%Y-%m-%d %H:%M:%S")), + urlquote(end.astimezone(datetime.UTC).strftime("%Y-%m-%d %H:%M:%S"))) # HTTP basic auth username = "ietfsync" password = settings.IANA_SYNC_PASSWORD @@ -161,7 +161,7 @@ def update_history_with_changes(changes, send_email=True): for c in changes: docname = c['doc'] - timestamp = datetime.datetime.strptime(c["time"], "%Y-%m-%d %H:%M:%S",).replace(tzinfo=datetime.timezone.utc) + timestamp = datetime.datetime.strptime(c["time"], "%Y-%m-%d %H:%M:%S",).replace(tzinfo=datetime.UTC) if c['type'] in ("iana_state", "iana_review"): if c['type'] == "iana_state": @@ -247,7 +247,7 @@ def parse_review_email(text): review_time = parsedate_to_datetime(msg["Date"]) # parsedate_to_datetime() may return a naive timezone - treat as UTC if review_time.tzinfo is None or review_time.tzinfo.utcoffset(review_time) is None: - review_time = review_time.replace(tzinfo=datetime.timezone.utc) + review_time = review_time.replace(tzinfo=datetime.UTC) # by by = None diff --git a/ietf/sync/tasks.py b/ietf/sync/tasks.py index 18ab4fe66e..e4174d3729 100644 --- a/ietf/sync/tasks.py +++ b/ietf/sync/tasks.py @@ -152,7 +152,7 @@ def iana_protocols_update_task(): 2012, 11, 26, - tzinfo=datetime.timezone.utc, + tzinfo=datetime.UTC, ) try: diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index 182b6e24c4..3432f6214a 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -206,7 +206,7 @@ def test_iana_review_mail(self): doc_name, review_time, by, comment = iana.parse_review_email(msg.encode('utf-8')) self.assertEqual(doc_name, draft.name) - self.assertEqual(review_time, datetime.datetime(2012, 5, 10, 12, 0, rtime, tzinfo=datetime.timezone.utc)) + self.assertEqual(review_time, datetime.datetime(2012, 5, 10, 12, 0, rtime, tzinfo=datetime.UTC)) self.assertEqual(by, Person.objects.get(user__username="iana")) self.assertIn("there are no IANA Actions", comment.replace("\n", "")) @@ -240,7 +240,7 @@ def test_ingest_review_email(self, mock_parse_review_email, mock_add_review_comm args = ( "doc-name", - datetime.datetime.now(tz=datetime.timezone.utc), + datetime.datetime.now(tz=datetime.UTC), PersonFactory(), "yadda yadda yadda", ) @@ -1121,7 +1121,7 @@ def test_iana_protocols_update_task( ) self.assertEqual( published_later_than, - {datetime.datetime(2012,11,26,tzinfo=datetime.timezone.utc)} + {datetime.datetime(2012,11,26,tzinfo=datetime.UTC)} ) # try with an exception diff --git a/ietf/utils/test_smtpserver.py b/ietf/utils/aiosmtpd.py similarity index 72% rename from ietf/utils/test_smtpserver.py rename to ietf/utils/aiosmtpd.py index 40da758d66..3e4cd65dd9 100644 --- a/ietf/utils/test_smtpserver.py +++ b/ietf/utils/aiosmtpd.py @@ -1,10 +1,14 @@ # Copyright The IETF Trust 2014-2025, All Rights Reserved -# -*- coding: utf-8 -*- +"""aiosmtpd-related utilities +These are for testing / dev use. If you're using this for production code, think very +hard about the choices you're making... +""" +from aiosmtpd import handlers from aiosmtpd.controller import Controller from aiosmtpd.smtp import SMTP from email.utils import parseaddr -from typing import Optional +from typing import Optional, TextIO class SMTPTestHandler: @@ -54,3 +58,16 @@ def start(self): def stop(self): self.controller.stop() + + +class DevDebuggingHandler(handlers.Debugging): + """Debugging handler for use in dev ONLY""" + def __init__(self, stream: Optional[TextIO] = None): + # Allow longer lines than the 1001 that RFC 5321 requires. As of 2025-04-16 the + # datatracker emits some non-compliant messages. + # See https://aiosmtpd.aio-libs.org/en/latest/smtp.html + # Doing this in a handler class is a huge hack. Tests all pass with this set + # to 4000, but make the limit longer for dev just in case. + SMTP.line_length_limit = 10000 + super().__init__(stream) + diff --git a/ietf/utils/coverage.py b/ietf/utils/coverage.py new file mode 100644 index 0000000000..bd205ce586 --- /dev/null +++ b/ietf/utils/coverage.py @@ -0,0 +1,90 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +from coverage import Coverage, CoverageData, FileReporter +from coverage.control import override_config as override_coverage_config +from coverage.results import Numbers +from coverage.report_core import get_analysis_to_report +from coverage.results import Analysis +from django.conf import settings + + +class CoverageManager: + checker: Coverage | None = None + started = False + + def start(self): + if settings.SERVER_MODE != "production" and not self.started: + self.checker = Coverage( + source=[settings.BASE_DIR], + cover_pylib=False, + omit=settings.TEST_CODE_COVERAGE_EXCLUDE_FILES, + ) + for exclude_regex in getattr( + settings, + "TEST_CODE_COVERAGE_EXCLUDE_LINES", + [], + ): + self.checker.exclude(exclude_regex) + self.checker.start() + self.started = True + + def stop(self): + if self.checker is not None: + self.checker.stop() + + def save(self): + if self.checker is not None: + self.checker.save() + + def report(self, include: list[str] | None = None): + if self.checker is None: + return None + reporter = CustomDictReporter() + with override_coverage_config( + self.checker, + report_include=include, + ): + return reporter.report(self.checker) + + +class CustomDictReporter: # pragma: no cover + total = Numbers() + + def report(self, coverage): + coverage_data = coverage.get_data() + coverage_data.set_query_contexts(None) + measured_files = {} + for file_reporter, analysis in get_analysis_to_report(coverage, None): + measured_files[file_reporter.relative_filename()] = self.report_one_file( + coverage_data, + analysis, + file_reporter, + ) + tot_numer, tot_denom = self.total.ratio_covered + return { + "coverage": 1 if tot_denom == 0 else tot_numer / tot_denom, + "covered": measured_files, + "format": 5, + } + + def report_one_file( + self, + coverage_data: CoverageData, + analysis: Analysis, + file_reporter: FileReporter, + ): + """Extract the relevant report data for a single file.""" + nums = analysis.numbers + self.total += nums + n_statements = nums.n_statements + numer, denom = nums.ratio_covered + fraction_covered = 1 if denom == 0 else numer / denom + missing_line_nums = sorted(analysis.missing) + # Extract missing lines from source files + source_lines = file_reporter.source().splitlines() + missing_lines = [source_lines[num - 1] for num in missing_line_nums] + return ( + n_statements, + fraction_covered, + missing_line_nums, + missing_lines, + ) diff --git a/ietf/utils/decorators.py b/ietf/utils/decorators.py index 5e94dda91d..b50e0e7f96 100644 --- a/ietf/utils/decorators.py +++ b/ietf/utils/decorators.py @@ -15,21 +15,9 @@ import debug # pyflakes:ignore -from ietf.utils.test_runner import set_coverage_checking from ietf.person.models import Person, PersonalApiKey, PersonApiKeyEvent from ietf.utils import log -def skip_coverage(f): - @wraps(f) - def _wrapper(*args, **kwargs): - if settings.TEST_CODE_COVERAGE_CHECKER: - set_coverage_checking(False) - result = f(*args, **kwargs) - set_coverage_checking(True) - return result - else: - return f(*args, **kwargs) - return _wrapper def person_required(f): @wraps(f) diff --git a/ietf/utils/jstest.py b/ietf/utils/jstest.py index 215d78d65f..cf242fc4eb 100644 --- a/ietf/utils/jstest.py +++ b/ietf/utils/jstest.py @@ -3,6 +3,8 @@ import os +from django.conf import settings +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.urls import reverse as urlreverse from unittest import skipIf @@ -21,7 +23,11 @@ from ietf.utils.pipe import pipe -from ietf.utils.test_runner import IetfLiveServerTestCase +from ietf.utils.test_runner import ( + set_template_coverage, + set_url_coverage, + load_and_run_fixtures, +) executable_name = 'geckodriver' code, out, err = pipe('{} --version'.format(executable_name)) @@ -49,17 +55,44 @@ def ifSeleniumEnabled(func): return skipIf(skip_selenium, skip_message)(func) -class IetfSeleniumTestCase(IetfLiveServerTestCase): +class IetfSeleniumTestCase(StaticLiveServerTestCase): # pragma: no cover login_view = 'ietf.ietfauth.views.login' + @classmethod + def setUpClass(cls): + set_template_coverage(False) + set_url_coverage(False) + super().setUpClass() + + @classmethod + def tearDownClass(cls): + super().tearDownClass() + set_template_coverage(True) + set_url_coverage(True) + def setUp(self): - super(IetfSeleniumTestCase, self).setUp() + super().setUp() + # LiveServerTestCase uses TransactionTestCase which seems to + # somehow interfere with the fixture loading process in + # IetfTestRunner when running multiple tests (the first test + # is fine, in the next ones the fixtures have been wiped) - + # this is no doubt solvable somehow, but until then we simply + # recreate them here + from ietf.person.models import Person + if not Person.objects.exists(): + load_and_run_fixtures(verbosity=0) + self.replaced_settings = dict() + if hasattr(settings, 'IDTRACKER_BASE_URL'): + self.replaced_settings['IDTRACKER_BASE_URL'] = settings.IDTRACKER_BASE_URL + settings.IDTRACKER_BASE_URL = self.live_server_url self.driver = start_web_driver() self.driver.set_window_size(1024,768) def tearDown(self): - super(IetfSeleniumTestCase, self).tearDown() self.driver.close() + for k, v in self.replaced_settings.items(): + setattr(settings, k, v) + super().tearDown() def absreverse(self,*args,**kwargs): return '%s%s'%(self.live_server_url, urlreverse(*args, **kwargs)) diff --git a/ietf/utils/meetecho.py b/ietf/utils/meetecho.py index 0dbf75736a..7654f67cd1 100644 --- a/ietf/utils/meetecho.py +++ b/ietf/utils/meetecho.py @@ -27,7 +27,7 @@ class MeetechoAPI: - timezone = datetime.timezone.utc + timezone = datetime.UTC def __init__( self, api_base: str, client_id: str, client_secret: str, request_timeout=3.01 @@ -504,7 +504,7 @@ def _should_send_update(self, session): if self.slides_notify_time < datetime.timedelta(0): return True # < 0 means "always" for a scheduled session else: - now = datetime.datetime.now(tz=datetime.timezone.utc) + now = datetime.datetime.now(tz=datetime.UTC) return (timeslot.time - self.slides_notify_time) < now < (timeslot.end_time() + self.slides_notify_time) def add(self, session: "Session", slides: "Document", order: int): diff --git a/ietf/utils/serialize.py b/ietf/utils/serialize.py index 342d211cf5..77f97942cb 100644 --- a/ietf/utils/serialize.py +++ b/ietf/utils/serialize.py @@ -16,7 +16,7 @@ def object_as_shallow_dict(obj): if isinstance(f, models.ManyToManyField): v = list(v.values_list("pk", flat=True)) elif isinstance(f, models.DateTimeField): - v = v.astimezone(datetime.timezone.utc).isoformat() + v = v.astimezone(datetime.UTC).isoformat() elif isinstance(f, models.DateField): v = v.strftime('%Y-%m-%d') diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index a9b2e5d572..1a3d4e5c3d 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -48,6 +48,8 @@ import subprocess import tempfile import copy +from contextlib import contextmanager + import boto3 import botocore.config import factory.random @@ -57,10 +59,6 @@ from typing import Callable, Optional from urllib.parse import urlencode -from coverage.report import Reporter -from coverage.results import Numbers -from coverage.misc import NotPython - import django from django.conf import settings from django.contrib.staticfiles.testing import StaticLiveServerTestCase @@ -84,7 +82,7 @@ import ietf import ietf.utils.mail from ietf.utils.management.commands import pyflakes -from ietf.utils.test_smtpserver import SMTPTestServerDriver +from ietf.utils.aiosmtpd import SMTPTestServerDriver from ietf.utils.test_utils import TestCase from mypy_boto3_s3.service_resource import Bucket @@ -96,11 +94,11 @@ old_destroy: Optional[Callable] = None old_create: Optional[Callable] = None -template_coverage_collection = None -code_coverage_collection = None -url_coverage_collection = None +template_coverage_collection = False +url_coverage_collection = False validation_settings = {"validate_html": None, "validate_html_harder": None, "show_logging": False} + def start_vnu_server(port=8888): "Start a vnu validation server on the indicated port" vnu = subprocess.Popen( @@ -463,50 +461,29 @@ def save_test_results(failures, test_labels): tfile.write("%s OK\n" % (timestr, )) tfile.close() -def set_coverage_checking(flag=True): + +def set_template_coverage(flag): global template_coverage_collection - global code_coverage_collection + orig = template_coverage_collection + template_coverage_collection = flag + return orig + + +def set_url_coverage(flag): global url_coverage_collection - if settings.SERVER_MODE == 'test': - if flag: - settings.TEST_CODE_COVERAGE_CHECKER.collector.resume() - template_coverage_collection = True - code_coverage_collection = True - url_coverage_collection = True - else: - settings.TEST_CODE_COVERAGE_CHECKER.collector.pause() - template_coverage_collection = False - code_coverage_collection = False - url_coverage_collection = False - -class CoverageReporter(Reporter): - def report(self): - self.find_file_reporters(None) - - total = Numbers() - result = {"coverage": 0.0, "covered": {}, "format": 5, } - for fr in self.file_reporters: - try: - analysis = self.coverage._analyze(fr) - nums = analysis.numbers - missing_nums = sorted(analysis.missing) - with io.open(analysis.filename, encoding='utf-8') as file: - lines = file.read().splitlines() - missing_lines = [ lines[l-1] for l in missing_nums ] - result["covered"][fr.relative_filename()] = (nums.n_statements, nums.pc_covered/100.0, missing_nums, missing_lines) - total += nums - except KeyboardInterrupt: # pragma: not covered - raise - except Exception: - report_it = not self.config.ignore_errors - if report_it: - typ, msg = sys.exc_info()[:2] - if typ is NotPython and not fr.should_be_python(): - report_it = False - if report_it: - raise - result["coverage"] = total.pc_covered/100.0 - return result + orig = url_coverage_collection + url_coverage_collection = flag + return orig + + +@contextmanager +def disable_coverage(): + """Context manager/decorator that disables template/url coverage""" + orig_template = set_template_coverage(False) + orig_url = set_url_coverage(False) + yield + set_template_coverage(orig_template) + set_url_coverage(orig_url) class CoverageTest(unittest.TestCase): @@ -594,23 +571,24 @@ def ignore_pattern(regex, pattern): self.skipTest("Coverage switched off with --skip-coverage") def code_coverage_test(self): - if self.runner.check_coverage: - include = [ os.path.join(path, '*') for path in self.runner.test_paths ] - checker = self.runner.code_coverage_checker - checker.stop() + if ( + self.runner.check_coverage + and settings.TEST_CODE_COVERAGE_CHECKER is not None + ): + coverage_manager = settings.TEST_CODE_COVERAGE_CHECKER + coverage_manager.stop() # Save to the .coverage file - checker.save() + coverage_manager.save() # Apply the configured and requested omit and include data - checker.config.from_args(ignore_errors=None, omit=settings.TEST_CODE_COVERAGE_EXCLUDE_FILES, - include=include, file=None) - for pattern in settings.TEST_CODE_COVERAGE_EXCLUDE_LINES: - checker.exclude(pattern) # Maybe output an HTML report if self.runner.run_full_test_suite and self.runner.html_report: - checker.html_report(directory=settings.TEST_CODE_COVERAGE_REPORT_DIR) - # In any case, build a dictionary with per-file data for this run - reporter = CoverageReporter(checker, checker.config) - self.runner.coverage_data["code"] = reporter.report() + coverage_manager.checker.html_report( + directory=settings.TEST_CODE_COVERAGE_REPORT_DIR + ) + # Generate the output report data + self.runner.coverage_data["code"] = coverage_manager.report( + include=[str(pathlib.Path(p) / "*") for p in self.runner.test_paths] + ) self.report_test_result("code") else: self.skipTest("Coverage switched off with --skip-coverage") @@ -824,23 +802,12 @@ def setup_test_environment(self, **kwargs): "covered": {}, "format": 1, }, - "migration": { - "present": {}, - "format": 3, - } } settings.TEMPLATES[0]['OPTIONS']['loaders'] = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATES[0]['OPTIONS']['loaders'] settings.MIDDLEWARE = ('ietf.utils.test_runner.record_urls_middleware',) + tuple(settings.MIDDLEWARE) - self.code_coverage_checker = settings.TEST_CODE_COVERAGE_CHECKER - if not self.code_coverage_checker._started: - sys.stderr.write(" ** Warning: In %s: Expected the coverage checker to have\n" - " been started already, but it wasn't. Doing so now. Coverage numbers\n" - " will be off, though.\n" % __name__) - self.code_coverage_checker.start() - if settings.SITE_ID != 1: print(" Changing SITE_ID to '1' during testing.") settings.SITE_ID = 1 @@ -1140,9 +1107,8 @@ def _extra_tests(self): ), ] if self.check_coverage: - global template_coverage_collection, code_coverage_collection, url_coverage_collection + global template_coverage_collection, url_coverage_collection template_coverage_collection = True - code_coverage_collection = True url_coverage_collection = True tests += [ PyFlakesTestCase(test_runner=self, methodName='pyflakes_test'), @@ -1226,37 +1192,6 @@ def run_tests(self, test_labels, extra_tests=None, **kwargs): return failures -class IetfLiveServerTestCase(StaticLiveServerTestCase): - @classmethod - def setUpClass(cls): - set_coverage_checking(False) - super(IetfLiveServerTestCase, cls).setUpClass() - - def setUp(self): - super(IetfLiveServerTestCase, self).setUp() - # LiveServerTestCase uses TransactionTestCase which seems to - # somehow interfere with the fixture loading process in - # IetfTestRunner when running multiple tests (the first test - # is fine, in the next ones the fixtures have been wiped) - - # this is no doubt solvable somehow, but until then we simply - # recreate them here - from ietf.person.models import Person - if not Person.objects.exists(): - load_and_run_fixtures(verbosity=0) - self.replaced_settings = dict() - if hasattr(settings, 'IDTRACKER_BASE_URL'): - self.replaced_settings['IDTRACKER_BASE_URL'] = settings.IDTRACKER_BASE_URL - settings.IDTRACKER_BASE_URL = self.live_server_url - - @classmethod - def tearDownClass(cls): - super(IetfLiveServerTestCase, cls).tearDownClass() - set_coverage_checking(True) - - def tearDown(self): - for k, v in self.replaced_settings.items(): - setattr(settings, k, v) - super().tearDown() class TestBlobstoreManager(): # N.B. buckets and blobstore are intentional Class-level attributes @@ -1267,7 +1202,11 @@ class TestBlobstoreManager(): aws_access_key_id="minio_root", aws_secret_access_key="minio_pass", aws_session_token=None, - config = botocore.config.Config(signature_version="s3v4"), + config = botocore.config.Config( + request_checksum_calculation="when_required", + response_checksum_validation="when_required", + signature_version="s3v4", + ), #config=botocore.config.Config(signature_version=botocore.UNSIGNED), verify=False ) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index 01433888fe..3288309095 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -54,7 +54,11 @@ decode_header_value, show_that_mail_was_sent, ) -from ietf.utils.test_runner import get_template_paths, set_coverage_checking +from ietf.utils.test_runner import ( + get_template_paths, + set_template_coverage, + set_url_coverage, +) from ietf.utils.test_utils import TestCase, unicontent from ietf.utils.text import parse_unicode from ietf.utils.timezone import timezone_not_near_midnight @@ -311,14 +315,15 @@ def qualified(name): return list(callbacks) -class TemplateChecksTestCase(TestCase): +class TemplateChecksTestCase(TestCase): # pragma: no cover paths = [] # type: List[str] templates = {} # type: Dict[str, Template] def setUp(self): super().setUp() - set_coverage_checking(False) + set_template_coverage(False) + set_url_coverage(False) self.paths = get_template_paths() # already filtered ignores self.paths.sort() for path in self.paths: @@ -328,7 +333,8 @@ def setUp(self): pass def tearDown(self): - set_coverage_checking(True) + set_template_coverage(True) + set_url_coverage(True) super().tearDown() def test_parse_templates(self): diff --git a/ietf/utils/tests_coverage.py b/ietf/utils/tests_coverage.py new file mode 100644 index 0000000000..68795994a7 --- /dev/null +++ b/ietf/utils/tests_coverage.py @@ -0,0 +1,56 @@ +# Copyright The IETF Trust 2025, All Rights Reserved +"""Tests of the coverage.py module""" + +from unittest import mock + +from django.test import override_settings + +from .coverage import CoverageManager +from .test_utils import TestCase + + +class CoverageManagerTests(TestCase): + @override_settings( + BASE_DIR="/path/to/project/ietf", + TEST_CODE_COVERAGE_EXCLUDE_FILES=["a.py"], + TEST_CODE_COVERAGE_EXCLUDE_LINES=["some-regex"], + ) + @mock.patch("ietf.utils.coverage.Coverage") + def test_coverage_manager(self, mock_coverage): + """CoverageManager managed coverage correctly in non-production mode + + Presumes we're not running tests in production mode. + """ + cm = CoverageManager() + self.assertFalse(cm.started) + + cm.start() + self.assertTrue(cm.started) + self.assertEqual(cm.checker, mock_coverage.return_value) + self.assertTrue(mock_coverage.called) + coverage_kwargs = mock_coverage.call_args.kwargs + self.assertEqual(coverage_kwargs["source"], ["/path/to/project/ietf"]) + self.assertEqual(coverage_kwargs["omit"], ["a.py"]) + self.assertTrue(isinstance(cm.checker.exclude, mock.Mock)) + assert isinstance(cm.checker.exclude, mock.Mock) # for type checker + self.assertEqual(cm.checker.exclude.call_count, 1) + cm.checker.exclude.assert_called_with("some-regex") + + @mock.patch("ietf.utils.coverage.Coverage") + def test_coverage_manager_is_defanged_in_production(self, mock_coverage): + """CoverageManager is a no-op in production mode""" + # Be careful faking settings.SERVER_MODE, but there's really no other way to + # test this. + with override_settings(SERVER_MODE="production"): + cm = CoverageManager() + cm.start() + + # Check that nothing actually happened + self.assertFalse(mock_coverage.called) + self.assertIsNone(cm.checker) + self.assertFalse(cm.started) + + # Check that other methods are guarded appropriately + cm.stop() + cm.save() + self.assertIsNone(cm.report()) diff --git a/ietf/utils/tests_meetecho.py b/ietf/utils/tests_meetecho.py index a10ac68c27..502e936483 100644 --- a/ietf/utils/tests_meetecho.py +++ b/ietf/utils/tests_meetecho.py @@ -98,7 +98,7 @@ def test_schedule_meeting(self): api_response = api.schedule_meeting( wg_token='my-token', room_id=18, - start_time=datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.timezone.utc), + start_time=datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.UTC), duration=datetime.timedelta(minutes=130), description='interim-2021-wgname-01', extrainfo='message for staff', @@ -127,7 +127,7 @@ def test_schedule_meeting(self): ) # same time in different time zones for start_time in [ - datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.UTC), datetime.datetime(2021, 9, 14, 7, 0, 0, tzinfo=ZoneInfo('America/Halifax')), datetime.datetime(2021, 9, 14, 13, 0, 0, tzinfo=ZoneInfo('Europe/Kiev')), datetime.datetime(2021, 9, 14, 5, 0, 0, tzinfo=ZoneInfo('Pacific/Easter')), @@ -198,7 +198,7 @@ def test_fetch_meetings(self): '3d55bce0-535e-4ba8-bb8e-734911cf3c32': { 'room': { 'id': 18, - 'start_time': datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2021, 9, 14, 10, 0, 0, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=130), 'description': 'interim-2021-wgname-01', }, @@ -208,7 +208,7 @@ def test_fetch_meetings(self): 'e68e96d4-d38f-475b-9073-ecab46ca96a5': { 'room': { 'id': 23, - 'start_time': datetime.datetime(2021, 9, 15, 14, 30, 0, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2021, 9, 15, 14, 30, 0, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=30), 'description': 'interim-2021-wgname-02', }, @@ -386,7 +386,7 @@ def test_request_helper_exception(self): def test_time_serialization(self): """Time de/serialization should be consistent""" - time = timezone.now().astimezone(datetime.timezone.utc).replace(microsecond=0) # cut off to 0 microseconds + time = timezone.now().astimezone(datetime.UTC).replace(microsecond=0) # cut off to 0 microseconds api = MeetechoAPI(API_BASE, CLIENT_ID, CLIENT_SECRET) self.assertEqual(api._deserialize_time(api._serialize_time(time)), time) @@ -400,7 +400,7 @@ def test_conference_from_api_dict(self): 'session-1-uuid': { 'room': { 'id': 1, - 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=45), 'description': 'some-description', }, @@ -410,7 +410,7 @@ def test_conference_from_api_dict(self): 'session-2-uuid': { 'room': { 'id': 2, - 'start_time': datetime.datetime(2022,2,5,4,5,6, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2022,2,5,4,5,6, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=90), 'description': 'another-description', }, @@ -427,7 +427,7 @@ def test_conference_from_api_dict(self): id=1, public_id='session-1-uuid', description='some-description', - start_time=datetime.datetime(2022, 2, 4, 1, 2, 3, tzinfo=datetime.timezone.utc), + start_time=datetime.datetime(2022, 2, 4, 1, 2, 3, tzinfo=datetime.UTC), duration=datetime.timedelta(minutes=45), url='https://example.com/some/url', deletion_token='delete-me', @@ -437,7 +437,7 @@ def test_conference_from_api_dict(self): id=2, public_id='session-2-uuid', description='another-description', - start_time=datetime.datetime(2022, 2, 5, 4, 5, 6, tzinfo=datetime.timezone.utc), + start_time=datetime.datetime(2022, 2, 5, 4, 5, 6, tzinfo=datetime.UTC), duration=datetime.timedelta(minutes=90), url='https://example.com/another/url', deletion_token='delete-me-too', @@ -453,7 +453,7 @@ def test_fetch(self, mock_fetch, _): 'session-1-uuid': { 'room': { 'id': 1, - 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=45), 'description': 'some-description', }, @@ -472,7 +472,7 @@ def test_fetch(self, mock_fetch, _): id=1, public_id='session-1-uuid', description='some-description', - start_time=datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), + start_time=datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.UTC), duration=datetime.timedelta(minutes=45), url='https://example.com/some/url', deletion_token='delete-me', @@ -488,7 +488,7 @@ def test_create(self, mock_schedule, _): 'session-1-uuid': { 'room': { 'id': 1, # value should match session_id param to cm.create() below - 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), + 'start_time': datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.UTC), 'duration': datetime.timedelta(minutes=45), 'description': 'some-description', }, @@ -506,7 +506,7 @@ def test_create(self, mock_schedule, _): id=1, public_id='session-1-uuid', description='some-description', - start_time=datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.timezone.utc), + start_time=datetime.datetime(2022,2,4,1,2,3, tzinfo=datetime.UTC), duration=datetime.timedelta(minutes=45), url='https://example.com/some/url', deletion_token='delete-me', diff --git a/ietf/utils/timezone.py b/ietf/utils/timezone.py index a396b5e82d..e08dfa02f2 100644 --- a/ietf/utils/timezone.py +++ b/ietf/utils/timezone.py @@ -26,7 +26,7 @@ def _tzinfo(tz: Union[str, datetime.tzinfo, None]): Accepts a tzinfo or string containing a timezone name. Defaults to UTC if tz is None. """ if tz is None: - return datetime.timezone.utc + return datetime.UTC elif isinstance(tz, datetime.tzinfo): return tz else: diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 482a4b110a..c1436e158b 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -280,7 +280,9 @@ def _multiline_to_list(s): PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME # Normally only set for debug, but needed until we have a real FS -DJANGO_VITE_MANIFEST_PATH = os.path.join(BASE_DIR, "static/dist-neue/manifest.json") +DJANGO_VITE["default"]["manifest_path"] = os.path.join( + BASE_DIR, "static/dist-neue/manifest.json" +) # Binaries that are different in the docker image DE_GFM_BINARY = "/usr/local/bin/de-gfm" @@ -379,6 +381,8 @@ def _multiline_to_list(s): 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, diff --git a/patch/tastypie-django22-fielderror-response.patch b/patch/tastypie-django22-fielderror-response.patch index ffb152d319..3b4418fc66 100644 --- a/patch/tastypie-django22-fielderror-response.patch +++ b/patch/tastypie-django22-fielderror-response.patch @@ -1,5 +1,5 @@ ---- tastypie/resources.py.orig 2020-08-24 13:14:25.463166100 +0200 -+++ tastypie/resources.py 2020-08-24 13:15:55.133759224 +0200 +--- tastypie/resources.py.orig 2025-07-29 19:00:01.526948002 +0000 ++++ tastypie/resources.py 2025-07-29 19:07:15.324127008 +0000 @@ -12,7 +12,7 @@ ObjectDoesNotExist, MultipleObjectsReturned, ValidationError, FieldDoesNotExist ) @@ -9,13 +9,13 @@ from django.db.models.fields.related import ForeignKey from django.urls.conf import re_path from tastypie.utils.timezone import make_naive_utc -@@ -2198,6 +2198,8 @@ +@@ -2216,6 +2216,8 @@ return self.authorized_read_list(objects, bundle) except ValueError: raise BadRequest("Invalid resource lookup data provided (mismatched type).") + except FieldError as e: + raise BadRequest("Invalid resource lookup: %s." % e) - + def obj_get(self, bundle, **kwargs): """ --- tastypie/paginator.py.orig 2020-08-25 15:24:46.391588425 +0200 diff --git a/requirements.txt b/requirements.txt index 60d3d8152e..cf7c920fa3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,86 +1,85 @@ # -*- conf-mode -*- -setuptools>=51.1.0 # Require this first, to prevent later errors +setuptools>=80.9.0 # Require this first, to prevent later errors # aiosmtpd>=1.4.6 -argon2-cffi>=21.3.0 # For the Argon2 password hasher option -beautifulsoup4>=4.11.1 # Only used in tests -bibtexparser>=1.2.0 # Only used in tests -bleach>=6 -types-bleach>=6 -boto3>=1.35,<1.36 -boto3-stubs[s3]>=1.35,<1.36 -botocore>=1.35,<1.36 -celery>=5.2.6 -coverage>=4.5.4,<5.0 # Coverage 5.x moves from a json database to SQLite. Moving to 5.x will require substantial rewrites in ietf.utils.test_runner and ietf.release.views +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 +bleach>=6.2.0 # project is deprecated but supported +types-bleach>=6.2.0 +boto3>=1.39.15 +boto3-stubs[s3]>=1.39.15 +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-admin-rangefilter>=0.13.2 -django-analytical>=3.1.0 -django-bootstrap5>=21.3 -django-celery-beat>=2.3.0,<2.8.0 # pin until https://github.com/celery/django-celery-beat/issues/875 is resolved, then revisit -django-celery-results>=2.5.1 -django-csp>=3.7 -django-cors-headers>=3.11.0 -django-debug-toolbar>=3.2.4 -django-markup>=1.5 # Limited use - need to reconcile against direct use of markdown +django-admin-rangefilter>=0.13.3 +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-cors-headers>=4.7.0 +django-debug-toolbar>=6.0.0 +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-referrer-policy>=1.0 -django-simple-history>=3.0.0 -django-storages>=1.14.4 +django-simple-history>=3.10.1 +django-storages>=1.14.6 django-stubs>=4.2.7,<5 # The django-stubs version used determines the the mypy version indicated below -django-tastypie>=0.14.7,<0.15.0 # Version must be locked in sync with version of Django -django-vite>=2.0.2,<3 +django-tastypie>=0.15.1 # Version must be kept in sync with Django +django-vite>=3.1.0 django-widget-tweaks>=1.4.12 -djangorestframework>=3.15,<4 -djlint>=1.0.0 # To auto-indent templates via "djlint --profile django --reformat" -docutils>=0.18.1 # Used only by dbtemplates for RestructuredText +djangorestframework>=3.16.0 +docutils>=0.22.0 # Used only by dbtemplates for RestructuredText +types-docutils>=0.21.0 # should match docutils (0.22.0 not out yet) drf-spectacular>=0.27 -drf-standardized-errors[openapi] >= 0.14 -types-docutils>=0.18.1 -factory-boy>=3.3 -gunicorn>=20.1.0 +drf-standardized-errors[openapi] >= 0.15.0 +factory-boy>=3.3.3 +gunicorn>=23.0.0 hashids>=1.3.1 -html2text>=2020.1.16 # Used only to clean comment field of secr/sreq +html2text>=2025.4.15 # Used only to clean comment field of secr/sreq html5lib>=1.1 # Only used in tests icalendar>=5.0.0 -inflect>= 6.0.2 -jsonfield>=3.1.0,<3.2.0 # 3.2.0 needs py3.10; deprecated-replace with Django JSONField -jsonschema[format]>=4.2.1 -jwcrypto>=1.2 # for signed notifications - this is aspirational, and is not really used. -logging_tree>=1.9 # Used only by the showloggers management command -lxml>=5.3.0 -markdown>=3.3.6 -types-markdown>=3.3.6 -mypy~=1.7.0 # Version requirements determined by django-stubs. -oic>=1.3 # Used only by tests -Pillow>=9.1.0 -psycopg2>=2.9.6 -pyang>=2.5.3 -pydyf>0.8.0 -pyflakes>=2.4.0 -pyopenssl>=22.0.0 # Used by urllib3.contrib, which is used by PyQuery but not marked as a dependency -pyquery>=1.4.3 -python-dateutil>=2.8.2 -types-python-dateutil>=2.8.2 -python-json-logger>=3.1.0 +inflect>= 7.5.0 +jsonfield>=3.2.0 # deprecated - need to replace with Django's JSONField +jsonschema[format]>=4.25.0 +jwcrypto>=1.5.6 # for signed notifications - this is aspirational, and is not really used. +logging_tree>=1.10 # Used only by the showloggers management command +lxml>=6.0.0 +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. +oic>=1.7.0 # Used only by tests +pillow>=11.3.0 +psycopg2>=2.9.10 +pyang>=2.6.1 +pydyf>=0.11.0 +pyflakes>=3.4.0 +pyopenssl>=25.1.0 # Used by urllib3.contrib, which is used by PyQuery but not marked as a dependency +pyquery>=2.0.1 +python-dateutil>=2.9.0 +types-python-dateutil>=2.9.0 +python-json-logger>=3.3.0 python-magic==0.4.18 # Versions beyond the yanked .19 and .20 introduce form failures pymemcache>=4.0.0 # for django.core.cache.backends.memcached.PyMemcacheCache -python-mimeparse>=1.6 # from TastyPie +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 versionrequests>=2.31.0 -requests>=2.31.0 -types-requests>=2.27.1 -requests-mock>=1.9.3 +types-pytz==2025.2.0.20250809 # match pytz version +requests>=2.32.4 +types-requests>=2.32.4 +requests-mock>=1.12.1 rfc2html>=2.0.3 -scout-apm>=2.24.2 -selenium>=4.0 -tblib>=1.7.0 # So that the django test runner provides tracebacks -tlds>=2022042700 # Used to teach bleach about which TLDs currently exist -tqdm>=4.64.0 -types-zxcvbn~=4.5.0.20250223 # match zxcvbn version -Unidecode>=1.3.4 -urllib3>=1.26,<2 -weasyprint>=64.1 -xml2rfc>=3.23.0 +scout-apm>=3.4.0 +selenium>=4.34.2 +tblib>=3.1.0 # So that the django test runner provides tracebacks +tlds>=2022042700 # Used to teach bleach about which TLDs currently exist +tqdm>=4.67.1 +unidecode>=1.4.0 +urllib3>=2.5.0 +weasyprint>=66.0 +xml2rfc>=3.30.0 xym>=0.6,<1.0 zxcvbn>=4.5.0 +types-zxcvbn~=4.5.0.20250223 # match zxcvbn version From b14512e840d8dfccf4e418ac184c77321595278b Mon Sep 17 00:00:00 2001 From: rjsparks <10996692+rjsparks@users.noreply.github.com> Date: Wed, 3 Sep 2025 22:29:19 +0000 Subject: [PATCH 638/846] ci: update base image target version to 20250903T2216 --- 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 658f1e5695..d3b186e1f5 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:20250819T1645 +FROM ghcr.io/ietf-tools/datatracker-app-base:20250903T2216 LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/dev/build/TARGET_BASE b/dev/build/TARGET_BASE index 9e510ad8db..9d8427efdb 100644 --- a/dev/build/TARGET_BASE +++ b/dev/build/TARGET_BASE @@ -1 +1 @@ -20250819T1645 +20250903T2216 From e444d9e73c78a1100ad5b909f2b15012be287889 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 3 Sep 2025 20:55:17 -0300 Subject: [PATCH 639/846] chore: use :latest instead of :py312 (#9460) --- .github/workflows/tests-az.yml | 2 +- dev/deploy-to-container/cli.js | 6 +++--- dev/diff/cli.js | 6 +++--- dev/tests/debug.sh | 2 +- dev/tests/docker-compose.debug.yml | 2 +- docker/app.Dockerfile | 2 +- docker/celery.Dockerfile | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/tests-az.yml b/.github/workflows/tests-az.yml index d1fe0cdf62..8553563a19 100644 --- a/.github/workflows/tests-az.yml +++ b/.github/workflows/tests-az.yml @@ -62,7 +62,7 @@ jobs: echo "Starting Containers..." sudo docker network create dtnet sudo docker run -d --name db --network=dtnet ghcr.io/ietf-tools/datatracker-db:latest & - sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:py312 sleep infinity & + sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:latest sleep infinity & wait echo "Cloning datatracker repo..." diff --git a/dev/deploy-to-container/cli.js b/dev/deploy-to-container/cli.js index 2f0faad151..1a2d993ac4 100644 --- a/dev/deploy-to-container/cli.js +++ b/dev/deploy-to-container/cli.js @@ -85,7 +85,7 @@ async function main () { // Pull latest Datatracker Base image console.info('Pulling latest Datatracker base docker image...') - const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:py312') + const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:latest') await new Promise((resolve, reject) => { dock.modem.followProgress(appImagePullStream, (err, res) => err ? reject(err) : resolve(res)) }) @@ -214,7 +214,7 @@ async function main () { const celeryContainers = {} for (const conConf of conConfs) { celeryContainers[conConf.name] = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', name: `dt-${conConf.name}-${branch}`, Hostname: `dt-${conConf.name}-${branch}`, Env: [ @@ -244,7 +244,7 @@ async function main () { // Create Datatracker container console.info(`Creating Datatracker docker container... [dt-app-${branch}]`) const appContainer = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', name: `dt-app-${branch}`, Hostname: `dt-app-${branch}`, Env: [ diff --git a/dev/diff/cli.js b/dev/diff/cli.js index 0cf353cc65..461b0c37a0 100644 --- a/dev/diff/cli.js +++ b/dev/diff/cli.js @@ -567,7 +567,7 @@ async function main () { { title: 'Pulling latest Datatracker base docker image...', task: async (subctx, subtask) => { - const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:py312') + const appImagePullStream = await dock.pull('ghcr.io/ietf-tools/datatracker-app-base:latest') await new Promise((resolve, reject) => { dock.modem.followProgress(appImagePullStream, (err, res) => err ? reject(err) : resolve(res)) }) @@ -648,7 +648,7 @@ async function main () { title: 'Creating source Datatracker docker container...', task: async (subctx, subtask) => { containers.appSource = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', name: 'dt-diff-app-source', Tty: true, Hostname: 'appsource', @@ -664,7 +664,7 @@ async function main () { title: 'Creating target Datatracker docker container...', task: async (subctx, subtask) => { containers.appTarget = await dock.createContainer({ - Image: 'ghcr.io/ietf-tools/datatracker-app-base:py312', + Image: 'ghcr.io/ietf-tools/datatracker-app-base:latest', name: 'dt-diff-app-target', Tty: true, Hostname: 'apptarget', diff --git a/dev/tests/debug.sh b/dev/tests/debug.sh index e92e6d9b2a..d87c504bb9 100644 --- a/dev/tests/debug.sh +++ b/dev/tests/debug.sh @@ -9,7 +9,7 @@ # Simply type "exit" + ENTER to exit and shutdown this test environment. echo "Fetching latest images..." -docker pull ghcr.io/ietf-tools/datatracker-app-base:py312 +docker pull ghcr.io/ietf-tools/datatracker-app-base:latest docker pull ghcr.io/ietf-tools/datatracker-db:latest echo "Starting containers..." docker compose -f docker-compose.debug.yml -p dtdebug --compatibility up -d diff --git a/dev/tests/docker-compose.debug.yml b/dev/tests/docker-compose.debug.yml index 168bbd4e92..8117b92375 100644 --- a/dev/tests/docker-compose.debug.yml +++ b/dev/tests/docker-compose.debug.yml @@ -5,7 +5,7 @@ version: '3.8' services: app: - image: ghcr.io/ietf-tools/datatracker-app-base:py312 + image: ghcr.io/ietf-tools/datatracker-app-base:latest command: -f /dev/null working_dir: /__w/datatracker/datatracker entrypoint: tail diff --git a/docker/app.Dockerfile b/docker/app.Dockerfile index e3df9bd4b4..fee3833733 100644 --- a/docker/app.Dockerfile +++ b/docker/app.Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:py312 +FROM ghcr.io/ietf-tools/datatracker-app-base:latest LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/celery.Dockerfile b/docker/celery.Dockerfile index 279d5c7550..e7c7b9cc3f 100644 --- a/docker/celery.Dockerfile +++ b/docker/celery.Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ietf-tools/datatracker-app-base:py312 +FROM ghcr.io/ietf-tools/datatracker-app-base:latest LABEL maintainer="IETF Tools Team " ENV DEBIAN_FRONTEND=noninteractive From c4d69d0118a068c873dc066fe9adde829e86f14e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 5 Sep 2025 17:22:52 -0500 Subject: [PATCH 640/846] feat: links to postorious (#9470) * feat: links to postorious * fix: remove redundant divider * chore: better use of whitespace * chore: remove what the cat typed in * chore: more stray removal --- ietf/templates/base/menu_user.html | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ietf/templates/base/menu_user.html b/ietf/templates/base/menu_user.html index 9a0bf56838..fd921638a4 100644 --- a/ietf/templates/base/menu_user.html +++ b/ietf/templates/base/menu_user.html @@ -115,6 +115,37 @@ {% endif %} +
  11. + + List subscriptions + + +
  12. {% if user|has_role:"Reviewer" %}
  13. Date: Tue, 16 Sep 2025 17:55:07 -0300 Subject: [PATCH 641/846] chore: hide weasyprint internal deprecation warning (#9544) --- ietf/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ietf/settings.py b/ietf/settings.py index 753508dc99..d6be1d1e0f 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -34,6 +34,7 @@ warnings.filterwarnings("ignore", message="datetime.datetime.utcnow\\(\\) is deprecated", module="oic.utils.time_util") 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") base_path = pathlib.Path(__file__).resolve().parent From c71871855769d9c2980cad853cf92a9ec25cb50a Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 16 Sep 2025 15:55:45 -0500 Subject: [PATCH 642/846] fix: normalize 3gpp groups and resolve duplication (#9505) * fix: don't bother the rfc-editor with group type sdo name changes * fix: normalize 3gpp groups and resolve duplication * fix: improve guard, update t2 * fix: exclude the task from test coverage * fix: exclude harder * fix: tweak the pragma --- ietf/group/models.py | 2 + ietf/group/tasks.py | 121 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 121 insertions(+), 2 deletions(-) diff --git a/ietf/group/models.py b/ietf/group/models.py index 608dcc86b9..2d5e7c4e6f 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -491,6 +491,8 @@ def notify_rfceditor_of_group_name_change(sender, instance=None, **kwargs): current = Group.objects.get(pk=instance.pk) except Group.DoesNotExist: return + if current.type_id == "sdo": + return addr = settings.RFC_EDITOR_GROUP_NOTIFICATION_EMAIL if addr and instance.name != current.name: msg = """ diff --git a/ietf/group/tasks.py b/ietf/group/tasks.py index 693aafb385..ada83e80e2 100644 --- a/ietf/group/tasks.py +++ b/ietf/group/tasks.py @@ -9,12 +9,15 @@ from django.conf import settings from django.template.loader import render_to_string +from django.utils import timezone from ietf.doc.storage_utils import store_file +from ietf.liaisons.models import LiaisonStatement from ietf.utils import log +from ietf.utils.test_runner import disable_coverage -from .models import Group -from .utils import fill_in_charter_info, fill_in_wg_drafts, fill_in_wg_roles +from .models import Group, GroupHistory +from .utils import fill_in_charter_info, fill_in_wg_drafts, fill_in_wg_roles, save_group_in_history from .views import extract_last_name, roles @@ -113,3 +116,117 @@ def generate_wg_summary_files_task(): store_file("indexes", "1wg-summary.txt", f, allow_overwrite=True) with summary_by_acronym_file.open("rb") as f: store_file("indexes", "1wg-summary-by-acronym.txt", f, allow_overwrite=True) + +@shared_task +@disable_coverage() +def run_once_adjust_liaison_groups(): # pragma: no cover + log.log("Starting run_once_adjust_liaison_groups") + if all( + [ + Group.objects.filter( + acronym__in=[ + "3gpp-tsg-ct", + "3gpp-tsg-ran-wg1", + "3gpp-tsg-ran-wg4", + "3gpp-tsg-sa", + "3gpp-tsg-sa-wg5", + "3gpp-tsgct", # duplicates 3gpp-tsg-ct above already + "3gpp-tsgct-ct1", # will normalize all acronyms to hyphenated form + "3gpp-tsgct-ct3", # and consistently match the name + "3gpp-tsgct-ct4", # (particularly use of WG) + "3gpp-tsgran", + "3gpp-tsgran-ran2", + "3gpp-tsgsa", # duplicates 3gpp-tsg-sa above + "3gpp-tsgsa-sa2", # will normalize + "3gpp-tsgsa-sa3", + "3gpp-tsgsa-sa4", + "3gpp-tsgt-wg2", + ] + ).count() + == 16, + not Group.objects.filter( + acronym__in=[ + "3gpp-tsg-ran-wg3", + "3gpp-tsg-ct-wg1", + "3gpp-tsg-ct-wg3", + "3gpp-tsg-ct-wg4", + "3gpp-tsg-ran", + "3gpp-tsg-ran-wg2", + "3gpp-tsg-sa-wg2", + "3gpp-tsg-sa-wg3", + "3gpp-tsg-sa-wg4", + "3gpp-tsg-t-wg2", + ] + ).exists(), + Group.objects.filter(acronym="o3gpptsgran3").exists(), + not LiaisonStatement.objects.filter( + to_groups__acronym__in=["3gpp-tsgct", "3gpp-tsgsa"] + ).exists(), + not LiaisonStatement.objects.filter( + from_groups__acronym="3gpp-tsgct" + ).exists(), + LiaisonStatement.objects.filter(from_groups__acronym="3gpp-tsgsa").count() + == 1, + LiaisonStatement.objects.get(from_groups__acronym="3gpp-tsgsa").pk == 1448, + ] + ): + for old_acronym, new_acronym, new_name in ( + ("o3gpptsgran3", "3gpp-tsg-ran-wg3", "3GPP TSG RAN WG3"), + ("3gpp-tsgct-ct1", "3gpp-tsg-ct-wg1", "3GPP TSG CT WG1"), + ("3gpp-tsgct-ct3", "3gpp-tsg-ct-wg3", "3GPP TSG CT WG3"), + ("3gpp-tsgct-ct4", "3gpp-tsg-ct-wg4", "3GPP TSG CT WG4"), + ("3gpp-tsgran", "3gpp-tsg-ran", "3GPP TSG RAN"), + ("3gpp-tsgran-ran2", "3gpp-tsg-ran-wg2", "3GPP TSG RAN WG2"), + ("3gpp-tsgsa-sa2", "3gpp-tsg-sa-wg2", "3GPP TSG SA WG2"), + ("3gpp-tsgsa-sa3", "3gpp-tsg-sa-wg3", "3GPP TSG SA WG3"), + ("3gpp-tsgsa-sa4", "3gpp-tsg-sa-wg4", "3GPP TSG SA WG4"), + ("3gpp-tsgt-wg2", "3gpp-tsg-t-wg2", "3GPP TSG T WG2"), + ): + group = Group.objects.get(acronym=old_acronym) + save_group_in_history(group) + group.time = timezone.now() + group.acronym = new_acronym + group.name = new_name + if old_acronym.startswith("3gpp-tsgct-"): + group.parent = Group.objects.get(acronym="3gpp-tsg-ct") + elif old_acronym.startswith("3gpp-tsgsa-"): + group.parent = Group.objects.get(acronym="3gpp-tsg-sa") + group.save() + group.groupevent_set.create( + time=group.time, + by_id=1, # (System) + type="info_changed", + desc=f"acronym changed from {old_acronym} to {new_acronym}, name set to {new_name}", + ) + + for acronym, new_name in (("3gpp-tsg-ct", "3GPP TSG CT"),): + group = Group.objects.get(acronym=acronym) + save_group_in_history(group) + group.time = timezone.now() + group.name = new_name + group.save() + group.groupevent_set.create( + time=group.time, + by_id=1, # (System) + type="info_changed", + desc=f"name set to {new_name}", + ) + + ls = LiaisonStatement.objects.get(pk=1448) + ls.from_groups.remove(Group.objects.get(acronym="3gpp-tsgsa")) + ls.from_groups.add(Group.objects.get(acronym="3gpp-tsg-sa")) + + # Rewriting history to effectively merge the histories of the duplicate groups + GroupHistory.objects.filter(parent__acronym="3gpp-tsgsa").update( + parent=Group.objects.get(acronym="3gpp-tsg-sa") + ) + GroupHistory.objects.filter(parent__acronym="3gpp-tsgct").update( + parent=Group.objects.get(acronym="3gpp-tsg-ct") + ) + + deleted = Group.objects.filter( + acronym__in=["3gpp-tsgsa", "3gpp-tsgct"] + ).delete() + log.log(f"Deleted Groups: {deleted}") + else: + log.log("* Refusing to continue as preconditions have changed") From 0a1705193dfde6695921191540049b88d91d9ec9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 17 Sep 2025 12:45:32 -0500 Subject: [PATCH 643/846] fix: update draft-stream-ietf state descriptions (#9543) --- .../0026_change_wg_state_descriptions.py | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 ietf/doc/migrations/0026_change_wg_state_descriptions.py diff --git a/ietf/doc/migrations/0026_change_wg_state_descriptions.py b/ietf/doc/migrations/0026_change_wg_state_descriptions.py new file mode 100644 index 0000000000..b02b12c97e --- /dev/null +++ b/ietf/doc/migrations/0026_change_wg_state_descriptions.py @@ -0,0 +1,117 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations + +def forward(apps, schema_editor): + State = apps.get_model("doc","State") + for name, desc in [ + ("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."), + ("Parked WG Document","The Working Group (WG) document is in a temporary state where it will not be actively developed. The reason for the pause is explained via a datatracker comments section."), + ("Dead WG Document","The Working Group (WG) document has been abandoned by the WG. No further development is planned in this WG. A decision to resume work on this document and move it out of this state is possible."), + ("In WG Last Call","The Working Group (WG) document is currently subject to an active WG Last Call (WGLC) review per Section 7.4 of RFC2418."), + ("Waiting for Implementation","The progression of this Working Group (WG) document towards publication is paused as it awaits implementation. The process governing the approach to implementations is WG-specific."), + ("Held by WG","Held by Working Group (WG) chairs for administrative reasons. See document history for details."), + ("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"), + ("WG Consensus: Waiting for Write-Up","The Working Group (WG) document has consensus to proceed to publication. However, the document is waiting for a document shepherd write-up per RFC4858."), + ("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."), + ("Candidate for WG Adoption","The individual submission document has been marked by the Working Group (WG) chairs as a candidate for adoption by the WG, but no adoption call has been started."), + ("Call For Adoption By WG Issued","A call for adoption of the individual submission document has been issued by the Working Group (WG) chairs. This call is still running but the WG has not yet reached consensus for adoption."), + ("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."), + ("Adopted for WG Info Only","The document is adopted by the Working Group (WG) for its internal use. The WG has decided that it will not pursue publication of it as an RFC."), + ]: + State.objects.filter(name=name).update(desc=desc) + +def reverse(apps, schema_editor): + State = apps.get_model("doc","State") + for name, desc in [ + ("WG Document","""4.2.4. WG Document + + The "WG Document" state describes an I-D that has been adopted by an IETF WG and is being actively developed. + + A WG Chair may transition an I-D into the "WG Document" state at any time as long as the I-D is not being considered or developed in any other WG. + + Alternatively, WG Chairs may rely upon new functionality to be added to the Datatracker to automatically move version-00 drafts into the "WG Document" state as described in Section 4.1. + + Under normal conditions, it should not be possible for an I-D to be in the "WG Document" state in more than one WG at a time. This said, I-Ds may be transferred from one WG to another with the consent of the WG Chairs and the responsible ADs."""), + ("Parked WG Document","""4.2.5. Parked WG Document + + A "Parked WG Document" is an I-D that has lost its author or editor, is waiting for another document to be written or for a review to be completed, or cannot be progressed by the working group for some other reason. + + Some of the annotation tags described in Section 4.3 may be used in conjunction with this state to indicate why an I-D has been parked, and/or what may need to happen for the I-D to be un-parked. + + Parking a WG draft will not prevent it from expiring; however, this state can be used to indicate why the I-D has stopped progressing in the WG. + + A "Parked WG Document" that is not expired may be transferred from one WG to another with the consent of the WG Chairs and the responsible ADs."""), + ("Dead WG Document","""4.2.6. Dead WG Document + + A "Dead WG Document" is an I-D that has been abandoned. Note that 'Dead' is not always a final state for a WG I-D. If consensus is subsequently achieved, a "Dead WG Document" may be resurrected. A "Dead WG Document" that is not resurrected will eventually expire. + + Note that an I-D that is declared to be "Dead" in one WG and that is not expired may be transferred to a non-dead state in another WG with the consent of the WG Chairs and the responsible ADs."""), + ("In WG Last Call","""4.2.7. In WG Last Call + + A document "In WG Last Call" is an I-D for which a WG Last Call (WGLC) has been issued and is in progress. + + Note that conducting a WGLC is an optional part of the IETF WG process, per Section 7.4 of RFC 2418 [RFC2418]. + + If a WG Chair decides to conduct a WGLC on an I-D, the "In WG Last Call" state can be used to track the progress of the WGLC. The Chair may configure the Datatracker to send a WGLC message to one or more mailing lists when the Chair moves the I-D into this state. The WG Chair may also be able to select a different set of mailing lists for a different document undergoing a WGLC; some documents may deserve coordination with other WGs. + + A WG I-D in this state should remain "In WG Last Call" until the WG Chair moves it to another state. The WG Chair may configure the Datatracker to send an e-mail after a specified period of time to remind or 'nudge' the Chair to conclude the WGLC and to determine the next state for the document. + + It is possible for one WGLC to lead into another WGLC for the same document. For example, an I-D that completed a WGLC as an "Informational" document may need another WGLC if a decision is taken to convert the I-D into a Standards Track document."""), + ("Waiting for Implementation","""In some areas, it can be desirable to wait for multiple interoperable implementations before progressing a draft to be an RFC, and in some WGs this is required. This state should be entered after WG Last Call has completed."""), + ("Held by WG","""Held by WG, see document history for details."""), + ("Waiting for WG Chair Go-Ahead","""4.2.8. Waiting for WG Chair Go-Ahead + + A WG Chair may wish to place an I-D that receives a lot of comments during a WGLC into the "Waiting for WG Chair Go-Ahead" state. This state describes an I-D that has undergone a WGLC; however, the Chair is not yet ready to call consensus on the document. + + If comments from the WGLC need to be responded to, or a revision to the I-D is needed, the Chair may place an I-D into this state until all of the WGLC comments are adequately addressed and the (possibly revised) document is in the I-D repository."""), + ("WG Consensus: Waiting for Write-Up","""4.2.9. WG Consensus: Waiting for Writeup + + A document in the "WG Consensus: Waiting for Writeup" state has essentially completed its development within the working group, and is nearly ready to be sent to the IESG for publication. The last thing to be done is the preparation of a protocol writeup by a Document Shepherd. The IESG requires that a document shepherd writeup be completed before publication of the I-D is requested. The IETF document shepherding process and the role of a WG Document Shepherd is described in RFC 4858 [RFC4858] + + A WG Chair may call consensus on an I-D without a formal WGLC and transition an I-D that was in the "WG Document" state directly into this state. + + The name of this state includes the words "Waiting for Writeup" because a good document shepherd writeup takes time to prepare."""), + ("Submitted to IESG for Publication","""4.2.10. Submitted to IESG for Publication + + This state describes a WG document that has been submitted to the IESG for publication and that has not been sent back to the working group for revision. + + An I-D in this state may be under review by the IESG, it may have been approved and be in the RFC Editor's queue, or it may have been published as an RFC. Other possibilities exist too. The document may be "Dead" (in the IESG state machine) or in a "Do Not Publish" state."""), + ("Candidate for WG Adoption","""The document has been marked as a candidate for WG adoption by the WG Chair. This state can be used before a call for adoption is issued (and the document is put in the "Call For Adoption By WG Issued" state), to indicate that the document is in the queue for a call for adoption, even if none has been issued yet."""), + ("Call For Adoption By WG Issued","""4.2.1. Call for Adoption by WG Issued + + The "Call for Adoption by WG Issued" state should be used to indicate when an I-D is being considered for adoption by an IETF WG. An I-D that is in this state is actively being considered for adoption and has not yet achieved consensus, preference, or selection in the WG. + + This state may be used to describe an I-D that someone has asked a WG to consider for adoption, if the WG Chair has agreed with the request. This state may also be used to identify an I-D that a WG Chair asked an author to write specifically for consideration as a candidate WG item [WGDTSPEC], and/or an I-D that is listed as a 'candidate draft' in the WG's charter. + + Under normal conditions, it should not be possible for an I-D to be in the "Call for Adoption by WG Issued" state in more than one working group at the same time. This said, it is not uncommon for authors to "shop" their I-Ds to more than one WG at a time, with the hope of getting their documents adopted somewhere. + + After this state is implemented in the Datatracker, an I-D that is in the "Call for Adoption by WG Issued" state will not be able to be "shopped" to any other WG without the consent of the WG Chairs and the responsible ADs impacted by the shopping. + + Note that Figure 1 includes an arc leading from this state to outside of the WG state machine. This illustrates that some I-Ds that are considered do not get adopted as WG drafts. An I-D that is not adopted as a WG draft will transition out of the WG state machine and revert back to having no stream-specific state; however, the status change history log of the I-D will record that the I-D was previously in the "Call for Adoption by WG Issued" state."""), + ("Adopted by a WG","""4.2.2. Adopted by a WG + + The "Adopted by a WG" state describes an individual submission I-D that an IETF WG has agreed to adopt as one of its WG drafts. + + WG Chairs who use this state will be able to clearly indicate when their WGs adopt individual submission I-Ds. This will facilitate the Datatracker's ability to correctly capture "Replaces" information for WG drafts and correct "Replaced by" information for individual submission I-Ds that have been replaced by WG drafts. + + This state is needed because the Datatracker uses the filename of an I-D as a key to search its database for status information about the I-D, and because the filename of a WG I-D is supposed to be different from the filename of an individual submission I-D. The filename of an individual submission I-D will typically be formatted as 'draft-author-wgname-topic-nn'. + + The filename of a WG document is supposed to be formatted as 'draft- ietf-wgname-topic-nn'. + + An individual I-D that is adopted by a WG may take weeks or months to be resubmitted by the author as a new (version-00) WG draft. If the "Adopted by a WG" state is not used, the Datatracker has no way to determine that an I-D has been adopted until a new version of the I-D is submitted to the WG by the author and until the I-D is approved for posting by a WG Chair."""), + ("Adopted for WG Info Only","""4.2.3. Adopted for WG Info Only + + The "Adopted for WG Info Only" state describes a document that contains useful information for the WG that adopted it, but the document is not intended to be published as an RFC. The WG will not actively develop the contents of the I-D or progress it for publication as an RFC. The only purpose of the I-D is to provide information for internal use by the WG."""), + ]: + State.objects.filter(name=name).update(desc=desc) + +class Migration(migrations.Migration): + + dependencies = [ + ("doc", "0025_storedobject_storedobject_unique_name_per_store"), + ] + + operations = [ + migrations.RunPython(forward, reverse) + ] From 327447f91fa21ef7620d958b5f8fc1f00d4f85a5 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 17 Sep 2025 13:42:09 -0500 Subject: [PATCH 644/846] feat: iesg dashboard of wg documents (#9363) * feat: iesg dashboard of wg documents (#8999) * fix: removed template html cruft * fix: avoid triggering a Ghostery false positive * fix: remove related-id, milestone, and last meeting columns * fix: make wgs with no docs show in last table * fix: remove wg w/wo docs columns from first three thables * fix: Make table names closer to original request * chore: ruff format ietf.iesg.utils * feat: refactor, test, cleanup * chore: added comment about the test wg acronyms --------- Co-authored-by: Jennifer Richards --- ietf/iesg/tests.py | 1583 +++++++++++++++++++++++ ietf/iesg/urls.py | 1 + ietf/iesg/utils.py | 296 ++++- ietf/iesg/views.py | 12 +- ietf/templates/iesg/working_groups.html | 159 +++ 5 files changed, 2028 insertions(+), 23 deletions(-) create mode 100644 ietf/templates/iesg/working_groups.html diff --git a/ietf/iesg/tests.py b/ietf/iesg/tests.py index 746ea3f56f..f3778d1ded 100644 --- a/ietf/iesg/tests.py +++ b/ietf/iesg/tests.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- +from collections import Counter import datetime import io import tarfile @@ -24,7 +25,9 @@ from ietf.group.models import Group, GroupMilestone, Role from ietf.iesg.agenda import get_agenda_date, agenda_data, fill_in_agenda_administrivia, agenda_sections from ietf.iesg.models import TelechatDate, TelechatAgendaContent +from ietf.iesg.utils import get_wg_dashboard_info from ietf.name.models import StreamName, TelechatAgendaSectionName +from ietf.person.factories import PersonFactory from ietf.person.models import Person from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent from ietf.iesg.factories import IESGMgmtItemFactory, TelechatAgendaContentFactory @@ -182,6 +185,1586 @@ def test_ietf_activity(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) + def test_working_groups(self): + # Clean away the wasted built-for-every-test noise + Group.objects.filter(type__in=["wg", "area"]).delete() + + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + self.assertEqual(area_summary, []) + self.assertEqual( + area_totals, {"group_count": 0, "doc_count": 0, "page_count": 0} + ) + self.assertEqual(ad_summary, []) + self.assertEqual(noad_summary, []) + self.assertEqual( + ad_totals, + { + "ad_group_count": 0, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + noad_totals, + { + "ad_group_count": 0, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + totals, + { + "group_count": 0, + "doc_count": 0, + "page_count": 0, + "groups_with_docs_count": 0, + }, + ) + self.assertEqual(wg_summary, []) + + # Construct Areas with WGs similar in shape to a real moment of the IETF + + # Note that this test construciton uses the first letter of the wg acronyms + # for convenience to switch on whether groups have documents with assigned ADs. + # (Search for ` if wg_acronym[0] > "g"`) + # There's no other significance to the names of the area directors or the + # acronyms of the areas and groups other than being distinct. Taking the + # values from sets of similar things hopefully helps with debugging the tests. + + areas = {} + for area_acronym in ["red", "orange", "yellow", "green", "blue", "violet"]: + areas[area_acronym] = GroupFactory(type_id="area", acronym=area_acronym) + for ad, area, wgs in [ + ("Alpha", "red", ["bassoon"]), + ("Bravo", "orange", ["celesta"]), + ("Charlie", "orange", ["clarinet", "cymbals"]), + ("Delta", "yellow", ["flute"]), + ("Echo", "yellow", ["glockenspiel"]), + ("Foxtrot", "green", ["gong", "guitar"]), + ("Golf", "green", ["harp"]), + ("Hotel", "blue", ["harpsichord"]), + ("Indigo", "blue", ["oboe", "organ"]), + ("Juliet", "violet", ["piano"]), + ("Kilo", "violet", ["piccolo"]), + ("Lima", "violet", ["saxophone", "tambourine"]), + ]: + p = Person.objects.filter(name=ad).first() or PersonFactory(name=ad) + RoleFactory(group=areas[area], person=p, name_id="ad") + for wg in wgs: + g = GroupFactory(acronym=wg, type_id="wg", parent=areas[area]) + RoleFactory(group=g, person=p, name_id="ad") + + # Some ADs have out of area groups + g = GroupFactory(acronym="timpani", parent=areas["orange"]) + RoleFactory(group=g, person=Person.objects.get(name="Juliet"), name_id="ad") + + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + + self.assertEqual( + area_summary, + [ + { + "area": "red", + "groups_in_area": 1, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "area": "orange", + "groups_in_area": 4, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "area": "yellow", + "groups_in_area": 2, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "area": "green", + "groups_in_area": 3, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "area": "blue", + "groups_in_area": 3, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "area": "violet", + "groups_in_area": 4, + "groups_with_docs": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + ], + ) + self.assertEqual( + area_totals, {"group_count": 0, "doc_count": 0, "page_count": 0} + ) + self.assertEqual( + ad_summary, + [ + { + "ad": "Alpha", + "area": "red", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Bravo", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Charlie", + "area": "orange", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Delta", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Echo", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Foxtrot", + "area": "green", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Golf", + "area": "green", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Hotel", + "area": "blue", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Indigo", + "area": "blue", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Juliet", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Juliet", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Kilo", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Lima", + "area": "violet", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + ], + ) + self.assertEqual( + noad_summary, + [ + { + "ad": "Alpha", + "area": "red", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Bravo", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Charlie", + "area": "orange", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Delta", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Echo", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Foxtrot", + "area": "green", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Golf", + "area": "green", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Hotel", + "area": "blue", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Indigo", + "area": "blue", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Juliet", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Juliet", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Kilo", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + { + "ad": "Lima", + "area": "violet", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0, + "doc_percent": 0, + "page_percent": 0, + }, + ], + ) + self.assertEqual( + ad_totals, + { + "ad_group_count": 17, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + noad_totals, + { + "ad_group_count": 17, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + totals, + { + "group_count": 17, + "doc_count": 0, + "page_count": 0, + "groups_with_docs_count": 0, + }, + ) + self.assertEqual( + wg_summary, + [ + { + "wg": "bassoon", + "area": "red", + "ad": "Alpha", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "celesta", + "area": "orange", + "ad": "Bravo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "clarinet", + "area": "orange", + "ad": "Charlie", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "cymbals", + "area": "orange", + "ad": "Charlie", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "flute", + "area": "yellow", + "ad": "Delta", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "glockenspiel", + "area": "yellow", + "ad": "Echo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "gong", + "area": "green", + "ad": "Foxtrot", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "guitar", + "area": "green", + "ad": "Foxtrot", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "harp", + "area": "green", + "ad": "Golf", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "harpsichord", + "area": "blue", + "ad": "Hotel", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "oboe", + "area": "blue", + "ad": "Indigo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "organ", + "area": "blue", + "ad": "Indigo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "piano", + "area": "violet", + "ad": "Juliet", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "piccolo", + "area": "violet", + "ad": "Kilo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "saxophone", + "area": "violet", + "ad": "Lima", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "tambourine", + "area": "violet", + "ad": "Lima", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "timpani", + "area": "orange", + "ad": "Juliet", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + ], + ) + + # As seen above, all doc and page counts are currently 0 + + # We'll give a group a document but not assign it to its AD + WgDraftFactory( + group=Group.objects.get(acronym="saxophone"), pages=len("saxophone") + ) + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + count_violet_dicts = 0 + for d in area_summary: + if d["area"] == "violet": + count_violet_dicts += 1 + self.assertEqual(d["groups_with_docs"], 1) + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + self.assertEqual(d["group_percent"], 100.0) + self.assertEqual(d["doc_percent"], 100.0) + self.assertEqual(d["page_percent"], 100.0) + else: + self.assertEqual(d["groups_with_docs"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_violet_dicts, 1) + + self.assertEqual( + area_totals, {"group_count": 1, "doc_count": 1, "page_count": 9} + ) + + # No AD has this document, even though it's in Lima's group + count_lima_dicts = 0 + for d in ad_summary: + if d["ad"] == "Lima": + count_lima_dicts += 1 + self.assertEqual(d["doc_group_count"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_lima_dicts, 1) + + # It's in Lima's group, so normally it will eventually land on Lima + count_lima_dicts = 0 + for d in noad_summary: + if d["ad"] == "Lima": + count_lima_dicts += 1 + self.assertEqual(d["doc_group_count"], 1) + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + self.assertEqual(d["group_percent"], 100.0) + self.assertEqual(d["doc_percent"], 100.0) + self.assertEqual(d["page_percent"], 100.0) + else: + self.assertEqual(d["doc_group_count"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_lima_dicts, 1) + + self.assertEqual( + ad_totals, + { + "ad_group_count": 17, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + noad_totals, + { + "ad_group_count": 17, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 9, + }, + ) + self.assertEqual( + totals, + { + "group_count": 17, + "doc_count": 1, + "page_count": 9, + "groups_with_docs_count": 1, + }, + ) + + count_sax_dicts = 0 + for d in wg_summary: + if d["wg"] == "saxophone": + count_sax_dicts += 1 + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + else: + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(count_sax_dicts, 1) + + # Assign that doc to Lima + self.assertEqual(Document.objects.count(), 1) + Document.objects.all().update(ad=Person.objects.get(name="Lima")) + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + count_violet_dicts = 0 + for d in area_summary: + if d["area"] == "violet": + count_violet_dicts += 1 + self.assertEqual(d["groups_with_docs"], 1) + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + self.assertEqual(d["group_percent"], 100.0) + self.assertEqual(d["doc_percent"], 100.0) + self.assertEqual(d["page_percent"], 100.0) + else: + self.assertEqual(d["groups_with_docs"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_violet_dicts, 1) + + self.assertEqual( + area_totals, {"group_count": 1, "doc_count": 1, "page_count": 9} + ) + + # This time it will show up as a doc assigned to Lima + count_lima_dicts = 0 + for d in ad_summary: + if d["ad"] == "Lima": + count_lima_dicts += 1 + self.assertEqual(d["doc_group_count"], 1) + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + self.assertEqual(d["group_percent"], 100.0) + self.assertEqual(d["doc_percent"], 100.0) + self.assertEqual(d["page_percent"], 100.0) + else: + self.assertEqual(d["doc_group_count"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_lima_dicts, 1) + + # and there will be no noad documents + count_lima_dicts = 0 + for d in noad_summary: + if d["ad"] == "Lima": + count_lima_dicts += 1 + self.assertEqual(d["doc_group_count"], 0) + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + self.assertEqual(count_lima_dicts, 1) + + self.assertEqual( + ad_totals, + { + "ad_group_count": 17, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 9, + }, + ) + self.assertEqual( + noad_totals, + { + "ad_group_count": 17, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + }, + ) + self.assertEqual( + totals, + { + "group_count": 17, + "doc_count": 1, + "page_count": 9, + "groups_with_docs_count": 1, + }, + ) + + count_sax_dicts = 0 + for d in wg_summary: + if d["wg"] == "saxophone": + count_sax_dicts += 1 + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9) + else: + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(count_sax_dicts, 1) + + # Now give Lima a document in a group that's not in their area: + WgDraftFactory( + group=Group.objects.get(acronym="gong"), + pages=len("gong"), + ad=Person.objects.get(name="Lima"), + ) + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + seen_dicts = Counter([d["area"] for d in area_summary]) + for d in areas: + self.assertEqual(seen_dicts[area], 1 if area in ["violet", "green"] else 0) + for d in area_summary: + if d["area"] in ["violet", "green"]: + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9 if d["area"] == "violet" else 4) + self.assertEqual(d["group_percent"], 50) + self.assertEqual(d["doc_percent"], 50) + self.assertEqual( + d["page_percent"], + 100 * 9 / 13 if d["area"] == "violet" else 100 * 4 / 13, + ) + else: + self.assertEqual(d["doc_count"], 0) + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + + self.assertEqual( + area_totals, {"group_count": 2, "doc_count": 2, "page_count": 13} + ) + + for d in ad_summary: + if d["ad"] == "Lima": + self.assertEqual(d["doc_group_count"], 1) + self.assertEqual(d["doc_count"], 1) + self.assertEqual(d["page_count"], 9 if d["area"] == "violet" else 4) + self.assertEqual(d["group_percent"], 50) + self.assertEqual(d["doc_percent"], 50) + self.assertEqual( + d["page_percent"], + 100 * 9 / 13 if d["area"] == "violet" else 100 * 4 / 13, + ) + else: + self.assertEqual(d["doc_group_count"], 0) + self.assertEqual( + d["doc_count"], 0 + ) # Note in particular this is 0 for Foxtrot + self.assertEqual(d["page_count"], 0) + self.assertEqual(d["group_percent"], 0) + self.assertEqual(d["doc_percent"], 0) + self.assertEqual(d["page_percent"], 0) + + for d in wg_summary: + if d["wg"] == "gong": + # Lima's doc in gong above counts at the dict for gong even though the ad reported there is Foxtrot. + self.assertEqual( + d, + { + "wg": "gong", + "area": "green", + "ad": "Foxtrot", + "doc_count": 1, + "page_count": 4, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + ) + elif d["ad"] == "Lima": + self.assertEqual( + d["area"], "violet" + ) # The out of area assignment is not reflected in the wg_summary at all. + + # Now pile on a lot of documents + for wg_acronym in [ + "bassoon", + "celesta", + "clarinet", + "cymbals", + "flute", + "glockenspiel", + "gong", + "guitar", + "harp", + "harpsichord", + "oboe", + "organ", + "piano", + "piccolo", + "saxophone", + "tambourine", + "timpani", + ]: + if wg_acronym in ["bassoon", "celesta"]: + continue # Those WGs have no docs + # The rest have a doc that's not assigned to any ad + WgDraftFactory( + group=Group.objects.get(acronym=wg_acronym), pages=len(wg_acronym) + ) + if wg_acronym[0] > "g": + # Some have a doc assigned to the responsible ad + WgDraftFactory( + group=Group.objects.get(acronym=wg_acronym), + pages=len(wg_acronym), + ad=Role.objects.get(name_id="ad", group__acronym=wg_acronym).person, + ) + # The other AD for an area might be covering a doc + WgDraftFactory( + group=Group.objects.get(acronym="saxophone"), + pages=len("saxophone"), + ad=Person.objects.get(name="Juliet"), + ) + # An Ad not associated with the group or the area is responsible for a doc + WgDraftFactory( + group=Group.objects.get(acronym="bassoon"), + pages=len("bassoon"), + ad=Person.objects.get(name="Juliet"), + ) + + ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) = get_wg_dashboard_info() + + self.assertEqual( + area_summary, + [ + { + "area": "red", + "groups_in_area": 1, + "groups_with_docs": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 6.25, + "doc_percent": 3.571428571428571, + "page_percent": 3.5897435897435894, + }, + { + "area": "orange", + "groups_in_area": 4, + "groups_with_docs": 3, + "doc_count": 4, + "page_count": 29, + "group_percent": 18.75, + "doc_percent": 14.285714285714285, + "page_percent": 14.871794871794872, + }, + { + "area": "yellow", + "groups_in_area": 2, + "groups_with_docs": 2, + "doc_count": 2, + "page_count": 17, + "group_percent": 12.5, + "doc_percent": 7.142857142857142, + "page_percent": 8.717948717948717, + }, + { + "area": "green", + "groups_in_area": 3, + "groups_with_docs": 3, + "doc_count": 5, + "page_count": 22, + "group_percent": 18.75, + "doc_percent": 17.857142857142858, + "page_percent": 11.282051282051283, + }, + { + "area": "blue", + "groups_in_area": 3, + "groups_with_docs": 3, + "doc_count": 6, + "page_count": 40, + "group_percent": 18.75, + "doc_percent": 21.428571428571427, + "page_percent": 20.51282051282051, + }, + { + "area": "violet", + "groups_in_area": 4, + "groups_with_docs": 4, + "doc_count": 10, + "page_count": 80, + "group_percent": 25.0, + "doc_percent": 35.714285714285715, + "page_percent": 41.02564102564102, + }, + ], + ) + self.assertEqual( + area_totals, {"group_count": 16, "doc_count": 28, "page_count": 195} + ) + self.assertEqual( + ad_summary, + [ + { + "ad": "Alpha", + "area": "red", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Bravo", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Charlie", + "area": "orange", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Delta", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Echo", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Foxtrot", + "area": "green", + "ad_group_count": 2, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Golf", + "area": "green", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 4, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 4.395604395604396, + }, + { + "ad": "Hotel", + "area": "blue", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 11, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 12.087912087912088, + }, + { + "ad": "Indigo", + "area": "blue", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 9, + "group_percent": 16.666666666666664, + "doc_percent": 15.384615384615385, + "page_percent": 9.89010989010989, + }, + { + "ad": "Juliet", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 7.6923076923076925, + }, + { + "ad": "Juliet", + "area": "red", + "ad_group_count": 0, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 7.6923076923076925, + }, + { + "ad": "Juliet", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 14, + "group_percent": 16.666666666666664, + "doc_percent": 15.384615384615385, + "page_percent": 15.384615384615385, + }, + { + "ad": "Kilo", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 7.6923076923076925, + }, + { + "ad": "Lima", + "area": "green", + "ad_group_count": 0, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 4, + "group_percent": 8.333333333333332, + "doc_percent": 7.6923076923076925, + "page_percent": 4.395604395604396, + }, + { + "ad": "Lima", + "area": "violet", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 3, + "page_count": 28, + "group_percent": 16.666666666666664, + "doc_percent": 23.076923076923077, + "page_percent": 30.76923076923077, + }, + ], + ) + self.assertEqual( + noad_summary, + [ + { + "ad": "Alpha", + "area": "red", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Bravo", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + "group_percent": 0.0, + "doc_percent": 0.0, + "page_percent": 0.0, + }, + { + "ad": "Charlie", + "area": "orange", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 15, + "group_percent": 13.333333333333334, + "doc_percent": 13.333333333333334, + "page_percent": 14.423076923076922, + }, + { + "ad": "Delta", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 5, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 4.807692307692308, + }, + { + "ad": "Echo", + "area": "yellow", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 12, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 11.538461538461538, + }, + { + "ad": "Foxtrot", + "area": "green", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 10, + "group_percent": 13.333333333333334, + "doc_percent": 13.333333333333334, + "page_percent": 9.615384615384617, + }, + { + "ad": "Golf", + "area": "green", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 4, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 3.8461538461538463, + }, + { + "ad": "Hotel", + "area": "blue", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 11, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 10.576923076923077, + }, + { + "ad": "Indigo", + "area": "blue", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 9, + "group_percent": 13.333333333333334, + "doc_percent": 13.333333333333334, + "page_percent": 8.653846153846153, + }, + { + "ad": "Juliet", + "area": "orange", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 6.730769230769231, + }, + { + "ad": "Juliet", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 5, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 4.807692307692308, + }, + { + "ad": "Kilo", + "area": "violet", + "ad_group_count": 1, + "doc_group_count": 1, + "doc_count": 1, + "page_count": 7, + "group_percent": 6.666666666666667, + "doc_percent": 6.666666666666667, + "page_percent": 6.730769230769231, + }, + { + "ad": "Lima", + "area": "violet", + "ad_group_count": 2, + "doc_group_count": 2, + "doc_count": 2, + "page_count": 19, + "group_percent": 13.333333333333334, + "doc_percent": 13.333333333333334, + "page_percent": 18.269230769230766, + }, + ], + ) + self.assertEqual( + ad_totals, + { + "ad_group_count": 17, + "doc_group_count": 12, + "doc_count": 13, + "page_count": 91, + }, + ) + self.assertEqual( + noad_totals, + { + "ad_group_count": 17, + "doc_group_count": 15, + "doc_count": 15, + "page_count": 104, + }, + ) + self.assertEqual( + totals, + { + "group_count": 17, + "doc_count": 28, + "page_count": 195, + "groups_with_docs_count": 16, + }, + ) + self.assertEqual( + wg_summary, + [ + { + "wg": "bassoon", + "area": "red", + "ad": "Alpha", + "doc_count": 1, + "page_count": 7, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "celesta", + "area": "orange", + "ad": "Bravo", + "doc_count": 0, + "page_count": 0, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "clarinet", + "area": "orange", + "ad": "Charlie", + "doc_count": 1, + "page_count": 8, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "cymbals", + "area": "orange", + "ad": "Charlie", + "doc_count": 1, + "page_count": 7, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "flute", + "area": "yellow", + "ad": "Delta", + "doc_count": 1, + "page_count": 5, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "glockenspiel", + "area": "yellow", + "ad": "Echo", + "doc_count": 1, + "page_count": 12, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "gong", + "area": "green", + "ad": "Foxtrot", + "doc_count": 2, + "page_count": 8, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "guitar", + "area": "green", + "ad": "Foxtrot", + "doc_count": 1, + "page_count": 6, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "harp", + "area": "green", + "ad": "Golf", + "doc_count": 2, + "page_count": 8, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "harpsichord", + "area": "blue", + "ad": "Hotel", + "doc_count": 2, + "page_count": 22, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "oboe", + "area": "blue", + "ad": "Indigo", + "doc_count": 2, + "page_count": 8, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "organ", + "area": "blue", + "ad": "Indigo", + "doc_count": 2, + "page_count": 10, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "piano", + "area": "violet", + "ad": "Juliet", + "doc_count": 2, + "page_count": 10, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "piccolo", + "area": "violet", + "ad": "Kilo", + "doc_count": 2, + "page_count": 14, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "saxophone", + "area": "violet", + "ad": "Lima", + "doc_count": 4, + "page_count": 36, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "tambourine", + "area": "violet", + "ad": "Lima", + "doc_count": 2, + "page_count": 20, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + { + "wg": "timpani", + "area": "orange", + "ad": "Juliet", + "doc_count": 2, + "page_count": 14, + "rfc_count": 0, + "recent_rfc_count": 0, + }, + ], + ) + + # Make sure the view doesn't _crash_ - the template is a dead-simple rendering of the dicts, but this test doesn't prove that + url = urlreverse("ietf.iesg.views.working_groups") + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + class IESGAgendaTests(TestCase): def setUp(self): diff --git a/ietf/iesg/urls.py b/ietf/iesg/urls.py index d8cfec9f90..5fd9dea0cc 100644 --- a/ietf/iesg/urls.py +++ b/ietf/iesg/urls.py @@ -59,6 +59,7 @@ url(r'^agenda/telechat-(?:%(date)s-)?docs.tgz' % settings.URL_REGEXPS, views.telechat_docs_tarfile), url(r'^discusses/$', views.discusses), url(r'^ietf-activity/$', views.ietf_activity), + url(r'^working-groups/$', views.working_groups), url(r'^milestones/$', views.milestones_needing_review), url(r'^photos/$', views.photos), ] diff --git a/ietf/iesg/utils.py b/ietf/iesg/utils.py index 56571dc753..9051cf92b2 100644 --- a/ietf/iesg/utils.py +++ b/ietf/iesg/utils.py @@ -1,32 +1,45 @@ -from collections import namedtuple +from collections import Counter, defaultdict, namedtuple -import debug # pyflakes:ignore +import datetime + +import debug # pyflakes:ignore + +from django.db import models +from django.utils import timezone from ietf.doc.models import Document, STATUSCHANGE_RELATIONS from ietf.doc.utils_search import fill_in_telechat_date +from ietf.group.models import Group from ietf.iesg.agenda import get_doc_section +from ietf.person.utils import get_active_ads + +TelechatPageCount = namedtuple( + "TelechatPageCount", + ["for_approval", "for_action", "related", "ad_pages_left_to_ballot_on"], +) -TelechatPageCount = namedtuple('TelechatPageCount',['for_approval','for_action','related','ad_pages_left_to_ballot_on']) def telechat_page_count(date=None, docs=None, ad=None): if not date and not docs: return TelechatPageCount(0, 0, 0, 0) if not docs: - candidates = Document.objects.filter(docevent__telechatdocevent__telechat_date=date).distinct() + candidates = Document.objects.filter( + docevent__telechatdocevent__telechat_date=date + ).distinct() fill_in_telechat_date(candidates) - docs = [ doc for doc in candidates if doc.telechat_date()==date ] + docs = [doc for doc in candidates if doc.telechat_date() == date] - for_action =[d for d in docs if get_doc_section(d).endswith('.3')] + for_action = [d for d in docs if get_doc_section(d).endswith(".3")] - for_approval = set(docs)-set(for_action) + for_approval = set(docs) - set(for_action) - drafts = [d for d in for_approval if d.type_id == 'draft'] + drafts = [d for d in for_approval if d.type_id == "draft"] ad_pages_left_to_ballot_on = 0 pages_for_approval = 0 - + for draft in drafts: pages_for_approval += draft.pages or 0 if ad: @@ -39,30 +52,269 @@ def telechat_page_count(date=None, docs=None, ad=None): pages_for_action = 0 for d in for_action: - if d.type_id == 'draft': + if d.type_id == "draft": pages_for_action += d.pages or 0 - elif d.type_id == 'statchg': + elif d.type_id == "statchg": for rel in d.related_that_doc(STATUSCHANGE_RELATIONS): pages_for_action += rel.pages or 0 - elif d.type_id == 'conflrev': - for rel in d.related_that_doc('conflrev'): + elif d.type_id == "conflrev": + for rel in d.related_that_doc("conflrev"): pages_for_action += rel.pages or 0 else: pass related_pages = 0 - for d in for_approval-set(drafts): - if d.type_id == 'statchg': + for d in for_approval - set(drafts): + if d.type_id == "statchg": for rel in d.related_that_doc(STATUSCHANGE_RELATIONS): related_pages += rel.pages or 0 - elif d.type_id == 'conflrev': - for rel in d.related_that_doc('conflrev'): + elif d.type_id == "conflrev": + for rel in d.related_that_doc("conflrev"): related_pages += rel.pages or 0 else: # There's really nothing to rely on to give a reading load estimate for charters pass - - return TelechatPageCount(for_approval=pages_for_approval, - for_action=pages_for_action, - related=related_pages, - ad_pages_left_to_ballot_on=ad_pages_left_to_ballot_on) + + return TelechatPageCount( + for_approval=pages_for_approval, + for_action=pages_for_action, + related=related_pages, + ad_pages_left_to_ballot_on=ad_pages_left_to_ballot_on, + ) + + +def get_wg_dashboard_info(): + docs = ( + Document.objects.filter( + group__type="wg", + group__state="active", + states__type="draft", + states__slug="active", + ) + .filter(models.Q(ad__isnull=True) | models.Q(ad__in=get_active_ads())) + .distinct() + .prefetch_related("group", "group__parent") + .exclude( + states__type="draft-stream-ietf", + states__slug__in=["c-adopt", "wg-cand", "dead", "parked", "info"], + ) + ) + groups = Group.objects.filter(state="active", type="wg") + areas = Group.objects.filter(state="active", type="area") + + total_group_count = groups.count() + total_doc_count = docs.count() + total_page_count = docs.aggregate(models.Sum("pages"))["pages__sum"] or 0 + totals = { + "group_count": total_group_count, + "doc_count": total_doc_count, + "page_count": total_page_count, + } + + # Since this view is primarily about counting subsets of the above docs query and the + # expected number of returned documents is just under 1000 typically - do the totaling + # work in python rather than asking the db to do it. + + groups_for_area = defaultdict(set) + pages_for_area = defaultdict(lambda: 0) + docs_for_area = defaultdict(lambda: 0) + groups_for_ad = defaultdict(lambda: defaultdict(set)) + pages_for_ad = defaultdict(lambda: defaultdict(lambda: 0)) + docs_for_ad = defaultdict(lambda: defaultdict(lambda: 0)) + groups_for_noad = defaultdict(lambda: defaultdict(set)) + pages_for_noad = defaultdict(lambda: defaultdict(lambda: 0)) + docs_for_noad = defaultdict(lambda: defaultdict(lambda: 0)) + docs_for_wg = defaultdict(lambda: 0) + pages_for_wg = defaultdict(lambda: 0) + groups_total = set() + pages_total = 0 + docs_total = 0 + + responsible_for_group = defaultdict(lambda: defaultdict(lambda: "None")) + responsible_count = defaultdict(lambda: defaultdict(lambda: 0)) + for group in groups: + responsible = f"{', '.join([r.person.plain_name() for r in group.role_set.filter(name_id='ad')])}" + docs_for_noad[responsible][group.parent.acronym] = ( + 0 # Ensure these keys are present later + ) + docs_for_ad[responsible][group.parent.acronym] = 0 + responsible_for_group[group.acronym][group.parent.acronym] = responsible + responsible_count[responsible][group.parent.acronym] += 1 + + for doc in docs: + docs_for_wg[doc.group] += 1 + pages_for_wg[doc.group] += doc.pages + groups_for_area[doc.group.area.acronym].add(doc.group.acronym) + pages_for_area[doc.group.area.acronym] += doc.pages + docs_for_area[doc.group.area.acronym] += 1 + + if doc.ad is None: + responsible = responsible_for_group[doc.group.acronym][ + doc.group.parent.acronym + ] + groups_for_noad[responsible][doc.group.parent.acronym].add( + doc.group.acronym + ) + pages_for_noad[responsible][doc.group.parent.acronym] += doc.pages + docs_for_noad[responsible][doc.group.parent.acronym] += 1 + else: + responsible = f"{doc.ad.plain_name()}" + groups_for_ad[responsible][doc.group.parent.acronym].add(doc.group.acronym) + pages_for_ad[responsible][doc.group.parent.acronym] += doc.pages + docs_for_ad[responsible][doc.group.parent.acronym] += 1 + + docs_total += 1 + groups_total.add(doc.group.acronym) + pages_total += doc.pages + + groups_total = len(groups_total) + totals["groups_with_docs_count"] = groups_total + + area_summary = [] + + for area in areas: + group_count = len(groups_for_area[area.acronym]) + doc_count = docs_for_area[area.acronym] + page_count = pages_for_area[area.acronym] + area_summary.append( + { + "area": area.acronym, + "groups_in_area": groups.filter(parent=area).count(), + "groups_with_docs": group_count, + "doc_count": doc_count, + "page_count": page_count, + "group_percent": group_count / groups_total * 100 + if groups_total != 0 + else 0, + "doc_percent": doc_count / docs_total * 100 if docs_total != 0 else 0, + "page_percent": page_count / pages_total * 100 + if pages_total != 0 + else 0, + } + ) + area_totals = { + "group_count": groups_total, + "doc_count": docs_total, + "page_count": pages_total, + } + + noad_summary = [] + noad_totals = { + "ad_group_count": 0, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + } + for ad in docs_for_noad: + for area in docs_for_noad[ad]: + noad_totals["ad_group_count"] += responsible_count[ad][area] + noad_totals["doc_group_count"] += len(groups_for_noad[ad][area]) + noad_totals["doc_count"] += docs_for_noad[ad][area] + noad_totals["page_count"] += pages_for_noad[ad][area] + for ad in docs_for_noad: + for area in docs_for_noad[ad]: + noad_summary.append( + { + "ad": ad, + "area": area, + "ad_group_count": responsible_count[ad][area], + "doc_group_count": len(groups_for_noad[ad][area]), + "doc_count": docs_for_noad[ad][area], + "page_count": pages_for_noad[ad][area], + "group_percent": len(groups_for_noad[ad][area]) + / noad_totals["doc_group_count"] + * 100 + if noad_totals["doc_group_count"] != 0 + else 0, + "doc_percent": docs_for_noad[ad][area] + / noad_totals["doc_count"] + * 100 + if noad_totals["doc_count"] != 0 + else 0, + "page_percent": pages_for_noad[ad][area] + / noad_totals["page_count"] + * 100 + if noad_totals["page_count"] != 0 + else 0, + } + ) + noad_summary.sort(key=lambda r: (r["ad"], r["area"])) + + ad_summary = [] + ad_totals = { + "ad_group_count": 0, + "doc_group_count": 0, + "doc_count": 0, + "page_count": 0, + } + for ad in docs_for_ad: + for area in docs_for_ad[ad]: + ad_totals["ad_group_count"] += responsible_count[ad][area] + ad_totals["doc_group_count"] += len(groups_for_ad[ad][area]) + ad_totals["doc_count"] += docs_for_ad[ad][area] + ad_totals["page_count"] += pages_for_ad[ad][area] + for ad in docs_for_ad: + for area in docs_for_ad[ad]: + ad_summary.append( + { + "ad": ad, + "area": area, + "ad_group_count": responsible_count[ad][area], + "doc_group_count": len(groups_for_ad[ad][area]), + "doc_count": docs_for_ad[ad][area], + "page_count": pages_for_ad[ad][area], + "group_percent": len(groups_for_ad[ad][area]) + / ad_totals["doc_group_count"] + * 100 + if ad_totals["doc_group_count"] != 0 + else 0, + "doc_percent": docs_for_ad[ad][area] / ad_totals["doc_count"] * 100 + if ad_totals["doc_count"] != 0 + else 0, + "page_percent": pages_for_ad[ad][area] + / ad_totals["page_count"] + * 100 + if ad_totals["page_count"] != 0 + else 0, + } + ) + ad_summary.sort(key=lambda r: (r["ad"], r["area"])) + + rfc_counter = Counter( + Document.objects.filter(type="rfc").values_list("group__acronym", flat=True) + ) + recent_rfc_counter = Counter( + Document.objects.filter( + type="rfc", + docevent__type="published_rfc", + docevent__time__gte=timezone.now() - datetime.timedelta(weeks=104), + ).values_list("group__acronym", flat=True) + ) + for wg in set(groups) - set(docs_for_wg.keys()): + docs_for_wg[wg] += 0 + pages_for_wg[wg] += 0 + wg_summary = [] + for wg in docs_for_wg: + wg_summary.append( + { + "wg": wg.acronym, + "area": wg.parent.acronym, + "ad": responsible_for_group[wg.acronym][wg.parent.acronym], + "doc_count": docs_for_wg[wg], + "page_count": pages_for_wg[wg], + "rfc_count": rfc_counter[wg.acronym], + "recent_rfc_count": recent_rfc_counter[wg.acronym], + } + ) + wg_summary.sort(key=lambda r: (r["wg"], r["area"])) + + return ( + area_summary, + area_totals, + ad_summary, + noad_summary, + ad_totals, + noad_totals, + totals, + wg_summary, + ) diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index ffd4515c98..014b290425 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -61,7 +61,7 @@ from ietf.group.models import GroupMilestone, Role from ietf.iesg.agenda import agenda_data, agenda_sections, fill_in_agenda_docs, get_agenda_date from ietf.iesg.models import TelechatDate, TelechatAgendaContent -from ietf.iesg.utils import telechat_page_count +from ietf.iesg.utils import get_wg_dashboard_info, telechat_page_count from ietf.ietfauth.utils import has_role, role_required, user_is_person from ietf.name.models import TelechatAgendaSectionName from ietf.person.models import Person @@ -626,3 +626,13 @@ def telechat_agenda_content_view(request, section): content=content.text, content_type=f"text/plain; charset={settings.DEFAULT_CHARSET}", ) + +def working_groups(request): + + area_summary, area_totals, ad_summary, noad_summary, ad_totals, noad_totals, totals, wg_summary = get_wg_dashboard_info() + + return render( + request, + "iesg/working_groups.html", + dict(area_summary=area_summary, area_totals=area_totals, ad_summary=ad_summary, noad_summary=noad_summary, ad_totals=ad_totals, noad_totals=noad_totals, totals=totals, wg_summary=wg_summary), + ) diff --git a/ietf/templates/iesg/working_groups.html b/ietf/templates/iesg/working_groups.html new file mode 100644 index 0000000000..b799636857 --- /dev/null +++ b/ietf/templates/iesg/working_groups.html @@ -0,0 +1,159 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% load origin static %} +{% block pagehead %} + +{% endblock %} +{% block title %}IESG view of working groups{% endblock %} +{% block content %} + {% origin %} +

    IESG view of working groups

    +

    Area Size and Load

    + + + + + + + + {# (divider) #} + + + + + + {% for area in area_summary %} + + + + + + + + + {% endfor %} + + + + + + + + + + + +
    Area NameWGsI-DsPages% I-Ds% Pages
    {{area.area}}{{area.groups_in_area}}{{area.doc_count}}{{area.page_count}}{{area.doc_percent|floatformat:1}}{{area.page_percent|floatformat:1}}
    Totals{{totals.group_count}}{{totals.doc_count}}{{totals.page_count}}
    + +

    Area Director Load: Documents not yet directly assigned to AD

    +
    Typically these are pre-pubreq documents
    + + + + + + + + + {# (divider) #} + + + + + + {% for ad in noad_summary %} + + + + + + + + + + {% endfor %} + + + + + + + + + + + + +
    ADArea NameWGs for ADI-DsPages% I-Ds% Pages
    {{ad.ad}}{{ad.area}}{{ad.ad_group_count}}{{ad.doc_count}}{{ad.page_count}}{{ad.doc_percent|floatformat:1}}{{ad.page_percent|floatformat:1}}
    Totals{{noad_totals.ad_group_count}}{{noad_totals.doc_count}}{{noad_totals.page_count}}
    + +

    Area Director Load: Documents directly assigned to AD

    + + + + + + + + + {# (divider) #} + + + + + + {% for ad in ad_summary %} + + + + + + + + + + {% endfor %} + + + + + + + + + + + + +
    ADArea NameWGs for ADI-DsPages% I-Ds% Pages
    {{ad.ad}}{{ad.area}}{{ad.ad_group_count}}{{ad.doc_count}}{{ad.page_count}}{{ad.doc_percent|floatformat:1}}{{ad.page_percent|floatformat:1}}
    Totals{{ad_totals.ad_group_count}}{{ad_totals.doc_count}}{{ad_totals.page_count}}
    + +

    Working Group Summary

    + + + + + + + + + + + + + + {% for wg in wg_summary %} + + + + + + + + + + {% endfor %} + +
    WGAreaADI-DsPagesRFCsRFCs in last 2 years
    {{wg.wg}}{{wg.area}}{{wg.ad}}{{wg.doc_count}}{{wg.page_count}}{{wg.rfc_count}}{{wg.recent_rfc_count}}
    +{% endblock %} +{% block js %} + +{% endblock %} \ No newline at end of file From acffceba0b8f61d6a5c972080df41f9e86743919 Mon Sep 17 00:00:00 2001 From: Phil Whipps Date: Thu, 18 Sep 2025 04:46:20 +1000 Subject: [PATCH 645/846] fix: Rev Fix Option 2 - Htmlized url regex (#9538) * Update Rev Regex in settings.py Removing single value revision numbers as that is against the naming standard (https://authors.ietf.org/naming-your-internet-draft#version) and causes issues with htmlized documents with -1 in the name (eg draft-ietf-oauth-v2-1) * Reverse REGEX Change * Update URLS REgex for REV Directly insert Regex for REV rather than reference settings.URL_REGEXPS. This is to resolve issue https://github.com/ietf-tools/datatracker/issues/9533 --- ietf/doc/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index 60255af856..6f1b698a9f 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -75,7 +75,7 @@ # This block should really all be at the idealized docs.ietf.org service url(r'^html/(?Pbcp[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)), url(r'^html/(?Pstd[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)), - url(r'^html/%(name)s(?:-%(rev)s)?(\.txt|\.html)?/?$' % settings.URL_REGEXPS, views_doc.document_html), + url(r'^html/%(name)s(?:-(?P[0-9]{2}(-[0-9]{2})?))?(\.txt|\.html)?/?$' % settings.URL_REGEXPS, views_doc.document_html), url(r'^id/%(name)s(?:-%(rev)s)?(?:\.(?P(txt|html|xml)))?/?$' % settings.URL_REGEXPS, views_doc.document_raw_id), url(r'^pdf/%(name)s(?:-%(rev)s)?(?:\.(?P[a-z]+))?/?$' % settings.URL_REGEXPS, views_doc.document_pdfized), From 6b58aa4bd47fd5fe84750a0cc66dd38b8e801c72 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 Sep 2025 10:20:03 -0500 Subject: [PATCH 646/846] fix: edit only attachments actually attached to this liaison statement (#9548) * fix: edit only attachments actually attached to this liaison statement * chore: remove unused import --------- Co-authored-by: Jennifer Richards --- ietf/liaisons/tests.py | 29 +++++++++++++++++++++++------ ietf/liaisons/views.py | 11 +++++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index a1fbf77841..2f86f38789 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -939,17 +939,34 @@ def test_liaison_add_attachment(self): ) def test_liaison_edit_attachment(self): - - attachment = LiaisonStatementAttachmentFactory(document__name='liaiatt-1') - url = urlreverse('ietf.liaisons.views.liaison_edit_attachment', kwargs=dict(object_id=attachment.statement_id,doc_id=attachment.document_id)) + attachment = LiaisonStatementAttachmentFactory(document__name="liaiatt-1") + url = urlreverse( + "ietf.liaisons.views.liaison_edit_attachment", + kwargs=dict( + object_id=attachment.statement_id, doc_id=attachment.document_id + ), + ) login_testing_unauthorized(self, "secretary", url) r = self.client.get(url) self.assertEqual(r.status_code, 200) - post_data = dict(title='New Title') - r = self.client.post(url,post_data) + post_data = dict(title="New Title") + r = self.client.post(url, post_data) attachment = LiaisonStatementAttachment.objects.get(pk=attachment.pk) self.assertEqual(r.status_code, 302) - self.assertEqual(attachment.document.title,'New Title') + self.assertEqual(attachment.document.title, "New Title") + + # ensure attempts to edit attachments not attached to this liaison statement fail + other_attachment = LiaisonStatementAttachmentFactory(document__name="liaiatt-2") + url = urlreverse( + "ietf.liaisons.views.liaison_edit_attachment", + kwargs=dict( + object_id=attachment.statement_id, doc_id=other_attachment.document_id + ), + ) + r = self.client.get(url) + self.assertEqual(r.status_code, 404) + r = self.client.post(url, dict(title="New Title")) + self.assertEqual(r.status_code, 404) def test_liaison_delete_attachment(self): attachment = LiaisonStatementAttachmentFactory(document__name='liaiatt-1') diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 9710149c90..f9136a8d14 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -7,15 +7,14 @@ from django.contrib import messages from django.urls import reverse as urlreverse -from django.core.exceptions import ValidationError +from django.core.exceptions import ValidationError, ObjectDoesNotExist from django.core.validators import validate_email from django.db.models import Q, Prefetch -from django.http import HttpResponse +from django.http import Http404, HttpResponse from django.shortcuts import render, get_object_or_404, redirect import debug # pyflakes:ignore -from ietf.doc.models import Document from ietf.ietfauth.utils import role_required, has_role from ietf.group.models import Group, Role from ietf.liaisons.models import (LiaisonStatement,LiaisonStatementEvent, @@ -444,7 +443,11 @@ def liaison_edit(request, object_id): def liaison_edit_attachment(request, object_id, doc_id): '''Edit the Liaison Statement attachment title''' liaison = get_object_or_404(LiaisonStatement, pk=object_id) - doc = get_object_or_404(Document, pk=doc_id) + try: + doc = liaison.attachments.get(pk=doc_id) + except ObjectDoesNotExist: + raise Http404 + if not can_edit_liaison(request.user, liaison): permission_denied(request, "You are not authorized for this action.") From 76f56ceabf4a101c7a8f72946778b7bb5b63f570 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 Sep 2025 10:20:30 -0500 Subject: [PATCH 647/846] fix: adjust anachronystic urls - doc_ids became numeric years ago. (#9549) --- ietf/liaisons/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/liaisons/urls.py b/ietf/liaisons/urls.py index a4afbfef5d..0fbd29425e 100644 --- a/ietf/liaisons/urls.py +++ b/ietf/liaisons/urls.py @@ -26,8 +26,8 @@ url(r'^(?P\d+)/$', views.liaison_detail), url(r'^(?P\d+)/addcomment/$', views.add_comment), url(r'^(?P\d+)/edit/$', views.liaison_edit), - url(r'^(?P\d+)/edit-attachment/(?P[A-Za-z0-9._+-]+)$', views.liaison_edit_attachment), - url(r'^(?P\d+)/delete-attachment/(?P[A-Za-z0-9._+-]+)$', views.liaison_delete_attachment), + url(r'^(?P\d+)/edit-attachment/(?P[0-9]+)$', views.liaison_edit_attachment), + url(r'^(?P\d+)/delete-attachment/(?P[0-9]+)$', views.liaison_delete_attachment), url(r'^(?P\d+)/history/$', views.liaison_history), url(r'^(?P\d+)/reply/$', views.liaison_reply), url(r'^(?P\d+)/resend/$', views.liaison_resend), From ad5823e0c6ebaa88ae6c949e1bdefeab951cb280 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 Sep 2025 10:22:31 -0500 Subject: [PATCH 648/846] fix: properly guard state transitions (#9554) Co-authored-by: Jennifer Richards --- ietf/liaisons/tests.py | 3 +++ ietf/liaisons/views.py | 32 +++++++++++++++++++------------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index 2f86f38789..c3ff9dbe94 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -363,6 +363,9 @@ def test_approval_process(self): self.assertEqual(len(q('form button[name=approved]')), 0) # check the detail page / authorized + r = self.client.post(url, dict(dead="1")) + self.assertEqual(r.status_code, 403) + mailbox_before = len(outbox) self.client.login(username="ulm-liaiman", password="ulm-liaiman+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index f9136a8d14..6a1e6e3def 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -7,7 +7,7 @@ from django.contrib import messages from django.urls import reverse as urlreverse -from django.core.exceptions import ValidationError, ObjectDoesNotExist +from django.core.exceptions import ValidationError, ObjectDoesNotExist, PermissionDenied from django.core.validators import validate_email from django.db.models import Q, Prefetch from django.http import Http404, HttpResponse @@ -404,22 +404,28 @@ def liaison_detail(request, object_id): if request.method == 'POST': - if request.POST.get('approved'): - liaison.change_state(state_id='approved',person=person) - liaison.change_state(state_id='posted',person=person) - send_liaison_by_email(request, liaison) - messages.success(request,'Liaison Statement Approved and Posted') - elif request.POST.get('dead'): - liaison.change_state(state_id='dead',person=person) - messages.success(request,'Liaison Statement Killed') - elif request.POST.get('resurrect'): - liaison.change_state(state_id='pending',person=person) - messages.success(request,'Liaison Statement Resurrected') - elif request.POST.get('do_action_taken') and can_take_care: + if request.POST.get('do_action_taken') and can_take_care: liaison.tags.remove('required') liaison.tags.add('taken') can_take_care = False messages.success(request,'Action handled') + else: + if can_edit: + if request.POST.get('approved'): + liaison.change_state(state_id='approved',person=person) + liaison.change_state(state_id='posted',person=person) + send_liaison_by_email(request, liaison) + messages.success(request,'Liaison Statement Approved and Posted') + elif request.POST.get('dead'): + liaison.change_state(state_id='dead',person=person) + messages.success(request,'Liaison Statement Killed') + elif request.POST.get('resurrect'): + liaison.change_state(state_id='pending',person=person) + messages.success(request,'Liaison Statement Resurrected') + else: + pass + else: + raise PermissionDenied() relations_by = [i.target for i in liaison.source_of_set.filter(target__state__slug='posted')] relations_to = [i.source for i in liaison.target_of_set.filter(source__state__slug='posted')] From e1c75d46161939acaf093bb50cf91af9a2cbb7ea Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 Sep 2025 10:32:26 -0500 Subject: [PATCH 649/846] fix: disable removing liaison attachments pending reimplementation (#9555) --- ietf/liaisons/tests.py | 16 ++++++++-------- ietf/liaisons/views.py | 39 ++++++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index c3ff9dbe94..fd1c22be77 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -971,14 +971,14 @@ def test_liaison_edit_attachment(self): r = self.client.post(url, dict(title="New Title")) self.assertEqual(r.status_code, 404) - def test_liaison_delete_attachment(self): - attachment = LiaisonStatementAttachmentFactory(document__name='liaiatt-1') - liaison = attachment.statement - url = urlreverse('ietf.liaisons.views.liaison_delete_attachment', kwargs=dict(object_id=liaison.pk,attach_id=attachment.pk)) - login_testing_unauthorized(self, "secretary", url) - r = self.client.get(url) - self.assertEqual(r.status_code, 302) - self.assertEqual(liaison.liaisonstatementattachment_set.filter(removed=False).count(),0) + # def test_liaison_delete_attachment(self): + # attachment = LiaisonStatementAttachmentFactory(document__name='liaiatt-1') + # liaison = attachment.statement + # url = urlreverse('ietf.liaisons.views.liaison_delete_attachment', kwargs=dict(object_id=liaison.pk,attach_id=attachment.pk)) + # login_testing_unauthorized(self, "secretary", url) + # r = self.client.get(url) + # self.assertEqual(r.status_code, 302) + # self.assertEqual(liaison.liaisonstatementattachment_set.filter(removed=False).count(),0) def test_in_response(self): '''A statement with purpose=in_response must have related statement specified''' diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 6a1e6e3def..6a6f579714 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -17,8 +17,7 @@ from ietf.ietfauth.utils import role_required, has_role from ietf.group.models import Group, Role -from ietf.liaisons.models import (LiaisonStatement,LiaisonStatementEvent, - LiaisonStatementAttachment) +from ietf.liaisons.models import LiaisonStatement,LiaisonStatementEvent from ietf.liaisons.utils import (get_person_for_user, can_add_outgoing_liaison, can_add_incoming_liaison, can_edit_liaison,can_submit_liaison_required, can_add_liaison) @@ -377,23 +376,29 @@ def liaison_history(request, object_id): def liaison_delete_attachment(request, object_id, attach_id): liaison = get_object_or_404(LiaisonStatement, pk=object_id) - attach = get_object_or_404(LiaisonStatementAttachment, pk=attach_id) + if not can_edit_liaison(request.user, liaison): permission_denied(request, "You are not authorized for this action.") - - # FIXME: this view should use POST instead of GET when deleting - attach.removed = True - attach.save() - - # create event - LiaisonStatementEvent.objects.create( - type_id='modified', - by=get_person_for_user(request.user), - statement=liaison, - desc='Attachment Removed: {}'.format(attach.document.title) - ) - messages.success(request, 'Attachment Deleted') - return redirect('ietf.liaisons.views.liaison_detail', object_id=liaison.pk) + else: + permission_denied(request, "This operation is temporarily unavailable. Ask the secretariat to mark the attachment as removed using the admin.") + + # The following will be replaced with a different approach in the next generation of the liaison tool + # attach = get_object_or_404(LiaisonStatementAttachment, pk=attach_id) + + # # FIXME: this view should use POST instead of GET when deleting + # attach.removed = True + # debug.say("Got here") + # attach.save() + + # # create event + # LiaisonStatementEvent.objects.create( + # type_id='modified', + # by=get_person_for_user(request.user), + # statement=liaison, + # desc='Attachment Removed: {}'.format(attach.document.title) + # ) + # messages.success(request, 'Attachment Deleted') + # return redirect('ietf.liaisons.views.liaison_detail', object_id=liaison.pk) def liaison_detail(request, object_id): liaison = get_object_or_404(LiaisonStatement, pk=object_id) From 87e550c74ffef0f5b64b78a6a487321ebe923f11 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 19 Sep 2025 13:55:14 -0300 Subject: [PATCH 650/846] refactor: compare tokens using compare_digest (#9562) * refactor: compare tokens using compare_digest * test: test new helper * refactor: const-time for auth_token check also --- ietf/submit/tests.py | 31 +++++++++++++++++++++++++++- ietf/submit/views.py | 49 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 69 insertions(+), 11 deletions(-) diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 6b9002502b..ede63d2752 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -51,8 +51,9 @@ process_submission_xml, process_uploaded_submission, process_and_validate_submission, apply_yang_checker_to_draft, run_all_yang_model_checks) +from ietf.submit.views import access_token_is_valid, auth_token_is_valid from ietf.utils import tool_version -from ietf.utils.accesstoken import generate_access_token +from ietf.utils.accesstoken import generate_access_token, generate_random_key from ietf.utils.mail import outbox, get_payload_text from ietf.utils.test_runner import TestBlobstoreManager from ietf.utils.test_utils import login_testing_unauthorized, TestCase @@ -3500,3 +3501,31 @@ def test_submissionerror(self, mock_sanitize_message): mock_sanitize_message.call_args_list, [mock.call("hi"), mock.call("there")], ) + + +class HelperTests(TestCase): + def test_access_token_is_valid(self): + submission: Submission = SubmissionFactory() # type: ignore + valid_token = submission.access_token() + access_key = submission.access_key # accept this for backwards compat + invalid_token = "not the valid token" + self.assertTrue(access_token_is_valid(submission, valid_token)) + self.assertTrue(access_token_is_valid(submission, access_key)) + self.assertFalse(access_token_is_valid(submission, invalid_token)) + + def test_auth_token_is_valid(self): + auth_key = generate_random_key() + submission: Submission = SubmissionFactory(auth_key = auth_key) # type: ignore + valid_token = generate_access_token(submission.auth_key) + auth_key = submission.auth_key # accept this for backwards compat + invalid_token = "not the valid token" + self.assertTrue(auth_token_is_valid(submission, valid_token)) + self.assertTrue(auth_token_is_valid(submission, auth_key)) + self.assertFalse(auth_token_is_valid(submission, invalid_token)) + + submission.auth_key = "" + submission.save() + self.assertFalse(auth_token_is_valid(submission, valid_token)) + self.assertFalse(auth_token_is_valid(submission, auth_key)) + self.assertFalse(auth_token_is_valid(submission, invalid_token)) + self.assertFalse(auth_token_is_valid(submission, "")) diff --git a/ietf/submit/views.py b/ietf/submit/views.py index 043b613016..8329a312bb 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import re import datetime +from secrets import compare_digest from typing import Optional, cast # pyflakes:ignore from urllib.parse import urljoin @@ -255,19 +256,48 @@ def search_submission(request): ) -def can_edit_submission(user, submission, access_token): - key_matched = access_token and submission.access_token() == access_token - if not key_matched: key_matched = submission.access_key == access_token # backwards-compat - return key_matched or has_role(user, "Secretariat") +def access_token_is_valid(submission: Submission, access_token: str): + """Check whether access_token is valid for submission, in constant time""" + token_matched = compare_digest(submission.access_token(), access_token) + # also compare key directly for backwards compatibility + key_matched = compare_digest(submission.access_key, access_token) + return token_matched or key_matched + + +def auth_token_is_valid(submission: Submission, auth_token: str): + """Check whether auth_token is valid for submission, in constant time""" + auth_key = submission.auth_key + if not auth_key: + # Make the same calls as the other branch to keep constant time, then + # return False because there is no auth key + compare_digest(generate_access_token("fake"), auth_token) + compare_digest("fake", auth_token) + return False + else: + token_matched = compare_digest(generate_access_token(auth_key), auth_token) + # also compare key directly for backwards compatibility + key_matched = compare_digest(auth_key, auth_token) + return token_matched or key_matched + + +def can_edit_submission(user, submission: Submission, access_token: str | None): + if has_role(user, "Secretariat"): + return True + elif not access_token: + return False + return access_token_is_valid(submission, access_token) + def submission_status(request, submission_id, access_token=None): # type: (HttpRequest, str, Optional[str]) -> HttpResponse submission = get_object_or_404(Submission, pk=submission_id) - key_matched = access_token and submission.access_token() == access_token - if not key_matched: key_matched = submission.access_key == access_token # backwards-compat - if access_token and not key_matched: - raise Http404 + if access_token: + key_matched = access_token_is_valid(submission, access_token) + if not key_matched: + raise Http404 + else: + key_matched = False if submission.state.slug == "cancel": errors = {} @@ -621,8 +651,7 @@ def edit_submission(request, submission_id, access_token=None): def confirm_submission(request, submission_id, auth_token): submission = get_object_or_404(Submission, pk=submission_id) - key_matched = submission.auth_key and auth_token == generate_access_token(submission.auth_key) - if not key_matched: key_matched = auth_token == submission.auth_key # backwards-compat + key_matched = submission.auth_key and auth_token_is_valid(submission, auth_token) if request.method == 'POST' and submission.state_id in ("auth", "aut-appr") and key_matched: # Set a temporary state 'confirmed' to avoid entering this code From 4be83ce312dde9b434f86cff928daf5882809239 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 19 Sep 2025 11:58:49 -0500 Subject: [PATCH 651/846] fix: remove deprecated iesg docs view, link from ad dashboard to ad view of working groups (#9563) * fix: remove deprecated iesg docs view * fix: link from ad dashboard to ad view of working groups --- ietf/doc/tests.py | 11 --- ietf/doc/urls.py | 4 +- ietf/doc/views_search.py | 27 +----- ietf/templates/doc/ad_list.html | 5 +- .../templates/doc/drafts_in_iesg_process.html | 83 ------------------- 5 files changed, 7 insertions(+), 123 deletions(-) delete mode 100644 ietf/templates/doc/drafts_in_iesg_process.html diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index fa8c7fa4fc..16dcfb7754 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -449,17 +449,6 @@ def test_drafts_in_last_call(self): self.assertContains(r, draft.title) self.assertContains(r, escape(draft.action_holders.first().name)) - def test_in_iesg_process(self): - doc_in_process = IndividualDraftFactory() - doc_in_process.action_holders.set([PersonFactory()]) - doc_in_process.set_state(State.objects.get(type='draft-iesg', slug='lc')) - doc_not_in_process = IndividualDraftFactory() - r = self.client.get(urlreverse('ietf.doc.views_search.drafts_in_iesg_process')) - self.assertEqual(r.status_code, 200) - self.assertContains(r, doc_in_process.title) - self.assertContains(r, escape(doc_in_process.action_holders.first().name)) - self.assertNotContains(r, doc_not_in_process.title) - def test_indexes(self): draft = IndividualDraftFactory() rfc = WgRfcFactory() diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index 6f1b698a9f..7b444782d7 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -53,13 +53,13 @@ url(r'^ad/?$', views_search.ad_workload), url(r'^ad/(?P[^/]+)/?$', views_search.docs_for_ad), url(r'^ad2/(?P[\w.-]+)/$', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)), - url(r'^for_iesg/?$', views_search.docs_for_iesg), + url(r'^for_iesg/?$', RedirectView.as_view(pattern_name='ietf.doc.views_search.docs_for_iesg', permanent=False)), url(r'^rfc-status-changes/?$', views_status_change.rfc_status_changes), url(r'^start-rfc-status-change/(?:%(name)s/)?$' % settings.URL_REGEXPS, views_status_change.start_rfc_status_change), url(r'^bof-requests/?$', views_bofreq.bof_requests), url(r'^bof-requests/new/$', views_bofreq.new_bof_request), url(r'^statement/new/$', views_statement.new_statement), - url(r'^iesg/?$', views_search.drafts_in_iesg_process), + url(r'^iesg/?$', views_search.docs_for_iesg), url(r'^email-aliases/?$', views_doc.email_aliases), url(r'^downref/?$', views_downref.downref_registry), url(r'^downref/add/?$', views_downref.downref_registry_add), diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index 67ff0c2f21..2144c23e06 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -59,7 +59,7 @@ import debug # pyflakes:ignore from ietf.doc.models import ( Document, DocHistory, State, - LastCallDocEvent, NewRevisionDocEvent, IESG_SUBSTATE_TAGS, + NewRevisionDocEvent, IESG_SUBSTATE_TAGS, IESG_BALLOT_ACTIVE_STATES, IESG_STATCHG_CONFLREV_ACTIVE_STATES, IESG_CHARTER_ACTIVE_STATES ) from ietf.doc.fields import select2_id_doc_name_json @@ -849,31 +849,6 @@ def drafts_in_last_call(request): 'form':form, 'docs':results, 'meta':meta, 'pages':pages }) -def drafts_in_iesg_process(request): - states = State.objects.filter(type="draft-iesg").exclude(slug__in=('idexists', 'pub', 'dead', 'rfcqueue')) - title = "Documents in IESG process" - - grouped_docs = [] - - for s in states.order_by("order"): - docs = Document.objects.filter(type="draft", states=s).distinct().order_by("time").select_related("ad", "group", "group__parent") - if docs: - if s.slug == "lc": - for d in docs: - e = d.latest_event(LastCallDocEvent, type="sent_last_call") - # If we don't have an event, use an arbitrary date in the past (but not datetime.datetime.min, - # which causes problems with timezone conversions) - d.lc_expires = e.expires if e else datetime.datetime(1950, 1, 1) - docs = list(docs) - docs.sort(key=lambda d: d.lc_expires) - - grouped_docs.append((s, docs)) - - return render(request, 'doc/drafts_in_iesg_process.html', { - "grouped_docs": grouped_docs, - "title": title, - }) - def recent_drafts(request, days=7): slowcache = caches['slowpages'] cache_key = f'recentdraftsview{days}' diff --git a/ietf/templates/doc/ad_list.html b/ietf/templates/doc/ad_list.html index 7f7e95a873..cac709021e 100644 --- a/ietf/templates/doc/ad_list.html +++ b/ietf/templates/doc/ad_list.html @@ -33,7 +33,10 @@

    IESG Dashboard

    are only shown to logged-in Area Directors. {% endif %} -

    Documents in IESG Processing

    +

    + Documents in IESG Processing + IESG view of Working Groups +

    {% for dt in metadata %}

    {{ dt.type.1 }} State Counts

    diff --git a/ietf/templates/doc/drafts_in_iesg_process.html b/ietf/templates/doc/drafts_in_iesg_process.html deleted file mode 100644 index d9b09e984e..0000000000 --- a/ietf/templates/doc/drafts_in_iesg_process.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} -{% load origin %} -{% load ietf_filters static %} -{% load textfilters person_filters %} -{% block pagehead %} - -{% endblock %} -{% block title %}{{ title }}{% endblock %} -{% block content %} - {% origin %} -

    {{ title }}

    -

    This view is deprecated, and will soon redirect to a different representation

    - - - - - - - - - - - {% for state, docs in grouped_docs %} - - - - - - - {% for doc in docs %} - - - - - - - - {% endfor %} - - {% endfor %} -
    Area - {% if state.slug == "lc" %} - Expires at - {% else %} - Date - {% endif %} - DocumentIntended levelAD
    {{ state.name }}
    - {% if doc.area_acronym %} - {{ doc.area_acronym }} - {% endif %} - - {% if state.slug == "lc" %} - {% if doc.lc_expires %}{{ doc.lc_expires|date:"Y-m-d" }}{% endif %} - {% else %} - {{ doc.time|date:"Y-m-d" }} - {% endif %} - - {{ doc.name }} -
    - {{ doc.title }} - {% if doc.action_holders_enabled and doc.action_holders.exists %} -
    - Action holder{{ doc.documentactionholder_set.all|pluralize }}: - {% for action_holder in doc.documentactionholder_set.all %} - {% person_link action_holder.person title=action_holder.role_for_doc %}{% if action_holder|action_holder_badge %} {{ action_holder|action_holder_badge }}{% endif %}{% if not forloop.last %},{% endif %} - {% endfor %} - {% endif %} - {% if doc.note %} -
    - Note: {{ doc.note|urlize_ietf_docs|linkify|linebreaksbr }} - {% endif %} -
    - {% if doc.intended_std_level %} - {{ doc.intended_std_level.name }} - {% else %} - (None) - {% endif %} - {% person_link doc.ad %}
    -{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file From 5e1f46d05cc23faa95b741f9133f40fe58c1cd46 Mon Sep 17 00:00:00 2001 From: Eric Vyncke Date: Mon, 29 Sep 2025 15:47:23 +0200 Subject: [PATCH 652/846] feat: Distinguish I-Ds on WG plate from I-Ds on IESG plate (#9214) * Add "Outside of the WG Internet-Draft" when IESG state != idexists * No plural forms in the dividers * Use different search_heading * Use the right stream_id * Adding tests_info coverage for prepare_group_documents * fix: move identifying and sorting doxs with IESG into search utility. * fix: improve ordering conditional --------- Co-authored-by: Robert Sparks --- ietf/doc/utils_search.py | 9 ++++++++- ietf/group/tests_info.py | 22 +++++++++++++++++++++- ietf/group/views.py | 1 - 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/ietf/doc/utils_search.py b/ietf/doc/utils_search.py index cfc8a872f8..a5f461f9bb 100644 --- a/ietf/doc/utils_search.py +++ b/ietf/doc/utils_search.py @@ -108,7 +108,10 @@ def fill_in_document_table_attributes(docs, have_telechat_date=False): d.search_heading = "Withdrawn Internet-Draft" d.expirable = False else: - d.search_heading = "%s Internet-Draft" % d.get_state() + if d.type_id == "draft" and d.stream_id == 'ietf' and d.get_state_slug('draft-iesg') != 'idexists': # values can be: ad-eval idexists approved rfcqueue dead iesg-eva + d.search_heading = "%s with the IESG Internet-Draft" % d.get_state() + else: + d.search_heading = "%s Internet-Draft" % d.get_state() if state_slug == "active": d.expirable = d.pk in expirable_pks else: @@ -221,6 +224,10 @@ def num(i): if d.type_id == "draft": res.append(num(["Active", "Expired", "Replaced", "Withdrawn", "RFC"].index(d.search_heading.split()[0]))) + if "with the IESG" in d.search_heading: + res.append("1") + else: + res.append("0") else: res.append(d.type_id); res.append("-"); diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index eb85860ece..34f8500854 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -27,7 +27,7 @@ from ietf.community.models import CommunityList from ietf.community.utils import reset_name_contains_index_for_rule -from ietf.doc.factories import WgDraftFactory, IndividualDraftFactory, CharterFactory, BallotDocEventFactory +from ietf.doc.factories import WgDraftFactory, RgDraftFactory, IndividualDraftFactory, CharterFactory, BallotDocEventFactory from ietf.doc.models import Document, DocEvent, State from ietf.doc.storage_utils import retrieve_str from ietf.doc.utils_charter import charter_name_for_group @@ -413,6 +413,7 @@ def test_group_documents(self): self.assertContains(r, draft3.name) for ah in draft3.action_holders.all(): self.assertContains(r, escape(ah.name)) + self.assertContains(r, "Active with the IESG Internet-Draft") # draft3 is pub-req hence should have such a divider self.assertContains(r, 'for 173 days', count=1) # the old_dah should be tagged self.assertContains(r, draft4.name) self.assertNotContains(r, draft5.name) @@ -425,6 +426,25 @@ def test_group_documents(self): q = PyQuery(r.content) self.assertTrue(any([draft2.name in x.attrib['href'] for x in q('table td a.track-untrack-doc')])) + # Let's also check the IRTF stream + rg = GroupFactory(type_id='rg') + setup_default_community_list_for_group(rg) + rgDraft = RgDraftFactory(group=rg) + rgDraft4 = RgDraftFactory(group=rg) + rgDraft4.set_state(State.objects.get(slug='irsg-w')) + rgDraft7 = RgDraftFactory(group=rg) + rgDraft7.set_state(State.objects.get(type='draft-stream-%s' % rgDraft7.stream_id, slug='dead')) + for url in group_urlreverse_list(rg, 'ietf.group.views.group_documents'): + with self.settings(DOC_ACTION_HOLDER_MAX_AGE_DAYS=20): + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + self.assertContains(r, rgDraft.name) + self.assertContains(r, rg.name) + self.assertContains(r, rg.acronym) + self.assertNotContains(r, draft3.name) # As draft3 is a WG draft, it should not be listed here + self.assertContains(r, rgDraft4.name) + self.assertNotContains(r, rgDraft7.name) + # test the txt version too while we're at it for url in group_urlreverse_list(group, 'ietf.group.views.group_documents_txt'): r = self.client.get(url) diff --git a/ietf/group/views.py b/ietf/group/views.py index bc785ff81e..efe3eca15d 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -443,7 +443,6 @@ def prepare_group_documents(request, group, clist): return docs, meta, docs_related, meta_related - def get_leadership(group_type): people = Person.objects.filter( role__name__slug="chair", From ba8b73190df413c39deaa6b546ad2bc5405fd86c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 30 Sep 2025 13:40:33 -0300 Subject: [PATCH 653/846] ci: DB persistence for blobdb, too --- k8s/settings_local.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/k8s/settings_local.py b/k8s/settings_local.py index c1436e158b..c09bd70c86 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -114,15 +114,17 @@ def _multiline_to_list(s): # Configure persistent connections. A setting of 0 is Django's default. _conn_max_age = os.environ.get("DATATRACKER_DB_CONN_MAX_AGE", "0") -# A string "none" means unlimited age. -DATABASES["default"]["CONN_MAX_AGE"] = ( - None if _conn_max_age.lower() == "none" else int(_conn_max_age) -) +for dbname in ["default", "blobdb"]: + # A string "none" means unlimited age. + DATABASES[dbname]["CONN_MAX_AGE"] = ( + None if _conn_max_age.lower() == "none" else int(_conn_max_age) + ) # Enable connection health checks if DATATRACKER_DB_CONN_HEALTH_CHECK is the string "true" _conn_health_checks = bool( os.environ.get("DATATRACKER_DB_CONN_HEALTH_CHECKS", "false").lower() == "true" ) -DATABASES["default"]["CONN_HEALTH_CHECKS"] = _conn_health_checks +for dbname in ["default", "blobdb"]: + DATABASES[dbname]["CONN_HEALTH_CHECKS"] = _conn_health_checks # DATATRACKER_ADMINS is a newline-delimited list of addresses parseable by email.utils.parseaddr _admins_str = os.environ.get("DATATRACKER_ADMINS", None) From d1cbdcb2afca5987706165a1928fece3da25a5ee Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 7 Oct 2025 14:54:08 -0300 Subject: [PATCH 654/846] chore: fix docker-compose comment (#9679) Allows the commented-out options to work if uncommented. --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 100119c464..8c6e0ea486 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,7 +36,7 @@ services: db: image: ghcr.io/ietf-tools/datatracker-db:latest # build: - # context: .. + # context: . # dockerfile: docker/db.Dockerfile restart: unless-stopped volumes: From a8e8b9e95bedececcda0f54bedbe4de8f69d90a2 Mon Sep 17 00:00:00 2001 From: Absit Iniuria Date: Tue, 7 Oct 2025 19:02:37 +0100 Subject: [PATCH 655/846] feat: split liaison_statement_posted mailtrigger into outgoing and incoming (#9553) * fix: add new fixtures and mt slugs * fix: edit mt reverse func * chore: edit multiline and hash comments * fix: adjust migration * chore: remove stray whitespace --------- Co-authored-by: Robert Sparks --- ietf/liaisons/mails.py | 5 +- ietf/liaisons/tests.py | 39 +++++----- ietf/liaisons/views.py | 76 ++----------------- ..._statement_incoming_and_outgoing_posted.py | 72 ++++++++++++++++++ ietf/mailtrigger/utils.py | 71 +++++++++++++++++ ietf/name/fixtures/names.json | 45 ++++++++++- 6 files changed, 217 insertions(+), 91 deletions(-) create mode 100644 ietf/mailtrigger/migrations/0008_liaison_statement_incoming_and_outgoing_posted.py diff --git a/ietf/liaisons/mails.py b/ietf/liaisons/mails.py index 8708c8a078..878aada576 100644 --- a/ietf/liaisons/mails.py +++ b/ietf/liaisons/mails.py @@ -14,7 +14,10 @@ def send_liaison_by_email(request, liaison): subject = 'New Liaison Statement, "%s"' % (liaison.title) from_email = settings.LIAISON_UNIVERSAL_FROM - (to_email, cc) = gather_address_lists('liaison_statement_posted',liaison=liaison) + if liaison.is_outgoing(): + (to_email, cc) = gather_address_lists('liaison_statement_posted_outgoing',liaison=liaison) + else: + (to_email, cc) = gather_address_lists('liaison_statement_posted_incoming',liaison=liaison) bcc = ['statements@ietf.org'] body = render_to_string('liaisons/liaison_mail.txt', dict(liaison=liaison)) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index fd1c22be77..5478f6c302 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -112,61 +112,61 @@ def test_help_pages(self): class UnitTests(TestCase): - def test_get_cc(self): - from ietf.liaisons.views import get_cc,EMAIL_ALIASES + def test_get_contacts_for_liaison_messages_for_group_primary(self): + from ietf.mailtrigger.utils import get_contacts_for_liaison_messages_for_group_primary,EMAIL_ALIASES # test IETF - cc = get_cc(Group.objects.get(acronym='ietf')) + cc = get_contacts_for_liaison_messages_for_group_primary(Group.objects.get(acronym='ietf')) self.assertTrue(EMAIL_ALIASES['IESG'] in cc) self.assertTrue(EMAIL_ALIASES['IETFCHAIR'] in cc) # test IAB - cc = get_cc(Group.objects.get(acronym='iab')) + cc = get_contacts_for_liaison_messages_for_group_primary(Group.objects.get(acronym='iab')) self.assertTrue(EMAIL_ALIASES['IAB'] in cc) self.assertTrue(EMAIL_ALIASES['IABCHAIR'] in cc) # test an Area area = Group.objects.filter(type='area').first() - cc = get_cc(area) + cc = get_contacts_for_liaison_messages_for_group_primary(area) self.assertTrue(EMAIL_ALIASES['IETFCHAIR'] in cc) self.assertTrue(contacts_from_roles([area.ad_role()]) in cc) # test a Working Group wg = Group.objects.filter(type='wg').first() - cc = get_cc(wg) + cc = get_contacts_for_liaison_messages_for_group_primary(wg) self.assertTrue(contacts_from_roles([wg.parent.ad_role()]) in cc) self.assertTrue(contacts_from_roles([wg.get_chair()]) in cc) # test an SDO sdo = RoleFactory(name_id='liaiman',group__type_id='sdo',).group - cc = get_cc(sdo) + cc = get_contacts_for_liaison_messages_for_group_primary(sdo) self.assertTrue(contacts_from_roles([sdo.role_set.filter(name='liaiman').first()]) in cc) # test a cc_contact role cc_contact_role = RoleFactory(name_id='liaison_cc_contact', group=sdo) - cc = get_cc(sdo) + cc = get_contacts_for_liaison_messages_for_group_primary(sdo) self.assertIn(contact_email_from_role(cc_contact_role), cc) - def test_get_contacts_for_group(self): - from ietf.liaisons.views import get_contacts_for_group, EMAIL_ALIASES + def test_get_contacts_for_liaison_messages_for_group_secondary(self): + from ietf.mailtrigger.utils import get_contacts_for_liaison_messages_for_group_secondary,EMAIL_ALIASES - # test explicit + # test explicit group contacts sdo = GroupFactory(type_id='sdo') contact_email = RoleFactory(name_id='liaison_contact', group=sdo).email.address - contacts = get_contacts_for_group(sdo) + contacts = get_contacts_for_liaison_messages_for_group_secondary(sdo) self.assertIsNotNone(contact_email) self.assertIn(contact_email, contacts) # test area area = Group.objects.filter(type='area').first() - contacts = get_contacts_for_group(area) + contacts = get_contacts_for_liaison_messages_for_group_secondary(area) self.assertTrue(area.ad_role().email.address in contacts) # test wg wg = Group.objects.filter(type='wg').first() - contacts = get_contacts_for_group(wg) + contacts = get_contacts_for_liaison_messages_for_group_secondary(wg) self.assertTrue(wg.get_chair().email.address in contacts) # test ietf - contacts = get_contacts_for_group(Group.objects.get(acronym='ietf')) + contacts = get_contacts_for_liaison_messages_for_group_secondary(Group.objects.get(acronym='ietf')) self.assertTrue(EMAIL_ALIASES['IETFCHAIR'] in contacts) # test iab - contacts = get_contacts_for_group(Group.objects.get(acronym='iab')) + contacts = get_contacts_for_liaison_messages_for_group_secondary(Group.objects.get(acronym='iab')) self.assertTrue(EMAIL_ALIASES['IABCHAIR'] in contacts) # test iesg - contacts = get_contacts_for_group(Group.objects.get(acronym='iesg')) + contacts = get_contacts_for_liaison_messages_for_group_secondary(Group.objects.get(acronym='iesg')) self.assertTrue(EMAIL_ALIASES['IESG'] in contacts) def test_needs_approval(self): @@ -786,8 +786,11 @@ def test_add_incoming_liaison(self): self.assertTrue("Liaison Statement" in outbox[-1]["Subject"]) self.assertTrue('to_contacts@' in outbox[-1]['To']) + self.assertTrue(submitter.email_address(), outbox[-1]['To']) self.assertTrue('cc@' in outbox[-1]['Cc']) + + def test_add_outgoing_liaison(self): RoleFactory(name_id='liaiman',group__type_id='sdo', person__user__username='ulm-liaiman') wg = RoleFactory(name_id='chair',person__user__username='marschairman',group__acronym='mars').group @@ -867,6 +870,8 @@ def test_add_outgoing_liaison(self): self.assertEqual(len(outbox), mailbox_before + 1) self.assertTrue("Liaison Statement" in outbox[-1]["Subject"]) self.assertTrue('aread@' in outbox[-1]['To']) + self.assertTrue(submitter.email_address(), outbox[-1]['Cc']) + def test_add_outgoing_liaison_unapproved_post_only(self): RoleFactory(name_id='liaiman',group__type_id='sdo', person__user__username='ulm-liaiman') diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 6a6f579714..f54a023357 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -27,14 +27,6 @@ from ietf.name.models import LiaisonStatementTagName from ietf.utils.response import permission_denied -EMAIL_ALIASES = { - "IETFCHAIR": "The IETF Chair ", - "IESG": "The IESG ", - "IAB": "The IAB ", - "IABCHAIR": "The IAB Chair ", -} - - # ------------------------------------------------- # Helper Functions # ------------------------------------------------- @@ -94,64 +86,6 @@ def contacts_from_roles(roles): emails = [ contact_email_from_role(r) for r in roles ] return ','.join(emails) -def get_cc(group): - '''Returns list of emails to use as CC for group. Simplified refactor of IETFHierarchy - get_cc() and get_from_cc() - ''' - emails = [] - - # role based CCs - if group.acronym in ('ietf','iesg'): - emails.append(EMAIL_ALIASES['IESG']) - emails.append(EMAIL_ALIASES['IETFCHAIR']) - elif group.acronym in ('iab'): - emails.append(EMAIL_ALIASES['IAB']) - emails.append(EMAIL_ALIASES['IABCHAIR']) - elif group.type_id == 'area': - emails.append(EMAIL_ALIASES['IETFCHAIR']) - ad_roles = group.role_set.filter(name='ad') - emails.extend([ contact_email_from_role(r) for r in ad_roles ]) - elif group.type_id == 'wg': - ad_roles = group.parent.role_set.filter(name='ad') - emails.extend([ contact_email_from_role(r) for r in ad_roles ]) - chair_roles = group.role_set.filter(name='chair') - emails.extend([ contact_email_from_role(r) for r in chair_roles ]) - if group.list_email: - emails.append('{} Discussion List <{}>'.format(group.name,group.list_email)) - elif group.type_id == 'sdo': - liaiman_roles = group.role_set.filter(name='liaiman') - emails.extend([ contact_email_from_role(r) for r in liaiman_roles ]) - - # explicit CCs - liaison_cc_roles = group.role_set.filter(name='liaison_cc_contact') - emails.extend([ contact_email_from_role(r) for r in liaison_cc_roles ]) - - return emails - -def get_contacts_for_group(group): - '''Returns default contacts for groups as a comma separated string''' - # use explicit default contacts if defined - explicit_contacts = contacts_from_roles(group.role_set.filter(name='liaison_contact')) - if explicit_contacts: - return explicit_contacts - - # otherwise construct based on group type - contacts = [] - if group.type_id == 'area': - roles = group.role_set.filter(name='ad') - contacts.append(contacts_from_roles(roles)) - elif group.type_id == 'wg': - roles = group.role_set.filter(name='chair') - contacts.append(contacts_from_roles(roles)) - elif group.acronym == 'ietf': - contacts.append(EMAIL_ALIASES['IETFCHAIR']) - elif group.acronym == 'iab': - contacts.append(EMAIL_ALIASES['IABCHAIR']) - elif group.acronym == 'iesg': - contacts.append(EMAIL_ALIASES['IESG']) - - return ','.join(contacts) - def get_details_tabs(stmt, selected): return [ t + (t[0].lower() == selected.lower(),) @@ -207,6 +141,8 @@ def post_only(group,person): # ------------------------------------------------- @can_submit_liaison_required def ajax_get_liaison_info(request): + from ietf.mailtrigger.utils import get_contacts_for_liaison_messages_for_group_primary,get_contacts_for_liaison_messages_for_group_secondary + '''Returns dictionary of info to update entry form given the groups that have been selected ''' @@ -229,14 +165,14 @@ def ajax_get_liaison_info(request): result = {'response_contacts':[],'to_contacts': [], 'cc': [], 'needs_approval': False, 'post_only': False, 'full_list': []} for group in from_groups: - cc.extend(get_cc(group)) + cc.extend(get_contacts_for_liaison_messages_for_group_primary(group)) does_need_approval.append(needs_approval(group,person)) can_post_only.append(post_only(group,person)) - response_contacts.append(get_contacts_for_group(group)) + response_contacts.append(get_contacts_for_liaison_messages_for_group_secondary(group)) for group in to_groups: - cc.extend(get_cc(group)) - to_contacts.append(get_contacts_for_group(group)) + cc.extend(get_contacts_for_liaison_messages_for_group_primary(group)) + to_contacts.append(get_contacts_for_liaison_messages_for_group_secondary(group)) # if there are from_groups and any need approval if does_need_approval: diff --git a/ietf/mailtrigger/migrations/0008_liaison_statement_incoming_and_outgoing_posted.py b/ietf/mailtrigger/migrations/0008_liaison_statement_incoming_and_outgoing_posted.py new file mode 100644 index 0000000000..189a783a2e --- /dev/null +++ b/ietf/mailtrigger/migrations/0008_liaison_statement_incoming_and_outgoing_posted.py @@ -0,0 +1,72 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations + + +def forward(apps, schema_editor): + Mailtrigger = apps.get_model("mailtrigger", "MailTrigger") + Recipient = apps.get_model("mailtrigger", "Recipient") + recipients_to = Recipient.objects.get(pk="liaison_to_contacts") + recipients_cc = list( + Recipient.objects.filter( + slug__in=( + "liaison_cc", + "liaison_coordinators", + "liaison_response_contacts", + "liaison_technical_contacts", + ) + ) + ) + recipient_from = Recipient.objects.get(pk="liaison_from_contact") + + liaison_posted_outgoing = Mailtrigger.objects.create( + slug="liaison_statement_posted_outgoing", + desc="Recipients for a message when a new outgoing liaison statement is posted", + ) + liaison_posted_outgoing.to.add(recipients_to) + liaison_posted_outgoing.cc.add(*recipients_cc) + liaison_posted_outgoing.cc.add(recipient_from) + + liaison_posted_incoming = Mailtrigger.objects.create( + slug="liaison_statement_posted_incoming", + desc="Recipients for a message when a new incoming liaison statement is posted", + ) + liaison_posted_incoming.to.add(recipients_to) + liaison_posted_incoming.cc.add(*recipients_cc) + + Mailtrigger.objects.filter(slug=("liaison_statement_posted")).delete() + + +def reverse(apps, schema_editor): + Mailtrigger = apps.get_model("mailtrigger", "MailTrigger") + Recipient = apps.get_model("mailtrigger", "Recipient") + + Mailtrigger.objects.filter( + slug__in=( + "liaison_statement_posted_outgoing", + "liaison_statement_posted_incoming", + ) + ).delete() + + liaison_statement_posted = Mailtrigger.objects.create( + slug="liaison_statement_posted", + desc="Recipients for a message when a new liaison statement is posted", + ) + + liaison_to_contacts = Recipient.objects.get(slug="liaison_to_contacts") + recipients_ccs = Recipient.objects.filter( + slug__in=( + "liaison_cc", + "liaison_coordinators", + "liaison_response_contacts", + "liaison_technical_contacts", + ) + ) + liaison_statement_posted.to.add(liaison_to_contacts) + liaison_statement_posted.cc.add(*recipients_ccs) + + +class Migration(migrations.Migration): + dependencies = [("mailtrigger", "0007_historicalrecipient_historicalmailtrigger")] + + operations = [migrations.RunPython(forward, reverse)] diff --git a/ietf/mailtrigger/utils.py b/ietf/mailtrigger/utils.py index 9915eae3fd..bcdaf5e44e 100644 --- a/ietf/mailtrigger/utils.py +++ b/ietf/mailtrigger/utils.py @@ -9,6 +9,14 @@ from ietf.utils.mail import excludeaddrs +EMAIL_ALIASES = { + "IETFCHAIR": "The IETF Chair ", + "IESG": "The IESG ", + "IAB": "The IAB ", + "IABCHAIR": "The IAB Chair ", +} + + class AddrLists(namedtuple("AddrLists", ["to", "cc"])): __slots__ = () @@ -66,6 +74,69 @@ def get_mailtrigger(slug, create_from_slug_if_not_exists, desc_if_not_exists): return mailtrigger +def get_contacts_for_liaison_messages_for_group_primary(group): + from ietf.liaisons.views import contact_email_from_role + + '''Returns list of emails to use in liaison message for group + ''' + emails = [] + + # role based emails + if group.acronym in ('ietf','iesg'): + emails.append(EMAIL_ALIASES['IESG']) + emails.append(EMAIL_ALIASES['IETFCHAIR']) + elif group.acronym in ('iab'): + emails.append(EMAIL_ALIASES['IAB']) + emails.append(EMAIL_ALIASES['IABCHAIR']) + elif group.type_id == 'area': + emails.append(EMAIL_ALIASES['IETFCHAIR']) + ad_roles = group.role_set.filter(name='ad') + emails.extend([ contact_email_from_role(r) for r in ad_roles ]) + elif group.type_id == 'wg': + ad_roles = group.parent.role_set.filter(name='ad') + emails.extend([ contact_email_from_role(r) for r in ad_roles ]) + chair_roles = group.role_set.filter(name='chair') + emails.extend([ contact_email_from_role(r) for r in chair_roles ]) + if group.list_email: + emails.append('{} Discussion List <{}>'.format(group.name,group.list_email)) + elif group.type_id == 'sdo': + liaiman_roles = group.role_set.filter(name='liaiman') + emails.extend([ contact_email_from_role(r) for r in liaiman_roles ]) + + # explicit CCs + liaison_cc_roles = group.role_set.filter(name='liaison_cc_contact') + emails.extend([ contact_email_from_role(r) for r in liaison_cc_roles ]) + + return emails + + +def get_contacts_for_liaison_messages_for_group_secondary(group): + from ietf.liaisons.views import contacts_from_roles + + '''Returns default contacts for groups as a comma separated string''' + # use explicit default contacts if defined + explicit_contacts = contacts_from_roles(group.role_set.filter(name='liaison_contact')) + if explicit_contacts: + return explicit_contacts + + # otherwise construct based on group type + contacts = [] + if group.type_id == 'area': + roles = group.role_set.filter(name='ad') + contacts.append(contacts_from_roles(roles)) + elif group.type_id == 'wg': + roles = group.role_set.filter(name='chair') + contacts.append(contacts_from_roles(roles)) + elif group.acronym == 'ietf': + contacts.append(EMAIL_ALIASES['IETFCHAIR']) + elif group.acronym == 'iab': + contacts.append(EMAIL_ALIASES['IABCHAIR']) + elif group.acronym == 'iesg': + contacts.append(EMAIL_ALIASES['IESG']) + + return ','.join(contacts) + + def gather_relevant_expansions(**kwargs): def starts_with(prefix): return MailTrigger.objects.filter(slug__startswith=prefix).values_list( diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index c94e15a459..58deb01f0c 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -2638,11 +2638,24 @@ "order": 0, "slug": "historic", "type": "statement", - "used": true + "used": false }, "model": "doc.state", "pk": 182 }, + { + "fields": { + "desc": "The statement is no longer active", + "name": "Inactive", + "next_states": [], + "order": 0, + "slug": "inactive", + "type": "statement", + "used": true + }, + "model": "doc.state", + "pk": 183 + }, { "fields": { "label": "State" @@ -5520,13 +5533,31 @@ "liaison_response_contacts", "liaison_technical_contacts" ], - "desc": "Recipient for a message when a new liaison statement is posted", + "desc": "Recipients for a message when a new incoming liaison statement is posted", "to": [ + "liaison_from_contact", "liaison_to_contacts" ] }, "model": "mailtrigger.mailtrigger", - "pk": "liaison_statement_posted" + "pk": "liaison_statement_posted_incoming" + }, + { + "fields": { + "cc": [ + "liaison_cc", + "liaison_coordinators", + "liaison_from_contact", + "liaison_response_contacts", + "liaison_technical_contacts" + ], + "desc": "Recipients for a message when a new outgoing liaison statement is posted", + "to": [ + "liaison_to_contacts" + ] + }, + "model": "mailtrigger.mailtrigger", + "pk": "liaison_statement_posted_outgoing" }, { "fields": { @@ -7068,6 +7099,14 @@ "model": "mailtrigger.recipient", "pk": "liaison_coordinators" }, + { + "fields": { + "desc": "Email address of the formal sender of the statement", + "template": "{{liaison.from_contact}}" + }, + "model": "mailtrigger.recipient", + "pk": "liaison_from_contact" + }, { "fields": { "desc": "The assigned liaison manager for an external group ", From 8fbbc55ec3cb87f528953da33e8c7194c2b75afd Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 7 Oct 2025 15:13:16 -0300 Subject: [PATCH 656/846] fix: keep day visible in timeslot editor (#9653) --- ietf/templates/meeting/timeslot_edit.html | 44 ++++++++++++----------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/ietf/templates/meeting/timeslot_edit.html b/ietf/templates/meeting/timeslot_edit.html index 11691ba6dd..3259dba9da 100644 --- a/ietf/templates/meeting/timeslot_edit.html +++ b/ietf/templates/meeting/timeslot_edit.html @@ -11,20 +11,22 @@ {% endcomment %} .timeslot-edit { overflow: auto; height: max(30rem, calc(100vh - 25rem));} .tstable { width: 100%; border-collapse: separate; } {# "separate" to ensure sticky cells keep their borders #} -.tstable thead { position: sticky; top: 0; z-index: 3; background-color: white;} -.tstable th:first-child, .tstable td:first-child { - background-color: white; {# needs to match the lighter of the striped-table colors! #} -position: sticky; -left: 0; - z-index: 2; {# render above other cells / borders but below thead (z-index 3, above) #} -} -.tstable tbody > tr:nth-of-type(odd) > th:first-child { - background-color: rgb(249, 249, 249); {# needs to match the darker of the striped-table colors! #} -} -.tstable th { white-space: nowrap;} -.tstable td { white-space: nowrap;} -.capacity { font-size:80%; font-weight: normal;} -a.new-timeslot-link { color: lightgray; font-size: large;} + .tstable tr th:first-child { min-width: 25rem; max-width: 25rem; overflow: hidden; } + .tstable thead { position: sticky; top: 0; z-index: 3; background-color: white;} + .tstable thead th span.day { position: sticky; left: 25.5rem; } + .tstable th:first-child, .tstable td:first-child { + background-color: white; {# needs to match the lighter of the striped-table colors! #} + position: sticky; + left: 0; + z-index: 2; {# render above other cells / borders but below thead (z-index 3, above) #} + } + .tstable tbody > tr:nth-of-type(odd) > th:first-child { + background-color: rgb(249, 249, 249); {# needs to match the darker of the striped-table colors! #} + } + .tstable th { white-space: nowrap;} + .tstable td { white-space: nowrap;} + .capacity { font-size:80%; font-weight: normal;} + a.new-timeslot-link { color: lightgray; font-size: large;} {% endblock %} {% block content %} {% origin %} @@ -84,12 +86,14 @@

  14. - {{ day|date:'D' }} ({{ day }}) - - + + {{ day|date:'D' }} ({{ day }}) + + +
    - - - - - - - - - - {% for entry in activities %} - - - - - - - {% endfor %} - -
    DateTimeActionName
    {{ entry.act_date }}{{ entry.act_time }}{{ entry.activity }}{{ entry.act_by }}
    - diff --git a/ietf/secr/templates/includes/buttons_next_cancel.html b/ietf/secr/templates/includes/buttons_next_cancel.html deleted file mode 100644 index 95d25f55bc..0000000000 --- a/ietf/secr/templates/includes/buttons_next_cancel.html +++ /dev/null @@ -1,6 +0,0 @@ -
    -
      -
    • -
    • -
    -
    diff --git a/ietf/secr/templates/includes/buttons_submit_cancel.html b/ietf/secr/templates/includes/buttons_submit_cancel.html deleted file mode 100644 index df40c98255..0000000000 --- a/ietf/secr/templates/includes/buttons_submit_cancel.html +++ /dev/null @@ -1,6 +0,0 @@ -
    -
      -
    • -
    • -
    -
    diff --git a/ietf/secr/templates/includes/sessions_footer.html b/ietf/secr/templates/includes/sessions_footer.html deleted file mode 100755 index 2a26440047..0000000000 --- a/ietf/secr/templates/includes/sessions_footer.html +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/ietf/secr/templates/includes/sessions_request_form.html b/ietf/secr/templates/includes/sessions_request_form.html deleted file mode 100755 index 61b1673357..0000000000 --- a/ietf/secr/templates/includes/sessions_request_form.html +++ /dev/null @@ -1,130 +0,0 @@ -* Required Field -{% csrf_token %} - {{ form.session_forms.management_form }} - {% if form.non_field_errors %} - {{ form.non_field_errors }} - {% endif %} - - - - - - {% if group.features.acts_like_wg %} - - {% if not is_virtual %} - - {% endif %} - - {% else %}{# else not group.features.acts_like_wg #} - {% for session_form in form.session_forms %} - - {% endfor %} - {% endif %} - - - - - - - - - - {% if not is_virtual %} - - - - - - - - - - - - - - - - - - - {% endif %} - - - - - - {% if form.notifications_optional %} - - - - - {% endif %} - -
    Working Group Name:{{ group.name }} ({{ group.acronym }})
    Area Name:{% if group.parent %}{{ group.parent.name }} ({{ group.parent.acronym }}){% endif %}
    Number of Sessions:*{{ form.num_session.errors }}{{ form.num_session }}
    Session 1:*{% include 'meeting/session_details_form.html' with form=form.session_forms.0 hide_onsite_tool_prompt=True only %}
    Session 2:*{% include 'meeting/session_details_form.html' with form=form.session_forms.1 hide_onsite_tool_prompt=True only %}
    Time between two sessions:{{ form.session_time_relation.errors }}{{ form.session_time_relation }}
    Additional Session Request:{{ form.third_session }} Check this box to request an additional session.
    - Additional slot may be available after agenda scheduling has closed and with the approval of an Area Director.
    -
    - Third Session: - {% include 'meeting/session_details_form.html' with form=form.session_forms.2 hide_onsite_tool_prompt=True only %} -
    -
    Session {{ forloop.counter }}:*{% include 'meeting/session_details_form.html' with form=session_form only %}
    Number of Attendees:{% if not is_virtual %}*{% endif %}{{ form.attendees.errors }}{{ form.attendees }}
    Participants who must be present: - {{ form.bethere.errors }} - {{ form.bethere }} -

    - Do not include Area Directors and WG Chairs; the system already tracks their availability. -

    -
    Conflicts to Avoid: - - - - - - - {% for cname, cfield, cselector in form.wg_constraint_fields %} - - {% if forloop.first %}{% endif %} - - - - {% empty %}{# shown if there are no constraint fields #} - - {% endfor %} - {% if form.inactive_wg_constraints %} - {% for cname, value, field in form.inactive_wg_constraints %} - - {% if forloop.first %} - - {% endif %} - - - - {% endfor %} - {% endif %} - - - - - -
    Other WGs that included {{ group.name }} in their conflict lists:{{ session_conflicts.inbound|default:"None" }}
    WG Sessions:
    You may select multiple WGs within each category
    {{ cname|title }}{{ cselector }} -
    - {{ cfield.errors }}{{ cfield }} -
    No constraints are enabled for this meeting.
    - Disabled for this meeting - {{ cname|title }}
    {{ field }} {{ field.label }}
    BOF Sessions:If the sessions can not be found in the fields above, please enter free form requests in the Special Requests field below.
    -
    Resources requested: - {{ form.resources.errors }} {{ form.resources }} -
    Times during which this WG can not meet:
    Please explain any selections in Special Requests below.
    {{ form.timeranges.errors }}{{ form.timeranges }}
    - Plan session adjacent with another WG:
    - (Immediately before or after another WG, no break in between, in the same room.) -
    {{ form.adjacent_with_wg.errors }}{{ form.adjacent_with_wg }}
    - Joint session with:
    - (To request one session for multiple WGs together.) -
    To request a joint session with another group, please contact the secretariat.
    Special Requests:
     
    i.e. restrictions on meeting times / days, etc.
    (limit 200 characters)
    {{ form.comments.errors }}{{ form.comments }}
    {{ form.send_notifications.label }}{{ form.send_notifications.errors }}{{ form.send_notifications }}
    - -
    -
      -
    • -
    • -
    -
    - \ No newline at end of file diff --git a/ietf/secr/templates/includes/sessions_request_view.html b/ietf/secr/templates/includes/sessions_request_view.html deleted file mode 100644 index bc6aef0611..0000000000 --- a/ietf/secr/templates/includes/sessions_request_view.html +++ /dev/null @@ -1,73 +0,0 @@ -{% load ams_filters %} - - - - - - {% if form %} - {% include 'includes/sessions_request_view_formset.html' with formset=form.session_forms group=group session=session only %} - {% else %} - {% include 'includes/sessions_request_view_session_set.html' with session_set=sessions group=group session=session only %} - {% endif %} - - - - - - - - - - {% if not is_virtual %} - - - - - {% endif %} - - - - - - - - - {% if not is_virtual %} - - - - - - - - - {% endif %} - - {% if form and form.notifications_optional %} - - - - - {% endif %} - -
    Working Group Name:{{ group.name }} ({{ group.acronym }})
    Area Name:{{ group.parent }}
    Number of Sessions Requested:{% if session.third_session %}3{% else %}{{ session.num_session }}{% endif %}
    Number of Attendees:{{ session.attendees }}
    Conflicts to Avoid: - {% if session_conflicts.outbound %} - - - {% for conflict in session_conflicts.outbound %} - - {% endfor %} - -
    {{ conflict.name|title }}: {{ conflict.groups }}
    - {% else %}None{% endif %} -
    Other WGs that included {{ group }} in their conflict list:{% if session_conflicts.inbound %}{{ session_conflicts.inbound }}{% else %}None so far{% endif %}
    Resources requested:{% if session.resources %}
      {% for resource in session.resources %}
    • {{ resource.desc }}
    • {% endfor %}
    {% else %}None so far{% endif %}
    Participants who must be present:{% if session.bethere %}
      {% for person in session.bethere %}
    • {{ person }}
    • {% endfor %}
    {% else %}None{% endif %}
    Can not meet on:{% if session.timeranges_display %}{{ session.timeranges_display|join:', ' }}{% else %}No constraints{% endif %}
    Adjacent with WG:{{ session.adjacent_with_wg|default:'No preference' }}
    Joint session: - {% if session.joint_with_groups %} - {{ session.joint_for_session_display }} with: {{ session.joint_with_groups }} - {% else %} - Not a joint session - {% endif %} -
    Special Requests:{{ session.comments }}
    - {{ form.send_notifications.label}} - - {% if form.cleaned_data.send_notifications %}Yes{% else %}No{% endif %} -
    \ No newline at end of file diff --git a/ietf/secr/templates/includes/sessions_request_view_formset.html b/ietf/secr/templates/includes/sessions_request_view_formset.html deleted file mode 100644 index 80cad8d829..0000000000 --- a/ietf/secr/templates/includes/sessions_request_view_formset.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load ams_filters %}{# keep this in sync with sessions_request_view_session_set.html #} -{% for sess_form in formset %}{% if sess_form.cleaned_data and not sess_form.cleaned_data.DELETE %} - - Session {{ forloop.counter }}: - -
    -
    Length
    -
    {{ sess_form.cleaned_data.requested_duration.total_seconds|display_duration }}
    - {% if sess_form.cleaned_data.name %} -
    Name
    -
    {{ sess_form.cleaned_data.name }}
    {% endif %} - {% if sess_form.cleaned_data.purpose.slug != 'regular' %} -
    Purpose
    -
    - {{ sess_form.cleaned_data.purpose }} - {% if sess_form.cleaned_data.purpose.timeslot_types|length > 1 %}({{ sess_form.cleaned_data.type }} - ){% endif %} -
    -
    Onsite tool?
    -
    {{ sess_form.cleaned_data.has_onsite_tool|yesno }}
    - {% endif %} -
    - - - {% if group.features.acts_like_wg and forloop.counter == 2 and not is_virtual %} - - Time between sessions: - {% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No - preference{% endif %} - - {% endif %} -{% endif %}{% endfor %} \ No newline at end of file diff --git a/ietf/secr/templates/includes/sessions_request_view_session_set.html b/ietf/secr/templates/includes/sessions_request_view_session_set.html deleted file mode 100644 index a434b9d22b..0000000000 --- a/ietf/secr/templates/includes/sessions_request_view_session_set.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load ams_filters %}{# keep this in sync with sessions_request_view_formset.html #} -{% for sess in session_set %} - - Session {{ forloop.counter }}: - -
    -
    Length
    -
    {{ sess.requested_duration.total_seconds|display_duration }}
    - {% if sess.name %} -
    Name
    -
    {{ sess.name }}
    {% endif %} - {% if sess.purpose.slug != 'regular' %} -
    Purpose
    -
    - {{ sess.purpose }} - {% if sess.purpose.timeslot_types|length > 1 %}({{ sess.type }} - ){% endif %} -
    -
    Onsite tool?
    -
    {{ sess.has_onsite_tool|yesno }}
    - {% endif %} -
    - - - {% if group.features.acts_like_wg and forloop.counter == 2 and not is_virtual %} - - Time between sessions: - {% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No - preference{% endif %} - - {% endif %} -{% endfor %} \ No newline at end of file diff --git a/ietf/secr/templates/index.html b/ietf/secr/templates/index.html index 05fa3db41f..9ea7021279 100644 --- a/ietf/secr/templates/index.html +++ b/ietf/secr/templates/index.html @@ -1,11 +1,11 @@ -{# Copyright The IETF Trust 2007, All Rights Reserved #} +{# Copyright The IETF Trust 2007-2025, All Rights Reserved #} {% extends "base.html" %} {% load static %} {% load ietf_filters %} {% block title %}Secretariat Dashboard{% endblock %} {% block content %}

    Secretariat Dashboard

    -
    +
    {% if user|has_role:"Secretariat" %}

    IESG

      @@ -20,12 +20,10 @@

      IDs and WGs Process

      Meetings and Proceedings

      {% else %} {% endif %} diff --git a/ietf/secr/templates/sreq/confirm.html b/ietf/secr/templates/sreq/confirm.html deleted file mode 100755 index 025375af32..0000000000 --- a/ietf/secr/templates/sreq/confirm.html +++ /dev/null @@ -1,57 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Sessions - Confirm{% endblock %} - -{% block extrastyle %} - -{% endblock %} - -{% block extrahead %}{{ block.super }} - - {{ form.media }} -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions - » New - » Session Request Confirmation -{% endblock %} - -{% block content %} - -
      -

      Sessions - Confirm

      - - {% include "includes/sessions_request_view.html" %} - - {% if group.features.acts_like_wg and form.session_forms.forms_to_keep|length > 2 %} -
      -

      - - Note: Your request for a third session must be approved by an area director before - being submitted to agenda@ietf.org. Click "Submit" below to email an approval - request to the area directors. - -

      -
      - {% endif %} - -
      - {% csrf_token %} - {{ form }} - {{ form.session_forms.management_form }} - {% for sf in form.session_forms %} - {% include 'meeting/session_details_form.html' with form=sf hidden=True only %} - {% endfor %} - {% include "includes/buttons_submit_cancel.html" %} -
      - -
      - -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/sreq/edit.html b/ietf/secr/templates/sreq/edit.html deleted file mode 100755 index f6e62104b0..0000000000 --- a/ietf/secr/templates/sreq/edit.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} -{% block title %}Sessions - Edit{% endblock %} - -{% block extrahead %}{{ block.super }} - - - {{ form.media }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions - » {{ group.acronym }} - » Edit -{% endblock %} - -{% block instructions %} - Instructions -{% endblock %} - -{% block content %} -
      -

      IETF {{ meeting.number }}: Edit Session Request

      - -
      -{% endblock %} - -{% block footer-extras %} - {% include "includes/sessions_footer.html" %} -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/sreq/locked.html b/ietf/secr/templates/sreq/locked.html deleted file mode 100755 index c27cf578ed..0000000000 --- a/ietf/secr/templates/sreq/locked.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Sessions{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions (Locked) -{% endblock %} - -{% block content %} -

      » View list of timeslot requests

      -
      -

      Sessions - Status

      - -

      {{ message }}

      - -
      -
        -
      • -
      -
      - - -
      - -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/sreq/main.html b/ietf/secr/templates/sreq/main.html deleted file mode 100755 index a6695cd4f3..0000000000 --- a/ietf/secr/templates/sreq/main.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "base_site.html" %} -{% load ietf_filters %} -{% load static %} - -{% block title %}Sessions{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions -{% endblock %} -{% block instructions %} - Instructions -{% endblock %} - -{% block content %} -

      » View list of timeslot requests

      -
      -

      - Sessions Request Tool: IETF {{ meeting.number }} - {% if user|has_role:"Secretariat" %} - {% if is_locked %} - Tool Status: Locked - {% else %} - Tool Status: Unlocked - {% endif %} - {% endif %} -

      - -
      - -
      - -{% endblock %} - -{% block footer-extras %} - {% include "includes/sessions_footer.html" %} -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/sreq/new.html b/ietf/secr/templates/sreq/new.html deleted file mode 100755 index 3f46e6f897..0000000000 --- a/ietf/secr/templates/sreq/new.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Sessions- New{% endblock %} - -{% block extrahead %}{{ block.super }} - - - {{ form.media }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions - » New Session Request -{% endblock %} - -{% block instructions %} - Instructions -{% endblock %} - -{% block content %} -
      -

      IETF {{ meeting.number }}: New Session Request

      - - {% include "includes/sessions_request_form.html" %} - -
      - -{% endblock %} - -{% block footer-extras %} - {% include "includes/sessions_footer.html" %} -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/sreq/tool_status.html b/ietf/secr/templates/sreq/tool_status.html deleted file mode 100755 index b91e73a129..0000000000 --- a/ietf/secr/templates/sreq/tool_status.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Sessions{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions - » Session Status -{% endblock %} - -{% block content %} - -
      -

      Sessions - Status

      -

      Enter the message that you would like displayed to the WG Chair when this tool is locked.

      -
      {% csrf_token %} - - - - {{ form.as_table }} - -
      -
      -
        - {% if is_locked %} -
      • - {% else %} -
      • - {% endif %} -
      • -
      -
      - -
      - -
      - -{% endblock %} diff --git a/ietf/secr/templates/sreq/view.html b/ietf/secr/templates/sreq/view.html deleted file mode 100644 index 9a0a3b01c1..0000000000 --- a/ietf/secr/templates/sreq/view.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Sessions - View{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block extrastyle %} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Sessions - » {{ group.acronym }} -{% endblock %} - -{% block instructions %} - Instructions -{% endblock %} - -{% block content %} - -
      -

      Sessions - View (meeting: {{ meeting.number }})

      - - {% include "includes/sessions_request_view.html" %} - -
      - - {% include "includes/activities.html" %} - -
      -
        -
      • - {% if show_approve_button %} -
      • - {% endif %} -
      • -
      • -
      -
      -
      - -{% endblock %} - -{% block footer-extras %} - {% include "includes/sessions_footer.html" %} -{% endblock %} diff --git a/ietf/secr/urls.py b/ietf/secr/urls.py index 4a3e5b0363..ab21046654 100644 --- a/ietf/secr/urls.py +++ b/ietf/secr/urls.py @@ -1,11 +1,22 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.conf import settings from django.urls import re_path, include from django.views.generic import TemplateView +from django.views.generic.base import RedirectView urlpatterns = [ re_path(r'^$', TemplateView.as_view(template_name='index.html'), name='ietf.secr'), re_path(r'^announcement/', include('ietf.secr.announcement.urls')), re_path(r'^meetings/', include('ietf.secr.meetings.urls')), re_path(r'^rolodex/', include('ietf.secr.rolodex.urls')), - re_path(r'^sreq/', include('ietf.secr.sreq.urls')), + # remove these redirects after 125 + re_path(r'^sreq/$', RedirectView.as_view(url='/meeting/session/request/', permanent=True)), + re_path(r'^sreq/%(acronym)s/$' % settings.URL_REGEXPS, RedirectView.as_view(url='/meeting/session/request/%(acronym)s/view/', permanent=True)), + re_path(r'^sreq/%(acronym)s/edit/$' % settings.URL_REGEXPS, RedirectView.as_view(url='/meeting/session/request/%(acronym)s/edit/', permanent=True)), + re_path(r'^sreq/%(acronym)s/new/$' % settings.URL_REGEXPS, RedirectView.as_view(url='/meeting/session/request/%(acronym)s/new/', permanent=True)), + re_path(r'^sreq/(?P[A-Za-z0-9_\-\+]+)/%(acronym)s/view/$' % settings.URL_REGEXPS, RedirectView.as_view(url='/meeting/%(num)s/session/request/%(acronym)s/view/', permanent=True)), + re_path(r'^sreq/(?P[A-Za-z0-9_\-\+]+)/%(acronym)s/edit/$' % settings.URL_REGEXPS, RedirectView.as_view(url='/meeting/%(num)s/session/request/%(acronym)s/edit/', permanent=True)), + # --------------------------------- re_path(r'^telechat/', include('ietf.secr.telechat.urls')), ] diff --git a/ietf/secr/utils/group.py b/ietf/secr/utils/group.py deleted file mode 100644 index 40a9065ace..0000000000 --- a/ietf/secr/utils/group.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright The IETF Trust 2013-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -# Python imports - -# Django imports -from django.core.exceptions import ObjectDoesNotExist - -# Datatracker imports -from ietf.group.models import Group -from ietf.ietfauth.utils import has_role - - -def get_my_groups(user,conclude=False): - ''' - Takes a Django user object (from request) - Returns a list of groups the user has access to. Rules are as follows - secretariat - has access to all groups - area director - has access to all groups in their area - wg chair or secretary - has access to their own group - chair of irtf has access to all irtf groups - - If user=None than all groups are returned. - concluded=True means include concluded groups. Need this to upload materials for groups - after they've been concluded. it happens. - ''' - my_groups = set() - states = ['bof','proposed','active'] - if conclude: - states.extend(['conclude','bof-conc']) - - all_groups = Group.objects.filter(type__features__has_meetings=True, state__in=states).order_by('acronym') - if user == None or has_role(user,'Secretariat'): - return all_groups - - try: - person = user.person - except ObjectDoesNotExist: - return list() - - for group in all_groups: - if group.role_set.filter(person=person,name__in=('chair','secr','ad')): - my_groups.add(group) - continue - if group.parent and group.parent.role_set.filter(person=person,name__in=('ad','chair')): - my_groups.add(group) - continue - - return list(my_groups) diff --git a/ietf/settings.py b/ietf/settings.py index d6be1d1e0f..9a213c1a73 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -537,7 +537,6 @@ def skip_unreadable_post(record): 'ietf.secr.announcement', 'ietf.secr.meetings', 'ietf.secr.rolodex', - 'ietf.secr.sreq', 'ietf.secr.telechat', ] diff --git a/ietf/static/js/custom_striped.js b/ietf/static/js/custom_striped.js new file mode 100644 index 0000000000..480ad7cf82 --- /dev/null +++ b/ietf/static/js/custom_striped.js @@ -0,0 +1,16 @@ +// Copyright The IETF Trust 2025, All Rights Reserved + +document.addEventListener('DOMContentLoaded', () => { + // add stripes + const firstRow = document.querySelector('.custom-stripe .row') + if (firstRow) { + const parent = firstRow.parentElement; + const allRows = Array.from(parent.children).filter(child => child.classList.contains('row')) + allRows.forEach((row, index) => { + row.classList.remove('bg-light') + if (index % 2 === 1) { + row.classList.add('bg-light') + } + }) + } +}) diff --git a/ietf/secr/static/js/session_form.js b/ietf/static/js/session_form.js similarity index 92% rename from ietf/secr/static/js/session_form.js rename to ietf/static/js/session_form.js index 6f28f16db4..bd61293d7c 100644 --- a/ietf/secr/static/js/session_form.js +++ b/ietf/static/js/session_form.js @@ -1,4 +1,4 @@ -/* Copyright The IETF Trust 2021, All Rights Reserved +/* Copyright The IETF Trust 2021-2025, All Rights Reserved * * JS support for the SessionForm * */ diff --git a/ietf/secr/static/js/sessions.js b/ietf/static/js/session_request.js similarity index 90% rename from ietf/secr/static/js/sessions.js rename to ietf/static/js/session_request.js index a2770e6262..dfb169f675 100644 --- a/ietf/secr/static/js/sessions.js +++ b/ietf/static/js/session_request.js @@ -1,4 +1,4 @@ -// Copyright The IETF Trust 2015-2021, All Rights Reserved +// Copyright The IETF Trust 2015-2025, All Rights Reserved /* global alert */ var ietf_sessions; // public interface @@ -38,7 +38,7 @@ var ietf_sessions; // public interface const only_one_session = (val === 1); if (document.form_post.session_time_relation) { document.form_post.session_time_relation.disabled = only_one_session; - document.form_post.session_time_relation.closest('tr').hidden = only_one_session; + document.form_post.session_time_relation.closest('div.row').hidden = only_one_session; } if (document.form_post.joint_for_session) { document.form_post.joint_for_session.disabled = only_one_session; @@ -129,6 +129,11 @@ var ietf_sessions; // public interface } } + function wg_constraint_delete_clicked(event) { + const constraint_name = event.currentTarget.dataset.constraint_name; + delete_last_wg_constraint(constraint_name); + } + /* Initialization */ function on_load() { // Attach event handler to session count select @@ -146,6 +151,9 @@ var ietf_sessions; // public interface selectors[index].addEventListener('change', wg_constraint_selector_changed, false) } + // Attach event handler to constraint delete buttons + document.querySelectorAll('.wg_constraint_delete') + .forEach(btn => btn.addEventListener('click', wg_constraint_delete_clicked)); } // initialize after page loads diff --git a/ietf/templates/base/menu.html b/ietf/templates/base/menu.html index bd8c0bf3cd..1e7c1688ff 100644 --- a/ietf/templates/base/menu.html +++ b/ietf/templates/base/menu.html @@ -1,4 +1,4 @@ -{# Copyright The IETF Trust 2015-2022, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2025, All Rights Reserved #} {% load origin %} {% origin %} {% load ietf_filters managed_groups wg_menu active_groups_menu group_filters cache meetings_filters %} @@ -304,7 +304,7 @@
    • + href="{% url 'ietf.meeting.views_session_request.list_view' %}"> Request a session
    • diff --git a/ietf/templates/group/meetings-row.html b/ietf/templates/group/meetings-row.html index 25605ec0f1..8927eb61a2 100644 --- a/ietf/templates/group/meetings-row.html +++ b/ietf/templates/group/meetings-row.html @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% load origin tz %} {% origin %} {% for s in sessions %} @@ -25,7 +26,7 @@ {% if show_request and s.meeting.type_id == 'ietf' %} {% if can_edit %} + href="{% url 'ietf.meeting.views_session_request.view_request' num=s.meeting.number acronym=s.group.acronym %}"> Edit Session Request {% endif %} diff --git a/ietf/templates/group/meetings.html b/ietf/templates/group/meetings.html index bee8111025..30f478da13 100644 --- a/ietf/templates/group/meetings.html +++ b/ietf/templates/group/meetings.html @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% extends "group/group_base.html" %} {% load origin static %} {% block title %} @@ -9,7 +10,7 @@ Session requests {% if can_edit or can_always_edit %} - Request a session + Request a session Request an interim meeting diff --git a/ietf/templates/meeting/important_dates_for_meeting.ics b/ietf/templates/meeting/important_dates_for_meeting.ics index df5fe46818..e6d403da93 100644 --- a/ietf/templates/meeting/important_dates_for_meeting.ics +++ b/ietf/templates/meeting/important_dates_for_meeting.ics @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% load tz ietf_filters %}{% for d in meeting.important_dates %}BEGIN:VEVENT UID:ietf-{{ meeting.number }}-{{ d.name_id }}-{{ d.date.isoformat }} SUMMARY:IETF {{ meeting.number }}: {{ d.name.name }} @@ -8,11 +9,11 @@ TRANSP:TRANSPARENT DESCRIPTION:{{ d.name.desc }}{% if first and d.name.slug == 'openreg' or first and d.name.slug == 'earlybird' %}\n Register here: https://www.ietf.org/how/meetings/register/{% endif %}{% if d.name.slug == 'opensched' %}\n To request a Working Group session, use the IETF Meeting Session Request Tool:\n - {{ request.scheme }}://{{ request.get_host}}{% url 'ietf.secr.sreq.views.main' %}\n + {{ request.scheme }}://{{ request.get_host}}{% url 'ietf.meeting.views_session_request.list_view' %}\n If you are working on a BOF request, it is highly recommended to tell the IESG\n now by sending an email to iesg@ietf.org to get advance help with the request.{% endif %}{% if d.name.slug == 'cutoffwgreq' %}\n To request a Working Group session, use the IETF Meeting Session Request Tool:\n - {{ request.scheme }}://{{ request.get_host }}{% url 'ietf.secr.sreq.views.main' %}{% endif %}{% if d.name.slug == 'cutoffbofreq' %}\n + {{ request.scheme }}://{{ request.get_host }}{% url 'ietf.meeting.views_session_request.list_view' %}{% endif %}{% if d.name.slug == 'cutoffbofreq' %}\n To request a BOF, please see instructions on Requesting a BOF:\n https://www.ietf.org/how/bofs/bof-procedures/{% endif %}{% if d.name.slug == 'idcutoff' %}\n Upload using the I-D Submission Tool:\n diff --git a/ietf/templates/meeting/requests.html b/ietf/templates/meeting/requests.html index 3008ceb662..0abee95887 100644 --- a/ietf/templates/meeting/requests.html +++ b/ietf/templates/meeting/requests.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2025, All Rights Reserved #} {% load origin %} {% load ietf_filters static person_filters textfilters %} {% block pagehead %} @@ -151,7 +151,7 @@

      {% endifchanged %} - + {{ session.group.acronym }} {% if session.purpose_id != "regular" and session.purpose_id != "none" %} diff --git a/ietf/secr/templates/sreq/session_approval_notification.txt b/ietf/templates/meeting/session_approval_notification.txt similarity index 56% rename from ietf/secr/templates/sreq/session_approval_notification.txt rename to ietf/templates/meeting/session_approval_notification.txt index 7bb63aa3fa..74eca09bd8 100644 --- a/ietf/secr/templates/sreq/session_approval_notification.txt +++ b/ietf/templates/meeting/session_approval_notification.txt @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} Dear {{ group.parent }} Director(s): {{ header }} meeting session request has just been @@ -5,11 +6,11 @@ submitted by {{ requester }}. The third session requires your approval. To approve the session go to the session request view here: -{{ settings.IDTRACKER_BASE_URL }}{% url "ietf.secr.sreq.views.view" acronym=group.acronym %} +{{ settings.IDTRACKER_BASE_URL }}{% url "ietf.meeting.views_session_request.view_request" acronym=group.acronym %} and click "Approve Third Session". Regards, The IETF Secretariat. -{% include "includes/session_info.txt" %} +{% include "meeting/session_request_info.txt" %} diff --git a/ietf/secr/templates/sreq/session_cancel_notification.txt b/ietf/templates/meeting/session_cancel_notification.txt similarity index 71% rename from ietf/secr/templates/sreq/session_cancel_notification.txt rename to ietf/templates/meeting/session_cancel_notification.txt index 8aee6c89db..3de67fc8f4 100644 --- a/ietf/secr/templates/sreq/session_cancel_notification.txt +++ b/ietf/templates/meeting/session_cancel_notification.txt @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% autoescape off %}{% load ams_filters %} A request to cancel a meeting session has just been submitted by {{ requester }}.{% endautoescape %} diff --git a/ietf/templates/meeting/session_details_form.html b/ietf/templates/meeting/session_details_form.html index 6b59e7dacd..9cd1b6e85c 100644 --- a/ietf/templates/meeting/session_details_form.html +++ b/ietf/templates/meeting/session_details_form.html @@ -1,42 +1,48 @@ -{# Copyright The IETF Trust 2007-2020, All Rights Reserved #} +{# Copyright The IETF Trust 2007-2025, All Rights Reserved #} +{% load django_bootstrap5 %} +
      {% if hidden %} {{ form.name.as_hidden }}{{ form.purpose.as_hidden }}{{ form.type.as_hidden }}{{ form.requested_duration.as_hidden }} {{ form.has_onsite_tool.as_hidden }} {% else %} - - {% comment %} The form-group class is used by session_details_form.js to identify the correct element to hide the name / purpose / type fields when not needed. This is a bootstrap class - the secr app does not use it, so this (and the hidden class, also needed by session_details_form.js) are defined in edit.html and new.html as a kludge to make this work. {% endcomment %} - - - - - - - - - - - - - {% if not hide_onsite_tool_prompt %} - - - - - {% endif %} - -
      {{ form.name.label_tag }}{{ form.name }}{{ form.purpose.errors }}
      {{ form.purpose.label_tag }} - {{ form.purpose }}
      {{ form.type }}
      - {{ form.purpose.errors }}{{ form.type.errors }} -
      {{ form.requested_duration.label_tag }}{{ form.requested_duration }}{{ form.requested_duration.errors }}
      {{ form.has_onsite_tool.label_tag }}{{ form.has_onsite_tool }}{{ form.has_onsite_tool.errors }}
      - {% if hide_onsite_tool_prompt %}{{ form.has_onsite_tool.as_hidden }}{% endif %} + +
      + {% bootstrap_field form.name layout="horizontal" %} +
      + +
      +
      + +
      {{ form.purpose }}
      +
      {{ form.type }}
      + {{ form.purpose.errors }}{{ form.type.errors }} +
      +
      + + {% bootstrap_field form.requested_duration layout="horizontal" %} + {% if not hide_onsite_tool_prompt %} + {% bootstrap_field form.has_onsite_tool layout="horizontal" %} + {% endif %} + + {% if hide_onsite_tool_prompt %} + {{ form.has_onsite_tool.as_hidden }} + {% endif %} {% endif %} + {# hidden fields included whether or not the whole form is hidden #} - {{ form.attendees.as_hidden }}{{ form.comments.as_hidden }}{{ form.id.as_hidden }}{{ form.on_agenda.as_hidden }}{{ form.DELETE.as_hidden }}{{ form.remote_instructions.as_hidden }}{{ form.short.as_hidden }}{{ form.agenda_note.as_hidden }} -
      \ No newline at end of file + {{ form.attendees.as_hidden }} + {{ form.comments.as_hidden }} + {{ form.id.as_hidden }} + {{ form.on_agenda.as_hidden }} + {{ form.DELETE.as_hidden }} + {{ form.remote_instructions.as_hidden }} + {{ form.short.as_hidden }} + {{ form.agenda_note.as_hidden }} +

    diff --git a/ietf/secr/templates/sreq/not_meeting_notification.txt b/ietf/templates/meeting/session_not_meeting_notification.txt similarity index 83% rename from ietf/secr/templates/sreq/not_meeting_notification.txt rename to ietf/templates/meeting/session_not_meeting_notification.txt index 1120f8480c..0e5c940708 100644 --- a/ietf/secr/templates/sreq/not_meeting_notification.txt +++ b/ietf/templates/meeting/session_not_meeting_notification.txt @@ -1,3 +1,4 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% load ams_filters %} {{ login|smart_login }} {{ group.acronym }} working group, indicated that the {{ group.acronym }} working group does not plan to hold a session at IETF {{ meeting.number }}. diff --git a/ietf/templates/meeting/session_request_confirm.html b/ietf/templates/meeting/session_request_confirm.html new file mode 100644 index 0000000000..09043d3d0c --- /dev/null +++ b/ietf/templates/meeting/session_request_confirm.html @@ -0,0 +1,38 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static ietf_filters django_bootstrap5 %} +{% block title %}Confirm Session Request{% endblock %} + +{% block content %} +

    Confirm Session Request - IETF {{ meeting.number }}

    + + + +
    + +
    + + {% include "meeting/session_request_view_table.html" %} + +
    + {% csrf_token %} + {{ form }} + {{ form.session_forms.management_form }} + {% for sf in form.session_forms %} + {% include 'meeting/session_details_form.html' with form=sf hidden=True only %} + {% endfor %} + + + + +
    + +
    + +{% endblock %} + +{% block js %} + +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_form.html b/ietf/templates/meeting/session_request_form.html new file mode 100644 index 0000000000..ecf5cb7268 --- /dev/null +++ b/ietf/templates/meeting/session_request_form.html @@ -0,0 +1,206 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static ietf_filters django_bootstrap5 %} +{% block title %}{% if is_create %}New {% else %}Edit {% endif %}Session Request{% endblock %} +{% block morecss %}{{ block.super }} + .hidden {display: none !important;} + div.form-group {display: inline;} +{% endblock %} +{% block content %} +

    {% if is_create %}New {% else %}Edit {% endif %}Session Request

    + + {% if is_create %} + + {% endif %} + +
    + +
    + {% csrf_token %} + {{ form.session_forms.management_form }} + {% if form.non_field_errors %} +
    {{ form.non_field_errors }}
    + {% endif %} + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + + {% bootstrap_field form.num_session layout="horizontal" %} + + {% if group.features.acts_like_wg %} + +
    +
    Session 1
    +
    + {% include 'meeting/session_details_form.html' with form=form.session_forms.0 hide_onsite_tool_prompt=True only %} +
    +
    + +
    +
    Session 2
    +
    + {% include 'meeting/session_details_form.html' with form=form.session_forms.1 hide_onsite_tool_prompt=True only %} +
    +
    + + {% if not is_virtual %} + {% bootstrap_field form.session_time_relation layout="horizontal" %} + {% endif %} + +
    +
    Additional Session Request
    +
    +
    + {{ form.third_session }} + +
    Additional slot may be available after agenda scheduling has closed and with the approval of an Area Director.
    +
    + +
    +
    + +
    +
    Third session request
    +
    + {% include 'meeting/session_details_form.html' with form=form.session_forms.2 hide_onsite_tool_prompt=True only %} +
    +
    + + {% else %}{# else not group.features.acts_like_wg #} + {% for session_form in form.session_forms %} +
    +
    Session {{ forloop.counter }}
    +
    + {% include 'meeting/session_details_form.html' with form=session_form only %} +
    +
    + {% endfor %} + {% endif %} + + {% bootstrap_field form.attendees layout="horizontal" %} + + {% bootstrap_field form.bethere layout="horizontal" %} + +
    +
    Conflicts to avoid
    +
    +
    +
    Other WGs that included {{ group.acronym }} in their conflict lists
    +
    {{ session_conflicts.inbound|default:"None" }}
    +
    +
    +
    WG Sessions
    You may select multiple WGs within each category
    +
    + {% for cname, cfield, cselector in form.wg_constraint_fields %} +
    +
    +
    +
    +
    + {{ cselector }} +
    +
    + +
    +
    +
    +
    + {{ cfield.errors }}{{ cfield }} +
    +
    +
    +
    + {% empty %}{# shown if there are no constraint fields #} +
    +
    No constraints are enabled for this meeting.
    + {% endfor %} +
    +
    + + {% if form.inactive_wg_constraint_count %} +
    +
    Disabled for this meeting
    +
    + {% for cname, value, field in form.inactive_wg_constraints %} +
    +
    {{ cname|title }}
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + {% endfor %} +
    +
    + {% endif %} + +
    +
    BOF Sessions
    +
    If the sessions can not be found in the fields above, please enter free form requests in the Special Requests field below.
    +
    +
    +
    + + {% if not is_virtual %} + + {% bootstrap_field form.resources layout="horizontal" %} + + {% bootstrap_field form.timeranges layout="horizontal" %} + + {% bootstrap_field form.adjacent_with_wg layout="horizontal" %} + +
    +
    Joint session with: (To request one session for multiple WGs together)
    +
    To request a joint session with another group, please contact the secretariat.
    +
    + + {% endif %} + + {% bootstrap_field form.comments layout="horizontal" %} + + {% if form.notifications_optional %} +
    + +
    +
    + + +
    +
    +
    + {% endif %} + + + Cancel +
    + +{% endblock %} +{% block js %} + + {{ form.media }} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_info.txt b/ietf/templates/meeting/session_request_info.txt new file mode 100644 index 0000000000..2e96efb31f --- /dev/null +++ b/ietf/templates/meeting/session_request_info.txt @@ -0,0 +1,26 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% load ams_filters %} +--------------------------------------------------------- +Working Group Name: {{ group.name }} +Area Name: {{ group.parent }} +Session Requester: {{ login }} +{% if session.joint_with_groups %}{{ session.joint_for_session_display }} joint with: {{ session.joint_with_groups }}{% endif %} + +Number of Sessions: {{ session.num_session }} +Length of Session(s): {% for session_length in session_lengths %}{{ session_length.total_seconds|display_duration }}{% if not forloop.last %}, {% endif %}{% endfor %} +Number of Attendees: {{ session.attendees }} +Conflicts to Avoid: +{% for line in session.outbound_conflicts %} {{line}} +{% endfor %}{% if session.session_time_relation_display %} {{ session.session_time_relation_display }}{% endif %} +{% if session.adjacent_with_wg %} Adjacent with WG: {{ session.adjacent_with_wg }}{% endif %} +{% if session.timeranges_display %} Can't meet: {{ session.timeranges_display|join:", " }}{% endif %} + +Participants who must be present: +{% for person in session.bethere %} {{ person.ascii_name }} +{% endfor %} +Resources Requested: +{% for resource in session.resources %} {{ resource.desc }} +{% endfor %} +Special Requests: + {{ session.comments }} +--------------------------------------------------------- diff --git a/ietf/templates/meeting/session_request_list.html b/ietf/templates/meeting/session_request_list.html new file mode 100644 index 0000000000..789b7006e5 --- /dev/null +++ b/ietf/templates/meeting/session_request_list.html @@ -0,0 +1,65 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static %} +{% load ietf_filters %} +{% load django_bootstrap5 %} +{% block title %}Session Requests{% endblock %} +{% block content %} +

    Session Requests IETF {{ meeting.number }}

    + +
    + Instructions + + View list of timeslot requests + {% if user|has_role:"Secretariat" %} + {% if is_locked %} + Unlock Tool + {% else %} + Lock Tool + {% endif %} + {% endif %} +
    + +
    +
    + Request New Session +
    +
    +

    The list below includes those working groups that you currently chair which do not already have a session scheduled. You can click on an acronym to complete a request for a new session at the upcoming IETF meeting. Click "Group will not meet" to send a notification that the group does not plan to meet.

    +
      + {% for group in unscheduled_groups %} +
    • + {{ group.acronym }} + {% if group.not_meeting %} + (Currently, this group does not plan to hold a session at IETF {{ meeting.number }}) + {% endif %} +
    • + {% empty %} +
    • NONE
    • + {% endfor %} +
    +
    +
    + + +
    +
    + Edit / Cancel Previously Requested Sessions +
    +
    +

    The list below includes those working groups for which you or your co-chair has requested sessions at the upcoming IETF meeting. You can click on an acronym to initiate changes to a session, or cancel a session.

    + +
    +
    + +{% endblock %} + +{% block footer-extras %} + {% include "includes/sessions_footer.html" %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_locked.html b/ietf/templates/meeting/session_request_locked.html new file mode 100644 index 0000000000..15c023ce33 --- /dev/null +++ b/ietf/templates/meeting/session_request_locked.html @@ -0,0 +1,21 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static ietf_filters django_bootstrap5 %} +{% block title %}Session Request{% endblock %} + +{% block content %} +

    Session Request - IETF {{ meeting.number }}

    + + View list of timeslot requests + +
    + +
    +

    {{ message }}

    + +
    + +
    +
    + +{% endblock %} diff --git a/ietf/secr/templates/sreq/session_request_notification.txt b/ietf/templates/meeting/session_request_notification.txt similarity index 56% rename from ietf/secr/templates/sreq/session_request_notification.txt rename to ietf/templates/meeting/session_request_notification.txt index 75f2cbbae4..49dbbfc42c 100644 --- a/ietf/secr/templates/sreq/session_request_notification.txt +++ b/ietf/templates/meeting/session_request_notification.txt @@ -1,5 +1,6 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} {% autoescape off %}{% load ams_filters %} {% filter wordwrap:78 %}{{ header }} meeting session request has just been submitted by {{ requester }}.{% endfilter %} -{% include "includes/session_info.txt" %}{% endautoescape %} +{% include "meeting/session_request_info.txt" %}{% endautoescape %} diff --git a/ietf/templates/meeting/session_request_status.html b/ietf/templates/meeting/session_request_status.html new file mode 100644 index 0000000000..65e98d6d23 --- /dev/null +++ b/ietf/templates/meeting/session_request_status.html @@ -0,0 +1,28 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static %} +{% load ietf_filters %} +{% load django_bootstrap5 %} +{% block title %}Session Request Status{% endblock %} +{% block content %} +

    Session Request Status

    + +
    +
    + Session Request Status +
    +
    +

    Enter the message that you would like displayed to the WG Chair when this tool is locked.

    +
    {% csrf_token %} + {% bootstrap_form form %} + {% if is_locked %} + + {% else %} + + {% endif %} + +
    +
    +
    + +{% endblock %} diff --git a/ietf/templates/meeting/session_request_view.html b/ietf/templates/meeting/session_request_view.html new file mode 100644 index 0000000000..3db16f56cb --- /dev/null +++ b/ietf/templates/meeting/session_request_view.html @@ -0,0 +1,59 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% extends "base.html" %} +{% load static ietf_filters django_bootstrap5 %} +{% block title %}Session Request{% endblock %} + +{% block content %} +

    Session Request - IETF {{ meeting.number }}

    + + + +
    + +
    + + {% include "meeting/session_request_view_table.html" %} + +
    + +

    Activities Log

    +
    + + + + + + + + + + + {% for entry in activities %} + + + + + + + {% endfor %} + +
    DateTimeActionName
    {{ entry.act_date }}{{ entry.act_time }}{{ entry.activity }}{{ entry.act_by }}
    +
    + + + + {% if show_approve_button %} + Approve Third Session + {% endif %} + + Back + +
    + +{% endblock %} + +{% block js %} + +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_view_formset.html b/ietf/templates/meeting/session_request_view_formset.html new file mode 100644 index 0000000000..72811b8c2c --- /dev/null +++ b/ietf/templates/meeting/session_request_view_formset.html @@ -0,0 +1,49 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% load ams_filters %}{# keep this in sync with sessions_request_view_session_set.html #} +{% for sess_form in formset %} + {% if sess_form.cleaned_data and not sess_form.cleaned_data.DELETE %} +
    +
    + Session {{ forloop.counter }} +
    +
    +
    +
    Length
    +
    {{ sess_form.cleaned_data.requested_duration.total_seconds|display_duration }}
    +
    + {% if sess_form.cleaned_data.name %} +
    +
    Name
    +
    {{ sess_form.cleaned_data.name }}
    +
    + {% endif %} + {% if sess_form.cleaned_data.purpose.slug != 'regular' %} +
    +
    Purpose
    +
    + {{ sess_form.cleaned_data.purpose }} + {% if sess_form.cleaned_data.purpose.timeslot_types|length > 1 %}({{ sess_form.cleaned_data.type }} + ){% endif %} +
    +
    +
    +
    Onsite tool?
    +
    {{ sess_form.cleaned_data.has_onsite_tool|yesno }}
    +
    + {% endif %} +
    +
    + + {% if group.features.acts_like_wg and forloop.counter == 2 and not is_virtual %} +
    +
    + Time between sessions +
    +
    + {% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No + preference{% endif %} +
    +
    + {% endif %} + {% endif %} +{% endfor %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_view_session_set.html b/ietf/templates/meeting/session_request_view_session_set.html new file mode 100644 index 0000000000..0b8412b04f --- /dev/null +++ b/ietf/templates/meeting/session_request_view_session_set.html @@ -0,0 +1,47 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% load ams_filters %}{# keep this in sync with sessions_request_view_formset.html #} +{% for sess in session_set %} +
    +
    + Session {{ forloop.counter }} +
    +
    +
    +
    Length
    +
    {{ sess.requested_duration.total_seconds|display_duration }}
    +
    + {% if sess.name %} +
    +
    Name
    +
    {{ sess.name }}
    +
    + {% endif %} + {% if sess.purpose.slug != 'regular' %} +
    +
    Purpose
    +
    + {{ sess.purpose }} + {% if sess.purpose.timeslot_types|length > 1 %}({{ sess.type }}){% endif %} +
    +
    +
    +
    Onsite tool?
    +
    {{ sess.has_onsite_tool|yesno }}
    +
    + {% endif %} +
    +
    + +{% if group.features.acts_like_wg and forloop.counter == 2 and not is_virtual %} +
    +
    + Time between sessions +
    +
    + {% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No + preference{% endif %} +
    +
    +{% endif %} + +{% endfor %} \ No newline at end of file diff --git a/ietf/templates/meeting/session_request_view_table.html b/ietf/templates/meeting/session_request_view_table.html new file mode 100644 index 0000000000..a5cb85c252 --- /dev/null +++ b/ietf/templates/meeting/session_request_view_table.html @@ -0,0 +1,146 @@ +{# Copyright The IETF Trust 2025, All Rights Reserved #} +{% load ams_filters %} + +
    +
    + Working Group Name +
    +
    + {{ group.name }} ({{ group.acronym }}) +
    +
    + +
    +
    + Area Name +
    +
    + {{ group.parent }} +
    +
    + +
    +
    + Number of Sessions Requested +
    +
    + {% if session.third_session %}3{% else %}{{ session.num_session }}{% endif %} +
    +
    + +{% if form %} + {% include 'meeting/session_request_view_formset.html' with formset=form.session_forms group=group session=session only %} +{% else %} + {% include 'meeting/session_request_view_session_set.html' with session_set=sessions group=group session=session only %} +{% endif %} + + +
    +
    + Number of Attendees +
    +
    + {{ session.attendees }} +
    +
    + +
    +
    + Conflicts to Avoid +
    +
    + {% if session_conflicts.outbound %} + {% for conflict in session_conflicts.outbound %} +
    +
    + {{ conflict.name|title }} +
    +
    + {{ conflict.groups }} +
    +
    + {% endfor %} + {% else %}None{% endif %} +
    +
    + +
    +
    + Other WGs that included {{ group }} in their conflict list +
    +
    + {% if session_conflicts.inbound %}{{ session_conflicts.inbound }}{% else %}None so far{% endif %} +
    +
    + +{% if not is_virtual %} +
    +
    + Resources requested +
    +
    + {% if session.resources %}
      {% for resource in session.resources %}
    • {{ resource.desc }}
    • {% endfor %}
    {% else %}None so far{% endif %} +
    +
    +{% endif %} + +
    +
    + Participants who must be present +
    +
    + {% if session.bethere %}
      {% for person in session.bethere %}
    • {{ person }}
    • {% endfor %}
    {% else %}None{% endif %} +
    +
    + +
    +
    + Can not meet on +
    +
    + {% if session.timeranges_display %}{{ session.timeranges_display|join:', ' }}{% else %}No constraints{% endif %} +
    +
    + +{% if not is_virtual %} +
    +
    + Adjacent with WG +
    +
    + {{ session.adjacent_with_wg|default:'No preference' }} +
    +
    +
    +
    + Joint session +
    +
    + {% if session.joint_with_groups %} + {{ session.joint_for_session_display }} with: {{ session.joint_with_groups }} + {% else %} + Not a joint session + {% endif %} +
    +
    +{% endif %} + +
    +
    + Special Requests +
    +
    + {{ session.comments }} +
    +
    + +{% if form and form.notifications_optional %} +
    +
    + {{ form.send_notifications.label}} +
    +
    + {% if form.cleaned_data.send_notifications %}Yes{% else %}No{% endif %} +
    +
    +{% endif %} diff --git a/package.json b/package.json index e3e89288e7..e2e6fd7dab 100644 --- a/package.json +++ b/package.json @@ -118,6 +118,7 @@ "ietf/static/js/complete-review.js", "ietf/static/js/create_timeslot.js", "ietf/static/js/create_timeslot.js", + "ietf/static/js/custom_striped.js", "ietf/static/js/d3.js", "ietf/static/js/datepicker.js", "ietf/static/js/doc-search.js", @@ -148,6 +149,8 @@ "ietf/static/js/password_strength.js", "ietf/static/js/select2.js", "ietf/static/js/session_details_form.js", + "ietf/static/js/session_form.js", + "ietf/static/js/session_request.js", "ietf/static/js/sortable.js", "ietf/static/js/stats.js", "ietf/static/js/status-change-edit-relations.js", @@ -208,8 +211,6 @@ "ietf/secr/static/images/tooltag-arrowright.webp", "ietf/secr/static/images/tooltag-arrowright_over.webp", "ietf/secr/static/js/dynamic_inlines.js", - "ietf/secr/static/js/session_form.js", - "ietf/secr/static/js/sessions.js", "ietf/secr/static/js/utils.js" ] } From 4961f376756de40ca1fe1d2db6a4ec7ff32b92a9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 14 Oct 2025 14:51:43 -0500 Subject: [PATCH 660/846] feat: preview ballot email before save (#9646) (#9721) * feat: skeleton for modal email preview * fix: rudimentary transfer of the comment and discuss text * fix: put. the buttons. back. * fix: transfer of the data on the current form to the modal * fix: pull cc_select and additional_cc foward in the workflow UI * fix: refactor where ballot email is sent * fix: refactor build_position_email * chore: remove abandoned imports * chore: remove abandoned template --- ietf/doc/tests_ballot.py | 103 +++----- ietf/doc/tests_draft.py | 77 +++++- ietf/doc/tests_irsg_ballot.py | 63 +++-- ietf/doc/tests_rsab_ballot.py | 51 +--- ietf/doc/urls.py | 3 +- ietf/doc/views_ballot.py | 247 ++++++++++-------- ietf/mailtrigger/forms.py | 1 + ietf/templates/doc/ballot/edit_position.html | 89 ++++++- .../doc/ballot/send_ballot_comment.html | 44 ---- 9 files changed, 393 insertions(+), 285 deletions(-) delete mode 100644 ietf/templates/doc/ballot/send_ballot_comment.html diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index 810ee598f6..8420e411e2 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -25,7 +25,6 @@ from ietf.group.models import Group, Role from ietf.group.factories import GroupFactory, RoleFactory, ReviewTeamFactory from ietf.ipr.factories import HolderIprDisclosureFactory -from ietf.name.models import BallotPositionName from ietf.iesg.models import TelechatDate from ietf.person.models import Person from ietf.person.factories import PersonFactory, PersonalApiKeyFactory @@ -37,9 +36,18 @@ class EditPositionTests(TestCase): + + # N.B. This test needs to be rewritten to exercise all types of ballots (iesg, irsg, rsab) + # and test against the output of the mailtriggers instead of looking for hardcoded values + # in the To and CC results. See #7864 def test_edit_position(self): ad = Person.objects.get(user__username="ad") - draft = IndividualDraftFactory(ad=ad,stream_id='ietf') + draft = WgDraftFactory( + ad=ad, + stream_id="ietf", + notify="somebody@example.com", + group__acronym="mars", + ) ballot = create_ballot_if_not_open(None, draft, ad, 'approve') url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk)) @@ -55,11 +63,20 @@ def test_edit_position(self): self.assertEqual(len(q('form textarea[name=comment]')), 1) # vote + empty_outbox() events_before = draft.docevent_set.count() - - r = self.client.post(url, dict(position="discuss", - discuss=" This is a discussion test. \n ", - comment=" This is a test. \n ")) + + r = self.client.post( + url, + dict( + position="discuss", + discuss=" This is a discussion test. \n ", + comment=" This is a test. \n ", + additional_cc="test298347@example.com", + cc_choices=["doc_notify", "doc_group_chairs"], + send_mail=1, + ), + ) self.assertEqual(r.status_code, 302) pos = draft.latest_event(BallotPositionDocEvent, balloter=ad) @@ -70,6 +87,22 @@ def test_edit_position(self): self.assertTrue(pos.comment_time != None) self.assertTrue("New position" in pos.desc) self.assertEqual(draft.docevent_set.count(), events_before + 3) + self.assertEqual(len(outbox),1) + m = outbox[0] + self.assertTrue("COMMENT" in m['Subject']) + self.assertTrue("DISCUSS" in m['Subject']) + self.assertTrue(draft.name in m['Subject']) + self.assertTrue("This is a discussion test." in str(m)) + self.assertTrue("This is a test" in str(m)) + self.assertTrue("iesg@" in m['To']) + # cc_choice doc_group_chairs + self.assertTrue("mars-chairs@" in m['Cc']) + # cc_choice doc_notify + self.assertTrue("somebody@example.com" in m['Cc']) + # cc_choice doc_group_email_list was not selected + self.assertFalse(draft.group.list_email in m['Cc']) + # extra-cc + self.assertTrue("test298347@example.com" in m['Cc']) # recast vote events_before = draft.docevent_set.count() @@ -230,64 +263,6 @@ def test_cannot_edit_position_as_pre_ad(self): r = self.client.post(url, dict(position="discuss", discuss="Test discuss text")) self.assertEqual(r.status_code, 403) - # N.B. This test needs to be rewritten to exercise all types of ballots (iesg, irsg, rsab) - # and test against the output of the mailtriggers instead of looking for hardcoded values - # in the To and CC results. See #7864 - def test_send_ballot_comment(self): - ad = Person.objects.get(user__username="ad") - draft = WgDraftFactory(ad=ad,group__acronym='mars') - draft.notify = "somebody@example.com" - draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")]) - - ballot = create_ballot_if_not_open(None, draft, ad, 'approve') - - BallotPositionDocEvent.objects.create( - doc=draft, rev=draft.rev, type="changed_ballot_position", - by=ad, balloter=ad, ballot=ballot, pos=BallotPositionName.objects.get(slug="discuss"), - discuss="This draft seems to be lacking a clearer title?", - discuss_time=timezone.now(), - comment="Test!", - comment_time=timezone.now()) - - url = urlreverse('ietf.doc.views_ballot.send_ballot_comment', kwargs=dict(name=draft.name, - ballot_id=ballot.pk)) - login_testing_unauthorized(self, "ad", url) - - # normal get - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) - self.assertTrue(len(q('form input[name="extra_cc"]')) > 0) - - # send - mailbox_before = len(outbox) - - r = self.client.post(url, dict(extra_cc="test298347@example.com", cc_choices=['doc_notify','doc_group_chairs'])) - self.assertEqual(r.status_code, 302) - - self.assertEqual(len(outbox), mailbox_before + 1) - m = outbox[-1] - self.assertTrue("COMMENT" in m['Subject']) - self.assertTrue("DISCUSS" in m['Subject']) - self.assertTrue(draft.name in m['Subject']) - self.assertTrue("clearer title" in str(m)) - self.assertTrue("Test!" in str(m)) - self.assertTrue("iesg@" in m['To']) - # cc_choice doc_group_chairs - self.assertTrue("mars-chairs@" in m['Cc']) - # cc_choice doc_notify - self.assertTrue("somebody@example.com" in m['Cc']) - # cc_choice doc_group_email_list was not selected - self.assertFalse(draft.group.list_email in m['Cc']) - # extra-cc - self.assertTrue("test298347@example.com" in m['Cc']) - - r = self.client.post(url, dict(cc="")) - self.assertEqual(r.status_code, 302) - self.assertEqual(len(outbox), mailbox_before + 2) - m = outbox[-1] - self.assertTrue("iesg@" in m['To']) - self.assertFalse(m['Cc'] and draft.group.list_email in m['Cc']) class BallotWriteupsTests(TestCase): diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index ab33acebe6..4d262c5a2f 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- +import json import os import datetime import io @@ -11,7 +12,7 @@ from pathlib import Path from pyquery import PyQuery -from django.db.models import Q +from django.db.models import Max, Q from django.urls import reverse as urlreverse from django.conf import settings from django.utils import timezone @@ -2391,3 +2392,77 @@ def test_editorial_metadata(self): top_level_metadata_headings = q("tbody>tr>th:first-child").text() self.assertNotIn("IESG", top_level_metadata_headings) self.assertNotIn("IANA", top_level_metadata_headings) + +class BallotEmailAjaxTests(TestCase): + def test_ajax_build_position_email(self): + def _post_json(self, url, json_to_post): + r = self.client.post( + url, json.dumps(json_to_post), content_type="application/json" + ) + self.assertEqual(r.status_code, 200) + return json.loads(r.content) + + doc = WgDraftFactory() + ad = RoleFactory( + name_id="ad", group=doc.group, person__name="Some Areadirector" + ).person + url = urlreverse("ietf.doc.views_ballot.ajax_build_position_email") + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertEqual(r.status_code, 405) + response = _post_json(self, url, {}) + self.assertFalse(response["success"]) + self.assertEqual(response["errors"], ["post_data not provided"]) + response = _post_json(self, url, {"dictis": "not empty"}) + self.assertFalse(response["success"]) + self.assertEqual(response["errors"], ["post_data not provided"]) + response = _post_json(self, url, {"post_data": {}}) + self.assertFalse(response["success"]) + self.assertEqual(len(response["errors"]), 7) + response = _post_json( + self, + url, + { + "post_data": { + "discuss": "aaaaaa", + "comment": "bbbbbb", + "position": "discuss", + "balloter": Person.objects.aggregate(maxpk=Max("pk") + 1)["maxpk"], + "docname": "this-draft-does-not-exist", + "cc_choices": ["doc_group_mail_list"], + "additional_cc": "foo@example.com", + } + }, + ) + self.assertFalse(response["success"]) + self.assertEqual( + response["errors"], + ["No person found matching balloter", "No document found matching docname"], + ) + response = _post_json( + self, + url, + { + "post_data": { + "discuss": "aaaaaa", + "comment": "bbbbbb", + "position": "discuss", + "balloter": ad.pk, + "docname": doc.name, + "cc_choices": ["doc_group_mail_list"], + "additional_cc": "foo@example.com", + } + }, + ) + self.assertTrue(response["success"]) + for snippet in [ + "aaaaaa", + "bbbbbb", + "DISCUSS", + ad.plain_name(), + doc.name, + doc.group.list_email, + "foo@example.com", + ]: + self.assertIn(snippet, response["text"]) + diff --git a/ietf/doc/tests_irsg_ballot.py b/ietf/doc/tests_irsg_ballot.py index aa62d8aaf9..d96cf9dbef 100644 --- a/ietf/doc/tests_irsg_ballot.py +++ b/ietf/doc/tests_irsg_ballot.py @@ -355,28 +355,35 @@ def test_issue_ballot(self): def test_take_and_email_position(self): draft = RgDraftFactory() ballot = IRSGBallotDocEventFactory(doc=draft) - url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk)) + self.balloter + url = ( + urlreverse( + "ietf.doc.views_ballot.edit_position", + kwargs=dict(name=draft.name, ballot_id=ballot.pk), + ) + + self.balloter + ) empty_outbox() login_testing_unauthorized(self, self.username, url) r = self.client.get(url) self.assertEqual(r.status_code, 200) - r = self.client.post(url, dict(position='yes', comment='oib239sb', send_mail='Save and send email')) + empty_outbox() + r = self.client.post( + url, + dict( + position="yes", + comment="oib239sb", + send_mail="Save and send email", + cc_choices=["doc_authors", "doc_group_chairs", "doc_group_mail_list"], + ), + ) self.assertEqual(r.status_code, 302) e = draft.latest_event(BallotPositionDocEvent) - self.assertEqual(e.pos.slug,'yes') - self.assertEqual(e.comment, 'oib239sb') - - url = urlreverse('ietf.doc.views_ballot.send_ballot_comment', kwargs=dict(name=draft.name, ballot_id=ballot.pk)) + self.balloter - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - - r = self.client.post(url, dict(cc_choices=['doc_authors','doc_group_chairs','doc_group_mail_list'], body="Stuff")) - self.assertEqual(r.status_code, 302) - self.assertEqual(len(outbox),1) - self.assertNotIn('discuss-criteria', get_payload_text(outbox[0])) + self.assertEqual(e.pos.slug, "yes") + self.assertEqual(e.comment, "oib239sb") + self.assertEqual(len(outbox), 1) + self.assertNotIn("discuss-criteria", get_payload_text(outbox[0])) def test_close_ballot(self): draft = RgDraftFactory() @@ -482,27 +489,31 @@ def test_cant_take_position_on_iesg_ballot(self): def test_take_and_email_position(self): draft = RgDraftFactory() ballot = IRSGBallotDocEventFactory(doc=draft) - url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name, ballot_id=ballot.pk)) + url = urlreverse( + "ietf.doc.views_ballot.edit_position", + kwargs=dict(name=draft.name, ballot_id=ballot.pk), + ) empty_outbox() login_testing_unauthorized(self, self.username, url) r = self.client.get(url) self.assertEqual(r.status_code, 200) - r = self.client.post(url, dict(position='yes', comment='oib239sb', send_mail='Save and send email')) + r = self.client.post( + url, + dict( + position="yes", + comment="oib239sb", + send_mail="Save and send email", + cc_choices=["doc_authors", "doc_group_chairs", "doc_group_mail_list"], + ), + ) self.assertEqual(r.status_code, 302) e = draft.latest_event(BallotPositionDocEvent) - self.assertEqual(e.pos.slug,'yes') - self.assertEqual(e.comment, 'oib239sb') - - url = urlreverse('ietf.doc.views_ballot.send_ballot_comment', kwargs=dict(name=draft.name, ballot_id=ballot.pk)) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - - r = self.client.post(url, dict(cc_choices=['doc_authors','doc_group_chairs','doc_group_mail_list'], body="Stuff")) + self.assertEqual(e.pos.slug, "yes") + self.assertEqual(e.comment, "oib239sb") self.assertEqual(r.status_code, 302) - self.assertEqual(len(outbox),1) + self.assertEqual(len(outbox), 1) class IESGMemberTests(TestCase): diff --git a/ietf/doc/tests_rsab_ballot.py b/ietf/doc/tests_rsab_ballot.py index 028f548232..9086106ba9 100644 --- a/ietf/doc/tests_rsab_ballot.py +++ b/ietf/doc/tests_rsab_ballot.py @@ -333,34 +333,19 @@ def test_take_and_email_position(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) - r = self.client.post( - url, - dict(position="yes", comment="oib239sb", send_mail="Save and send email"), - ) - self.assertEqual(r.status_code, 302) - e = draft.latest_event(BallotPositionDocEvent) - self.assertEqual(e.pos.slug, "yes") - self.assertEqual(e.comment, "oib239sb") - - url = ( - urlreverse( - "ietf.doc.views_ballot.send_ballot_comment", - kwargs=dict(name=draft.name, ballot_id=ballot.pk), - ) - + self.balloter - ) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - r = self.client.post( url, dict( + position="yes", + comment="oib239sb", + send_mail="Save and send email", cc_choices=["doc_authors", "doc_group_chairs", "doc_group_mail_list"], - body="Stuff", ), ) self.assertEqual(r.status_code, 302) + e = draft.latest_event(BallotPositionDocEvent) + self.assertEqual(e.pos.slug, "yes") + self.assertEqual(e.comment, "oib239sb") self.assertEqual(len(outbox), 1) self.assertNotIn("discuss-criteria", get_payload_text(outbox[0])) @@ -532,31 +517,19 @@ def test_take_and_email_position(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) - r = self.client.post( - url, - dict(position="yes", comment="oib239sb", send_mail="Save and send email"), - ) - self.assertEqual(r.status_code, 302) - e = draft.latest_event(BallotPositionDocEvent) - self.assertEqual(e.pos.slug, "yes") - self.assertEqual(e.comment, "oib239sb") - - url = urlreverse( - "ietf.doc.views_ballot.send_ballot_comment", - kwargs=dict(name=draft.name, ballot_id=ballot.pk), - ) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - r = self.client.post( url, dict( + position="yes", + comment="oib239sb", + send_mail="Save and send email", cc_choices=["doc_authors", "doc_group_chairs", "doc_group_mail_list"], - body="Stuff", ), ) self.assertEqual(r.status_code, 302) + e = draft.latest_event(BallotPositionDocEvent) + self.assertEqual(e.pos.slug, "yes") + self.assertEqual(e.comment, "oib239sb") self.assertEqual(len(outbox), 1) diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index 7b444782d7..8e9c0569e2 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -93,6 +93,8 @@ url(r'^ballots/irsg/$', views_ballot.irsg_ballot_status), url(r'^ballots/rsab/$', views_ballot.rsab_ballot_status), + url(r'^build-position-email/$', views_ballot.ajax_build_position_email), + url(r'^(?P(bcp|std|fyi))/?$', views_search.index_subseries), url(r'^%(name)s(?:/%(rev)s)?/$' % settings.URL_REGEXPS, views_doc.document_main), @@ -111,7 +113,6 @@ url(r'^%(name)s/ballot/rsab/$' % settings.URL_REGEXPS, views_doc.document_rsab_ballot), url(r'^%(name)s/ballot/(?P[0-9]+)/$' % settings.URL_REGEXPS, views_doc.document_ballot), url(r'^%(name)s/ballot/(?P[0-9]+)/position/$' % settings.URL_REGEXPS, views_ballot.edit_position), - url(r'^%(name)s/ballot/(?P[0-9]+)/emailposition/$' % settings.URL_REGEXPS, views_ballot.send_ballot_comment), url(r'^%(name)s/(?:%(rev)s/)?doc.json$' % settings.URL_REGEXPS, views_doc.document_json), url(r'^%(name)s/ballotpopup/(?P[0-9]+)/$' % settings.URL_REGEXPS, views_doc.ballot_popup), url(r'^(?P[A-Za-z0-9._+-]+)/reviewrequest/', include("ietf.doc.urls_review")), diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 0ba340890d..03cf01a4a1 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -4,18 +4,18 @@ # Directors and Secretariat -import datetime, json +import datetime +import json from django import forms from django.conf import settings -from django.http import HttpResponse, HttpResponseRedirect, Http404, HttpResponseBadRequest +from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseRedirect, Http404, HttpResponseBadRequest from django.shortcuts import render, get_object_or_404, redirect from django.template.defaultfilters import striptags from django.template.loader import render_to_string from django.urls import reverse as urlreverse from django.views.decorators.csrf import csrf_exempt from django.utils.html import escape -from urllib.parse import urlencode as urllib_urlencode import debug # pyflakes:ignore @@ -34,14 +34,15 @@ from ietf.doc.templatetags.ietf_filters import can_ballot from ietf.iesg.models import TelechatDate from ietf.ietfauth.utils import has_role, role_required, is_authorized_in_doc_stream +from ietf.mailtrigger.models import Recipient from ietf.mailtrigger.utils import gather_address_lists from ietf.mailtrigger.forms import CcSelectForm from ietf.message.utils import infer_message from ietf.name.models import BallotPositionName, DocTypeName from ietf.person.models import Person -from ietf.utils.fields import ModelMultipleChoiceField +from ietf.utils.fields import ModelMultipleChoiceField, MultiEmailField from ietf.utils.http import validate_return_to_path -from ietf.utils.mail import send_mail_text, send_mail_preformatted +from ietf.utils.mail import decode_header_value, send_mail_text, send_mail_preformatted from ietf.utils.decorators import require_api_key from ietf.utils.response import permission_denied from ietf.utils.timezone import date_today, datetime_from_date, DEADLINE_TZINFO @@ -179,6 +180,9 @@ def save_position(form, doc, ballot, balloter, login=None, send_email=False): return pos +class AdditionalCCForm(forms.Form): + additional_cc = MultiEmailField(required=False) + @role_required("Area Director", "Secretariat", "IRSG Member", "RSAB Member") def edit_position(request, name, ballot_id): """Vote and edit discuss and comment on document""" @@ -199,50 +203,67 @@ def edit_position(request, name, ballot_id): raise Http404 balloter = get_object_or_404(Person, pk=balloter_id) + if doc.stream_id == 'irtf': + mailtrigger_slug='irsg_ballot_saved' + elif doc.stream_id == 'editorial': + mailtrigger_slug='rsab_ballot_saved' + else: + mailtrigger_slug='iesg_ballot_saved' + if request.method == 'POST': old_pos = None if not has_role(request.user, "Secretariat") and not can_ballot(request.user, doc): # prevent pre-ADs from taking a position permission_denied(request, "Must be an active member (not a pre-AD for example) of the balloting body to take a position") + if request.POST.get("Defer") and doc.stream.slug != "irtf": + return redirect('ietf.doc.views_ballot.defer_ballot', name=doc) + elif request.POST.get("Undefer") and doc.stream.slug != "irtf": + return redirect('ietf.doc.views_ballot.undefer_ballot', name=doc) + form = EditPositionForm(request.POST, ballot_type=ballot.ballot_type) - if form.is_valid(): + cc_select_form = CcSelectForm(data=request.POST,mailtrigger_slug=mailtrigger_slug,mailtrigger_context={'doc':doc}) + additional_cc_form = AdditionalCCForm(request.POST) + if form.is_valid() and cc_select_form.is_valid() and additional_cc_form.is_valid(): send_mail = True if request.POST.get("send_mail") else False - save_position(form, doc, ballot, balloter, login, send_mail) - + pos = save_position(form, doc, ballot, balloter, login, send_mail) if send_mail: - query = {} - if request.GET.get('balloter'): - query['balloter'] = request.GET.get('balloter') - if request.GET.get('ballot_edit_return_point'): - query['ballot_edit_return_point'] = request.GET.get('ballot_edit_return_point') - qstr = "" - if len(query) > 0: - qstr = "?" + urllib_urlencode(query, safe='/') - return HttpResponseRedirect(urlreverse('ietf.doc.views_ballot.send_ballot_comment', kwargs=dict(name=doc.name, ballot_id=ballot_id)) + qstr) - elif request.POST.get("Defer") and doc.stream.slug != "irtf": - return redirect('ietf.doc.views_ballot.defer_ballot', name=doc) - elif request.POST.get("Undefer") and doc.stream.slug != "irtf": - return redirect('ietf.doc.views_ballot.undefer_ballot', name=doc) - else: - return HttpResponseRedirect(return_to_url) + addrs, frm, subject, body = build_position_email(balloter, doc, pos) + if doc.stream_id == 'irtf': + mailtrigger_slug='irsg_ballot_saved' + elif doc.stream_id == 'editorial': + mailtrigger_slug='rsab_ballot_saved' + else: + mailtrigger_slug='iesg_ballot_saved' + cc = [] + cc.extend(cc_select_form.get_selected_addresses()) + extra_cc = additional_cc_form.cleaned_data["additional_cc"] + if extra_cc: + cc.extend(extra_cc) + cc_set = set(cc) + cc_set.discard("") + cc = sorted(list(cc_set)) + send_mail_text(request, addrs.to, frm, subject, body, cc=", ".join(cc)) + return redirect(return_to_url) else: initial = {} old_pos = doc.latest_event(BallotPositionDocEvent, type="changed_ballot_position", balloter=balloter, ballot=ballot) if old_pos: initial['position'] = old_pos.pos.slug initial['discuss'] = old_pos.discuss - initial['comment'] = old_pos.comment - + initial['comment'] = old_pos.comment form = EditPositionForm(initial=initial, ballot_type=ballot.ballot_type) + cc_select_form = CcSelectForm(mailtrigger_slug=mailtrigger_slug,mailtrigger_context={'doc':doc}) + additional_cc_form = AdditionalCCForm() blocking_positions = dict((p.pk, p.name) for p in form.fields["position"].queryset.all() if p.blocking) - ballot_deferred = doc.active_defer_event() return render(request, 'doc/ballot/edit_position.html', dict(doc=doc, form=form, + cc_select_form=cc_select_form, + additional_cc_form=additional_cc_form, balloter=balloter, return_to_url=return_to_url, old_pos=old_pos, @@ -301,21 +322,98 @@ def err(code, text): ) -def build_position_email(balloter, doc, pos): +@role_required("Area Director", "Secretariat") +@csrf_exempt +def ajax_build_position_email(request): + if request.method != "POST": + return HttpResponseNotAllowed(["POST"]) + errors = list() + try: + json_body = json.loads(request.body) + except json.decoder.JSONDecodeError: + errors.append("Post body is not valid json") + if len(errors) == 0: + post_data = json_body.get("post_data") + if post_data is None: + errors.append("post_data not provided") + else: + for key in [ + "discuss", + "comment", + "position", + "balloter", + "docname", + "cc_choices", + "additional_cc", + ]: + if key not in post_data: + errors.append(f"{key} not found in post_data") + if len(errors) == 0: + person = Person.objects.filter(pk=post_data.get("balloter")).first() + if person is None: + errors.append("No person found matching balloter") + doc = Document.objects.filter(name=post_data.get("docname")).first() + if doc is None: + errors.append("No document found matching docname") + if len(errors) > 0: + response = { + "success": False, + "errors": errors, + } + else: + wanted = dict() # consider named tuple instead + wanted["discuss"] = post_data.get("discuss") + wanted["comment"] = post_data.get("comment") + wanted["position_name"] = post_data.get("position") + wanted["balloter"] = person + wanted["doc"] = doc + addrs, frm, subject, body = build_position_email_from_dict(wanted) + + recipient_slugs = post_data.get("cc_choices") + # Consider refactoring gather_address_lists so this isn't duplicated from there + cc_addrs = set() + for r in Recipient.objects.filter(slug__in=recipient_slugs): + cc_addrs.update(r.gather(doc=doc)) + additional_cc = post_data.get("additional_cc") + for addr in additional_cc.split(","): + cc_addrs.add(addr.strip()) + cc_addrs.discard("") + cc_addrs = sorted(list(cc_addrs)) + + response_text = "\n".join( + [ + f"From: {decode_header_value(frm)}", + f"To: {', '.join([decode_header_value(addr) for addr in addrs.to])}", + f"Cc: {', '.join([decode_header_value(addr) for addr in cc_addrs])}", + f"Subject: {subject}", + "", + body, + ] + ) + + response = { + "success": True, + "text": response_text, + } + return HttpResponse(json.dumps(response), content_type="application/json") + +def build_position_email_from_dict(pos_dict): + doc = pos_dict["doc"] subj = [] d = "" blocking_name = "DISCUSS" - if pos.pos.blocking and pos.discuss: - d = pos.discuss - blocking_name = pos.pos.name.upper() + pos_name = BallotPositionName.objects.filter(slug=pos_dict["position_name"]).first() + if pos_name.blocking and pos_dict.get("discuss"): + d = pos_dict.get("discuss") + blocking_name = pos_name.name.upper() subj.append(blocking_name) c = "" - if pos.comment: - c = pos.comment + if pos_dict.get("comment"): + c = pos_dict.get("comment") subj.append("COMMENT") - + balloter = pos_dict.get("balloter") balloter_name_genitive = balloter.plain_name() + "'" if balloter.plain_name().endswith('s') else balloter.plain_name() + "'s" - subject = "%s %s on %s" % (balloter_name_genitive, pos.pos.name if pos.pos else "No Position", doc.name + "-" + doc.rev) + subject = "%s %s on %s" % (balloter_name_genitive, pos_name.name if pos_name else "No Position", doc.name + "-" + doc.rev) if subj: subject += ": (with %s)" % " and ".join(subj) @@ -324,7 +422,7 @@ def build_position_email(balloter, doc, pos): comment=c, balloter=balloter.plain_name(), doc=doc, - pos=pos.pos, + pos=pos_name, blocking_name=blocking_name, settings=settings)) frm = balloter.role_email("ad").formatted_email() @@ -338,79 +436,16 @@ def build_position_email(balloter, doc, pos): return addrs, frm, subject, body -@role_required('Area Director','Secretariat','IRSG Member', 'RSAB Member') -def send_ballot_comment(request, name, ballot_id): - """Email document ballot position discuss/comment for Area Director.""" - doc = get_object_or_404(Document, name=name) - ballot = get_object_or_404(BallotDocEvent, type="created_ballot", pk=ballot_id, doc=doc) - if not has_role(request.user, 'Secretariat'): - if any([ - doc.stream_id == 'ietf' and not has_role(request.user, 'Area Director'), - doc.stream_id == 'irtf' and not has_role(request.user, 'IRSG Member'), - doc.stream_id == 'editorial' and not has_role(request.user, 'RSAB Member'), - ]): - raise Http404 - - balloter = request.user.person - - try: - return_to_url = parse_ballot_edit_return_point(request.GET.get('ballot_edit_return_point'), doc.name, ballot_id) - except ValueError: - return HttpResponseBadRequest('ballot_edit_return_point is invalid') - - if 'HTTP_REFERER' in request.META: - back_url = request.META['HTTP_REFERER'] - else: - back_url = urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name, ballot_id=ballot_id)) - - # if we're in the Secretariat, we can select a balloter (such as an AD) to act as stand-in for - if has_role(request.user, "Secretariat"): - balloter_id = request.GET.get('balloter') - if not balloter_id: - raise Http404 - balloter = get_object_or_404(Person, pk=balloter_id) - - pos = doc.latest_event(BallotPositionDocEvent, type="changed_ballot_position", balloter=balloter, ballot=ballot) - if not pos: - raise Http404 - - addrs, frm, subject, body = build_position_email(balloter, doc, pos) - - if doc.stream_id == 'irtf': - mailtrigger_slug='irsg_ballot_saved' - elif doc.stream_id == 'editorial': - mailtrigger_slug='rsab_ballot_saved' - else: - mailtrigger_slug='iesg_ballot_saved' - - if request.method == 'POST': - cc = [] - cc_select_form = CcSelectForm(data=request.POST,mailtrigger_slug=mailtrigger_slug,mailtrigger_context={'doc':doc}) - if cc_select_form.is_valid(): - cc.extend(cc_select_form.get_selected_addresses()) - extra_cc = [x.strip() for x in request.POST.get("extra_cc","").split(',') if x.strip()] - if extra_cc: - cc.extend(extra_cc) - - send_mail_text(request, addrs.to, frm, subject, body, cc=", ".join(cc)) - - return HttpResponseRedirect(return_to_url) - - else: +def build_position_email(balloter, doc, pos): - cc_select_form = CcSelectForm(mailtrigger_slug=mailtrigger_slug,mailtrigger_context={'doc':doc}) - - return render(request, 'doc/ballot/send_ballot_comment.html', - dict(doc=doc, - subject=subject, - body=body, - frm=frm, - to=addrs.as_strings().to, - balloter=balloter, - back_url=back_url, - cc_select_form = cc_select_form, - )) + pos_dict=dict() + pos_dict["doc"]=doc + pos_dict["position_name"]=pos.pos.slug + pos_dict["discuss"]=pos.discuss + pos_dict["comment"]=pos.comment + pos_dict["balloter"]=balloter + return build_position_email_from_dict(pos_dict) @role_required('Area Director','Secretariat') def clear_ballot(request, name, ballot_type_slug): diff --git a/ietf/mailtrigger/forms.py b/ietf/mailtrigger/forms.py index 366c429d8c..8d13c5edf3 100644 --- a/ietf/mailtrigger/forms.py +++ b/ietf/mailtrigger/forms.py @@ -11,6 +11,7 @@ class CcSelectForm(forms.Form): expansions = dict() # type: Dict[str, List[str]] cc_choices = forms.MultipleChoiceField( + required=False, label='Cc', choices=[], widget=forms.CheckboxSelectMultiple(), diff --git a/ietf/templates/doc/ballot/edit_position.html b/ietf/templates/doc/ballot/edit_position.html index 293c186112..b57e9a3652 100644 --- a/ietf/templates/doc/ballot/edit_position.html +++ b/ietf/templates/doc/ballot/edit_position.html @@ -20,24 +20,48 @@

    Ballot deferred by {{ ballot_deferred.by }} on {{ ballot_deferred.time|date:"Y-m-d" }}.

    {% endif %} +
    +
    + {% if form.errors or cc_select_form.errors or additional_cc_form.errors %} +
    + There were errors in the submitted form -- see below. Please correct these and resubmit. +
    + {% if form.errors %} +
    Position entry
    + {% bootstrap_form_errors form %} + {% endif %} + {% if cc_select_form.errors %} +
    CC selection
    + {% bootstrap_form_errors cc_select_form %} + {% endif %} + {% if additional_cc_form.errors %} +
    Additional Cc Addresses
    + {% bootstrap_form_errors additional_cc_form %} + {% endif %} + {% endif %}
    {% csrf_token %} {% for field in form %} {% if field.name == "discuss" %}
    {% endif %} {% bootstrap_field field %} {% if field.name == "discuss" and old_pos and old_pos.discuss_time %} -
    Last edited {{ old_pos.discuss_time }}
    +
    Last saved {{ old_pos.discuss_time }}
    {% elif field.name == "comment" and old_pos and old_pos.comment_time %} -
    Last edited {{ old_pos.comment_time }}
    +
    Last saved {{ old_pos.comment_time }}
    {% endif %} {% if field.name == "discuss" %}
    {% endif %} {% endfor %} + {% bootstrap_form cc_select_form %} + {% bootstrap_form additional_cc_form %}
    + - + {% if doc.type_id == "draft" or doc.type_id == "conflrev" %} {% if doc.stream.slug != "irtf" %} {% if ballot_deferred %} @@ -58,7 +82,24 @@

    Back

    -
    + + + {% endblock %} {% block js %} + + {% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/ballot/send_ballot_comment.html b/ietf/templates/doc/ballot/send_ballot_comment.html deleted file mode 100644 index 1c5f521859..0000000000 --- a/ietf/templates/doc/ballot/send_ballot_comment.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} -{% load origin %} -{% load django_bootstrap5 %} -{% load ietf_filters %} -{% block title %}Send ballot position for {{ balloter }} on {{ doc }}{% endblock %} -{% block content %} - {% origin %} -

    - Send ballot position for {{ balloter }} -
    - {{ doc }} -

    -
    - {% csrf_token %} -
    - - -
    -
    - - -
    - {% bootstrap_form cc_select_form %} -
    - - -
    Separate email addresses with commas.
    -
    -
    - - -
    -
    -

    Body

    -
    {{ body|maybewordwrap }}
    -
    - - - Back - -
    -{% endblock %} From 8f2feef631acbd8b181a845140647c2c83a9299f Mon Sep 17 00:00:00 2001 From: NGPixel Date: Tue, 14 Oct 2025 18:57:50 -0400 Subject: [PATCH 661/846] ci: update build workflow to deploy to dev --- .github/workflows/build.yml | 71 ++--- dev/k8s-get-deploy-name/.editorconfig | 7 + dev/k8s-get-deploy-name/.gitignore | 1 + dev/k8s-get-deploy-name/.npmrc | 3 + dev/k8s-get-deploy-name/README.md | 16 ++ dev/k8s-get-deploy-name/cli.js | 22 ++ dev/k8s-get-deploy-name/package-lock.json | 303 ++++++++++++++++++++++ dev/k8s-get-deploy-name/package.json | 8 + 8 files changed, 396 insertions(+), 35 deletions(-) create mode 100644 dev/k8s-get-deploy-name/.editorconfig create mode 100644 dev/k8s-get-deploy-name/.gitignore create mode 100644 dev/k8s-get-deploy-name/.npmrc create mode 100644 dev/k8s-get-deploy-name/README.md create mode 100644 dev/k8s-get-deploy-name/cli.js create mode 100644 dev/k8s-get-deploy-name/package-lock.json create mode 100644 dev/k8s-get-deploy-name/package.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8567446cae..15eaba48d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,13 +16,13 @@ on: - Skip - Staging Only - Staging + Prod - sandbox: - description: 'Deploy to Sandbox' + dev: + description: 'Deploy to Dev' default: true required: true type: boolean - sandboxNoDbRefresh: - description: 'Sandbox Disable Daily DB Refresh' + devNoDbRefresh: + description: 'Dev Disable Daily DB Refresh' default: false required: true type: boolean @@ -392,44 +392,45 @@ jobs: value: "Failed" # ----------------------------------------------------------------- - # SANDBOX + # DEV # ----------------------------------------------------------------- - sandbox: - name: Deploy to Sandbox - if: ${{ !failure() && !cancelled() && github.event.inputs.sandbox == 'true' }} + dev: + name: Deploy to Dev + if: ${{ !failure() && !cancelled() && github.event.inputs.dev == 'true' }} needs: [prepare, release] - runs-on: [self-hosted, dev-server] + runs-on: ubuntu-latest environment: - name: sandbox + name: dev env: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} steps: - - uses: actions/checkout@v4 - - - name: Download a Release Artifact - uses: actions/download-artifact@v4.3.0 - with: - name: release-${{ env.PKG_VERSION }} - - - name: Deploy to containers - env: - DEBIAN_FRONTEND: noninteractive - run: | - echo "Reset production flags in settings.py..." - sed -i -r -e 's/^DEBUG *= *.*$/DEBUG = True/' -e "s/^SERVER_MODE *= *.*\$/SERVER_MODE = 'development'/" ietf/settings.py - echo "Install Deploy to Container CLI dependencies..." - cd dev/deploy-to-container - npm ci - cd ../.. - echo "Start Deploy..." - node ./dev/deploy-to-container/cli.js --branch ${{ github.ref_name }} --domain dev.ietf.org --appversion ${{ env.PKG_VERSION }} --commit ${{ github.sha }} --ghrunid ${{ github.run_id }} --nodbrefresh ${{ github.event.inputs.sandboxNoDbRefresh }} - - - name: Cleanup old docker resources - env: - DEBIAN_FRONTEND: noninteractive - run: | - docker image prune -a -f + - uses: actions/checkout@v4 + with: + ref: main + + - name: Get Deploy Name + env: + DEBIAN_FRONTEND: noninteractive + run: | + echo "Install Get Deploy Name CLI dependencies..." + cd dev/k8s-get-deploy-name + npm ci + echo "Get Deploy Name..." + echo "DEPLOY_NAMESPACE=$(node cli.js --branch ${{ github.ref_name }})" >> "$GITHUB_ENV" + + - name: Deploy to dev + uses: the-actions-org/workflow-dispatch@v4 + 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 }}" }' + wait-for-completion: true + wait-for-completion-timeout: 30m + wait-for-completion-interval: 30s + display-workflow-run-url: false # ----------------------------------------------------------------- # STAGING diff --git a/dev/k8s-get-deploy-name/.editorconfig b/dev/k8s-get-deploy-name/.editorconfig new file mode 100644 index 0000000000..fec5c66519 --- /dev/null +++ b/dev/k8s-get-deploy-name/.editorconfig @@ -0,0 +1,7 @@ +[*] +indent_size = 2 +indent_style = space +charset = utf-8 +trim_trailing_whitespace = false +end_of_line = lf +insert_final_newline = true diff --git a/dev/k8s-get-deploy-name/.gitignore b/dev/k8s-get-deploy-name/.gitignore new file mode 100644 index 0000000000..07e6e472cc --- /dev/null +++ b/dev/k8s-get-deploy-name/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/dev/k8s-get-deploy-name/.npmrc b/dev/k8s-get-deploy-name/.npmrc new file mode 100644 index 0000000000..580a68c499 --- /dev/null +++ b/dev/k8s-get-deploy-name/.npmrc @@ -0,0 +1,3 @@ +audit = false +fund = false +save-exact = true diff --git a/dev/k8s-get-deploy-name/README.md b/dev/k8s-get-deploy-name/README.md new file mode 100644 index 0000000000..a6605e4dd2 --- /dev/null +++ b/dev/k8s-get-deploy-name/README.md @@ -0,0 +1,16 @@ +# Datatracker Get Deploy Name + +This tool process and slugify a git branch into an appropriate subdomain name. + +## Usage + +1. From the `dev/k8s-get-deploy-name` directory, install the dependencies: +```sh +npm install +``` +2. Run the command: (replacing the `branch` argument) +```sh +node /cli.js --branch feat/fooBar-123 +``` + +The subdomain name will be output. It can then be used in a workflow as a namespace name and subdomain value. diff --git a/dev/k8s-get-deploy-name/cli.js b/dev/k8s-get-deploy-name/cli.js new file mode 100644 index 0000000000..b6c3b5119e --- /dev/null +++ b/dev/k8s-get-deploy-name/cli.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +import yargs from 'yargs/yargs' +import { hideBin } from 'yargs/helpers' +import slugify from 'slugify' + +const argv = yargs(hideBin(process.argv)).argv + +let branch = argv.branch +if (!branch) { + throw new Error('Missing --branch argument!') +} +if (branch.indexOf('/') >= 0) { + branch = branch.split('/').slice(1).join('-') +} +branch = slugify(branch, { lower: true, strict: true }) +if (branch.length < 1) { + throw new Error('Branch name is empty!') +} +process.stdout.write(`dt-${branch}`) + +process.exit(0) diff --git a/dev/k8s-get-deploy-name/package-lock.json b/dev/k8s-get-deploy-name/package-lock.json new file mode 100644 index 0000000000..e492a4cd38 --- /dev/null +++ b/dev/k8s-get-deploy-name/package-lock.json @@ -0,0 +1,303 @@ +{ + "name": "k8s-get-deploy-name", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "k8s-get-deploy-name", + "dependencies": { + "slugify": "1.6.6", + "yargs": "17.7.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "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/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "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==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" + }, + "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==", + "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", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } +} diff --git a/dev/k8s-get-deploy-name/package.json b/dev/k8s-get-deploy-name/package.json new file mode 100644 index 0000000000..849f5d9b8d --- /dev/null +++ b/dev/k8s-get-deploy-name/package.json @@ -0,0 +1,8 @@ +{ + "name": "k8s-get-deploy-name", + "type": "module", + "dependencies": { + "slugify": "1.6.6", + "yargs": "17.7.2" + } +} From 5a7be260dd6dfd9c484bc7c50ef991642fa8ad8e Mon Sep 17 00:00:00 2001 From: NGPixel Date: Wed, 15 Oct 2025 03:07:07 -0400 Subject: [PATCH 662/846] chore: add disableDailyDbRefresh flag to build workflow --- .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 15eaba48d1..4c70456a73 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -426,7 +426,7 @@ jobs: 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 }}" }' + 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-interval: 30s From 93c1124c21267556625df760c68f35f6d4ae8139 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 15 Oct 2025 13:06:45 -0500 Subject: [PATCH 663/846] ci: add ruff to devcontainer (#9731) --- .devcontainer/devcontainer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6b0fd79bb3..bf28550084 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,6 @@ "dbaeumer.vscode-eslint", "eamodio.gitlens", "editorconfig.editorconfig", - // Newer volar >=3.0.0 causes crashes in devcontainers "vue.volar@2.2.10", "mrmlnc.vscode-duplicate", "ms-azuretools.vscode-docker", @@ -35,7 +34,8 @@ "redhat.vscode-yaml", "spmeesseman.vscode-taskexplorer", "visualstudioexptteam.vscodeintellicode", - "ms-python.pylint" + "ms-python.pylint", + "charliermarsh.ruff" ], "settings": { "terminal.integrated.defaultProfile.linux": "zsh", From d5660ab8e953fec25dbb20025aba73b2e58f0609 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 15 Oct 2025 18:30:18 -0300 Subject: [PATCH 664/846] fix: unbreak EmptyAwareJSONField (#9732) * fix: specify default form_class correctly * style: ruff ruff --- ietf/utils/db.py | 63 ++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/ietf/utils/db.py b/ietf/utils/db.py index 865c9b999f..49c89da13a 100644 --- a/ietf/utils/db.py +++ b/ietf/utils/db.py @@ -1,33 +1,44 @@ -# Copyright The IETF Trust 2021, All Rights Reserved -# -*- coding: utf-8 -*- - -# Taken from/inspired by -# https://stackoverflow.com/questions/55147169/django-admin-jsonfield-default-empty-dict-wont-save-in-admin -# -# JSONField should recognize {}, (), and [] as valid, non-empty JSON -# values. However, the base Field class excludes them +# Copyright The IETF Trust 2021-2025, All Rights Reserved import jsonfield from django.db import models -from ietf.utils.fields import IETFJSONField as FormIETFJSONField, EmptyAwareJSONField as FormEmptyAwareJSONField +from ietf.utils.fields import ( + IETFJSONField as FormIETFJSONField, + EmptyAwareJSONField as FormEmptyAwareJSONField, +) class EmptyAwareJSONField(models.JSONField): - form_class = FormEmptyAwareJSONField + """JSONField that allows empty JSON values when model specifies empty=False + + Taken from/inspired by + https://stackoverflow.com/questions/55147169/django-admin-jsonfield-default-empty-dict-wont-save-in-admin + + JSONField should recognize {}, (), and [] as valid, non-empty JSON values. - def __init__(self, *args, empty_values=FormEmptyAwareJSONField.empty_values, accepted_empty_values=None, **kwargs): + If customizing the formfield, the field must accept the `empty_values` argument. + """ + + def __init__( + self, + *args, + empty_values=FormEmptyAwareJSONField.empty_values, + accepted_empty_values=None, + **kwargs, + ): if accepted_empty_values is None: accepted_empty_values = [] - self.empty_values = [x - for x in empty_values - if x not in accepted_empty_values] + self.empty_values = [x for x in empty_values if x not in accepted_empty_values] super().__init__(*args, **kwargs) def formfield(self, **kwargs): - if 'form_class' not in kwargs or issubclass(kwargs['form_class'], FormEmptyAwareJSONField): - kwargs.setdefault('empty_values', self.empty_values) - return super().formfield(**{**kwargs}) + defaults = { + "form_class": FormEmptyAwareJSONField, + "empty_values": self.empty_values, + } + defaults.update(kwargs) + return super().formfield(**defaults) class IETFJSONField(jsonfield.JSONField): # pragma: no cover @@ -36,15 +47,21 @@ class IETFJSONField(jsonfield.JSONField): # pragma: no cover # Remove this class when migrations are squashed and it is no longer referenced form_class = FormIETFJSONField - def __init__(self, *args, empty_values=FormIETFJSONField.empty_values, accepted_empty_values=None, **kwargs): + def __init__( + self, + *args, + empty_values=FormIETFJSONField.empty_values, + accepted_empty_values=None, + **kwargs, + ): if accepted_empty_values is None: accepted_empty_values = [] - self.empty_values = [x - for x in empty_values - if x not in accepted_empty_values] + self.empty_values = [x for x in empty_values if x not in accepted_empty_values] super().__init__(*args, **kwargs) def formfield(self, **kwargs): - if 'form_class' not in kwargs or issubclass(kwargs['form_class'], FormIETFJSONField): - kwargs.setdefault('empty_values', self.empty_values) + if "form_class" not in kwargs or issubclass( + kwargs["form_class"], FormIETFJSONField + ): + kwargs.setdefault("empty_values", self.empty_values) return super().formfield(**{**kwargs}) From 1d2d304fa5c99db6cd2a944328246ce900c73b3c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 16 Oct 2025 12:39:04 -0300 Subject: [PATCH 665/846] fix: improve proceedings caching/performance (#9733) * refactor: speed up get_attendance() * fix: avoid cache invalidation by later draft rev * fix: guard against empty value * feat: freeze cache key for final proceedings --- ietf/meeting/models.py | 28 +++++++++++++++++++++------- ietf/meeting/utils.py | 39 +++++++++++++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index f3df23e916..9e44df33b7 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -250,25 +250,39 @@ def get_attendance(self): # MeetingRegistration.attended started conflating badge-pickup and session attendance before IETF 114. # We've separated session attendance off to ietf.meeting.Attended, but need to report attendance at older # meetings correctly. - + # + # Looking up by registration and attendance records separately and joining in + # python is far faster than combining the Q objects in the query (~100x). + # Further optimization may be possible, but the queries are tricky... attended_per_meeting_registration = ( Q(registration__meeting=self) & ( Q(registration__attended=True) | Q(registration__checkedin=True) ) ) + attendees_by_reg = set( + Person.objects.filter(attended_per_meeting_registration).values_list( + "pk", flat=True + ) + ) + attended_per_meeting_attended = ( Q(attended__session__meeting=self) # Note that we are not filtering to plenary, wg, or rg sessions # as we do for nomcom eligibility - if picking up a badge (see above) # is good enough, just attending e.g. a training session is also good enough ) - attended = Person.objects.filter( - attended_per_meeting_registration | attended_per_meeting_attended - ).distinct() - - onsite = set(attended.filter(registration__meeting=self, registration__tickets__attendance_type__slug='onsite')) - remote = set(attended.filter(registration__meeting=self, registration__tickets__attendance_type__slug='remote')) + attendees_by_att = set( + Person.objects.filter(attended_per_meeting_attended).values_list( + "pk", flat=True + ) + ) + + attendees = Person.objects.filter( + pk__in=attendees_by_att | attendees_by_reg + ) + onsite = set(attendees.filter(registration__meeting=self, registration__tickets__attendance_type__slug='onsite')) + remote = set(attendees.filter(registration__meeting=self, registration__tickets__attendance_type__slug='remote')) remote.difference_update(onsite) return Attendance( diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index f6925269aa..feadb0c7fd 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -1027,10 +1027,41 @@ def generate_proceedings_content(meeting, force_refresh=False): :force_refresh: true to force regeneration and cache refresh """ cache = caches["default"] - cache_version = Document.objects.filter(session__meeting__number=meeting.number).aggregate(Max('time'))["time__max"] - # Include proceedings_final in the bare_key so we'll always reflect that accurately, even at the cost of - # a recomputation in the view - bare_key = f"proceedings.{meeting.number}.{cache_version}.final={meeting.proceedings_final}" + key_components = [ + "proceedings", + str(meeting.number), + ] + if meeting.proceedings_final: + # Freeze the cache key once proceedings are finalized. Further changes will + # not be picked up until the cache expires or is refreshed by the + # proceedings_content_refresh_task() + key_components.append("final") + else: + # Build a cache key that changes when materials are modified. For all but drafts, + # use the last modification time of the document. Exclude drafts from this because + # revisions long after the meeting ends will otherwise show up as changes and + # incorrectly invalidate the cache. Instead, include an ordered list of the + # drafts linked to the meeting so adding or removing drafts will trigger a + # recalculation. The list is long but that doesn't matter because we hash it into + # a fixed-length key. + meeting_docs = Document.objects.filter(session__meeting__number=meeting.number) + last_materials_update = ( + meeting_docs.exclude(type_id="draft") + .filter(session__meeting__number=meeting.number) + .aggregate(Max("time"))["time__max"] + ) + draft_names = ( + meeting_docs + .filter(type_id="draft") + .order_by("name") + .values_list("name", flat=True) + ) + key_components += [ + last_materials_update.isoformat() if last_materials_update else "-", + ",".join(draft_names), + ] + + bare_key = ".".join(key_components) cache_key = sha384(bare_key.encode("utf8")).hexdigest() if not force_refresh: cached_content = cache.get(cache_key, None) From 2cfbaf90c3504a53135d61f9bf976bab3b388eb9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 16 Oct 2025 14:28:13 -0300 Subject: [PATCH 666/846] ci: drop caching from build images step (#9738) --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c70456a73..7eac7b1c64 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -278,8 +278,6 @@ jobs: tags: | ghcr.io/ietf-tools/datatracker:${{ env.PKG_VERSION }} ${{ env.FEATURE_LATEST_TAG && format('ghcr.io/ietf-tools/datatracker:{0}-latest', env.FEATURE_LATEST_TAG) || null }} - cache-from: type=gha - cache-to: type=gha,mode=max - name: Update CHANGELOG id: changelog From b0ec8c4b27d6225c6ffa6cac27ce554ec4a49a7c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 17 Oct 2025 13:08:11 -0300 Subject: [PATCH 667/846] chore: remove unused variables (#9742) --- ietf/meeting/models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 9e44df33b7..7d9e318aab 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -956,8 +956,6 @@ class Meta: def __str__(self): return u"%s -> %s-%s" % (self.session, self.document.name, self.rev) -constraint_cache_uses = 0 -constraint_cache_initials = 0 class SessionQuerySet(models.QuerySet): def with_current_status(self): From 62f720ceaf951fba91b5a818473d798663dfbf1d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 21 Oct 2025 12:31:39 -0300 Subject: [PATCH 668/846] ci: imagePullPolicy for migration container (#9764) --- k8s/datatracker.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/k8s/datatracker.yaml b/k8s/datatracker.yaml index 3d9e86a29d..50a2c69687 100644 --- a/k8s/datatracker.yaml +++ b/k8s/datatracker.yaml @@ -115,6 +115,7 @@ spec: initContainers: - name: migration image: "ghcr.io/ietf-tools/datatracker:$APP_IMAGE_TAG" + imagePullPolicy: Always env: - name: "CONTAINER_ROLE" value: "migrations" From a3a3d215ca4067e722ead94e886175adb589e235 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 23 Oct 2025 12:14:48 -0500 Subject: [PATCH 669/846] fix: don't limit from_contact for incoming liaison statements (#9773) --- ietf/liaisons/forms.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index ef5b29535e..1747e55571 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -495,14 +495,18 @@ def set_from_fields(self): self.fields['from_groups'].initial = qs # Note that the IAB chair currently doesn't get to work with incoming liaison statements - if not ( - has_role(self.user, "Secretariat") - or has_role(self.user, "Liaison Coordinator") - ): - self.fields["from_contact"].initial = ( - self.person.role_set.filter(group=qs[0]).first().email.formatted_email() - ) - self.fields["from_contact"].widget.attrs["disabled"] = True + + # Removing this block at the request of the IAB - as a workaround until the new liaison tool is + # create, anyone with access to the form can set any from_contact value + # + # if not ( + # has_role(self.user, "Secretariat") + # or has_role(self.user, "Liaison Coordinator") + # ): + # self.fields["from_contact"].initial = ( + # self.person.role_set.filter(group=qs[0]).first().email.formatted_email() + # ) + # self.fields["from_contact"].widget.attrs["disabled"] = True def set_to_fields(self): '''Set to_groups and to_contacts options and initial value based on user From 1243957f06da485e5cf4c04a8479d551817d4d78 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 23 Oct 2025 14:15:22 -0300 Subject: [PATCH 670/846] feat: unversioned proceedings cache (#9779) * feat: separate, unversioned proceedings cache * refactor: don't double-hash the cache key --- ietf/meeting/utils.py | 8 ++++---- ietf/settings.py | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index feadb0c7fd..afcf7656f2 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -5,7 +5,6 @@ import jsonschema import os import requests -from hashlib import sha384 import pytz import subprocess @@ -1026,7 +1025,7 @@ def generate_proceedings_content(meeting, force_refresh=False): :meeting: meeting whose proceedings should be rendered :force_refresh: true to force regeneration and cache refresh """ - cache = caches["default"] + cache = caches["proceedings"] key_components = [ "proceedings", str(meeting.number), @@ -1061,8 +1060,9 @@ def generate_proceedings_content(meeting, force_refresh=False): ",".join(draft_names), ] - bare_key = ".".join(key_components) - cache_key = sha384(bare_key.encode("utf8")).hexdigest() + # Key is potentially long, but the "proceedings" cache hashes it to a fixed + # length. If that changes, hash it separately here first. + cache_key = ".".join(key_components) if not force_refresh: cached_content = cache.get(cache_key, None) if cached_content is not None: diff --git a/ietf/settings.py b/ietf/settings.py index 9a213c1a73..5e576430ed 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1374,6 +1374,17 @@ def skip_unreadable_post(record): "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", "VERSION": __version__, "KEY_PREFIX": "ietf:dt", + # 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}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt:proceedings", + # 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()}" ), @@ -1421,6 +1432,17 @@ def skip_unreadable_post(record): "VERSION": __version__, "KEY_PREFIX": "ietf:dt", }, + "proceedings": { + "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:proceedings", + # 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()}" + ), + }, "sessions": { "BACKEND": "django.core.cache.backends.locmem.LocMemCache", }, From 6412d1e24a9c499c39245bba58c2c31ec8110c0e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 23 Oct 2025 17:41:06 -0300 Subject: [PATCH 671/846] feat: blobstore-driven meeting materials (#9780) * feat: meeting materials blob resolver API (#9700) * refactor: exclude_deleted() for StoredObject queryset * chore: comment * feat: meeting materials blob resolver API * feat: materials blob retrieval API (#9728) * feat: materials blob retrieval API (WIP) * refactor: alphabetize ARTIFACT_STORAGE_NAMES * chore: limit buckets served * refactor: any-meeting option in _get_materials_doc() * feat: create missing blobs on retrieval * feat: render HTML from markdown via API (#9729) * chore: add comment * fix: allow bluesheets to be retrieved Normally not retrieved through /meeting/materials, but they're close enough in purpose that we might as well make them available. * fix: only update StoredObject.modified if changed * fix: preserve mtime when creating blob * refactor: better exception name * feat: render .md.html from .md blob * fix: explicit STATIC_IETF_ORG value in template Django's context_processors are not applied to render_string calls as we use them here, so settings are not available. * fix: typo * fix: decode utf-8 properly * feat: use filesystem to render .md.html * fix: copy/paste error in api_resolve_materials_name * refactor: get actual rev in _get_materials_doc (#9741) * fix: return filename, not full path * feat: precompute blob lookups for meeting materials (#9746) * feat: ResolvedMaterial model + migration * feat: method to populate ResolvedMaterial (WIP) * refactor: don't delete ResolvedMaterials Instead of deleting the ResolvedMaterials for a meeting, which might lose updates made during processing, update existing rows with any changes and warn if anything changed during the process. * fix: fix _get_materials_doc() Did not handle the possibility of multiple DocHistory objects with the same rev. * refactor: factor out material lookup helper * feat: resolve blobs via blobdb/fs for cache * chore: add resource * feat: admin for ResolvedMaterial * feat: cache-driven resolve materials API * fix: add all ResolvedMaterials; var names * fix: handle null case * feat: resolve_meeting_materials_task * feat: update resolver cache on material upload (#9759) * feat: robustness + date range for resolve materials task (#9760) * fix: limit types added to ResolvedMaterial * feat: resolve meeting materials in order by date * feat: add meetings_until param * fix: log&continue if resolving fails on a meeting * feat: log error message on parse errors * refactor: move ResolvedMaterial to blobdb app (#9762) * refactor: move ResolvedMaterial to blobdb app * fix: undo accidental removal * chore: fix lint (#9767) * fix: don't use DocHistory to find materials (#9771) * fix: don't use DocHistory to validate revs The DocHistory records are incomplete and, in particular, -00 revs are often missing. * Revert "refactor: get actual rev in _get_materials_doc (#9741)" This reverts commit 7fd15801 * chore: remove the on-demand resolver api * chore: fix lint * feat: populate materials buckets (#9777) * refactor: drop .txt from filename_with_rev() * feat: utilities to populate materials blobs * feat: store materials for a full meeting as blobs Plus a bunch of fixup from working with real data. (Based on meetings 71, 83, and 118, picked arbitrarily) * chore: update migration * feat: task to store materials in blobdb * refactor: reimplement api_retrieve_materials_blob * fix: update resolving task, fix bugs * Revert "refactor: drop .txt from filename_with_rev()" This reverts commit a849d0f92d4df54296a7062b6c3a05fb0977be93. * chore: fix lint --------- Co-authored-by: Robert Sparks --- ietf/api/urls.py | 3 + ietf/blobdb/admin.py | 11 +- .../migrations/0002_resolvedmaterial.py | 48 +++ ietf/blobdb/models.py | 20 + ietf/doc/models.py | 9 + ietf/doc/storage.py | 10 +- ietf/doc/storage_utils.py | 12 +- ietf/doc/views_material.py | 4 + ietf/meeting/resources.py | 14 +- ietf/meeting/tasks.py | 131 ++++++- ietf/meeting/utils.py | 355 +++++++++++++++++- ietf/meeting/views.py | 177 ++++++++- ietf/settings.py | 44 ++- ietf/templates/minimal.html | 4 +- 14 files changed, 798 insertions(+), 44 deletions(-) create mode 100644 ietf/blobdb/migrations/0002_resolvedmaterial.py diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 6f2efb3c1e..04575b34cb 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -49,6 +49,9 @@ url(r'^group/role-holder-addresses/$', api_views.role_holder_addresses), # Let IESG members set positions programmatically url(r'^iesg/position', views_ballot.api_set_position), + # Find the blob to store for a given materials document path + url(r'^meeting/(?:(?P(?:interim-)?[a-z0-9-]+)/)?materials/%(document)s(?P\.[A-Za-z0-9]+)?/resolve-cached/$' % settings.URL_REGEXPS, meeting_views.api_resolve_materials_name_cached), + url(r'^meeting/blob/(?P[a-z0-9-]+)/(?P[a-z][a-z0-9.-]+)$', meeting_views.api_retrieve_materials_blob), # Let Meetecho set session video URLs url(r'^meeting/session/video/url$', meeting_views.api_set_session_video_url), # Let Meetecho tell us the name of its recordings diff --git a/ietf/blobdb/admin.py b/ietf/blobdb/admin.py index f4cd002e07..3e1a2a311f 100644 --- a/ietf/blobdb/admin.py +++ b/ietf/blobdb/admin.py @@ -3,7 +3,7 @@ from django.db.models.functions import Length from rangefilter.filters import DateRangeQuickSelectListFilterBuilder -from .models import Blob +from .models import Blob, ResolvedMaterial @admin.register(Blob) @@ -29,3 +29,12 @@ def get_queryset(self, request): def object_size(self, instance): """Get the size of the object""" return instance.object_size # annotation added in get_queryset() + + +@admin.register(ResolvedMaterial) +class ResolvedMaterialAdmin(admin.ModelAdmin): + model = ResolvedMaterial + list_display = ["name", "meeting_number", "bucket", "blob"] + list_filter = ["meeting_number", "bucket"] + search_fields = ["name", "blob"] + ordering = ["name"] diff --git a/ietf/blobdb/migrations/0002_resolvedmaterial.py b/ietf/blobdb/migrations/0002_resolvedmaterial.py new file mode 100644 index 0000000000..e0ab405b11 --- /dev/null +++ b/ietf/blobdb/migrations/0002_resolvedmaterial.py @@ -0,0 +1,48 @@ +# Copyright The IETF Trust 2025, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("blobdb", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="ResolvedMaterial", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(help_text="Name to resolve", max_length=300)), + ( + "meeting_number", + models.CharField( + help_text="Meeting material is related to", max_length=64 + ), + ), + ( + "bucket", + models.CharField(help_text="Resolved bucket name", max_length=255), + ), + ( + "blob", + models.CharField(help_text="Resolved blob name", max_length=300), + ), + ], + ), + migrations.AddConstraint( + model_name="resolvedmaterial", + constraint=models.UniqueConstraint( + fields=("name", "meeting_number"), name="unique_name_per_meeting" + ), + ), + ] diff --git a/ietf/blobdb/models.py b/ietf/blobdb/models.py index 8f423d9f6c..fa7831f203 100644 --- a/ietf/blobdb/models.py +++ b/ietf/blobdb/models.py @@ -96,3 +96,23 @@ def _emit_blob_change_event(self, using=None): ), using=using, ) + + +class ResolvedMaterial(models.Model): + # A Document name can be 255 characters; allow this name to be a bit longer + name = models.CharField(max_length=300, help_text="Name to resolve") + meeting_number = models.CharField( + max_length=64, help_text="Meeting material is related to" + ) + bucket = models.CharField(max_length=255, help_text="Resolved bucket name") + blob = models.CharField(max_length=300, help_text="Resolved blob name") + + class Meta: + constraints = [ + models.UniqueConstraint( + fields=["name", "meeting_number"], name="unique_name_per_meeting" + ) + ] + + def __str__(self): + return f"{self.name}@{self.meeting_number} -> {self.bucket}:{self.blob}" diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 25ee734cbe..8bb79b64ed 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -913,6 +913,7 @@ def role_for_doc(self): roles.append('Action Holder') return ', '.join(roles) +# N.B., at least a couple dozen documents exist that do not satisfy this validator validate_docname = RegexValidator( r'^[-a-z0-9]+$', "Provide a valid document name consisting of lowercase letters, numbers and hyphens.", @@ -1588,9 +1589,17 @@ class BofreqResponsibleDocEvent(DocEvent): """ Capture the responsible leadership (IAB and IESG members) for a BOF Request """ responsible = models.ManyToManyField('person.Person', blank=True) + +class StoredObjectQuerySet(models.QuerySet): + def exclude_deleted(self): + return self.filter(deleted__isnull=True) + + class StoredObject(models.Model): """Hold metadata about objects placed in object storage""" + objects = StoredObjectQuerySet.as_manager() + store = models.CharField(max_length=256) name = models.CharField(max_length=1024, null=False, blank=False) # N.B. the 1024 limit on name comes from S3 sha384 = models.CharField(max_length=96) diff --git a/ietf/doc/storage.py b/ietf/doc/storage.py index a234ef2d4f..375620ccaf 100644 --- a/ietf/doc/storage.py +++ b/ietf/doc/storage.py @@ -32,7 +32,7 @@ def __init__(self, file, name, mtime=None, content_type="", store=None, doc_name @classmethod def from_storedobject(cls, file, name, store): """Alternate constructor for objects that already exist in the StoredObject table""" - stored_object = StoredObject.objects.filter(store=store, name=name, deleted__isnull=True).first() + stored_object = StoredObject.objects.exclude_deleted().filter(store=store, name=name).first() if stored_object is None: raise FileNotFoundError(f"StoredObject for {store}:{name} does not exist or was deleted") file = cls(file, name, store, doc_name=stored_object.doc_name, doc_rev=stored_object.doc_rev) @@ -140,7 +140,11 @@ def _save_stored_object(self, name, content) -> StoredObject: ), ), ) - if not created: + if not created and ( + record.sha384 != content.custom_metadata["sha384"] + or record.len != int(content.custom_metadata["len"]) + or record.deleted is not None + ): record.sha384 = content.custom_metadata["sha384"] record.len = int(content.custom_metadata["len"]) record.modified = now @@ -160,7 +164,7 @@ def _delete_stored_object(self, name) -> Optional[StoredObject]: else: now = timezone.now() # Note that existing_record is a queryset that will have one matching object - existing_record.filter(deleted__isnull=True).update(deleted=now) + existing_record.exclude_deleted().update(deleted=now) return existing_record.first() def _save(self, name, content): diff --git a/ietf/doc/storage_utils.py b/ietf/doc/storage_utils.py index 510c98c4f5..81588c83ec 100644 --- a/ietf/doc/storage_utils.py +++ b/ietf/doc/storage_utils.py @@ -12,6 +12,14 @@ from ietf.utils.log import log +class StorageUtilsError(Exception): + pass + + +class AlreadyExistsError(StorageUtilsError): + pass + + def _get_storage(kind: str) -> Storage: if kind in settings.ARTIFACT_STORAGE_NAMES: return storages[kind] @@ -70,7 +78,7 @@ def store_file( # debug.show('f"Asked to store {name} in {kind}: is_new={is_new}, allow_overwrite={allow_overwrite}"') if not allow_overwrite and not is_new: debug.show('f"Failed to save {kind}:{name} - name already exists in store"') - raise RuntimeError(f"Failed to save {kind}:{name} - name already exists in store") + raise AlreadyExistsError(f"Failed to save {kind}:{name} - name already exists in store") new_name = _get_storage(kind).save( name, StoredObjectFile( @@ -85,7 +93,7 @@ def store_file( if new_name != name: complaint = f"Error encountered saving '{name}' - results stored in '{new_name}' instead." debug.show("complaint") - raise RuntimeError(complaint) + raise StorageUtilsError(complaint) except Exception as err: log(f"Blobstore Error: Failed to store file {kind}:{name}: {repr(err)}") if settings.SERVER_MODE == "development": diff --git a/ietf/doc/views_material.py b/ietf/doc/views_material.py index 6f8b8a8f12..eefac0ca61 100644 --- a/ietf/doc/views_material.py +++ b/ietf/doc/views_material.py @@ -22,6 +22,7 @@ from ietf.doc.utils import add_state_change_event, check_common_doc_name_rules from ietf.group.models import Group from ietf.group.utils import can_manage_materials +from ietf.meeting.utils import resolve_uploaded_material from ietf.utils import log from ietf.utils.decorators import ignore_view_kwargs from ietf.utils.meetecho import MeetechoAPIError, SlidesManager @@ -179,6 +180,9 @@ def edit_material(request, name=None, acronym=None, action=None, doc_type=None): "There was an error creating a hardlink at %s pointing to %s: %s" % (ftp_filepath, filepath, ex) ) + else: + for meeting in set([s.meeting for s in doc.session_set.all()]): + resolve_uploaded_material(meeting=meeting, doc=doc) if prev_rev != doc.rev: e = NewRevisionDocEvent(type="new_revision", doc=doc, rev=doc.rev) diff --git a/ietf/meeting/resources.py b/ietf/meeting/resources.py index ede2b5b993..88562a88fe 100644 --- a/ietf/meeting/resources.py +++ b/ietf/meeting/resources.py @@ -11,11 +11,15 @@ from ietf import api -from ietf.meeting.models import ( Meeting, ResourceAssociation, Constraint, Room, Schedule, Session, - TimeSlot, SchedTimeSessAssignment, SessionPresentation, FloorPlan, - UrlResource, ImportantDate, SlideSubmission, SchedulingEvent, - BusinessConstraint, ProceedingsMaterial, MeetingHost, Attended, - Registration, RegistrationTicket) +from ietf.meeting.models import (Meeting, ResourceAssociation, Constraint, Room, + Schedule, Session, + TimeSlot, SchedTimeSessAssignment, SessionPresentation, + FloorPlan, + UrlResource, ImportantDate, SlideSubmission, + SchedulingEvent, + BusinessConstraint, ProceedingsMaterial, MeetingHost, + Attended, + Registration, RegistrationTicket) from ietf.name.resources import MeetingTypeNameResource class MeetingResource(ModelResource): diff --git a/ietf/meeting/tasks.py b/ietf/meeting/tasks.py index 784eb00d87..c361325f9a 100644 --- a/ietf/meeting/tasks.py +++ b/ietf/meeting/tasks.py @@ -1,13 +1,20 @@ -# Copyright The IETF Trust 2024, All Rights Reserved +# Copyright The IETF Trust 2024-2025, All Rights Reserved # # Celery task definitions # +import datetime + from celery import shared_task +# from django.db.models import QuerySet from django.utils import timezone from ietf.utils import log from .models import Meeting -from .utils import generate_proceedings_content +from .utils import ( + generate_proceedings_content, + resolve_materials_for_one_meeting, + store_blobs_for_one_meeting, +) from .views import generate_agenda_data from .utils import fetch_attendance_from_meetings @@ -61,3 +68,123 @@ def fetch_meeting_attendance_task(): meeting_stats['processed'] ) ) + + +def _select_meetings( + meetings: list[str] | None = None, + meetings_since: str | None = None, + meetings_until: str | None = None +): # nyah + """Select meetings by number or date range""" + # IETF-1 = 1986-01-16 + EARLIEST_MEETING_DATE = datetime.datetime(1986, 1, 1) + meetings_since_dt: datetime.datetime | None = None + meetings_until_dt: datetime.datetime | None = None + + if meetings_since == "zero": + meetings_since_dt = EARLIEST_MEETING_DATE + elif meetings_since is not None: + try: + meetings_since_dt = datetime.datetime.fromisoformat(meetings_since) + except ValueError: + log.log( + "Failed to parse meetings_since='{meetings_since}' with fromisoformat" + ) + raise + + if meetings_until is not None: + try: + meetings_until_dt = datetime.datetime.fromisoformat(meetings_until) + except ValueError: + log.log( + "Failed to parse meetings_until='{meetings_until}' with fromisoformat" + ) + raise + if meetings_since_dt is None: + # if we only got meetings_until, start from the first meeting + meetings_since_dt = EARLIEST_MEETING_DATE + + if meetings is None: + if meetings_since_dt is None: + log.log("No meetings requested, doing nothing.") + return Meeting.objects.none() + meetings_qs = Meeting.objects.filter(date__gte=meetings_since_dt) + if meetings_until_dt is not None: + meetings_qs = meetings_qs.filter(date__lte=meetings_until_dt) + log.log( + "Selecting meetings between " + f"{meetings_since_dt} and {meetings_until_dt}" + ) + else: + log.log(f"Selecting meetings since {meetings_since_dt}") + else: + if meetings_since_dt is not None: + log.log( + "Ignoring meetings_since and meetings_until " + "because specific meetings were requested." + ) + meetings_qs = Meeting.objects.filter(number__in=meetings) + return meetings_qs + + +@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 +): + """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. + """ + meetings_qs = _select_meetings(meetings, meetings_since, meetings_until) + for meeting in meetings_qs.order_by("date"): + log.log( + f"Resolving materials for {meeting.type_id} " + f"meeting {meeting.number} ({meeting.date})..." + ) + mark = timezone.now() + try: + resolve_materials_for_one_meeting(meeting) + except Exception as err: + log.log( + "Exception raised while resolving materials for " + f"meeting {meeting.number}: {err}" + ) + else: + log.log(f"Resolved in {(timezone.now() - mark).total_seconds():0.3f} seconds.") + + +@shared_task +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 +): + """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. + """ + meetings_qs = _select_meetings(meetings, meetings_since, meetings_until) + for meeting in meetings_qs.order_by("date"): + log.log( + f"Creating blobs for materials for {meeting.type_id} " + f"meeting {meeting.number} ({meeting.date})..." + ) + mark = timezone.now() + try: + store_blobs_for_one_meeting(meeting) + except Exception as err: + log.log( + "Exception raised while creating blobs for " + f"meeting {meeting.number}: {err}" + ) + else: + log.log( + f"Blobs created in {(timezone.now() - mark).total_seconds():0.3f} seconds.") diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index afcf7656f2..bdf3d3d3d3 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -2,6 +2,9 @@ # -*- coding: utf-8 -*- import datetime import itertools +from contextlib import suppress +from dataclasses import dataclass + import jsonschema import os import requests @@ -26,16 +29,33 @@ import debug # pyflakes:ignore from ietf.dbtemplate.models import DBTemplate -from ietf.doc.storage_utils import store_bytes, store_str -from ietf.meeting.models import (Session, SchedulingEvent, TimeSlot, - Constraint, SchedTimeSessAssignment, SessionPresentation, Attended, - Registration, Meeting, RegistrationTicket) -from ietf.doc.models import Document, State, NewRevisionDocEvent, StateDocEvent +from ietf.doc.storage_utils import store_bytes, store_str, AlreadyExistsError +from ietf.meeting.models import ( + Session, + SchedulingEvent, + TimeSlot, + Constraint, + SchedTimeSessAssignment, + SessionPresentation, + Attended, + Registration, + Meeting, + RegistrationTicket, +) +from ietf.blobdb.models import ResolvedMaterial +from ietf.doc.models import ( + Document, + State, + NewRevisionDocEvent, + StateDocEvent, + StoredObject, +) from ietf.doc.models import DocEvent from ietf.group.models import Group from ietf.group.utils import can_manage_materials from ietf.name.models import SessionStatusName, ConstraintName, DocTypeName from ietf.person.models import Person +from ietf.utils import markdown from ietf.utils.html import clean_html from ietf.utils.log import log from ietf.utils.timezone import date_today @@ -220,6 +240,7 @@ def save_bluesheet(request, session, file, encoding='utf-8'): save_error = handle_upload_file(file, filename, session.meeting, 'bluesheets', request=request, encoding=encoding) if not save_error: doc.save_with_history([e]) + resolve_uploaded_material(meeting=session.meeting, doc=doc) return save_error @@ -832,6 +853,330 @@ def write_doc_for_session(session, type_id, filename, contents): store_str(type_id, filename.name, contents) return None + +@dataclass +class BlobSpec: + bucket: str + name: str + + +def resolve_one_material( + doc: Document, rev: str | None, ext: str | None +) -> BlobSpec | None: + if doc.type_id is None: + log(f"Cannot resolve a doc with no type: {doc.name}") + return None + + # Get the Document's base name. It may or may not have an extension. + if rev is None: + basename = Path(doc.get_base_name()) + else: + basename = Path(f"{doc.name}-{int(rev):02d}") + + # If the document's file exists, the blob is _always_ named with this stem, + # even if it's different from the original. + blob_stem = Path(f"{doc.name}-{rev or doc.rev}") + + # If we have an extension, either from the URL or the Document's base name, look up + # the blob or file or return 404. N.b. the suffix check needs adjustment to handle + # a bare "." extension when we reach py3.14. + if ext or basename.suffix != "": + if ext: + blob_name = str(blob_stem.with_suffix(ext)) + else: + blob_name = str(blob_stem.with_suffix(basename.suffix)) + + # See if we have a stored object under that name + preferred_blob = ( + StoredObject.objects.exclude_deleted() + .filter(store=doc.type_id, name=blob_name) + .first() + ) + if preferred_blob is not None: + return BlobSpec( + bucket=preferred_blob.store, + name=preferred_blob.name, + ) + # No stored object, fall back to the file system. + filename = Path(doc.get_file_path()) / basename # use basename for file + if filename.is_file(): + return BlobSpec( + bucket=doc.type_id, + name=str(blob_stem.with_suffix(filename.suffix)), + ) + else: + return None + + # No extension has been specified so far, so look one up. + matching_stored_objects = ( + StoredObject.objects.exclude_deleted() + .filter( + store=doc.type_id, + name__startswith=f"{blob_stem}.", # anchor to end with trailing "." + ) + .order_by("name") + ) # orders by suffix + blob_ext_choices = { + Path(stored_obj.name).suffix: stored_obj + for stored_obj in matching_stored_objects + } + + # Short-circuit to return pdf if present + if ".pdf" in blob_ext_choices: + pdf_blob = blob_ext_choices[".pdf"] + return BlobSpec( + bucket=pdf_blob.store, + name=str(blob_stem.with_suffix(".pdf")), + ) + + # Now look for files + filename = Path(doc.get_file_path()) / basename + file_ext_choices = { + # Construct a map from suffix to full filename + fn.suffix: fn.name + for fn in sorted(filename.parent.glob(filename.stem + ".*")) + } + + # Short-circuit to return pdf if we have the file + if ".pdf" in file_ext_choices: + return BlobSpec( + bucket=doc.type_id, + name=str(blob_stem.with_suffix(".pdf")), + ) + + all_exts = set(blob_ext_choices.keys()).union(file_ext_choices.keys()) + if len(all_exts) > 0: + preferred_ext = sorted(all_exts)[0] + if preferred_ext in blob_ext_choices: + preferred_blob = blob_ext_choices[preferred_ext] + return BlobSpec( + bucket=preferred_blob.store, + name=preferred_blob.name, + ) + else: + return BlobSpec( + bucket=doc.type_id, + name=str(blob_stem.with_suffix(preferred_ext)), + ) + + return None + + +def resolve_materials_for_one_meeting(meeting: Meeting): + start_time = timezone.now() + meeting_documents = ( + Document.objects.filter( + type_id__in=settings.MATERIALS_TYPES_SERVED_BY_WORKER + ).filter( + Q(session__meeting=meeting) | Q(proceedingsmaterial__meeting=meeting) + ) + ).distinct() + + resolved = [] + for doc in meeting_documents: + # request by doc name with no rev + blob = resolve_one_material(doc, rev=None, ext=None) + if blob is not None: + resolved.append( + ResolvedMaterial( + name=doc.name, + meeting_number=meeting.number, + bucket=blob.bucket, + blob=blob.name, + ) + ) + # request by doc name + rev + blob = resolve_one_material(doc, rev=doc.rev, ext=None) + if blob is not None: + resolved.append( + ResolvedMaterial( + name=f"{doc.name}-{doc.rev:02}", + meeting_number=meeting.number, + bucket=blob.bucket, + blob=blob.name, + ) + ) + # for other revisions, only need request by doc name + rev + other_revisions = doc.revisions_by_newrevisionevent() + other_revisions.remove(doc.rev) + for rev in other_revisions: + blob = resolve_one_material(doc, rev=rev, ext=None) + if blob is not None: + resolved.append( + ResolvedMaterial( + name=f"{doc.name}-{rev:02}", + meeting_number=meeting.number, + bucket=blob.bucket, + blob=blob.name, + ) + ) + ResolvedMaterial.objects.bulk_create( + resolved, + update_conflicts=True, + unique_fields=["name", "meeting_number"], + update_fields=["bucket", "blob"], + ) + # Warn if any files were updated during the above process + last_update = meeting_documents.aggregate(Max("time"))["time__max"] + if last_update and last_update > start_time: + log( + f"Warning: materials for meeting {meeting.number} " + "changed during ResolvedMaterial update" + ) + +def resolve_uploaded_material(meeting: Meeting, doc: Document): + resolved = [] + blob = resolve_one_material(doc, rev=None, ext=None) + if blob is not None: + resolved.append( + ResolvedMaterial( + name=doc.name, + meeting_number=meeting.number, + bucket=blob.bucket, + blob=blob.name, + ) + ) + # request by doc name + rev + blob = resolve_one_material(doc, rev=doc.rev, ext=None) + if blob is not None: + resolved.append( + ResolvedMaterial( + name=f"{doc.name}-{doc.rev:02}", + meeting_number=meeting.number, + bucket=blob.bucket, + blob=blob.name, + ) + ) + ResolvedMaterial.objects.bulk_create( + resolved, + update_conflicts=True, + unique_fields=["name", "meeting_number"], + update_fields=["bucket", "blob"], + ) + + +def store_blob_for_one_material_file(doc: Document, rev: str, filepath: Path): + if not settings.ENABLE_BLOBSTORAGE: + raise RuntimeError("Cannot store blobs: ENABLE_BLOBSTORAGE is False") + + bucket = doc.type_id + if bucket not in settings.MATERIALS_TYPES_SERVED_BY_WORKER: + raise ValueError(f"Bucket {bucket} not found for doc {doc.name}.") + blob_stem = f"{doc.name}-{rev}" + suffix = filepath.suffix # includes leading "." + + # Store the file + try: + file_bytes = filepath.read_bytes() + except Exception as err: + log(f"Failed to read {filepath}: {err}") + raise + with suppress(AlreadyExistsError): + store_bytes( + kind=bucket, + name= blob_stem + suffix, + content=file_bytes, + mtime=datetime.datetime.fromtimestamp( + filepath.stat().st_mtime, + tz=datetime.UTC, + ), + allow_overwrite=False, + doc_name=doc.name, + doc_rev=rev, + ) + + # Special case: pre-render markdown into HTML as .md.html + if suffix == ".md": + try: + markdown_source = file_bytes.decode("utf-8") + except UnicodeDecodeError as err: + log(f"Unable to decode {filepath} as UTF-8, treating as latin-1: {err}") + markdown_source = file_bytes.decode("latin-1") + # render the markdown + try: + html = render_to_string( + "minimal.html", + { + "content": markdown.markdown(markdown_source), + "title": blob_stem, + "static_ietf_org": settings.STATIC_IETF_ORG, + }, + ) + except Exception as err: + log(f"Failed to render markdown for {filepath}: {err}") + else: + # Don't overwrite, but don't fail if the blob exists + with suppress(AlreadyExistsError): + store_str( + kind=bucket, + name=blob_stem + ".md.html", + content=html, + allow_overwrite=False, + doc_name=doc.name, + doc_rev=rev, + content_type="text/html;charset=utf-8", + ) + + +def store_blobs_for_one_material_doc(doc: Document): + """Ensure that all files related to a materials Document are in the blob store""" + if doc.type_id not in settings.MATERIALS_TYPES_SERVED_BY_WORKER: + log(f"This method does not handle docs of type {doc.name}") + return + + # Store files for current Document / rev + file_path = Path(doc.get_file_path()) + base_name = Path(doc.get_base_name()) + # .stem would remove directories, so use .with_suffix("") + base_name_stem = str(base_name.with_suffix("")) + if base_name_stem.endswith(".") and base_name.suffix == "": + # In Python 3.14, a trailing "." is a valid suffix, but in prior versions + # it is left as part of the stem. The suffix check ensures that either way, + # only a single "." will be removed. + base_name_stem = base_name_stem[:-1] + # Add any we find without the rev + for file_to_store in file_path.glob(base_name_stem + ".*"): + if not (file_to_store.is_file()): + continue + try: + store_blob_for_one_material_file(doc, doc.rev, file_to_store) + except Exception as err: + log( + f"Failed to store blob for {doc} rev {doc.rev} " + f"from {file_to_store}: {err}" + ) + + # Get other revisions + for rev in doc.revisions_by_newrevisionevent(): + if rev == doc.rev: + continue # already handled this + + # Add some that have the rev + for file_to_store in file_path.glob(doc.name + f"-{rev}.*"): + if not file_to_store.is_file(): + continue + try: + store_blob_for_one_material_file(doc, rev, file_to_store) + except Exception as err: + log( + f"Failed to store blob for {doc} rev {rev} " + f"from {file_to_store}: {err}" + ) + + +def store_blobs_for_one_meeting(meeting: Meeting): + meeting_documents = ( + Document.objects.filter( + type_id__in=settings.MATERIALS_TYPES_SERVED_BY_WORKER + ).filter( + Q(session__meeting=meeting) | Q(proceedingsmaterial__meeting=meeting) + ) + ).distinct() + + for doc in meeting_documents: + store_blobs_for_one_material_doc(doc) + + def create_recording(session, url, title=None, user=None): ''' Creates the Document type=recording, setting external_url and creating diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index fcc9312609..cf6fed596b 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -9,6 +9,7 @@ import json import math import os + import pytz import re import tarfile @@ -27,10 +28,12 @@ from django import forms from django.core.cache import caches +from django.core.files.storage import storages from django.shortcuts import render, redirect, get_object_or_404 from django.http import (HttpResponse, HttpResponseRedirect, HttpResponseForbidden, HttpResponseNotFound, Http404, HttpResponseBadRequest, - JsonResponse, HttpResponseGone, HttpResponseNotAllowed) + JsonResponse, HttpResponseGone, HttpResponseNotAllowed, + FileResponse) from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required @@ -48,18 +51,25 @@ from django.views.decorators.cache import cache_page from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt from django.views.generic import RedirectView +from rest_framework.status import HTTP_404_NOT_FOUND import debug # pyflakes:ignore from ietf.doc.fields import SearchableDocumentsField from ietf.doc.models import Document, State, DocEvent, NewRevisionDocEvent -from ietf.doc.storage_utils import remove_from_storage, retrieve_bytes, store_file +from ietf.doc.storage_utils import ( + remove_from_storage, + retrieve_bytes, + store_file, +) from ietf.group.models import Group from ietf.group.utils import can_manage_session_materials, can_manage_some_groups, can_manage_group from ietf.person.models import Person, User from ietf.ietfauth.utils import role_required, has_role, user_is_person from ietf.mailtrigger.utils import gather_address_lists -from ietf.meeting.models import Meeting, Session, Schedule, FloorPlan, SessionPresentation, TimeSlot, SlideSubmission, Attended +from ietf.meeting.models import Meeting, Session, Schedule, FloorPlan, \ + SessionPresentation, TimeSlot, SlideSubmission, Attended +from ..blobdb.models import ResolvedMaterial from ietf.meeting.models import ImportantDate, SessionStatusName, SchedulingEvent, SchedTimeSessAssignment, Room, TimeSlotTypeName from ietf.meeting.models import Registration from ietf.meeting.forms import ( CustomDurationField, SwapDaysForm, SwapTimeslotsForm, ImportMinutesForm, @@ -83,7 +93,8 @@ finalize, generate_proceedings_content, organize_proceedings_sessions, - sort_accept_tuple, + resolve_uploaded_material, + sort_accept_tuple, store_blobs_for_one_material_doc, ) from ietf.meeting.utils import add_event_info_to_session_qs from ietf.meeting.utils import session_time_for_sorting @@ -120,6 +131,8 @@ from icalendar import Calendar, Event from ietf.doc.templatetags.ietf_filters import absurl +from ..api.ietf_utils import requires_api_token +from ..blobdb.storage import BlobdbStorage, BlobFile request_summary_exclude_group_types = ['team'] @@ -245,21 +258,32 @@ def current_materials(request): raise Http404('No such meeting') -def _get_materials_doc(meeting, name): +def _get_materials_doc(name, meeting=None): """Get meeting materials document named by name - Raises Document.DoesNotExist if a match cannot be found. + Raises Document.DoesNotExist if a match cannot be found. If meeting is None, + matches a name that is associated with _any_ meeting. """ + + def _matches_meeting(doc, meeting=None): + if meeting is None: + return doc.get_related_meeting() is not None + return doc.get_related_meeting() == meeting + # try an exact match first doc = Document.objects.filter(name=name).first() - if doc is not None and doc.get_related_meeting() == meeting: + if doc is not None and _matches_meeting(doc, meeting): return doc, None + # try parsing a rev number if "-" in name: docname, rev = name.rsplit("-", 1) if len(rev) == 2 and rev.isdigit(): doc = Document.objects.get(name=docname) # may raise Document.DoesNotExist - if doc.get_related_meeting() == meeting and rev in doc.revisions_by_newrevisionevent(): + if ( + _matches_meeting(doc, meeting) + and rev in doc.revisions_by_newrevisionevent() + ): return doc, rev # give up raise Document.DoesNotExist @@ -277,7 +301,7 @@ def materials_document(request, document, num=None, ext=None): meeting = get_meeting(num, type_in=["ietf", "interim"]) num = meeting.number try: - doc, rev = _get_materials_doc(meeting=meeting, name=document) + doc, rev = _get_materials_doc(name=document, meeting=meeting) except Document.DoesNotExist: raise Http404("No such document for meeting %s" % num) @@ -320,6 +344,7 @@ def materials_document(request, document, num=None, ext=None): { "content": markdown.markdown(bytes.decode(encoding=chset)), "title": filename.name, + "static_ietf_org": settings.STATIC_IETF_ORG, }, ) content_type = content_type.replace("plain", "html", 1) @@ -334,6 +359,133 @@ def materials_document(request, document, num=None, ext=None): return HttpResponseRedirect(redirect_to=doc.get_href(meeting=meeting)) +@requires_api_token("ietf.meeting.views.api_resolve_materials_name") +def api_resolve_materials_name_cached(request, document, num=None, ext=None): + """Resolve materials name into document to a blob spec + + Returns the bucket/name of a blob in the blob store that corresponds to the named + document. Handles resolution of revision if it is not specified and determines the + best extension if one is not provided. Response is JSON. + + As of 2025-10-10 we do not have blobs for all materials documents or for every + format of every document. This API still returns the bucket/name as if the blob + exists. Another API will allow the caller to obtain the file contents using that + name if it cannot be retrieved from the blob store. + """ + + def _error_response(status: int, detail: str): + return JsonResponse( + { + "status": status, + "title": "Error", + "detail": detail, + }, + status=status, + ) + + def _response(bucket: str, name: str): + return JsonResponse( + { + "bucket": bucket, + "name": name, + } + ) + + try: + resolved = ResolvedMaterial.objects.get( + meeting_number=num, name=document + ) + except ResolvedMaterial.DoesNotExist: + return _error_response( + HTTP_404_NOT_FOUND, f"No suitable file for {document} for meeting {num}" + ) + return _response(bucket=resolved.bucket, name=resolved.blob) + + +@requires_api_token +def api_retrieve_materials_blob(request, bucket, name): + """Retrieve contents of a meeting materials blob + + This is intended as a fallback if the web worker cannot retrieve a blob from + the blobstore itself. The most likely cause is retrieving an old materials document + that has not been backfilled. + + If a blob is requested that does not exist, this checks for it on the filesystem + and if found, adds it to the blobstore, creates a StoredObject record, and returns + the contents as it would have done if the blob was already present. + + As a special case, if a requested file with extension `.md.html` does not exist + but a file with the same name but extension `.md` does, `.md` file will be rendered + from markdown to html and returned / stored. + """ + DEFAULT_CONTENT_TYPES = { + ".html": "text/html;charset=utf-8", + ".md": "text/markdown;charset=utf-8", + ".pdf": "application/pdf", + ".txt": "text/plain;charset=utf-8", + } + + def _default_content_type(blob_name: str): + return DEFAULT_CONTENT_TYPES.get(Path(name).suffix, "application/octet-stream") + + if not ( + settings.ENABLE_BLOBSTORAGE + and bucket in settings.MATERIALS_TYPES_SERVED_BY_WORKER + ): + return HttpResponseNotFound(f"Bucket {bucket} not found.") + storage = storages[bucket] # if not configured, a server error will result + assert isinstance(storage, BlobdbStorage) + try: + blob = storage.open(name, "rb") + except FileNotFoundError: + pass + else: + # found the blob - return it + assert isinstance(blob, BlobFile) + return FileResponse( + blob, + filename=name, + content_type=blob.content_type or _default_content_type(name), + ) + + # Did not find the blob. Create it if we can + name_as_path = Path(name) + if name_as_path.suffixes == [".md", ".html"]: + # special case: .md.html means we want to create the .md and the .md.html + # will come along as a bonus + name_to_store = name_as_path.stem # removes the .html + else: + name_to_store = name + + # See if we have a meeting-related document that matches the requested bucket and + # name. + try: + doc, rev = _get_materials_doc(Path(name_to_store).stem) + if doc.type_id != bucket: + raise Document.DoesNotExist + except Document.DoesNotExist: + return HttpResponseNotFound( + f"Document corresponding to {bucket}:{name} not found." + ) + else: + # create all missing blobs for the doc while we're at it + store_blobs_for_one_material_doc(doc) + + # If we can make the blob at all, it now exists, so return it or a 404 + try: + blob = storage.open(name, "rb") + except FileNotFoundError: + return HttpResponseNotFound(f"Object {bucket}:{name} not found.") + else: + # found the blob - return it + assert isinstance(blob, BlobFile) + return FileResponse( + blob, + filename=name, + content_type=blob.content_type or _default_content_type(name), + ) + + @login_required def materials_editable_groups(request, num=None): meeting = get_meeting(num) @@ -2949,6 +3101,7 @@ def upload_session_minutes(request, session_id, num): form.add_error(None, str(err)) else: # no exception -- success! + resolve_uploaded_material(meeting=session.meeting, doc=session.minutes()) messages.success(request, f'Successfully uploaded minutes as revision {session.minutes().rev}.') return redirect('ietf.meeting.views.session_details', num=num, acronym=session.group.acronym) else: @@ -3008,6 +3161,7 @@ def upload_session_narrativeminutes(request, session_id, num): form.add_error(None, str(err)) else: # no exception -- success! + resolve_uploaded_material(meeting=session.meeting, doc=session.narrative_minutes()) messages.success(request, f'Successfully uploaded narrative minutes as revision {session.narrative_minutes().rev}.') return redirect('ietf.meeting.views.session_details', num=num, acronym=session.group.acronym) else: @@ -3154,6 +3308,7 @@ def upload_session_agenda(request, session_id, num): form.add_error(None, save_error) else: doc.save_with_history([e]) + resolve_uploaded_material(meeting=session.meeting, doc=doc) messages.success(request, f'Successfully uploaded agenda as revision {doc.rev}.') return redirect('ietf.meeting.views.session_details',num=num,acronym=session.group.acronym) else: @@ -3337,6 +3492,7 @@ def upload_session_slides(request, session_id, num, name=None): else: doc.save_with_history([e]) post_process(doc) + resolve_uploaded_material(meeting=session.meeting, doc=doc) # Send MeetEcho updates even if we had a problem saving - that will keep it in sync with the # SessionPresentation, which was already saved regardless of problems saving the file. @@ -4737,6 +4893,7 @@ def err(code, text): write_doc_for_session(session, 'chatlog', filename, json.dumps(apidata['chatlog'])) e = NewRevisionDocEvent.objects.create(doc=doc, rev=doc.rev, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev) doc.save_with_history([e]) + resolve_uploaded_material(meeting=session.meeting, doc=doc) return HttpResponse( "Done", status=200, @@ -4785,6 +4942,7 @@ def err(code, text): write_doc_for_session(session, 'polls', filename, json.dumps(apidata['polls'])) e = NewRevisionDocEvent.objects.create(doc=doc, rev=doc.rev, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev) doc.save_with_history([e]) + resolve_uploaded_material(meeting=session.meeting, doc=doc) return HttpResponse( "Done", status=200, @@ -5167,6 +5325,7 @@ def approve_proposed_slides(request, slidesubmission_id, num): doc.store_bytes(target_filename, retrieve_bytes("staging", submission.filename)) remove_from_storage("staging", submission.filename) post_process(doc) + resolve_uploaded_material(meeting=submission.session.meeting, doc=doc) DocEvent.objects.create(type="approved_slides", doc=doc, rev=doc.rev, by=request.user.person, desc="Slides approved") # update meetecho slide info if configured diff --git a/ietf/settings.py b/ietf/settings.py index 5e576430ed..eb5f9d2161 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -786,29 +786,29 @@ def skip_unreadable_post(record): # Storages for artifacts stored as blobs ARTIFACT_STORAGE_NAMES: list[str] = [ - "bofreq", - "charter", - "conflrev", "active-draft", - "draft", - "slides", - "minutes", "agenda", + "bibxml-ids", "bluesheets", - "procmaterials", - "narrativeminutes", - "statement", - "statchg", - "liai-att", + "bofreq", + "charter", "chatlog", - "polls", - "staging", - "bibxml-ids", - "indexes", + "conflrev", + "draft", "floorplan", + "indexes", + "liai-att", "meetinghostlogo", + "minutes", + "narrativeminutes", "photo", + "polls", + "procmaterials", "review", + "slides", + "staging", + "statchg", + "statement", ] for storagename in ARTIFACT_STORAGE_NAMES: STORAGES[storagename] = { @@ -816,6 +816,20 @@ def skip_unreadable_post(record): "OPTIONS": {"bucket_name": storagename}, } +# Buckets / doc types of meeting materials the CF worker is allowed to serve. This +# differs from the list in Session.meeting_related() by the omission of "recording" +MATERIALS_TYPES_SERVED_BY_WORKER = [ + "agenda", + "bluesheets", + "chatlog", + "minutes", + "narrativeminutes", + "polls", + "procmaterials", + "slides", +] + + # Override this in settings_local.py if needed # *_PATH variables ends with a slash/ . diff --git a/ietf/templates/minimal.html b/ietf/templates/minimal.html index 87f661f501..15c432505e 100644 --- a/ietf/templates/minimal.html +++ b/ietf/templates/minimal.html @@ -9,8 +9,8 @@ {{ title }} - - + + {# load this in the head, to prevent flickering #} From af0bcc743f6e449f93e0c7a7e4f2e2eec3ec76ae Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 23 Oct 2025 17:14:39 -0400 Subject: [PATCH 672/846] docs: Update PostgreSQL version badge in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e1b7e1a45..dfaf871052 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Python Version](https://img.shields.io/badge/python-3.9-blue?logo=python&logoColor=white)](#prerequisites) [![Django Version](https://img.shields.io/badge/django-4.x-51be95?logo=django&logoColor=white)](#prerequisites) [![Node Version](https://img.shields.io/badge/node.js-16.x-green?logo=node.js&logoColor=white)](#prerequisites) -[![MariaDB Version](https://img.shields.io/badge/postgres-16-blue?logo=postgresql&logoColor=white)](#prerequisites) +[![MariaDB Version](https://img.shields.io/badge/postgres-17-blue?logo=postgresql&logoColor=white)](#prerequisites) ##### The day-to-day front-end to the IETF database for people who work on IETF standards. From f9dea7df9d562ba818cf9224c1594f0e0983cdbe Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 23 Oct 2025 17:24:58 -0400 Subject: [PATCH 673/846] docs: Update Python version badge to 3.12 in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dfaf871052..baffc311e7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Release](https://img.shields.io/github/release/ietf-tools/datatracker.svg?style=flat&maxAge=300)](https://github.com/ietf-tools/datatracker/releases) [![License](https://img.shields.io/github/license/ietf-tools/datatracker)](https://github.com/ietf-tools/datatracker/blob/main/LICENSE) [![Code Coverage](https://codecov.io/gh/ietf-tools/datatracker/branch/feat/bs5/graph/badge.svg?token=V4DXB0Q28C)](https://codecov.io/gh/ietf-tools/datatracker) -[![Python Version](https://img.shields.io/badge/python-3.9-blue?logo=python&logoColor=white)](#prerequisites) +[![Python Version](https://img.shields.io/badge/python-3.12-blue?logo=python&logoColor=white)](#prerequisites) [![Django Version](https://img.shields.io/badge/django-4.x-51be95?logo=django&logoColor=white)](#prerequisites) [![Node Version](https://img.shields.io/badge/node.js-16.x-green?logo=node.js&logoColor=white)](#prerequisites) [![MariaDB Version](https://img.shields.io/badge/postgres-17-blue?logo=postgresql&logoColor=white)](#prerequisites) From e0691c17121d2324d812bc68c3943d963d1c5d4d Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 23 Oct 2025 17:30:50 -0400 Subject: [PATCH 674/846] ci: remove assets rsync sync job from dev-assets-sync-nightly workflow Removed the nightly sync job for assets in the workflow. --- .github/workflows/dev-assets-sync-nightly.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/dev-assets-sync-nightly.yml b/.github/workflows/dev-assets-sync-nightly.yml index 19933bddfd..4cfbf6365b 100644 --- a/.github/workflows/dev-assets-sync-nightly.yml +++ b/.github/workflows/dev-assets-sync-nightly.yml @@ -47,17 +47,3 @@ jobs: file: dev/shared-assets-sync/Dockerfile push: true tags: ghcr.io/ietf-tools/datatracker-rsync-assets:latest - - sync: - name: Run assets rsync - if: ${{ always() }} - runs-on: [self-hosted, dev-server] - needs: [build] - steps: - - name: Run rsync - env: - DEBIAN_FRONTEND: noninteractive - run: | - docker pull ghcr.io/ietf-tools/datatracker-rsync-assets:latest - docker run --rm -v dt-assets:/assets ghcr.io/ietf-tools/datatracker-rsync-assets:latest - docker image prune -a -f From 354d83d2fa22f817384a792bcbdef9757771f70a Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 23 Oct 2025 17:34:00 -0400 Subject: [PATCH 675/846] ci: remove sandbox-refresh workflow --- .github/workflows/sandbox-refresh.yml | 35 --------------------------- 1 file changed, 35 deletions(-) delete mode 100644 .github/workflows/sandbox-refresh.yml diff --git a/.github/workflows/sandbox-refresh.yml b/.github/workflows/sandbox-refresh.yml deleted file mode 100644 index 3ddb119e4f..0000000000 --- a/.github/workflows/sandbox-refresh.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Sandbox Refresh - -on: - # Run every night - schedule: - - cron: '0 9 * * *' - - workflow_dispatch: - -jobs: - main: - name: Refresh DBs - runs-on: [self-hosted, dev-server] - permissions: - contents: read - - steps: - - uses: actions/checkout@v4 - - - name: Refresh DBs - env: - DEBIAN_FRONTEND: noninteractive - run: | - echo "Install Deploy to Container CLI dependencies..." - cd dev/deploy-to-container - npm ci - cd ../.. - echo "Start Refresh..." - node ./dev/deploy-to-container/refresh.js - - - name: Cleanup old docker resources - env: - DEBIAN_FRONTEND: noninteractive - run: | - docker image prune -a -f From 4e6168607cb49abc9341b27049f458bc9363297a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 23 Oct 2025 20:43:04 -0300 Subject: [PATCH 676/846] ci: proceedings cache cfg for prod/tests (#9784) --- ietf/settings_testcrawl.py | 4 +++- k8s/settings_local.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ietf/settings_testcrawl.py b/ietf/settings_testcrawl.py index a1b5ce8946..40744a228d 100644 --- a/ietf/settings_testcrawl.py +++ b/ietf/settings_testcrawl.py @@ -27,9 +27,11 @@ 'MAX_ENTRIES': 10000, }, }, + 'proceedings': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + }, 'sessions': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - # No version-specific VERSION setting. }, 'htmlized': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', diff --git a/k8s/settings_local.py b/k8s/settings_local.py index c09bd70c86..f8ffacc83f 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -301,6 +301,17 @@ def _multiline_to_list(s): "LOCATION": f"{MEMCACHED_HOST}:{MEMCACHED_PORT}", "VERSION": __version__, "KEY_PREFIX": "ietf:dt", + # 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}", + # No release-specific VERSION setting. + "KEY_PREFIX": "ietf:dt:proceedings", + # 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()}" ), From 6db7d4afbe2b876192d0aa4a63a0bbe98a3806be Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Oct 2025 20:06:53 -0300 Subject: [PATCH 677/846] fix: don't trust libmagic charset recognition (#9815) --- ietf/meeting/views.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index cf6fed596b..d6b5a1c0db 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -329,7 +329,7 @@ def materials_document(request, document, num=None, ext=None): old_proceedings_format = meeting.number.isdigit() and int(meeting.number) <= 96 if settings.MEETING_MATERIALS_SERVE_LOCALLY or old_proceedings_format: bytes = filename.read_bytes() - mtype, chset = get_mime_type(bytes) + mtype, chset = get_mime_type(bytes) # chset does not consider entire file! content_type = "%s; charset=%s" % (mtype, chset) if filename.suffix == ".md" and mtype == "text/plain": @@ -339,15 +339,24 @@ def materials_document(request, document, num=None, ext=None): content_type = content_type.replace("plain", "markdown", 1) break elif atype[0] == "text/html": + # Render markdown, allowing that charset may be inaccurate. + try: + md_src = bytes.decode( + "utf-8" if chset in ["ascii", "us-ascii"] else chset + ) + except UnicodeDecodeError: + # latin-1, aka iso8859-1, accepts all 8-bit code points + md_src = bytes.decode("latin-1") + content = markdown.markdown(md_src) # a string bytes = render_to_string( "minimal.html", { - "content": markdown.markdown(bytes.decode(encoding=chset)), + "content": content, "title": filename.name, "static_ietf_org": settings.STATIC_IETF_ORG, }, - ) - content_type = content_type.replace("plain", "html", 1) + ).encode("utf-8") + content_type = "text/html; charset=utf-8" break elif atype[0] == "text/plain": break From 3e34efe74950d7f237171e9ea5cedc24d8d08615 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Oct 2025 20:09:27 -0300 Subject: [PATCH 678/846] chore: update names fixture (#9807) * chore(dev): update names fixture * chore(dev): update names fixture again --- ietf/name/fixtures/names.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 58deb01f0c..64e26e503a 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -650,7 +650,7 @@ }, { "fields": { - "desc": "4.2.1. Call for Adoption by WG Issued\r\n\r\n The \"Call for Adoption by WG Issued\" state should be used to indicate when an I-D is being considered for adoption by an IETF WG. An I-D that is in this state is actively being considered for adoption and has not yet achieved consensus, preference, or selection in the WG.\r\n\r\n This state may be used to describe an I-D that someone has asked a WG to consider for adoption, if the WG Chair has agreed with the request. This state may also be used to identify an I-D that a WG Chair asked an author to write specifically for consideration as a candidate WG item [WGDTSPEC], and/or an I-D that is listed as a 'candidate draft' in the WG's charter.\r\n\r\n Under normal conditions, it should not be possible for an I-D to be in the \"Call for Adoption by WG Issued\" state in more than one working group at the same time. This said, it is not uncommon for authors to \"shop\" their I-Ds to more than one WG at a time, with the hope of getting their documents adopted somewhere.\r\n\r\n After this state is implemented in the Datatracker, an I-D that is in the \"Call for Adoption by WG Issued\" state will not be able to be \"shopped\" to any other WG without the consent of the WG Chairs and the responsible ADs impacted by the shopping.\r\n\r\n Note that Figure 1 includes an arc leading from this state to outside of the WG state machine. This illustrates that some I-Ds that are considered do not get adopted as WG drafts. An I-D that is not adopted as a WG draft will transition out of the WG state machine and revert back to having no stream-specific state; however, the status change history log of the I-D will record that the I-D was previously in the \"Call for Adoption by WG Issued\" state.", + "desc": "A call for adoption of the individual submission document has been issued by the Working Group (WG) chairs. This call is still running but the WG has not yet reached consensus for adoption.", "name": "Call For Adoption By WG Issued", "next_states": [ 36, @@ -666,7 +666,7 @@ }, { "fields": { - "desc": "4.2.2. Adopted by a WG\r\n\r\n The \"Adopted by a WG\" state describes an individual submission I-D that an IETF WG has agreed to adopt as one of its WG drafts.\r\n\r\n WG Chairs who use this state will be able to clearly indicate when their WGs adopt individual submission I-Ds. This will facilitate the Datatracker's ability to correctly capture \"Replaces\" information for WG drafts and correct \"Replaced by\" information for individual submission I-Ds that have been replaced by WG drafts.\r\n\r\n This state is needed because the Datatracker uses the filename of an I-D as a key to search its database for status information about the I-D, and because the filename of a WG I-D is supposed to be different from the filename of an individual submission I-D. The filename of an individual submission I-D will typically be formatted as 'draft-author-wgname-topic-nn'.\r\n\r\n The filename of a WG document is supposed to be formatted as 'draft- ietf-wgname-topic-nn'.\r\n\r\n An individual I-D that is adopted by a WG may take weeks or months to be resubmitted by the author as a new (version-00) WG draft. If the \"Adopted by a WG\" state is not used, the Datatracker has no way to determine that an I-D has been adopted until a new version of the I-D is submitted to the WG by the author and until the I-D is approved for posting by a WG Chair.", + "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.", "name": "Adopted by a WG", "next_states": [ 38 @@ -681,7 +681,7 @@ }, { "fields": { - "desc": "4.2.3. Adopted for WG Info Only\r\n\r\n The \"Adopted for WG Info Only\" state describes a document that contains useful information for the WG that adopted it, but the document is not intended to be published as an RFC. The WG will not actively develop the contents of the I-D or progress it for publication as an RFC. The only purpose of the I-D is to provide information for internal use by the WG.", + "desc": "The document is adopted by the Working Group (WG) for its internal use. The WG has decided that it will not pursue publication of it as an RFC.", "name": "Adopted for WG Info Only", "next_states": [], "order": 3, @@ -694,7 +694,7 @@ }, { "fields": { - "desc": "4.2.4. WG Document\r\n\r\n The \"WG Document\" state describes an I-D that has been adopted by an IETF WG and is being actively developed.\r\n\r\n A WG Chair may transition an I-D into the \"WG Document\" state at any time as long as the I-D is not being considered or developed in any other WG.\r\n\r\n Alternatively, WG Chairs may rely upon new functionality to be added to the Datatracker to automatically move version-00 drafts into the \"WG Document\" state as described in Section 4.1.\r\n\r\n Under normal conditions, it should not be possible for an I-D to be in the \"WG Document\" state in more than one WG at a time. This said, I-Ds may be transferred from one WG to another with the consent of the WG Chairs and the responsible ADs.", + "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.", "name": "WG Document", "next_states": [ 39, @@ -712,7 +712,7 @@ }, { "fields": { - "desc": "4.2.5. Parked WG Document\r\n\r\n A \"Parked WG Document\" is an I-D that has lost its author or editor, is waiting for another document to be written or for a review to be completed, or cannot be progressed by the working group for some other reason.\r\n\r\n Some of the annotation tags described in Section 4.3 may be used in conjunction with this state to indicate why an I-D has been parked, and/or what may need to happen for the I-D to be un-parked.\r\n\r\n Parking a WG draft will not prevent it from expiring; however, this state can be used to indicate why the I-D has stopped progressing in the WG.\r\n\r\n A \"Parked WG Document\" that is not expired may be transferred from one WG to another with the consent of the WG Chairs and the responsible ADs.", + "desc": "The Working Group (WG) document is in a temporary state where it will not be actively developed. The reason for the pause is explained via a datatracker comments section.", "name": "Parked WG Document", "next_states": [ 38 @@ -727,7 +727,7 @@ }, { "fields": { - "desc": "4.2.6. Dead WG Document\r\n\r\n A \"Dead WG Document\" is an I-D that has been abandoned. Note that 'Dead' is not always a final state for a WG I-D. If consensus is subsequently achieved, a \"Dead WG Document\" may be resurrected. A \"Dead WG Document\" that is not resurrected will eventually expire.\r\n\r\n Note that an I-D that is declared to be \"Dead\" in one WG and that is not expired may be transferred to a non-dead state in another WG with the consent of the WG Chairs and the responsible ADs.", + "desc": "The Working Group (WG) document has been abandoned by the WG. No further development is planned in this WG. A decision to resume work on this document and move it out of this state is possible.", "name": "Dead WG Document", "next_states": [ 38 @@ -742,7 +742,7 @@ }, { "fields": { - "desc": "4.2.7. In WG Last Call\r\n\r\n A document \"In WG Last Call\" is an I-D for which a WG Last Call (WGLC) has been issued and is in progress.\r\n\r\n Note that conducting a WGLC is an optional part of the IETF WG process, per Section 7.4 of RFC 2418 [RFC2418].\r\n\r\n If a WG Chair decides to conduct a WGLC on an I-D, the \"In WG Last Call\" state can be used to track the progress of the WGLC. The Chair may configure the Datatracker to send a WGLC message to one or more mailing lists when the Chair moves the I-D into this state. The WG Chair may also be able to select a different set of mailing lists for a different document undergoing a WGLC; some documents may deserve coordination with other WGs.\r\n\r\n A WG I-D in this state should remain \"In WG Last Call\" until the WG Chair moves it to another state. The WG Chair may configure the Datatracker to send an e-mail after a specified period of time to remind or 'nudge' the Chair to conclude the WGLC and to determine the next state for the document.\r\n\r\n It is possible for one WGLC to lead into another WGLC for the same document. For example, an I-D that completed a WGLC as an \"Informational\" document may need another WGLC if a decision is taken to convert the I-D into a Standards Track document.", + "desc": "The Working Group (WG) document is currently subject to an active WG Last Call (WGLC) review per Section 7.4 of RFC2418.", "name": "In WG Last Call", "next_states": [ 38, @@ -759,7 +759,7 @@ }, { "fields": { - "desc": "4.2.8. Waiting for WG Chair Go-Ahead\r\n\r\n A WG Chair may wish to place an I-D that receives a lot of comments during a WGLC into the \"Waiting for WG Chair Go-Ahead\" state. This state describes an I-D that has undergone a WGLC; however, the Chair is not yet ready to call consensus on the document.\r\n\r\n If comments from the WGLC need to be responded to, or a revision to the I-D is needed, the Chair may place an I-D into this state until all of the WGLC comments are adequately addressed and the (possibly revised) document is in the I-D repository.", + "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", "name": "Waiting for WG Chair Go-Ahead", "next_states": [ 41, @@ -775,7 +775,7 @@ }, { "fields": { - "desc": "4.2.9. WG Consensus: Waiting for Writeup\r\n\r\n A document in the \"WG Consensus: Waiting for Writeup\" state has essentially completed its development within the working group, and is nearly ready to be sent to the IESG for publication. The last thing to be done is the preparation of a protocol writeup by a Document Shepherd. The IESG requires that a document shepherd writeup be completed before publication of the I-D is requested. The IETF document shepherding process and the role of a WG Document Shepherd is described in RFC 4858 [RFC4858]\r\n\r\n A WG Chair may call consensus on an I-D without a formal WGLC and transition an I-D that was in the \"WG Document\" state directly into this state.\r\n\r\n The name of this state includes the words \"Waiting for Writeup\" because a good document shepherd writeup takes time to prepare.", + "desc": "The Working Group (WG) document has consensus to proceed to publication. However, the document is waiting for a document shepherd write-up per RFC4858.", "name": "WG Consensus: Waiting for Write-Up", "next_states": [ 44 @@ -790,7 +790,7 @@ }, { "fields": { - "desc": "4.2.10. Submitted to IESG for Publication\r\n\r\n This state describes a WG document that has been submitted to the IESG for publication and that has not been sent back to the working group for revision.\r\n\r\n An I-D in this state may be under review by the IESG, it may have been approved and be in the RFC Editor's queue, or it may have been published as an RFC. Other possibilities exist too. The document may be \"Dead\" (in the IESG state machine) or in a \"Do Not Publish\" state.", + "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.", "name": "Submitted to IESG for Publication", "next_states": [ 38 @@ -2020,7 +2020,7 @@ }, { "fields": { - "desc": "The document has been marked as a candidate for WG adoption by the WG Chair. This state can be used before a call for adoption is issued (and the document is put in the \"Call For Adoption By WG Issued\" state), to indicate that the document is in the queue for a call for adoption, even if none has been issued yet.", + "desc": "The individual submission document has been marked by the Working Group (WG) chairs as a candidate for adoption by the WG, but no adoption call has been started.", "name": "Candidate for WG Adoption", "next_states": [ 35 @@ -2152,7 +2152,7 @@ }, { "fields": { - "desc": "In some areas, it can be desirable to wait for multiple interoperable implementations before progressing a draft to be an RFC, and in some WGs this is required. This state should be entered after WG Last Call has completed.", + "desc": "The progression of this Working Group (WG) document towards publication is paused as it awaits implementation. The process governing the approach to implementations is WG-specific.", "name": "Waiting for Implementation", "next_states": [], "order": 8, @@ -2165,7 +2165,7 @@ }, { "fields": { - "desc": "Held by WG, see document history for details.", + "desc": "Held by Working Group (WG) chairs for administrative reasons. See document history for details.", "name": "Held by WG", "next_states": [], "order": 9, @@ -4473,6 +4473,7 @@ ], "session_purposes": [ "coding", + "open_meeting", "presentation", "social", "tutorial" @@ -5535,7 +5536,6 @@ ], "desc": "Recipients for a message when a new incoming liaison statement is posted", "to": [ - "liaison_from_contact", "liaison_to_contacts" ] }, From 145b9f76c19030b67628432b5f811a1c3c55c749 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Tue, 28 Oct 2025 20:11:52 -0300 Subject: [PATCH 679/846] chore(dev): bump dev blobdb to pg17 (#9806) --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8c6e0ea486..2440faf121 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -116,7 +116,7 @@ services: - "minio-data:/data" blobdb: - image: postgres:16 + image: postgres:17 restart: unless-stopped environment: POSTGRES_DB: blob From cbb0e2e3db4cc9e591b4397b7bc6cdebb51cfc8c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 29 Oct 2025 11:18:47 -0300 Subject: [PATCH 680/846] feat: logs in api_retrieve_materials_blob() (#9818) --- ietf/meeting/views.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index d6b5a1c0db..69635d6219 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -451,6 +451,7 @@ def _default_content_type(blob_name: str): else: # found the blob - return it assert isinstance(blob, BlobFile) + log(f"Materials blob: directly returning {bucket}:{name}") return FileResponse( blob, filename=name, @@ -473,17 +474,20 @@ def _default_content_type(blob_name: str): if doc.type_id != bucket: raise Document.DoesNotExist except Document.DoesNotExist: + log(f"Materials blob: no doc for {bucket}:{name}") return HttpResponseNotFound( f"Document corresponding to {bucket}:{name} not found." ) else: # create all missing blobs for the doc while we're at it + log(f"Materials blob: storing blobs for {doc.name}-{doc.rev}") store_blobs_for_one_material_doc(doc) # If we can make the blob at all, it now exists, so return it or a 404 try: blob = storage.open(name, "rb") except FileNotFoundError: + log(f"Materials blob: no blob for {bucket}:{name}") return HttpResponseNotFound(f"Object {bucket}:{name} not found.") else: # found the blob - return it From c47fe34b0e409f4811e2f96fc45ec87bc1b7931f Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 3 Nov 2025 09:05:30 -0500 Subject: [PATCH 681/846] fix: include punctuation when tablesorting (#9855) --- ietf/static/js/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/static/js/list.js b/ietf/static/js/list.js index 756a75001a..c03368cd72 100644 --- a/ietf/static/js/list.js +++ b/ietf/static/js/list.js @@ -16,7 +16,7 @@ function text_sort(a, b, options) { // sort by text content return prep(a, options).localeCompare(prep(b, options), "en", { sensitivity: "base", - ignorePunctuation: true, + ignorePunctuation: false, numeric: true }); } From 87c3a9db06b784d2cf1484a547171a9783e50fdc Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Mon, 3 Nov 2025 09:08:53 -0500 Subject: [PATCH 682/846] feat(agenda): Show calendar links to all the events (#9843) * feat(agenda): Show calendar links to all the events * test: Update playwright tests --- client/agenda/AgendaScheduleList.vue | 20 ++++++++++---------- playwright/tests/meeting/agenda.spec.js | 7 ++++++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/client/agenda/AgendaScheduleList.vue b/client/agenda/AgendaScheduleList.vue index fc8b5fd30f..bbe5dfee8b 100644 --- a/client/agenda/AgendaScheduleList.vue +++ b/client/agenda/AgendaScheduleList.vue @@ -398,16 +398,6 @@ const meetingEvents = computed(() => { color: 'teal' }) } - // -> Calendar item - if (item.links.calendar) { - links.push({ - id: `lnk-${item.id}-calendar`, - label: 'Calendar (.ics) entry for this session', - icon: 'calendar-check', - href: item.links.calendar, - color: 'pink' - }) - } } else { // -> Post event if (meetingNumberInt >= 60) { @@ -484,6 +474,16 @@ const meetingEvents = computed(() => { } } } + // Add Calendar item for all events that has a calendar link + if (item.adjustedEnd > current && item.links.calendar) { + links.push({ + id: `lnk-${item.id}-calendar`, + label: 'Calendar (.ics) entry for this session', + icon: 'calendar-check', + href: item.links.calendar, + color: 'pink' + }) + } // Event icon let icon = null diff --git a/playwright/tests/meeting/agenda.spec.js b/playwright/tests/meeting/agenda.spec.js index 412a3fe9b8..2248027a38 100644 --- a/playwright/tests/meeting/agenda.spec.js +++ b/playwright/tests/meeting/agenda.spec.js @@ -1219,7 +1219,12 @@ test.describe('future - desktop', () => { await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar > i.bi`)).toBeVisible() } } else { - await expect(eventButtons).toHaveCount(0) + if (event.links.calendar) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar`)).toHaveAttribute('href', event.links.calendar) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar > i.bi`)).toBeVisible() + } else { + await expect(eventButtons).toHaveCount(0) + } } } } From 8da45cb8488345a1f449e6fc7442098cff81e3ff Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 3 Nov 2025 09:10:59 -0500 Subject: [PATCH 683/846] feat: optionally hide room-only schedule diffs (#9861) * feat: optionally hide room-only schedule diffs * test: update test --- ietf/meeting/tests_views.py | 194 +++++++++++++++++++++++++----------- ietf/meeting/views.py | 13 +++ 2 files changed, 151 insertions(+), 56 deletions(-) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index b1bbc62907..50960b5143 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -49,7 +49,11 @@ from ietf.meeting.helpers import send_interim_minutes_reminder, populate_important_dates, update_important_dates from ietf.meeting.models import Session, TimeSlot, Meeting, SchedTimeSessAssignment, Schedule, SessionPresentation, SlideSubmission, SchedulingEvent, Room, Constraint, ConstraintName from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting, make_interim_test_data -from ietf.meeting.utils import condition_slide_order, generate_proceedings_content +from ietf.meeting.utils import ( + condition_slide_order, + generate_proceedings_content, + diff_meeting_schedules, +) from ietf.meeting.utils import add_event_info_to_session_qs, participants_for_meeting from ietf.meeting.utils import create_recording, delete_recording, get_next_sequence, bluesheet_data from ietf.meeting.views import session_draft_list, parse_agenda_filter_params, sessions_post_save, agenda_extract_schedule @@ -4765,73 +4769,151 @@ def test_list_schedules(self): self.assertTrue(r.status_code, 200) def test_diff_schedules(self): - meeting = make_meeting_test_data() - - url = urlreverse('ietf.meeting.views.diff_schedules',kwargs={'num':meeting.number}) - login_testing_unauthorized(self,"secretary", url) - r = self.client.get(url) - self.assertTrue(r.status_code, 200) - - from_schedule = Schedule.objects.get(meeting=meeting, name="test-unofficial-schedule") - - session1 = Session.objects.filter(meeting=meeting, group__acronym='mars').first() - session2 = Session.objects.filter(meeting=meeting, group__acronym='ames').first() - session3 = SessionFactory(meeting=meeting, group=Group.objects.get(acronym='mars'), - attendees=10, requested_duration=datetime.timedelta(minutes=70), - add_to_schedule=False) - SchedulingEvent.objects.create(session=session3, status_id='schedw', by=Person.objects.first()) - - slot2 = TimeSlot.objects.filter(meeting=meeting, type='regular').order_by('-time').first() - slot3 = TimeSlot.objects.create( - meeting=meeting, type_id='regular', location=slot2.location, - duration=datetime.timedelta(minutes=60), - time=slot2.time + datetime.timedelta(minutes=60), + # Create meeting and some time slots + meeting = MeetingFactory(type_id="ietf", populate_schedule=False) + rooms = RoomFactory.create_batch(2, meeting=meeting) + # first index is room, second is time + timeslots = [ + [ + TimeSlotFactory( + location=room, + meeting=meeting, + time=datetime.datetime.combine( + meeting.date, datetime.time(9, 0, tzinfo=datetime.UTC) + ) + ), + TimeSlotFactory( + location=room, + meeting=meeting, + time=datetime.datetime.combine( + meeting.date, datetime.time(10, 0, tzinfo=datetime.UTC) + ) + ), + TimeSlotFactory( + location=room, + meeting=meeting, + time=datetime.datetime.combine( + meeting.date, datetime.time(11, 0, tzinfo=datetime.UTC) + ) + ), + ] + for room in rooms + ] + sessions = SessionFactory.create_batch( + 5, meeting=meeting, add_to_schedule=False ) - # copy - new_url = urlreverse("ietf.meeting.views.new_meeting_schedule", kwargs=dict(num=meeting.number, owner=from_schedule.owner_email(), name=from_schedule.name)) - r = self.client.post(new_url, { - 'name': "newtest", - 'public': "on", - }) - self.assertNoFormPostErrors(r) + from_schedule = ScheduleFactory(meeting=meeting) + to_schedule = ScheduleFactory(meeting=meeting) - to_schedule = Schedule.objects.get(meeting=meeting, name='newtest') + # sessions[0]: not scheduled in from_schedule, scheduled in to_schedule + SchedTimeSessAssignment.objects.create( + schedule=to_schedule, + session=sessions[0], + timeslot=timeslots[0][0], + ) + # sessions[1]: scheduled in from_schedule, not scheduled in to_schedule + SchedTimeSessAssignment.objects.create( + schedule=from_schedule, + session=sessions[1], + timeslot=timeslots[0][0], + ) + # sessions[2]: moves rooms, not time + SchedTimeSessAssignment.objects.create( + schedule=from_schedule, + session=sessions[2], + timeslot=timeslots[0][1], + ) + SchedTimeSessAssignment.objects.create( + schedule=to_schedule, + session=sessions[2], + timeslot=timeslots[1][1], + ) + # sessions[3]: moves time, not room + SchedTimeSessAssignment.objects.create( + schedule=from_schedule, + session=sessions[3], + timeslot=timeslots[1][1], + ) + SchedTimeSessAssignment.objects.create( + schedule=to_schedule, + session=sessions[3], + timeslot=timeslots[1][2], + ) + # sessions[4]: moves room and time + SchedTimeSessAssignment.objects.create( + schedule=from_schedule, + session=sessions[4], + timeslot=timeslots[1][0], + ) + SchedTimeSessAssignment.objects.create( + schedule=to_schedule, + session=sessions[4], + timeslot=timeslots[0][2], + ) - # make some changes + # Check the raw diffs + raw_diffs = diff_meeting_schedules(from_schedule, to_schedule) + self.assertCountEqual( + raw_diffs, + [ + { + "change": "schedule", + "session": sessions[0].pk, + "to": timeslots[0][0].pk, + }, + { + "change": "unschedule", + "session": sessions[1].pk, + "from": timeslots[0][0].pk, + }, + { + "change": "move", + "session": sessions[2].pk, + "from": timeslots[0][1].pk, + "to": timeslots[1][1].pk, + }, + { + "change": "move", + "session": sessions[3].pk, + "from": timeslots[1][1].pk, + "to": timeslots[1][2].pk, + }, + { + "change": "move", + "session": sessions[4].pk, + "from": timeslots[1][0].pk, + "to": timeslots[0][2].pk, + }, + ] + ) - edit_url = urlreverse("ietf.meeting.views.edit_meeting_schedule", kwargs=dict(num=meeting.number, owner=to_schedule.owner_email(), name=to_schedule.name)) + # Check the view + url = urlreverse("ietf.meeting.views.diff_schedules", + kwargs={"num": meeting.number}) + login_testing_unauthorized(self, "secretary", url) + r = self.client.get(url) + self.assertTrue(r.status_code, 200) - # schedule session - r = self.client.post(edit_url, { - 'action': 'assign', - 'timeslot': slot3.pk, - 'session': session3.pk, - }) - self.assertEqual(json.loads(r.content)['success'], True) - # unschedule session - r = self.client.post(edit_url, { - 'action': 'unassign', - 'session': session1.pk, - }) - self.assertEqual(json.loads(r.content)['success'], True) - # move session - r = self.client.post(edit_url, { - 'action': 'assign', - 'timeslot': slot2.pk, - 'session': session2.pk, + # with show room changes disabled - does not show sessions[2] because it did + # not change time + r = self.client.get(url, { + "from_schedule": from_schedule.name, + "to_schedule": to_schedule.name, }) - self.assertEqual(json.loads(r.content)['success'], True) + self.assertTrue(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q(".schedule-diffs tr")), 4 + 1) - # now get differences + # with show room changes enabled - shows all changes r = self.client.get(url, { - 'from_schedule': from_schedule.name, - 'to_schedule': to_schedule.name, + "from_schedule": from_schedule.name, + "to_schedule": to_schedule.name, + "show_room_changes": "on", }) self.assertTrue(r.status_code, 200) - q = PyQuery(r.content) - self.assertEqual(len(q(".schedule-diffs tr")), 3+1) + self.assertEqual(len(q(".schedule-diffs tr")), 5 + 1) def test_delete_schedule(self): url = urlreverse('ietf.meeting.views.delete_schedule', diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 69635d6219..b0c46cb05a 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1675,6 +1675,11 @@ def list_schedules(request, num): class DiffSchedulesForm(forms.Form): from_schedule = forms.ChoiceField() to_schedule = forms.ChoiceField() + show_room_changes = forms.BooleanField( + initial=False, + required=False, + help_text="Include changes to room without a date or time change", + ) def __init__(self, meeting, user, *args, **kwargs): super().__init__(*args, **kwargs) @@ -1707,6 +1712,14 @@ def diff_schedules(request, num): raw_diffs = diff_meeting_schedules(from_schedule, to_schedule) diffs = prefetch_schedule_diff_objects(raw_diffs) + if not form.cleaned_data["show_room_changes"]: + # filter out room-only changes + diffs = [ + d + for d in diffs + if (d["change"] != "move") or (d["from"].time != d["to"].time) + ] + for d in diffs: s = d['session'] s.session_label = s.short_name From 9546e15224df7d8d9f385a8f670cd27012d7aee5 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 3 Nov 2025 09:11:32 -0500 Subject: [PATCH 684/846] fix: no autoescape for bluesheet template (#9858) --- ietf/templates/meeting/bluesheet.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ietf/templates/meeting/bluesheet.txt b/ietf/templates/meeting/bluesheet.txt index dd3bf36ac7..5b3960f3aa 100644 --- a/ietf/templates/meeting/bluesheet.txt +++ b/ietf/templates/meeting/bluesheet.txt @@ -1,7 +1,8 @@ -Bluesheet for {{session}} +{% autoescape off %}Bluesheet for {{session}} ======================================================================== {{ data|length }} attendees. {% for item in data %} {{ item.name }} {{ item.affiliation }}{% endfor %} +{% endautoescape %} From 7b4035d7fcd1130cdf8e08b3aa54efda35087a8a Mon Sep 17 00:00:00 2001 From: Tero Kivinen Date: Mon, 3 Nov 2025 18:16:33 +0200 Subject: [PATCH 685/846] fix: Change add period button to save new period. (#9847) --- ietf/templates/group/change_reviewer_settings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/templates/group/change_reviewer_settings.html b/ietf/templates/group/change_reviewer_settings.html index 9ecec5633c..75451fdd75 100644 --- a/ietf/templates/group/change_reviewer_settings.html +++ b/ietf/templates/group/change_reviewer_settings.html @@ -89,7 +89,7 @@

    Unavailable periods

    + value="add_period">Save new period

    History of settings

    From 1ba63977c00121572048c506289f88d41ce67291 Mon Sep 17 00:00:00 2001 From: Matthew Holloway Date: Tue, 4 Nov 2025 06:26:25 +1300 Subject: [PATCH 686/846] fix: ask google not to index noscript content (#9844) --- ietf/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/templates/base.html b/ietf/templates/base.html index aa44955527..d8ff85f86e 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -96,7 +96,7 @@ {% endif %}
    -

    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 uVSiR;aTLCC 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 CC1{QS diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001603-77af81f60b-e66e0d24b8.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001603-77af81f60b-e66e0d24b8.zip new file mode 100644 index 0000000000000000000000000000000000000000..f3bd2d06bcae878021de8ed2a6201036c6c4478a GIT binary patch literal 841157 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 Ql6qzl32f3^T2!sxcr@j8XYj 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