Added a new section for IPR disclosures on related documents to the IPR document search result page. Fixes issue #2412.

- Legacy-Id: 14514
This commit is contained in:
Henrik Levkowetz 2018-01-11 18:03:29 +00:00
parent 5a1f3eaf36
commit d7e1d258e5
3 changed files with 51 additions and 12 deletions

View file

@ -29,11 +29,11 @@ def iprs_from_docs(aliases,**kwargs):
iprdocrels += alias.document.ipr(**kwargs)
return list(set([i.disclosure for i in iprdocrels]))
def related_docs(alias):
def related_docs(alias, relationship=['replaces', 'obs']):
"""Returns list of related documents"""
results = list(alias.document.docalias_set.all())
rels = alias.document.all_relations_that_doc(['replaces','obs'])
rels = alias.document.all_relations_that_doc(relationship)
for rel in rels:
rel_aliases = list(rel.target.document.docalias_set.all())
@ -42,4 +42,6 @@ def related_docs(alias):
x.related = rel
x.relation = rel.relationship.revname
results += rel_aliases
return list(set(results))
return list(set(results))

View file

@ -619,7 +619,8 @@ def search(request):
docid = request.GET.get("id") or request.GET.get("id_document_tag") or ""
docs = doc = None
iprs = []
related_iprs = []
# set states
states = request.GET.getlist('state',('posted','removed'))
if states == ['all']:
@ -647,10 +648,12 @@ def search(request):
# one match
if len(start) == 1:
first = start[0]
doc = str(first)
doc = first.document
docs = related_docs(first)
iprs = iprs_from_docs(docs,states=states)
template = "ipr/search_doc_result.html"
updated_docs = related_docs(first, ['updates',])
related_iprs = list(set(iprs_from_docs(updated_docs, states=states)) - set(iprs))
# multiple matches, select just one
elif start:
docs = start
@ -723,11 +726,12 @@ def search(request):
return render(request, template, {
"q": q,
"iprs": iprs,
"docs": docs,
"doc": doc,
"form":form,
"states":states
"iprs": iprs,
"docs": docs,
"doc": doc,
"form": form,
"states": states,
"related_iprs": related_iprs,
})
return HttpResponseRedirect(request.path)

View file

@ -8,7 +8,7 @@
<link rel="stylesheet" href="{% static "jquery.tablesorter/css/theme.bootstrap.min.css" %}">
{% endblock %}
{% block search_header %}Draft search results{% endblock %}
{% block search_header %}Document IPR search results <small>for {{doc}}</small>{% endblock %}
{% block search_result %}
<p class="alert alert-info">Total number of IPR disclosures found: <b>{{ iprs|length }}</b>.</p>
@ -35,6 +35,12 @@
{% endfor %}
</tbody>
</table>
{% if related_iprs %}
<p>
<i>IPR declarations exist for related documents, <a href="#related">see below</a>.
These cannot be assumed to apply to the current document without closer inspection.</i>
</p>
{% endif %}
{% endif %}
<p class="alert alert-info">Total number of documents searched: <b>{{ docs|length}}</b>.</p>
@ -85,8 +91,35 @@
{% endfor %}
</table>
{% if related_iprs %}
<p class="alert alert-info" id="related">Total number of possibly related IPR disclosures found: <b>{{ related_iprs|length }}</b>.</p>
<table class="table table-condensed table-striped tablesorter">
<thead>
<tr>
<th>Date</th>
<th>ID</th>
<th>Statement</th>
</tr>
</thead>
<tbody>
{% for ipr in related_iprs %}
<tr>
<td class="text-nowrap">{{ ipr.time|date:"Y-m-d" }}</td>
<td>{{ ipr.id }}</td>
<td><a href="{% url "ietf.ipr.views.show" id=ipr.id %}">{{ ipr.title }}</a>
{% if ipr.updates %} <br/>(Updates ID#: {% for upd in ipr.updates %}{{upd.target_id}}{% if not forloop.last %}, {% endif %}{% endfor %}){% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% block js %}
<script src="{% static "jquery.tablesorter/js/jquery.tablesorter.combined.min.js" %}"></script>
{% endblock %}
{% endblock %}