3838from django .views .decorators .cache import cache_page
3939from ietf .idtracker .models import IDState , IESGLogin , IDSubState , Area , InternetDraft , Rfc , IDInternal , IETFWG
4040from ietf .idrfc .models import RfcIndex
41- from django .http import Http404 , HttpResponse
41+ from django .http import Http404 , HttpResponse , HttpResponsePermanentRedirect
4242from ietf .idrfc .idrfc_wrapper import IdWrapper ,RfcWrapper ,IdRfcWrapper
4343from ietf .utils import normalize_draftname
4444
@@ -47,6 +47,7 @@ class SearchForm(forms.Form):
4747 rfcs = forms .BooleanField (required = False ,initial = True )
4848 activeDrafts = forms .BooleanField (required = False ,initial = True )
4949 oldDrafts = forms .BooleanField (required = False ,initial = False )
50+ lucky = forms .BooleanField (required = False ,initial = False )
5051
5152 by = forms .ChoiceField (choices = [(x ,x ) for x in ('author' ,'group' ,'area' ,'ad' ,'state' )], required = False , initial = 'wg' , label = 'Foobar' )
5253 author = forms .CharField (required = False )
@@ -262,6 +263,12 @@ def search_results(request):
262263 meta ['by' ] = form .cleaned_data ['by' ]
263264 if 'ajax' in request .REQUEST and request .REQUEST ['ajax' ]:
264265 return render_to_response ('idrfc/search_results.html' , {'docs' :results , 'meta' :meta }, context_instance = RequestContext (request ))
266+ elif form .cleaned_data ['lucky' ] and len (results )== 1 :
267+ doc = results [0 ]
268+ if doc .id :
269+ return HttpResponsePermanentRedirect (doc .id .get_absolute_url ())
270+ else :
271+ return HttpResponsePermanentRedirect (doc .rfc .get_absolute_url ())
265272 else :
266273 return render_to_response ('idrfc/search_main.html' , {'form' :form , 'docs' :results ,'meta' :meta }, context_instance = RequestContext (request ))
267274
0 commit comments