Skip to content

Commit 357f88c

Browse files
committed
Add simple overview page with links to concluded groups, use that instead of the tools page for the left menu link
- Legacy-Id: 7567
1 parent dbead00 commit 357f88c

6 files changed

Lines changed: 92 additions & 17 deletions

File tree

ietf/group/info.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from ietf.doc.models import State, DocAlias, RelatedDocument
4949
from ietf.doc.utils import get_chartering_type
5050
from ietf.doc.templatetags.ietf_filters import clean_whitespace
51-
from ietf.group.models import Group, Role
51+
from ietf.group.models import Group, Role, ChangeStateGroupEvent
5252
from ietf.name.models import GroupTypeName
5353
from ietf.group.utils import get_charter_text, can_manage_group_type, milestone_reviewer_for_group_type
5454
from ietf.utils.pipe import pipe
@@ -185,7 +185,7 @@ def chartering_groups(request):
185185
group_types = GroupTypeName.objects.filter(slug__in=("wg", "rg"))
186186

187187
for t in group_types:
188-
t.chartering_groups = Group.objects.filter(type=t, charter__states__in=charter_states).select_related("state", "charter")
188+
t.chartering_groups = Group.objects.filter(type=t, charter__states__in=charter_states).select_related("state", "charter").order_by("acronym")
189189
t.can_manage = can_manage_group_type(request.user, t.slug)
190190

191191
for g in t.chartering_groups:
@@ -195,6 +195,26 @@ def chartering_groups(request):
195195
dict(charter_states=charter_states,
196196
group_types=group_types))
197197

198+
def concluded_groups(request):
199+
group_types = GroupTypeName.objects.filter(slug__in=("wg", "rg"))
200+
201+
for t in group_types:
202+
t.concluded_groups = Group.objects.filter(type=t, state__in=("conclude", "bof-conc")).select_related("state", "charter").order_by("acronym")
203+
204+
# add start/conclusion date
205+
d = dict((g.pk, g) for g in t.concluded_groups)
206+
207+
for g in t.concluded_groups:
208+
g.start_date = g.conclude_date = None
209+
210+
for e in ChangeStateGroupEvent.objects.filter(group__in=t.concluded_groups, state="active").order_by("-time"):
211+
d[e.group_id].start_date = e.time
212+
213+
for e in ChangeStateGroupEvent.objects.filter(group__in=t.concluded_groups, state="conclude").order_by("time"):
214+
d[e.group_id].conclude_date = e.time
215+
216+
return render(request, 'group/concluded_groups.html',
217+
dict(group_types=group_types))
198218

199219
def construct_group_menu_context(request, group, selected, others):
200220
"""Return context with info for the group menu filled in."""

ietf/group/tests_info.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,18 @@ def test_chartering_groups(self):
101101
q = PyQuery(r.content)
102102
self.assertEqual(len(q('table.ietf-doctable td.acronym a:contains("%s")' % group.acronym)), 1)
103103

104+
def test_concluded_groups(self):
105+
draft = make_test_data()
106+
group = draft.group
107+
group.state = GroupStateName.objects.get(used=True, slug="conclude")
108+
group.save()
109+
110+
url = urlreverse('ietf.group.info.concluded_groups')
111+
r = self.client.get(url)
112+
self.assertEqual(r.status_code, 200)
113+
q = PyQuery(r.content)
114+
self.assertEqual(len(q('table.concluded-groups a:contains("%s")' % group.acronym)), 1)
115+
104116
def test_bofs(self):
105117
draft = make_test_data()
106118
group = draft.group

ietf/group/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
(r'^(?P<acronym>[a-z0-9]+).json$', 'ietf.group.ajax.group_json'),
77
(r'^chartering/$', 'ietf.group.info.chartering_groups'),
88
(r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.edit.edit', {'action': "charter"}, "group_create"),
9+
(r'^concluded/$', 'ietf.group.info.concluded_groups'),
910
)
1011

1112

