diff --git a/.gitignore b/.gitignore
index c25e6b5bfe..84bc800e3b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ datatracker.sublime-workspace
/docker/docker-compose.extend-custom.yml
/env
/ghostdriver.log
+/geckodriver.log
/htmlcov
/ietf/static/dist-neue
/latest-coverage.json
diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py
index 422e38f7dd..f5e9b2ec25 100644
--- a/ietf/doc/views_search.py
+++ b/ietf/doc/views_search.py
@@ -484,6 +484,29 @@ def _state_to_doc_type(state):
)
ad.buckets = copy.deepcopy(bucket_template)
+ # https://github.com/ietf-tools/datatracker/issues/4577
+ docs_via_group_ad = Document.objects.exclude(
+ group__acronym="none"
+ ).filter(
+ group__role__name="ad",
+ group__role__person=ad
+ ).filter(
+ states__type="draft-stream-ietf",
+ states__slug__in=["wg-doc","wg-lc","waiting-for-implementation","chair-w","writeupw"]
+ )
+
+ doc_for_ad = Document.objects.filter(ad=ad)
+
+ ad.pre_pubreq = (docs_via_group_ad | doc_for_ad).filter(
+ type="draft"
+ ).filter(
+ states__type="draft",
+ states__slug="active"
+ ).filter(
+ states__type="draft-iesg",
+ states__slug="idexists"
+ ).distinct().count()
+
for doc in Document.objects.exclude(type_id="rfc").filter(ad=ad):
dt = doc_type(doc)
state = doc_state(doc)
diff --git a/ietf/templates/doc/ad_list.html b/ietf/templates/doc/ad_list.html
index cfc8830e50..b0c9e9e8fb 100644
--- a/ietf/templates/doc/ad_list.html
+++ b/ietf/templates/doc/ad_list.html
@@ -35,9 +35,12 @@
{{ dt.type.1 }} State Counts
| Area Director |
+ {% if dt.type.1 == "Internet-Draft" %}
+ Pre pubreq |
+ {% endif %}
{% for state, state_name in dt.states %}
-
+ |
{{ state_name|split:'/'|join:'/' }}
@@ -51,6 +54,15 @@ {{ dt.type.1 }} State Counts
|
{{ ad.name }}
|
+ {% if dt.type.1 == "Internet-Draft" %}
+
+ {{ ad.pre_pubreq }}
+ |
+ {% endif %}
{% for state, state_name in dt.states %}
@@ -63,6 +75,11 @@ {{ dt.type.1 }} State Counts
|
| Sum |
+ {% if dt.type.1 == "Internet-Draft" %}
+
+
+ |
+ {% endif %}
{% for state, state_name in dt.states %}
@@ -87,37 +104,151 @@ {{ dt.type.1 }} State Counts
{{ data|json_script:"data" }}
+
+
+
+
{% endblock %}
\ No newline at end of file
diff --git a/playwright/tests-legacy/docs/ad.spec.js b/playwright/tests-legacy/docs/ad.spec.js
new file mode 100644
index 0000000000..80b8b27cda
--- /dev/null
+++ b/playwright/tests-legacy/docs/ad.spec.js
@@ -0,0 +1,26 @@
+const { test, expect } = require('@playwright/test')
+const viewports = require('../../helpers/viewports')
+
+// ====================================================================
+// IESG Dashboard
+// ====================================================================
+
+test.describe('/doc/ad/', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.setViewportSize({
+ width: viewports.desktop[0],
+ height: viewports.desktop[1]
+ })
+
+ await page.goto('/doc/ad/')
+ })
+
+ test('Pre pubreq', async ({ page }) => {
+ const tablesLocator = page.locator('table')
+ const tablesCount = await tablesLocator.count()
+ expect(tablesCount).toBeGreaterThan(0)
+ const firstTable = tablesLocator.nth(0)
+ const theadTexts = await firstTable.locator('thead').allInnerTexts()
+ expect(theadTexts.join('')).toContain('Pre pubreq')
+ })
+})
|