From d7e1d258e543c3e94b30c2ce4bb5f1b9bafe76e2 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 11 Jan 2018 18:03:29 +0000 Subject: [PATCH] Added a new section for IPR disclosures on related documents to the IPR document search result page. Fixes issue #2412. - Legacy-Id: 14514 --- ietf/ipr/utils.py | 8 +++-- ietf/ipr/views.py | 18 ++++++----- ietf/templates/ipr/search_doc_result.html | 37 +++++++++++++++++++++-- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/ietf/ipr/utils.py b/ietf/ipr/utils.py index 016445733..531fcaa65 100644 --- a/ietf/ipr/utils.py +++ b/ietf/ipr/utils.py @@ -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)) \ No newline at end of file + return list(set(results)) + + diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 53d1d8540..8ae158045 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -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) diff --git a/ietf/templates/ipr/search_doc_result.html b/ietf/templates/ipr/search_doc_result.html index 09d35b91a..7cb69afcd 100644 --- a/ietf/templates/ipr/search_doc_result.html +++ b/ietf/templates/ipr/search_doc_result.html @@ -8,7 +8,7 @@ {% endblock %} -{% block search_header %}Draft search results{% endblock %} +{% block search_header %}Document IPR search results for {{doc}}{% endblock %} {% block search_result %}

Total number of IPR disclosures found: {{ iprs|length }}.

@@ -35,6 +35,12 @@ {% endfor %} + {% if related_iprs %} +

+ IPR declarations exist for related documents, see below. + These cannot be assumed to apply to the current document without closer inspection. +

+ {% endif %} {% endif %}

Total number of documents searched: {{ docs|length}}.

@@ -85,8 +91,35 @@ {% endfor %} + {% if related_iprs %} + + + + + + + + + + + + + {% for ipr in related_iprs %} + + + + + + {% endfor %} + +
DateIDStatement
{{ ipr.time|date:"Y-m-d" }}{{ ipr.id }}{{ ipr.title }} + {% if ipr.updates %}
(Updates ID#: {% for upd in ipr.updates %}{{upd.target_id}}{% if not forloop.last %}, {% endif %}{% endfor %}){% endif %} +
+ {% endif %} + + {% endblock %} {% block js %} -{% endblock %} \ No newline at end of file +{% endblock %}