ietf/group/urls_info.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,18 @@
1818
(r'^chartering/create/$', RedirectView.as_view(url='/group/chartering/create/%(group_type)s/')),
1919
(r'^bofs/$', info.bofs),
2020
(r'^bofs/create/$', edit.edit, {'action': "create"}, "bof_create"),
21-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/documents/txt/$', info.group_documents_txt),
22-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/$', info.group_documents, None, "group_docs"),
23-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/charter/$', info.group_charter, None, 'group_charter'),
24-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/init-charter/', edit.submit_initial_charter),
25-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/history/$', info.history),
26-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/deps/dot/$', info.dependencies_dot),
27-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/deps/pdf/$', info.dependencies_pdf),
28-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/edit/$', edit.edit, {'action': "edit"}, "group_edit"),
29-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/conclude/$', edit.conclude),
30-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/milestones/$', milestones.edit_milestones, {'milestone_set': "current"}, "group_edit_milestones"),
31-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/milestones/charter/$', milestones.edit_milestones, {'milestone_set': "charter"}, "group_edit_charter_milestones"),
32-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/milestones/charter/reset/$', milestones.reset_charter_milestones, None, "group_reset_charter_milestones"),
33-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/ajax/searchdocs/$', milestones.ajax_search_docs, None, "group_ajax_search_docs"),
34-
(r'^(?P<acronym>[a-zA-Z0-9-]+)/workflow/$', edit.customize_workflow),
21+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/documents/txt/$', info.group_documents_txt),
22+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/$', info.group_documents, None, "group_docs"),
23+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/charter/$', info.group_charter, None, 'group_charter'),
24+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/history/$', info.history),
25+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/dot/$', info.dependencies_dot),
26+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/pdf/$', info.dependencies_pdf),
27+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/init-charter/', edit.submit_initial_charter),
28+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/edit/$', edit.edit, {'action': "edit"}, "group_edit"),
29+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/conclude/$', edit.conclude),
30+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/$', milestones.edit_milestones, {'milestone_set': "current"}, "group_edit_milestones"),
31+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/$', milestones.edit_milestones, {'milestone_set': "charter"}, "group_edit_charter_milestones"),
32+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$', milestones.reset_charter_milestones, None, "group_reset_charter_milestones"),
33+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/ajax/searchdocs/$', milestones.ajax_search_docs, None, "group_ajax_search_docs"),
34+
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$', edit.customize_workflow),
3535
)

ietf/templates/base/left_menu.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
<li style="padding-top:0;"><a href="{% url "ietf.group.info.active_groups" group_type="rg" %}">Active RGs</a></li>
7777
<li><a href="{% url "ietf.group.info.chartering_groups" %}">Chartering</a></li>
7878
<li><a href="{% url "ietf.group.info.bofs" group_type="wg" %}">BoFs</a></li>
79-
<li><a href="http://tools.ietf.org/wg/concluded">Concluded WGs</a></li>
79+
<li><a href="{% url "ietf.group.info.concluded_groups" %}">Concluded</a></li>
8080
<li><a href="http://www.ietf.org/list/nonwg.html">Non-WG Lists</a></li>
8181

8282

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{% extends "base.html" %}
2+
3+
{% block title %}Concluded Groups{% endblock %}
4+
5+
{% block morecss %}
6+
.concluded-groups .active-period { display: inline-block; margin-left: 0.5em; font-style: italic; }
7+
.note { font-style: italic; }
8+
{% endblock %}
9+
10+
{% block content %}
11+
<h1>Concluded Groups</h1>
12+
13+
<p>Note that the information on historical groups may be inaccurate.</p>
14+
15+
{% for t in group_types %}
16+
<h2>{{ t.name }}s</h2>
17+
18+
{% if t.slug == "wg" %}<p class="note">Some additional concluded WGs may
19+
be present at <a href="http://tools.ietf.org/wg/concluded">tools.ietf.org/wg/concluded/</a></p>{% endif %}
20+
21+
{% if not t.concluded_groups %}
22+
<p><b>No groups found.</b></p>
23+
{% else %}
24+
<table class="concluded-groups">
25+
{% for g in t.concluded_groups %}
26+
<tr>
27+
<td>
28+
<a href="{% url "group_charter" group_type=g.type_id acronym=g.acronym %}">{{ g.acronym }}</a>
29+
</td>
30+
<td>{{ g.name }}
31+
<span class="active-period">({% if g.start_date %}{{ g.start_date|date:"M. Y" }}{% else %}?{% endif %}
32+
-
33+
{% if g.conclude_date %}{{ g.conclude_date|date:"M. Y" }}{% else %}?{% endif %})</span>
34+
</td>
35+
</tr>
36+
{% endfor %}
37+
</table>
38+
{% endif %}
39+
40+
{% endfor %}
41+
42+
{% endblock %}

0 commit comments

Comments
 (0)