Skip to content

Commit 2609be9

Browse files
committed
Changes due to adamlaska#168:
* Move wg number redirect to /drafts/wgid/___/ * Redirect from /drafts/wgid/___/ to /drafts/wg/wgname/ While testing and reading code, I decided to fix: * Copy base_extra when assigning it, since this was what was initially intended * Pass the search string to the wglist template to give a nice error message if there are no matching working groups. - Legacy-Id: 747
1 parent 80db788 commit 2609be9

4 files changed

Lines changed: 31 additions & 25 deletions

File tree

ietf/idindex/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
}
1616

1717
urlpatterns = patterns('',
18-
(r'^wg/(?P<id>\d+)/$', views.wgdocs),
19-
(r'^wg/(?P<slug>[^/]+)/$', views.wgdocs),
18+
(r'^wgid/(?P<id>\d+)/$', views.wgdocs_redir),
19+
(r'^wg/(?P<wg>[^/]+)/$', views.wgdocs),
2020
(r'^ind/(?P<filter>[^/]+)/$', views.inddocs),
2121
(r'^other/(?P<cat>[^/]+)/$', views.otherdocs),
2222
# (?P<cat>(?:all|rfc|current|dead)) really confuses reverse()

ietf/idindex/views.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

3-
from django.http import HttpResponse
3+
from django.http import HttpResponse, HttpResponsePermanentRedirect
44
from django.views.generic.list_detail import object_list
55
from django.db.models import Q
66
from django.http import Http404
77
from django.template import RequestContext, loader
88
from django.shortcuts import render_to_response, get_object_or_404
9+
from django.core.urlresolvers import reverse
910
from ietf.idtracker.models import Acronym, IETFWG, InternetDraft, Rfc
1011
from ietf.idindex.forms import IDIndexSearchForm
1112
from ietf.idindex.models import alphabet, orgs, orgs_dict
1213
from ietf.utils import orl, flattenl
1314

1415
base_extra = { 'alphabet': alphabet, 'orgs': orgs }
1516

16-
def wgdocs(request, **kwargs):
17-
if kwargs.has_key('id'):
18-
queryset = InternetDraft.objects.filter(group=kwargs['id'])
19-
group = get_object_or_404(Acronym, acronym_id=kwargs['id'])
20-
else:
21-
wg = kwargs['slug']
22-
try:
23-
group = Acronym.objects.get(acronym=wg)
24-
except Acronym.DoesNotExist: # try a search
25-
if wg == 'other':
26-
queryset = IETFWG.objects.filter(
27-
orl([Q(group_acronym__acronym__istartswith="%d" % i) for i in range(0,10)])
28-
)
29-
else:
30-
queryset = IETFWG.objects.filter(group_acronym__acronym__istartswith=wg)
31-
queryset = queryset.filter(group_type__type='WG').select_related().order_by('status_id', 'acronym.acronym')
32-
return object_list(request, queryset=queryset, template_name='idindex/wglist.html', allow_empty=True, extra_context=base_extra)
33-
queryset = InternetDraft.objects.filter(group__acronym=wg)
17+
def wgdocs_redir(request, id):
18+
group = get_object_or_404(Acronym, acronym_id=id)
19+
return HttpResponsePermanentRedirect(reverse(wgdocs, args=[group.acronym]))
20+
21+
def wgdocs(request, wg):
22+
try:
23+
group = Acronym.objects.get(acronym=wg)
24+
except Acronym.DoesNotExist: # try a search
25+
if wg == 'other':
26+
queryset = IETFWG.objects.filter(
27+
orl([Q(group_acronym__acronym__istartswith="%d" % i) for i in range(0,10)])
28+
)
29+
else:
30+
queryset = IETFWG.objects.filter(group_acronym__acronym__istartswith=wg)
31+
queryset = queryset.filter(group_type__type='WG').select_related().order_by('status_id', 'acronym.acronym')
32+
extra = base_extra.copy()
33+
extra['search'] = wg
34+
return object_list(request, queryset=queryset, template_name='idindex/wglist.html', allow_empty=True, extra_context=extra)
35+
queryset = InternetDraft.objects.filter(group__acronym=wg)
3436
queryset = queryset.order_by('status_id', 'filename')
35-
extra = base_extra
37+
extra = base_extra.copy()
3638
extra['group'] = group
3739
return object_list(request, queryset=queryset, template_name='idindex/wgdocs.html', allow_empty=True, extra_context=extra)
3840

@@ -47,7 +49,7 @@ def inddocs(request, filter=None):
4749
else:
4850
queryset = InternetDraft.objects.filter(filename__istartswith='draft-' + filter)
4951
queryset = queryset.exclude(ind_exception).filter(group__acronym='none').order_by('filename')
50-
extra = base_extra
52+
extra = base_extra.copy()
5153
extra['filter'] = filter
5254
return object_list(request, queryset=queryset, template_name='idindex/inddocs.html', allow_empty=True, extra_context=extra)
5355

@@ -61,7 +63,7 @@ def otherdocs(request, cat=None):
6163
Q(filename__istartswith="draft-ietf-%s-" % p)
6264
for p in org.get('prefixes', [ org['key'] ])]))
6365
queryset = queryset.order_by('status_id','filename')
64-
extra = base_extra
66+
extra = base_extra.copy()
6567
extra['category'] = cat
6668
return object_list(request, queryset=queryset, template_name='idindex/otherdocs.html', allow_empty=True, extra_context=extra)
6769

ietf/redirects/fixtures/initial_data.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@
272272
</object>
273273
<object pk="13" model="redirects.command">
274274
<field type="CharField" name="command">show_wg_id</field>
275-
<field type="CharField" name="url">wg</field>
275+
<field type="CharField" name="url">wgid</field>
276276
<field to="redirects.redirect" name="script" rel="ManyToOneRel">7</field>
277277
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">4</field>
278278
</object>

ietf/templates/idindex/wglist.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
{% block iddbcontent %}
55
<hr>
66
<h3>Please select a Working Group from the list below</h3>
7+
{% if object_list %}
78
<blockquote>
89
{% regroup object_list by status as grouped %}
910
{% for status in grouped %}
@@ -19,5 +20,8 @@ <h4>{{ status.grouper }} Working Groups</h4>
1920
{% endfor %}
2021
</ul>
2122
{% endfor %}
23+
{% else %}
24+
<p>No working groups found beginning with "{{ search }}".</p>
25+
{% endif %}
2226

2327
{% endblock %}

0 commit comments

Comments
 (0)