Skip to content

Commit 2bb8810

Browse files
committed
* Added IPR search on document title
* Added test cases for this and for addtional empty test results * Some refactoring of IPR search code * Fixed bugs in multiple templates for the empty test result case - Legacy-Id: 685
1 parent e5610d3 commit 2bb8810

8 files changed

Lines changed: 103 additions & 11 deletions

ietf/ipr/search.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def iprs_from_docs(docs):
4444
doc.iprs = disclosures
4545
iprs += disclosures
4646
iprs = list(set(iprs))
47-
return iprs
47+
return iprs, docs
4848

4949
def search(request, type="", q="", id=""):
5050
wgs = IETFWG.objects.filter(group_type__group_type_id=1).exclude(group_acronym__acronym='2000').select_related().order_by('acronym.acronym')
@@ -61,6 +61,7 @@ def search(request, type="", q="", id=""):
6161
log("Got query: type=%s, q=%s, id=%s" % (type, q, id))
6262

6363
# Search by RFC number or draft-identifier
64+
# Document list with IPRs
6465
if type in ["document_search", "rfc_search"]:
6566
if type == "document_search":
6667
if q:
@@ -76,7 +77,7 @@ def search(request, type="", q="", id=""):
7677

7778
docs = related_docs(first, [])
7879
#docs = get_doclist.get_doclist(first)
79-
iprs = iprs_from_docs(docs)
80+
iprs, docs = iprs_from_docs(docs)
8081
return render("ipr/search_doc_result.html", {"q": q, "first": first, "iprs": iprs, "docs": docs},
8182
context_instance=RequestContext(request) )
8283
elif start.count():
@@ -86,6 +87,7 @@ def search(request, type="", q="", id=""):
8687
raise ValueError("Missing or malformed search parameters, or internal error")
8788

8889
# Search by legal name
90+
# IPR list with documents
8991
elif type == "patent_search":
9092
iprs = IprDetail.objects.filter(legal_name__icontains=q, status__in=[1,3]).order_by("-submitted_date", "-ipr_id")
9193
count = iprs.count()
@@ -97,10 +99,12 @@ def search(request, type="", q="", id=""):
9799
context_instance=RequestContext(request) )
98100

99101
# Search by content of email or pagent_info field
102+
# IPR list with documents
100103
elif type == "patent_info_search":
101104
pass
102105

103106
# Search by wg acronym
107+
# Document list with IPRs
104108
elif type == "wg_search":
105109
try:
106110
docs = list(InternetDraft.objects.filter(group__acronym=q))
@@ -110,17 +114,29 @@ def search(request, type="", q="", id=""):
110114
docs += list(Rfc.objects.filter(group_acronym=q))
111115

