Merged in [19488] from rcross@amsl.com:
Change view /ipr/by-draft-recursive to use static content
- Legacy-Id: 19524
Note: SVN reference [19488] has been migrated to Git commit 93d5d193e5
This commit is contained in:
commit
2eb2ced685
17
ietf/ipr/management/commands/generate_draft_recursive_txt.py
Normal file
17
ietf/ipr/management/commands/generate_draft_recursive_txt.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Copyright The IETF Trust 2014-2021, All Rights Reserved
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
||||
from ietf.ipr.utils import generate_draft_recursive_txt
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = ("Generate machine-readable list of IPR disclosures by draft name (recursive)")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
try:
|
||||
generate_draft_recursive_txt()
|
||||
except (ValueError, IOError) as e:
|
||||
raise CommandError(e)
|
|
@ -13,7 +13,7 @@ from django.urls import reverse as urlreverse
|
|||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.doc.models import DocAlias
|
||||
from ietf.doc.factories import DocumentFactory, WgDraftFactory, IndividualDraftFactory, WgRfcFactory
|
||||
from ietf.doc.factories import DocumentFactory, WgDraftFactory, WgRfcFactory
|
||||
from ietf.group.factories import RoleFactory
|
||||
from ietf.ipr.factories import HolderIprDisclosureFactory, GenericIprDisclosureFactory, IprEventFactory
|
||||
from ietf.ipr.mail import (process_response_email, get_reply_to, get_update_submitter_emails,
|
||||
|
@ -129,16 +129,6 @@ class IprTests(TestCase):
|
|||
self.assertContains(r, draft.name)
|
||||
self.assertContains(r, str(ipr.pk))
|
||||
|
||||
def test_iprs_for_drafts_recursive(self):
|
||||
draft = WgDraftFactory(relations=[('replaces', IndividualDraftFactory())])
|
||||
ipr = HolderIprDisclosureFactory(docs=[draft,])
|
||||
replaced = draft.all_related_that_doc('replaces')
|
||||
r = self.client.get(urlreverse("ietf.ipr.views.by_draft_recursive_txt"))
|
||||
self.assertContains(r, draft.name)
|
||||
for alias in replaced:
|
||||
self.assertContains(r, alias.name)
|
||||
self.assertContains(r, str(ipr.pk))
|
||||
|
||||
def test_about(self):
|
||||
r = self.client.get(urlreverse("ietf.ipr.views.about"))
|
||||
self.assertContains(r, "File a disclosure")
|
||||
|
@ -723,4 +713,4 @@ Subject: test
|
|||
removed_docevent = doc.docevent_set.filter(type='removed_related_ipr').first()
|
||||
self.assertIn(ipr.title, removed_docevent.desc,
|
||||
'IprDisclosure title does not appear in DocEvent desc when removed')
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright The IETF Trust 2014-2020, All Rights Reserved
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from ietf.ipr.models import IprDocRel
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
|
@ -61,4 +62,30 @@ def related_docs(alias, relationship=('replaces', 'obs')):
|
|||
|
||||
return list(set(results))
|
||||
|
||||
|
||||
def generate_draft_recursive_txt():
|
||||
docipr = {}
|
||||
|
||||
for o in IprDocRel.objects.filter(disclosure__state='posted').select_related('document'):
|
||||
alias = o.document
|
||||
name = alias.name
|
||||
for document in alias.docs.all():
|
||||
related = set(document.docalias.all()) | set(document.all_related_that_doc(('obs', 'replaces')))
|
||||
for alias in related:
|
||||
name = alias.name
|
||||
if name.startswith("rfc"):
|
||||
name = name.upper()
|
||||
if not name in docipr:
|
||||
docipr[name] = []
|
||||
docipr[name].append(o.disclosure_id)
|
||||
|
||||
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
||||
for name, iprs in docipr.items():
|
||||
lines.append(name + "\t" + "\t".join(str(ipr_id) for ipr_id in sorted(iprs)))
|
||||
|
||||
data = '\n'.join(lines)
|
||||
filename = '/a/ietfdata/derived/ipr_draft_recursive.txt'
|
||||
with open(filename, 'w') as f:
|
||||
f.write(data)
|
||||
|
||||
|
||||
|
|
|
@ -459,26 +459,14 @@ def by_draft_txt(request):
|
|||
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
||||
|
||||
def by_draft_recursive_txt(request):
|
||||
docipr = {}
|
||||
"""Returns machine-readable list of IPR disclosures by draft name, recursive.
|
||||
NOTE: this view is expensive and should be removed once tools.ietf.org is retired,
|
||||
including util function and management commands that generate the content for
|
||||
this view."""
|
||||
|
||||
for o in IprDocRel.objects.filter(disclosure__state='posted').select_related('document'):
|
||||
alias = o.document
|
||||
name = alias.name
|
||||
for document in alias.docs.all():
|
||||
related = set(document.docalias.all()) | set(document.all_related_that_doc(('obs', 'replaces')))
|
||||
for alias in related:
|
||||
name = alias.name
|
||||
if name.startswith("rfc"):
|
||||
name = name.upper()
|
||||
if not name in docipr:
|
||||
docipr[name] = []
|
||||
docipr[name].append(o.disclosure_id)
|
||||
|
||||
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
||||
for name, iprs in docipr.items():
|
||||
lines.append(name + "\t" + "\t".join(str(ipr_id) for ipr_id in sorted(iprs)))
|
||||
|
||||
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
||||
with open('/a/ietfdata/derived/ipr_draft_recursive.txt') as f:
|
||||
content = f.read()
|
||||
return HttpResponse(content, content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
||||
|
||||
|
||||
def new(request, type, updates=None):
|
||||
|
|
Loading…
Reference in a new issue