diff --git a/ietf/doc/forms.py b/ietf/doc/forms.py index daf02e8ac..554451c56 100644 --- a/ietf/doc/forms.py +++ b/ietf/doc/forms.py @@ -137,7 +137,8 @@ class AddDownrefForm(forms.Form): rfc = SearchableDocumentField( label="Referenced RFC", help_text="The RFC that is approved for downref", - required=True) + required=True, + doc_type="rfc") drafts = SearchableDocumentsField( label="Internet-Drafts that makes the reference", help_text="The Internet-Drafts that approve the downref in their Last Call", diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 8a0f2194d..8b112f5c5 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -421,9 +421,9 @@ class SearchTests(TestCase): self.assertContains(r, draft.title) def test_ajax_search_docs(self): - draft = IndividualDraftFactory() + draft = IndividualDraftFactory(name="draft-ietf-rfc1234bis") + rfc = IndividualRfcFactory(rfc_number=1234) - # Document url = urlreverse('ietf.doc.views_search.ajax_select2_search_docs', kwargs={ "model_name": "document", "doc_type": "draft", @@ -433,6 +433,28 @@ class SearchTests(TestCase): data = r.json() self.assertEqual(data[0]["id"], draft.pk) + url = urlreverse('ietf.doc.views_search.ajax_select2_search_docs', kwargs={ + "model_name": "document", + "doc_type": "rfc", + }) + r = self.client.get(url, dict(q=rfc.name)) + self.assertEqual(r.status_code, 200) + data = r.json() + self.assertEqual(data[0]["id"], rfc.pk) + + url = urlreverse('ietf.doc.views_search.ajax_select2_search_docs', kwargs={ + "model_name": "document", + "doc_type": "draft,rfc", + }) + r = self.client.get(url, dict(q="1234")) + self.assertEqual(r.status_code, 200) + data = r.json() + self.assertEqual(len(data), 2) + pks = set([data[i]["id"] for i in range(2)]) + self.assertEqual(pks, set([rfc.pk, draft.pk])) + + + def test_recent_drafts(self): # Three drafts to show with various warnings drafts = WgDraftFactory.create_batch(3,states=[('draft','active'),('draft-iesg','ad-eval')]) diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index e58bfc2f8..fbc99f6a2 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -90,7 +90,7 @@ urlpatterns = [ url(r'^all/?$', views_search.index_all_drafts), url(r'^active/?$', views_search.index_active_drafts), url(r'^recent/?$', views_search.recent_drafts), - url(r'^select2search/(?Pdocument)/(?Pdraft)/$', views_search.ajax_select2_search_docs), + url(r'^select2search/(?Pdocument)/(?P(draft|rfc|draft,rfc))/$', views_search.ajax_select2_search_docs), url(r'^ballots/irsg/$', views_ballot.irsg_ballot_status), url(r'^ballots/rsab/$', views_ballot.rsab_ballot_status), diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index 65b5d0429..f49260d1a 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -813,7 +813,10 @@ def ajax_select2_search_docs(request, model_name, doc_type): # TODO - remove mod if not q: objs = model.objects.none() else: - qs = model.objects.filter(type=doc_type) + if "," in doc_type: + qs = model.objects.filter(type__in=[t.strip() for t in doc_type.split(',')]) + else: + qs = model.objects.filter(type=doc_type) for t in q: qs = qs.filter(name__icontains=t) diff --git a/ietf/ipr/forms.py b/ietf/ipr/forms.py index e6db47684..0040a9db4 100644 --- a/ietf/ipr/forms.py +++ b/ietf/ipr/forms.py @@ -95,7 +95,7 @@ class AddEmailForm(forms.Form): return self.cleaned_data class DraftForm(forms.ModelForm): - document = SearchableDocumentField(label="I-D name/RFC number", required=True, doc_type="draft") # TODO - this needs to be an or, or the form needs modification + document = SearchableDocumentField(label="I-D name/RFC number", required=True, doc_type="draft,rfc") class Meta: model = IprDocRel diff --git a/ietf/templates/base.html b/ietf/templates/base.html index 1ab670df0..24de39f30 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -68,7 +68,7 @@ diff --git a/ietf/templates/doc/status_change/edit_related_rows.html b/ietf/templates/doc/status_change/edit_related_rows.html index 21a6d0646..044ebb1db 100644 --- a/ietf/templates/doc/status_change/edit_related_rows.html +++ b/ietf/templates/doc/status_change/edit_related_rows.html @@ -5,7 +5,7 @@ {% for rfc,choice_slug in form.relations.items %}