112116
docs = [ doc for doc in docs if doc.ipr.count() ]
113-
iprs = iprs_from_docs(docs)
117+
iprs, docs = iprs_from_docs(docs)
114118
count = len(iprs)
115-
#mark_last_doc(iprs)
116-
return render("ipr/search_wg_result.html", {"q": q, "docs": docs, "iprs": iprs, "count": count },
119+
return render("ipr/search_wg_result.html", {"q": q, "docs": docs, "count": count },
117120
context_instance=RequestContext(request) )
118121

119122
# Search by rfc and id title
123+
# Document list with IPRs
120124
elif type == "title_search":
121-
pass
125+
try:
126+
docs = list(InternetDraft.objects.filter(title__icontains=q))
127+
except:
128+
docs = []
129+
docs += list(Rfc.objects.filter(title__icontains=q))
130+
131+
docs = [ doc for doc in docs if doc.ipr.count() ]
132+
iprs, docs = iprs_from_docs(docs)
133+
count = len(iprs)
134+
return render("ipr/search_doctitle_result.html", {"q": q, "docs": docs, "count": count },
135+
context_instance=RequestContext(request) )
136+
122137

123138
# Search by title of IPR disclosure
139+
# IPR list with documents
124140
elif type == "ipr_title_search":
125141
pass
126142
else:

ietf/ipr/testurl.list

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
200 /ipr/new-specific/ https://datatracker.ietf.org/public/ipr.cgi
88
200 /ipr/new-third-party/ https://datatracker.ietf.org/public/ipr_notify.cgi
99
200 /ipr/update/ https://datatracker.ietf.org/public/ipr_update_list.cgi
10+
1011
200 /ipr/search/ https://datatracker.ietf.org/public/ipr_search.cgi
1112
302 /ipr/search/?option=document_search # incomplete argument set gives redirect
1213
200 /ipr/search/?document_search=mod&option=document_search https://datatracker.ietf.org/public/ipr_search.cgi?option=document_search&document_search=mod
1314
200,sort /ipr/search/?id_document_tag=2220&option=document_search https://datatracker.ietf.org/public/ipr_search.cgi?option=document_search&id_document_tag=2220
1415
200,sort /ipr/search/?rfc_search=1034&option=rfc_search https://datatracker.ietf.org/public/ipr_search.cgi?option=rfc_search&rfc_search=1034 # Loong result, RFC search
1516
200 /ipr/search/?rfc_search=4444&option=rfc_search https://datatracker.ietf.org/public/ipr_search.cgi?option=rfc_search&rfc_search=4444 # Empty result, RFC search
16-
200 /ipr/about/ https://datatracker.ietf.org/public/ipr_disclosure.cgi
1717
200 /ipr/search/?patent_search=nortel&option=patent_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_search&patent_search=nortel
18+
200 /ipr/search/?patent_search=nortelxz&option=patent_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_search&patent_search=nortelxz # Empty result
1819
200,sort,ignore:quote /ipr/search/?wg_search=dnsext&option=wg_search https://datatracker.ietf.org/public/ipr_search.cgi?option=wg_search&wg_search=dnsext
20+
#200,sort,ignore:quote /ipr/search/?wg_search=aaa&option=wg_search https://datatracker.ietf.org/public/ipr_search.cgi?option=wg_search&wg_search=aaa # FIXME This fails, needs revisiting
21+
200,sort,ignore:quote /ipr/search/?wg_search=acct&option=wg_search https://datatracker.ietf.org/public/ipr_search.cgi?option=wg_search&wg_search=acct # Empty result
22+
200,sort,ignore:quote /ipr/search/?option=title_search&title_search=AAA https://datatracker.ietf.org/public/ipr_search.cgi?option=title_search&title_search=AAA
23+
200,sort,ignore:quote /ipr/search/?option=title_search&title_search=AAAxz https://datatracker.ietf.org/public/ipr_search.cgi?option=title_search&title_search=AAAxz # Empty result
24+
200 /ipr/about/ https://datatracker.ietf.org/public/ipr_disclosure.cgi
1925
200 /ipr/2006/
2026
200 /ipr/2006/feb/
2127
200 /ipr/by-date/
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{% extends "ipr/search_result.html" %}
2+
{% load ietf_filters %}
3+
{% block search_result %}
4+
<table cellpadding="1" cellspacing="0" border="0">
5+
<tr><td colspan="3"><b>{% block search_header %}{% if not count %}Search result on {{ q }}{% else %}Document Title Search Result{% endif %}{% endblock %}</b></td></tr>
6+
{% if not count %}
7+
<tr>
8+
<td></td>
9+
<td colspan="2">
10+
<b>No IPR disclosures related to a document with the word(s) <i>{{ q }}</i> in the title have been submitted.</b>
11+
</td>
12+
</tr>
13+
{% else %}
14+
<tr><td colspan="3">Total number of IPR disclosures found: {{ count }} </td></tr>
15+
16+
{% block iprlist %}
17+
{% for doc in docs %}
18+
<tbody bgcolor="#{% cycle dadada,eaeaea as bgcolor %}">
19+
<tr >
20+
<td colspan="3">
21+
IPR that is related to <b><i>{{ doc|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.title }}"{% if doc.related %}, {{ doc.relation }} {{ doc.related|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.related.title }}"{% endif %},
22+
</i></b>which has the string <b>"<i>{{ q }}</i>"</b> within the document title.
23+
</td>
24+
</tr>
25+
{% if doc.iprs %}
26+
{% for ipr in doc.iprs %}
27+
<tr valign="top">
28+
<td width="100">{{ ipr.submitted_date }}</td>
29+
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
30+
<td>
31+
<!--
32+
{% for item in ipr.updates.all %}
33+
{% ifequal item.updated.status 1 %}
34+
IPR disclosure ID# {{ item.updated.ipr_id }}, "<a href="{% url ietf.ipr.views.show item.updated.ipr_id %}">{{ item.updated.title }}</a>" Updated by
35+
{% endifequal %}
36+
{% endfor %}-->
37+
{% for item in ipr.updated_by.all %}
38+
{% ifequal item.processed 1 %}
39+
IPR disclosure ID# {{ item.ipr.ipr_id }} "<a href="{% url ietf.ipr.views.show item.ipr.ipr_id %}">{{ item.ipr.title }}</a>" Updates
40+
{% endifequal %}
41+
{% endfor %}
42+
<a href="{% url ietf.ipr.views.show %}{{ ipr.ipr_id }}">"{{ ipr.title }}"</a>
43+
</td>
44+
</tr>
45+
{% endfor %}
46+
{% else %}
47+
<tr>
48+
<td></td>
49+
<td colspan="2"><b>No IPR disclosures related to <i>{{ doc|rfcspace|lstrip:"0" }}</i> have been submitted</b></td>
50+
</tr>
51+
{% endif %}
52+
</tbody>
53+
{% endfor %}
54+
{% endblock %}
55+
{% endif %}
56+
</table>
57+
{% endblock %}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{% extends "ipr/search_result.html" %}
22
{% load ietf_filters %}
3-
{% block search_header %}Patent Owner/Applicant Search Result{% endblock %}
3+
{% block search_header %}{% if not count %}Search result on {{ q }}{% else %}Patent Owner/Applicant Search Result{% endif %}{% endblock %}</b></td></tr>
44
{% block item_intro %}IPR that was submitted by <b><i>{{ q }}</i></b>,{% endblock %}

ietf/templates/ipr/search_result.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ <h2>IPR Disclosures</h2>
1414
{% if not iprs %}
1515
<tr>
1616
<td></td>
17-
<td colspan="2"><b>No IPR disclosures have been submitted by <i>{{ q }}</i></b></td>
17+
<td colspan="2"><b>No IPR disclosures have been submitted by the <i>{{ q }}</i></b></td>
1818
</tr>
1919
{% else %}
2020
<tr><td colspan="3">Total number of IPR disclosures found: {{ count }} </td></tr>

ietf/templates/ipr/search_wg_result.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
{% block search_result %}
44
<table cellpadding="1" cellspacing="0" border="0">
55
<tr><td colspan="3"><b>{% block search_header %}Working Group Search Result{% endblock %}</b></td></tr>
6-
{% if not iprs %}
6+
{% if not count %}
77
<tr>
88
<td></td>
9-
<td colspan="2"><b>No IPR disclosures have been submitted by <i>{{ q }}</i></b></td>
9+
<td colspan="2">
10+
<b>No IPR disclosures related to the <i>{{ q }}</i> working group have been submitted.</b>
11+
</td>
1012
</tr>
13+
<tr><td colspan="3">Total number of IPR disclosures found: {{ count }} </td></tr>
1114
{% else %}
1215
<tr><td colspan="3">Total number of IPR disclosures found: {{ count }} </td></tr>
1316

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
--- https://datatracker.ietf.org/public/ipr_search.cgi?option=title_search&title_search=AAAxz
2+
+++ /ipr/search/?option=title_search&title_search=AAAxz
3+
@@ -1,0 +1,1 @@
4+
+IPR Disclosure Page
5+
@@ -2,0 +3,2 @@
6+
+IPR Search Main Page
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
--- https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_search&patent_search=nortelxz
2+
+++ /ipr/search/?patent_search=nortelxz&option=patent_search
3+
@@ -4,0 +4,2 @@
4+
+IPR Search Main Page IPR Disclosure Page

0 commit comments

Comments
 (0)