Merged r840 from branch/2.00 to trunk, and updated version information in ietf/__init__.py
- Legacy-Id: 841
|
@ -1,9 +1,9 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
__version__ = "2.01-dev"
|
||||
__version__ = "2.xx-trunk"
|
||||
|
||||
__date__ = "$Date$"
|
||||
|
||||
__rev__ = "$Rev:$ (dev) Latest release: Rev. 726 "
|
||||
__rev__ = "$Rev$ (dev) Latest release: Rev. 838 "
|
||||
|
||||
__id__ = "$Id$"
|
||||
|
|
5
ietf/bin/pretty-xml-dump
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
python manage.py dumpdata --format=xml "$@" | sed -e 's/<\/*object/\
|
||||
&/g' -e 's/<field/\
|
||||
&/g' -e 's/<\/django-objects/\
|
||||
&/g'
|
|
@ -1,19 +1,20 @@
|
|||
200 /drafts/wg/1041/ https://datatracker.ietf.org/public/idindex.cgi?command=show_wg_id&id=1041
|
||||
301,skipdiff /drafts/wgid/1041/ https://datatracker.ietf.org/public/idindex.cgi?command=show_wg_id&id=1041
|
||||
200,skipredirect /drafts/wg/idr/ https://datatracker.ietf.org/public/idindex.cgi?command=show_wg_id&id=1041
|
||||
200 /drafts/wg/I/ https://datatracker.ietf.org/public/idindex.cgi?command=show_wg&fl=I
|
||||
200 /drafts/ind/F/ https://datatracker.ietf.org/public/idindex.cgi?command=show_ind_id&fl=F
|
||||
200 /drafts/other/tools/ https://datatracker.ietf.org/public/idindex.cgi?command=show_other&cat=tools
|
||||
200,sort /drafts/rfc/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=rfc
|
||||
200,sort /drafts/rfc/?sort=name https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=rfc&sort=name
|
||||
#200,sort /drafts/rfc/?sort=name https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=rfc&sort=name
|
||||
200,skipdiff /drafts/current/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=current
|
||||
200,skipdiff /drafts/all/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=all
|
||||
200,sort /drafts/dead/?sort=name https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=dead&sort=name
|
||||
200,skipdiff /drafts/9574/related/ https://datatracker.ietf.org/public/idindex.cgi?command=view_related_docs&id=9574
|
||||
200,sort /drafts/dead/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=dead
|
||||
#200,sort /drafts/dead/?sort=name https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=dead&sort=name
|
||||
301,skipdiff /drafts/9574/related/ https://datatracker.ietf.org/public/idindex.cgi?command=view_related_docs&id=9574
|
||||
200 /drafts/draft-ietf-dnsext-dnssec-protocol/related/
|
||||
200 /drafts/9574/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
|
||||
301,skipdiff /drafts/9574/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
|
||||
200,skipredirect /drafts/draft-ietf-dnsext-dnssec-protocol/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
|
||||
200 /drafts/all_id_txt.html
|
||||
200 /drafts/all_id.html
|
||||
200,skipdiff /drafts/ https://datatracker.ietf.org/public/idindex.cgi?command=search_id
|
||||
200 /drafts/ https://datatracker.ietf.org/public/idindex.cgi
|
||||
404 /drafts/wg/11/
|
||||
200 /drafts/wg/11/
|
||||
|
|
|
@ -15,8 +15,8 @@ info_dict = {
|
|||
}
|
||||
|
||||
urlpatterns = patterns('',
|
||||
(r'^wg/(?P<id>\d+)/$', views.wgdocs),
|
||||
(r'^wg/(?P<slug>[^/]+)/$', views.wgdocs),
|
||||
(r'^wgid/(?P<id>\d+)/$', views.wgdocs_redir),
|
||||
(r'^wg/(?P<wg>[^/]+)/$', views.wgdocs),
|
||||
(r'^ind/(?P<filter>[^/]+)/$', views.inddocs),
|
||||
(r'^other/(?P<cat>[^/]+)/$', views.otherdocs),
|
||||
# (?P<cat>(?:all|rfc|current|dead)) really confuses reverse()
|
||||
|
@ -24,10 +24,10 @@ urlpatterns = patterns('',
|
|||
(r'^(?P<cat>rfc)/$', views.showdocs),
|
||||
(r'^(?P<cat>current)/$', views.showdocs),
|
||||
(r'^(?P<cat>dead)/$', views.showdocs),
|
||||
(r'^(?P<id>\d+)/related/$', views.view_related_docs),
|
||||
(r'^(?P<id>\d+)/related/$', views.redirect_related),
|
||||
(r'^(?P<slug>[^/]+)/related/$', views.view_related_docs),
|
||||
(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
|
||||
(r'^(?P<slug>[^/]+)/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, slug_field='filename')),
|
||||
(r'^(?P<object_id>\d+)/$', views.redirect_id),
|
||||
(r'^(?P<slug>[^/]+)/$', views.view_id, dict(info_dict, slug_field='filename')),
|
||||
(r'^all_id_txt.html$', views.all_id, { 'template_name': 'idindex/all_id_txt.html' }),
|
||||
(r'^all_id.html$', views.all_id, { 'template_name': 'idindex/all_id.html' }),
|
||||
(r'^$', views.search),
|
||||
|
|
|
@ -1,38 +1,41 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.http import HttpResponse, HttpResponsePermanentRedirect
|
||||
from django.views.generic.list_detail import object_list
|
||||
from django.db.models import Q
|
||||
from django.http import Http404
|
||||
from django.template import RequestContext, loader
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.list_detail import object_detail
|
||||
from ietf.idtracker.models import Acronym, IETFWG, InternetDraft, Rfc
|
||||
from ietf.idindex.forms import IDIndexSearchForm
|
||||
from ietf.idindex.models import alphabet, orgs, orgs_dict
|
||||
from ietf.utils import orl, flattenl
|
||||
from ietf.utils import orl, flattenl, normalize_draftname
|
||||
|
||||
base_extra = { 'alphabet': alphabet, 'orgs': orgs }
|
||||
|
||||
def wgdocs(request, **kwargs):
|
||||
if kwargs.has_key('id'):
|
||||
queryset = InternetDraft.objects.filter(group=kwargs['id'])
|
||||
group = get_object_or_404(Acronym, acronym_id=kwargs['id'])
|
||||
else:
|
||||
wg = kwargs['slug']
|
||||
try:
|
||||
group = Acronym.objects.get(acronym=wg)
|
||||
except Acronym.DoesNotExist: # try a search
|
||||
if wg == 'other':
|
||||
queryset = IETFWG.objects.filter(
|
||||
orl([Q(group_acronym__acronym__istartswith="%d" % i) for i in range(0,10)])
|
||||
)
|
||||
else:
|
||||
queryset = IETFWG.objects.filter(group_acronym__acronym__istartswith=wg)
|
||||
queryset = queryset.filter(group_type__type='WG').select_related().order_by('status_id', 'acronym.acronym')
|
||||
return object_list(request, queryset=queryset, template_name='idindex/wglist.html', allow_empty=True, extra_context=base_extra)
|
||||
queryset = InternetDraft.objects.filter(group__acronym=wg)
|
||||
def wgdocs_redir(request, id):
|
||||
group = get_object_or_404(Acronym, acronym_id=id)
|
||||
return HttpResponsePermanentRedirect(reverse(wgdocs, args=[group.acronym]))
|
||||
|
||||
def wgdocs(request, wg):
|
||||
try:
|
||||
group = Acronym.objects.get(acronym=wg)
|
||||
except Acronym.DoesNotExist: # try a search
|
||||
if wg == 'other':
|
||||
queryset = IETFWG.objects.filter(
|
||||
orl([Q(group_acronym__acronym__istartswith="%d" % i) for i in range(0,10)])
|
||||
)
|
||||
else:
|
||||
queryset = IETFWG.objects.filter(group_acronym__acronym__istartswith=wg)
|
||||
queryset = queryset.filter(group_type__type='WG').select_related().order_by('status_id', 'acronym.acronym')
|
||||
extra = base_extra.copy()
|
||||
extra['search'] = wg
|
||||
return object_list(request, queryset=queryset, template_name='idindex/wglist.html', allow_empty=True, extra_context=extra)
|
||||
queryset = InternetDraft.objects.filter(group__acronym=wg)
|
||||
queryset = queryset.order_by('status_id', 'filename')
|
||||
extra = base_extra
|
||||
extra = base_extra.copy()
|
||||
extra['group'] = group
|
||||
return object_list(request, queryset=queryset, template_name='idindex/wgdocs.html', allow_empty=True, extra_context=extra)
|
||||
|
||||
|
@ -47,7 +50,7 @@ def inddocs(request, filter=None):
|
|||
else:
|
||||
queryset = InternetDraft.objects.filter(filename__istartswith='draft-' + filter)
|
||||
queryset = queryset.exclude(ind_exception).filter(group__acronym='none').order_by('filename')
|
||||
extra = base_extra
|
||||
extra = base_extra.copy()
|
||||
extra['filter'] = filter
|
||||
return object_list(request, queryset=queryset, template_name='idindex/inddocs.html', allow_empty=True, extra_context=extra)
|
||||
|
||||
|
@ -61,7 +64,7 @@ def otherdocs(request, cat=None):
|
|||
Q(filename__istartswith="draft-ietf-%s-" % p)
|
||||
for p in org.get('prefixes', [ org['key'] ])]))
|
||||
queryset = queryset.order_by('status_id','filename')
|
||||
extra = base_extra
|
||||
extra = base_extra.copy()
|
||||
extra['category'] = cat
|
||||
return object_list(request, queryset=queryset, template_name='idindex/otherdocs.html', allow_empty=True, extra_context=extra)
|
||||
|
||||
|
@ -98,6 +101,9 @@ def showdocs(request, cat=None):
|
|||
|
||||
|
||||
def search(request):
|
||||
args = request.GET.copy()
|
||||
if args.has_key('filename'):
|
||||
args['filename'] = normalize_draftname(args['filename'])
|
||||
form = IDIndexSearchForm()
|
||||
t = loader.get_template('idindex/search.html')
|
||||
# if there's a query, do the search and supply results to the template
|
||||
|
@ -110,20 +116,20 @@ def search(request):
|
|||
'first_name': 'authors__person__first_name__icontains',
|
||||
}
|
||||
for key in qdict.keys() + ['other_group']:
|
||||
if key in request.REQUEST:
|
||||
if key in args:
|
||||
searching = True
|
||||
if searching:
|
||||
# '0' and '-1' are flag values for "any"
|
||||
# in the original .cgi search page.
|
||||
# They are compared as strings because the
|
||||
# query dict is always strings.
|
||||
q_objs = [Q(**{qdict[k]: request.REQUEST[k]})
|
||||
q_objs = [Q(**{qdict[k]: args[k]})
|
||||
for k in qdict.keys()
|
||||
if request.REQUEST.get(k, '') != '' and
|
||||
request.REQUEST[k] != '0' and
|
||||
request.REQUEST[k] != '-1']
|
||||
if args.get(k, '') != '' and
|
||||
args[k] != '0' and
|
||||
args[k] != '-1']
|
||||
try:
|
||||
other = orgs_dict[request.REQUEST['other_group']]
|
||||
other = orgs_dict[args['other_group']]
|
||||
q_objs += [orl(
|
||||
[Q(filename__istartswith="draft-%s-" % p)|
|
||||
Q(filename__istartswith="draft-ietf-%s-" % p)
|
||||
|
@ -212,13 +218,25 @@ def related_docs(startdoc):
|
|||
process(startdoc, (0,0,0))
|
||||
return related
|
||||
|
||||
def view_related_docs(request, **kwargs):
|
||||
if kwargs.has_key('id'):
|
||||
startdoc = get_object_or_404(InternetDraft, id_document_tag=kwargs['id'])
|
||||
else:
|
||||
startdoc = get_object_or_404(InternetDraft, filename=kwargs['slug'])
|
||||
def redirect_related(request, id):
|
||||
doc = get_object_or_404(InternetDraft, id_document_tag=id)
|
||||
return HttpResponsePermanentRedirect(reverse(view_related_docs, args=[doc.filename]))
|
||||
|
||||
def view_related_docs(request, slug):
|
||||
startdoc = get_object_or_404(InternetDraft, filename=slug)
|
||||
related = related_docs(startdoc)
|
||||
context = {'related': related, 'numdocs': len(related)}
|
||||
context = {'related': related, 'numdocs': len(related), 'startdoc': startdoc}
|
||||
context.update(base_extra)
|
||||
return render_to_response("idindex/view_related_docs.html", context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def redirect_id(request, object_id):
|
||||
'''Redirect from historical document ID to preferred filename url.'''
|
||||
doc = get_object_or_404(InternetDraft, id_document_tag=object_id)
|
||||
return HttpResponsePermanentRedirect(reverse(view_id, args=[doc.filename]))
|
||||
|
||||
# Wrapper around object_detail to give permalink a handle.
|
||||
# The named-URLs feature in django 0.97 will eliminate the
|
||||
# need for these.
|
||||
def view_id(*args, **kwargs):
|
||||
return object_detail(*args, **kwargs)
|
||||
|
|
|
@ -1,29 +1,35 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django.contrib.syndication.feeds import Feed
|
||||
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
|
||||
from django.utils.feedgenerator import Atom1Feed
|
||||
from ietf.idtracker.models import InternetDraft, DocumentComment
|
||||
from ietf.idtracker.models import IDInternal
|
||||
import datetime
|
||||
import re
|
||||
|
||||
class DocumentComments(Feed):
|
||||
feed_type = Atom1Feed
|
||||
def get_object(self, bits):
|
||||
if len(bits) != 1:
|
||||
raise InternetDraft.DoesNotExist
|
||||
return InternetDraft.objects.get(filename=bits[0])
|
||||
raise IDInternal.DoesNotExist
|
||||
rfc = re.match('rfc(\d+)', bits[0])
|
||||
if rfc:
|
||||
return IDInternal.objects.get(draft_id=int(rfc.group(1)), rfc_flag=1)
|
||||
else:
|
||||
return IDInternal.objects.get(draft__filename=bits[0], rfc_flag=0)
|
||||
|
||||
def title(self, obj):
|
||||
return "I-D Tracker comments for %s" % obj.filename
|
||||
return "I-D Tracker comments for %s" % obj.document().filename
|
||||
|
||||
def link(self, obj):
|
||||
return "/idtracker/%s" % obj.filename
|
||||
# obj.get_absolute_url() ?
|
||||
if obj is None:
|
||||
raise FeedDoesNotExist
|
||||
return obj.get_absolute_url()
|
||||
|
||||
def description(self, obj):
|
||||
self.title(obj)
|
||||
return self.title(obj)
|
||||
|
||||
def items(self, obj):
|
||||
return DocumentComment.objects.filter(document=obj.id_document_tag).order_by("-date")[:15]
|
||||
return obj.public_comments().order_by("-date")[:15]
|
||||
|
||||
def item_pubdate(self, item):
|
||||
time = datetime.time(*[int(t) for t in item.time.split(":")])
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<django-objects version="1.0">
|
||||
<object pk="6" model="idtracker.role">
|
||||
<field to="redirects.suffix" name="person" rel="ManyToOneRel">14966</field>
|
||||
<field type="CharField" name="role_name">IAD</field>
|
||||
</object>
|
||||
</django-objects>
|
151
ietf/idtracker/fixtures/wgtest.xml
Normal file
|
@ -0,0 +1,151 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<django-objects version="1.0">
|
||||
<object pk="4" model="idtracker.personororginfo">
|
||||
<field type="CharField" name="record_type"></field>
|
||||
<field type="CharField" name="name_prefix"></field>
|
||||
<field type="CharField" name="first_name">Hermey</field>
|
||||
<field type="CharField" name="first_name_key">HERMEY</field>
|
||||
<field type="CharField" name="middle_initial"></field>
|
||||
<field type="CharField" name="middle_initial_key"></field>
|
||||
<field type="CharField" name="last_name">Elf</field>
|
||||
<field type="CharField" name="last_name_key">ELF</field>
|
||||
<field type="CharField" name="name_suffix"></field>
|
||||
<field type="DateField" name="date_modified">2007-07-02</field>
|
||||
<field type="CharField" name="modified_by"></field>
|
||||
<field type="DateField" name="date_created">2007-07-02</field>
|
||||
<field type="CharField" name="created_by"></field>
|
||||
<field type="CharField" name="address_type"></field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.personororginfo">
|
||||
<field type="CharField" name="record_type"></field>
|
||||
<field type="CharField" name="name_prefix"></field>
|
||||
<field type="CharField" name="first_name">Kris</field>
|
||||
<field type="CharField" name="first_name_key">KRIS</field>
|
||||
<field type="CharField" name="middle_initial"></field>
|
||||
<field type="CharField" name="middle_initial_key"></field>
|
||||
<field type="CharField" name="last_name">Kringle</field>
|
||||
<field type="CharField" name="last_name_key">KRINGLE</field>
|
||||
<field type="CharField" name="name_suffix"></field>
|
||||
<field type="DateField" name="date_modified">2007-07-02</field>
|
||||
<field type="CharField" name="modified_by"></field>
|
||||
<field type="DateField" name="date_created">2007-07-02</field>
|
||||
<field type="CharField" name="created_by"></field>
|
||||
<field type="CharField" name="address_type"></field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.personororginfo">
|
||||
<field type="CharField" name="record_type"></field>
|
||||
<field type="CharField" name="name_prefix"></field>
|
||||
<field type="CharField" name="first_name">Snow</field>
|
||||
<field type="CharField" name="first_name_key">SNOW</field>
|
||||
<field type="CharField" name="middle_initial"></field>
|
||||
<field type="CharField" name="middle_initial_key"></field>
|
||||
<field type="CharField" name="last_name">Miser</field>
|
||||
<field type="CharField" name="last_name_key">MISER</field>
|
||||
<field type="CharField" name="name_suffix"></field>
|
||||
<field type="DateField" name="date_modified">2007-07-02</field>
|
||||
<field type="CharField" name="modified_by"></field>
|
||||
<field type="DateField" name="date_created">2007-07-02</field>
|
||||
<field type="CharField" name="created_by"></field>
|
||||
<field type="CharField" name="address_type"></field>
|
||||
</object>
|
||||
<object pk="3" model="idtracker.personororginfo">
|
||||
<field type="CharField" name="record_type"></field>
|
||||
<field type="CharField" name="name_prefix"></field>
|
||||
<field type="CharField" name="first_name">Rudolph</field>
|
||||
<field type="CharField" name="first_name_key">RUDOLPH</field>
|
||||
<field type="CharField" name="middle_initial"></field>
|
||||
<field type="CharField" name="middle_initial_key"></field>
|
||||
<field type="CharField" name="last_name">Reindeer</field>
|
||||
<field type="CharField" name="last_name_key">REINDEER</field>
|
||||
<field type="CharField" name="name_suffix"></field>
|
||||
<field type="DateField" name="date_modified">2007-07-02</field>
|
||||
<field type="CharField" name="modified_by"></field>
|
||||
<field type="DateField" name="date_created">2007-07-02</field>
|
||||
<field type="CharField" name="created_by"></field>
|
||||
<field type="CharField" name="address_type"></field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.wgchair">
|
||||
<field to="idtracker.personororginfo" name="person" rel="ManyToOneRel">1</field>
|
||||
<field to="idtracker.ietfwg" name="group_acronym" rel="ManyToOneRel">1</field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.wgchair">
|
||||
<field to="idtracker.personororginfo" name="person" rel="ManyToOneRel">2</field>
|
||||
<field to="idtracker.ietfwg" name="group_acronym" rel="ManyToOneRel">2</field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.ietfwg">
|
||||
<field to="idtracker.wgtype" name="group_type" rel="ManyToOneRel">1</field>
|
||||
<field type="DateField" name="proposed_date"><None></None></field>
|
||||
<field type="DateField" name="start_date"><None></None></field>
|
||||
<field type="DateField" name="dormant_date"><None></None></field>
|
||||
<field type="DateField" name="concluded_date"><None></None></field>
|
||||
<field to="idtracker.wgstatus" name="status" rel="ManyToOneRel">1</field>
|
||||
<field to="idtracker.areadirector" name="area_director" rel="ManyToOneRel"><None></None></field>
|
||||
<field type="CharField" name="meeting_scheduled"></field>
|
||||
<field type="CharField" name="email_address"></field>
|
||||
<field type="CharField" name="email_subscribe"></field>
|
||||
<field type="CharField" name="email_keyword"></field>
|
||||
<field type="CharField" name="email_archive"></field>
|
||||
<field type="TextField" name="comments"></field>
|
||||
<field type="DateField" name="last_modified_date">2007-07-02</field>
|
||||
<field type="CharField" name="meeting_scheduled_old"></field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.ietfwg">
|
||||
<field to="idtracker.wgtype" name="group_type" rel="ManyToOneRel">3</field>
|
||||
<field type="DateField" name="proposed_date"><None></None></field>
|
||||
<field type="DateField" name="start_date"><None></None></field>
|
||||
<field type="DateField" name="dormant_date"><None></None></field>
|
||||
<field type="DateField" name="concluded_date"><None></None></field>
|
||||
<field to="idtracker.wgstatus" name="status" rel="ManyToOneRel">1</field>
|
||||
<field to="idtracker.areadirector" name="area_director" rel="ManyToOneRel"><None></None></field>
|
||||
<field type="CharField" name="meeting_scheduled"></field>
|
||||
<field type="CharField" name="email_address"></field>
|
||||
<field type="CharField" name="email_subscribe"></field>
|
||||
<field type="CharField" name="email_keyword"></field>
|
||||
<field type="CharField" name="email_archive"></field>
|
||||
<field type="TextField" name="comments"></field>
|
||||
<field type="DateField" name="last_modified_date">2007-07-02</field>
|
||||
<field type="CharField" name="meeting_scheduled_old"></field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.acronym">
|
||||
<field type="CharField" name="acronym">xmas</field>
|
||||
<field type="CharField" name="name">Christmas</field>
|
||||
<field type="CharField" name="name_key">CHRISTMAS</field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.acronym">
|
||||
<field type="CharField" name="acronym">snow</field>
|
||||
<field type="CharField" name="name">Silly New Operational Work</field>
|
||||
<field type="CharField" name="name_key">SILLY NEW OPERATIONAL WORK</field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.wgtype">
|
||||
<field type="CharField" name="type">WG</field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.wgtype">
|
||||
<field type="CharField" name="type">PWG</field>
|
||||
</object>
|
||||
<object pk="3" model="idtracker.wgtype">
|
||||
<field type="CharField" name="type">BOF</field>
|
||||
</object>
|
||||
<object pk="4" model="idtracker.wgtype">
|
||||
<field type="CharField" name="type">AG</field>
|
||||
</object>
|
||||
<object pk="5" model="idtracker.wgtype">
|
||||
<field type="CharField" name="type">TEAM</field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.wgstatus">
|
||||
<field type="CharField" name="status">Active</field>
|
||||
</object>
|
||||
<object pk="2" model="idtracker.wgstatus">
|
||||
<field type="CharField" name="status">Dormant</field>
|
||||
</object>
|
||||
<object pk="3" model="idtracker.wgstatus">
|
||||
<field type="CharField" name="status">Concluded</field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.wgtechadvisor">
|
||||
<field to="idtracker.ietfwg" name="group_acronym" rel="ManyToOneRel">1</field>
|
||||
<field to="idtracker.personororginfo" name="person" rel="ManyToOneRel">3</field>
|
||||
</object>
|
||||
<object pk="1" model="idtracker.wgsecretary">
|
||||
<field to="idtracker.ietfwg" name="group_acronym" rel="ManyToOneRel">1</field>
|
||||
<field to="idtracker.personororginfo" name="person" rel="ManyToOneRel">4</field>
|
||||
</object>
|
||||
</django-objects>
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
from django.db import models
|
||||
from ietf.utils import FKAsOneToOne
|
||||
from django.test import TestCase
|
||||
|
||||
class Acronym(models.Model):
|
||||
acronym_id = models.AutoField(primary_key=True)
|
||||
|
@ -760,7 +761,7 @@ class WGChair(models.Model):
|
|||
def __str__(self):
|
||||
return "%s (%s)" % ( self.person, self.role() )
|
||||
def role(self):
|
||||
return "%s %s Chair" % ( self.group_acronym.acronym, self.group_acronym.group_type )
|
||||
return "%s %s Chair" % ( self.group_acronym, self.group_acronym.group_type )
|
||||
class Meta:
|
||||
db_table = 'g_chairs'
|
||||
verbose_name = "WG Chair"
|
||||
|
@ -781,7 +782,7 @@ class WGSecretary(models.Model):
|
|||
def __str__(self):
|
||||
return "%s (%s)" % ( self.person, self.role() )
|
||||
def role(self):
|
||||
return "%s %s Secretary" % ( self.group_acronym.acronym, self.group_acronym.group_type )
|
||||
return "%s %s Secretary" % ( self.group_acronym, self.group_acronym.group_type )
|
||||
class Meta:
|
||||
db_table = 'g_secretaries'
|
||||
verbose_name = "WG Secretary"
|
||||
|
@ -793,7 +794,7 @@ class WGTechAdvisor(models.Model):
|
|||
def __str__(self):
|
||||
return "%s (%s)" % ( self.person, self.role() )
|
||||
def role(self):
|
||||
return "%s Technical Advisor" % self.group_acronym.acronym
|
||||
return "%s Technical Advisor" % self.group_acronym
|
||||
class Meta:
|
||||
db_table = 'g_tech_advisors'
|
||||
verbose_name = "WG Technical Advisor"
|
||||
|
@ -833,6 +834,19 @@ class GoalMilestone(models.Model):
|
|||
list_filter = ['done']
|
||||
pass
|
||||
|
||||
class WGRoleTest(TestCase):
|
||||
fixtures = ['wgtest']
|
||||
|
||||
def setUp(self):
|
||||
self.xmas = IETFWG.objects.get(group_acronym__acronym='xmas')
|
||||
self.snow = IETFWG.objects.get(group_acronym__acronym='snow')
|
||||
|
||||
def test_roles(self):
|
||||
self.assertEquals(self.xmas.wgchair_set.all()[0].role(), 'xmas WG Chair')
|
||||
self.assertEquals(self.snow.wgchair_set.all()[0].role(), 'snow BOF Chair')
|
||||
self.assertEquals(self.xmas.wgsecretary_set.all()[0].role(), 'xmas WG Secretary')
|
||||
self.assertEquals(self.xmas.wgtechadvisor_set.all()[0].role(), 'xmas Technical Advisor')
|
||||
|
||||
#### end wg stuff
|
||||
|
||||
class Role(models.Model):
|
||||
|
@ -905,3 +919,4 @@ class DocumentWrapper(object):
|
|||
primary_flag = 1
|
||||
def __init__(self, document):
|
||||
self.document = document
|
||||
|
||||
|
|
|
@ -25,24 +25,62 @@ def expand_comma(value):
|
|||
def parse_email_list(value):
|
||||
"""
|
||||
Parse a list of comma-seperated email addresses into
|
||||
a list of mailto: links."""
|
||||
addrs = re.split(", ?", value)
|
||||
ret = []
|
||||
for addr in addrs:
|
||||
(name, email) = emailutils.parseaddr(addr)
|
||||
if not(name):
|
||||
name = email
|
||||
ret.append('<a href="mailto:%s">%s</a>' % ( fix_ampersands(email), escape(name) ))
|
||||
return ", ".join(ret)
|
||||
a list of mailto: links.
|
||||
|
||||
Splitting a string of email addresses should return a list:
|
||||
|
||||
>>> parse_email_list('joe@example.org, fred@example.com')
|
||||
'<a href="mailto:joe@example.org">joe@example.org</a>, <a href="mailto:fred@example.com">fred@example.com</a>'
|
||||
|
||||
Parsing a non-string should return the input value, rather than fail:
|
||||
|
||||
>>> parse_email_list(['joe@example.org', 'fred@example.com'])
|
||||
['joe@example.org', 'fred@example.com']
|
||||
|
||||
Null input values should pass through silently:
|
||||
|
||||
>>> parse_email_list('')
|
||||
''
|
||||
|
||||
>>> parse_email_list(None)
|
||||
|
||||
|
||||
"""
|
||||
if value and type(value) == type(""): # testing for 'value' being true isn't necessary; it's a fast-out route
|
||||
addrs = re.split(", ?", value)
|
||||
ret = []
|
||||
for addr in addrs:
|
||||
(name, email) = emailutils.parseaddr(addr)
|
||||
if not(name):
|
||||
name = email
|
||||
ret.append('<a href="mailto:%s">%s</a>' % ( fix_ampersands(email), escape(name) ))
|
||||
return ", ".join(ret)
|
||||
else:
|
||||
return value
|
||||
|
||||
# there's an "ahref -> a href" in GEN_UTIL
|
||||
# but let's wait until we understand what that's for.
|
||||
@register.filter(name='make_one_per_line')
|
||||
def make_one_per_line(value):
|
||||
"""
|
||||
Turn a comma-separated list into a carraige-return-seperated list."""
|
||||
return re.sub(", ?", "\n", value)
|
||||
Turn a comma-separated list into a carraige-return-seperated list.
|
||||
|
||||
>>> make_one_per_line("a, b, c")
|
||||
'a\\nb\\nc'
|
||||
|
||||
Pass through non-strings:
|
||||
|
||||
>>> make_one_per_line([1, 2])
|
||||
[1, 2]
|
||||
|
||||
>>> make_one_per_line(None)
|
||||
|
||||
"""
|
||||
if value and type(value) == type(""):
|
||||
return re.sub(", ?", "\n", value)
|
||||
else:
|
||||
return value
|
||||
|
||||
@register.filter(name='link_if_url')
|
||||
def link_if_url(value):
|
||||
"""
|
||||
|
@ -174,3 +212,10 @@ def inpast(date):
|
|||
if date:
|
||||
return date < datetime.datetime.now()
|
||||
return True
|
||||
|
||||
def _test():
|
||||
import doctest
|
||||
doctest.testmod()
|
||||
|
||||
if __name__ == "__main__":
|
||||
_test()
|
||||
|
|
29
ietf/idtracker/templatetags/versiontags.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django import template
|
||||
from ietf import __date__, __rev__, __version__, __id__
|
||||
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def revision_time():
|
||||
return __date__[7:32]
|
||||
|
||||
@register.simple_tag
|
||||
def revision_date():
|
||||
return __date__[34:-3]
|
||||
|
||||
@register.simple_tag
|
||||
def revision_num():
|
||||
return __rev__[6:-2]
|
||||
|
||||
@register.simple_tag
|
||||
def revision_id():
|
||||
return __id__[5:-2]
|
||||
|
||||
@register.simple_tag
|
||||
def version_num():
|
||||
return __version__
|
||||
|
12
ietf/idtracker/tests.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
#import doctest
|
||||
#import templatetags.ietf_filters
|
||||
from django.test import TestCase
|
||||
|
||||
class IDTrackerTest(TestCase):
|
||||
def testDoctest(self):
|
||||
# doctests in models.py will be automatically tested when running
|
||||
# django's 'test' command, but for other modules we need to make a
|
||||
# bit of extra effort to have doctests run.
|
||||
|
||||
#doctest.testmod(templatetags.ietf_filters)
|
||||
pass
|
|
@ -8,7 +8,7 @@
|
|||
200 /idtracker/status/
|
||||
skipdiff,200 /idtracker/status/last-call/ https://datatracker.ietf.org/public/lastcall.cgi
|
||||
200 /idtracker/rfc3847/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=3847&rfc_flag=1
|
||||
200 /idtracker/12689/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
301,skipdiff /idtracker/12689/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
skipredirect,200 /idtracker/draft-ietf-isis-link-attr/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
skipredirect,200 /idtracker/draft-ietf-isis-link-attr/comment/65232/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_comment&id=65232
|
||||
200 /idtracker/comment/65232/ https://datatracker.ietf.org/public/pidtracker.cgi?command=view_comment&id=65232
|
||||
|
|
|
@ -30,9 +30,9 @@ urlpatterns += patterns('',
|
|||
)
|
||||
urlpatterns += patterns('django.views.generic.list_detail',
|
||||
(r'^rfc(?P<object_id>\d+)/$', 'object_detail', rfc_dict),
|
||||
(r'^(?P<object_id>\d+)/$', 'object_detail', id_dict),
|
||||
)
|
||||
urlpatterns += patterns('',
|
||||
(r'^(?P<object_id>\d+)/$', views.redirect_id),
|
||||
(r'^(?P<slug>[^/]+)/$', views.view_id, dict(id_dict, slug_field='draft__filename')),
|
||||
(r'^comment/(?P<object_id>\d+)/$', views.view_comment, comment_dict),
|
||||
(r'^ballot/(?P<object_id>\d+)/$', views.view_ballot, ballot_dict),
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
# Create your views here.
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
|
||||
from django import newforms as forms
|
||||
from django.template import RequestContext
|
||||
from django.shortcuts import get_object_or_404, render_to_response
|
||||
from django.db.models import Q
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.list_detail import object_detail, object_list
|
||||
from ietf.idtracker.models import InternetDraft, IDInternal, IDState, IDSubState, Rfc, DocumentWrapper
|
||||
from ietf.idtracker.forms import IDSearch, EmailFeedback
|
||||
from ietf.utils.mail import send_mail_text
|
||||
from ietf.utils import normalize_draftname
|
||||
import re
|
||||
|
||||
# Override default form field mappings
|
||||
|
@ -33,6 +35,8 @@ def search(request):
|
|||
# "job_owner" of "0" means "All/Any"
|
||||
if args.get('search_job_owner', '') == '0':
|
||||
args['search_job_owner'] = ''
|
||||
if args.has_key('search_filename'):
|
||||
args['search_filename'] = normalize_draftname(args['search_filename'])
|
||||
form = IDSearch(args)
|
||||
# if there's a post, do the search and supply results to the template
|
||||
searching = False
|
||||
|
@ -187,6 +191,11 @@ def last_call(request):
|
|||
queryset = IDInternal.objects.filter(primary_flag=1).filter(cur_state__state__in=('In Last Call', 'Waiting for Writeup', 'Waiting for AD Go-Ahead')).order_by('cur_state', 'status_date', 'ballot_id')
|
||||
return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'Documents in Last Call'})
|
||||
|
||||
def redirect_id(request, object_id):
|
||||
'''Redirect from historical document ID to preferred filename url.'''
|
||||
doc = get_object_or_404(InternetDraft, id_document_tag=object_id)
|
||||
return HttpResponsePermanentRedirect(reverse(view_id, args=[doc.filename]))
|
||||
|
||||
# Wrappers around object_detail to give permalink a handle.
|
||||
# The named-URLs feature in django 0.97 will eliminate the
|
||||
# need for these.
|
||||
|
|
|
@ -15,7 +15,7 @@ class IESGMinutes(Feed):
|
|||
return TelechatMinutes.objects.order_by('-telechat_date')[:10]
|
||||
|
||||
def item_link(self, item):
|
||||
return "/iesg/telechat/detail/%d/" % (item.id)
|
||||
return "/iesg/telechat/%d/" % (item.id)
|
||||
|
||||
# The approval date isn't stored, so let's just say they're
|
||||
# published on the date of the telechat.
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
200 /iesg/telechat/354/ https://datatracker.ietf.org/public/view_telechat_minute.cgi?command=view_minute&id=354
|
||||
200,sort /iesg/ann/ind/ https://datatracker.ietf.org/public/rfc_editor_announcement.cgi
|
||||
200,sort,ignore:1 /iesg/ann/new/ https://datatracker.ietf.org/public/recent_announcement.cgi
|
||||
200,sort /iesg/ann/prev/ https://datatracker.ietf.org/public/previous_announcement.cgi
|
||||
# This takes ~ 300s:
|
||||
#200,sort /iesg/ann/prev/ https://datatracker.ietf.org/public/previous_announcement.cgi
|
||||
200 /iesg/ann/2422/ https://datatracker.ietf.org/public/recent_announcement.cgi?command=show_detail&ballot_id=2422
|
||||
200 /iesg/ann/1563/ https://datatracker.ietf.org/public/previous_announcement.cgi?command=show_detail&ballot_id=1563
|
||||
404 /iesg/ann/567/
|
||||
|
|
|
@ -6,7 +6,7 @@ import ietf.utils
|
|||
import django.newforms as forms
|
||||
|
||||
from datetime import datetime
|
||||
from django.shortcuts import render_to_response as render
|
||||
from django.shortcuts import render_to_response as render, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.http import Http404
|
||||
from ietf.utils import log
|
||||
|
@ -313,6 +313,14 @@ def new(request, type, update=None, submitter=None):
|
|||
|
||||
def update(request, ipr_id=None):
|
||||
"""Update a specific IPR disclosure"""
|
||||
ipr = get_object_or_404(models.IprDetail, ipr_id=ipr_id)
|
||||
if not ipr.status in [1,3]:
|
||||
raise Http404
|
||||
type = "specific"
|
||||
if ipr.generic:
|
||||
type = "generic"
|
||||
if ipr.third_party:
|
||||
type = "third-party"
|
||||
# We're either asking for initial permission or we're in
|
||||
# the general ipr form. If the POST argument has the first
|
||||
# field of the ipr form, then we must be dealing with that,
|
||||
|
@ -332,18 +340,10 @@ def update(request, ipr_id=None):
|
|||
if not(form.is_valid()):
|
||||
for error in form.errors:
|
||||
log("Form error for field: %s: %s"%(error, form.errors[error]))
|
||||
return render("ipr/update.html", {"form": form}, context_instance=RequestContext(request))
|
||||
return render("ipr/update.html", {"form": form, "ipr": ipr, "type": type}, context_instance=RequestContext(request))
|
||||
else:
|
||||
submitter = form.clean_data
|
||||
|
||||
ipr = models.IprDetail.objects.get(ipr_id=ipr_id)
|
||||
if not ipr.status in [1,3]:
|
||||
raise Http404
|
||||
type = "specific"
|
||||
if ipr.generic:
|
||||
type = "generic"
|
||||
if ipr.third_party:
|
||||
type = "third-party"
|
||||
return new(request, type, ipr, submitter)
|
||||
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.conf import settings
|
|||
from ietf.idtracker.models import IETFWG, InternetDraft, Rfc
|
||||
from ietf.ipr.models import IprRfc, IprDraft, IprDetail
|
||||
from ietf.ipr.related import related_docs
|
||||
from ietf.utils import log
|
||||
from ietf.utils import log, normalize_draftname
|
||||
|
||||
|
||||
def mark_last_doc(iprs):
|
||||
|
@ -80,8 +80,10 @@ def search(request, type="", q="", id=""):
|
|||
# Search by RFC number or draft-identifier
|
||||
# Document list with IPRs
|
||||
if type in ["document_search", "rfc_search"]:
|
||||
doc = q
|
||||
if type == "document_search":
|
||||
if q:
|
||||
q = normalize_draftname(q)
|
||||
start = InternetDraft.objects.filter(filename__contains=q)
|
||||
if id:
|
||||
start = InternetDraft.objects.filter(id_document_tag=id)
|
||||
|
@ -90,18 +92,20 @@ def search(request, type="", q="", id=""):
|
|||
start = Rfc.objects.filter(rfc_number=q)
|
||||
if start.count() == 1:
|
||||
first = start[0]
|
||||
doc = str(first)
|
||||
# get all related drafts, then search for IPRs on all
|
||||
|
||||
docs = related_docs(first, [])
|
||||
#docs = get_doclist.get_doclist(first)
|
||||
iprs, docs = iprs_from_docs(docs)
|
||||
return render("ipr/search_doc_result.html", {"q": q, "first": first, "iprs": iprs, "docs": docs},
|
||||
return render("ipr/search_doc_result.html", {"q": q, "first": first, "iprs": iprs, "docs": docs, "doc": doc },
|
||||
context_instance=RequestContext(request) )
|
||||
elif start.count():
|
||||
return render("ipr/search_doc_list.html", {"q": q, "docs": start },
|
||||
context_instance=RequestContext(request) )
|
||||
else:
|
||||
raise ValueError("Missing or malformed search parameters, or internal error")
|
||||
return render("ipr/search_doc_result.html", {"q": q, "first": {}, "iprs": {}, "docs": {}, "doc": doc },
|
||||
context_instance=RequestContext(request) )
|
||||
|
||||
# Search by legal name
|
||||
# IPR list with documents
|
||||
|
|
|
@ -1,26 +1,32 @@
|
|||
# -*- conf-mode -*-
|
||||
200 /ipr/ https://datatracker.ietf.org/public/ipr_list.cgi
|
||||
200 /ipr/ipr-657/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=657 # Generic disclosure
|
||||
200 /ipr/ipr-834/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=834 # Specific disclosure
|
||||
200 /ipr/ipr-795/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=795 # Third-party disclosure
|
||||
200 /ipr/new-generic/ https://datatracker.ietf.org/public/ipr_generic.cgi
|
||||
200 /ipr/new-specific/ https://datatracker.ietf.org/public/ipr.cgi
|
||||
200 /ipr/new-third-party/ https://datatracker.ietf.org/public/ipr_notify.cgi
|
||||
200 /ipr/update/ https://datatracker.ietf.org/public/ipr_update_list.cgi
|
||||
200 /ipr/ https://datatracker.ietf.org/public/ipr_list.cgi
|
||||
200 /ipr/657/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=657 # Generic disclosure
|
||||
200 /ipr/834/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=834 # Specific disclosure
|
||||
200 /ipr/795/ https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=795 # Third-party disclosure
|
||||
200 /ipr/new-generic/ https://datatracker.ietf.org/public/ipr_generic.cgi
|
||||
200 /ipr/new-specific/ https://datatracker.ietf.org/public/ipr.cgi
|
||||
200 /ipr/new-third-party/ https://datatracker.ietf.org/public/ipr_notify.cgi
|
||||
200 /ipr/update/ https://datatracker.ietf.org/public/ipr_update_list.cgi
|
||||
|
||||
200 /ipr/update/657/ https://datatracker.ietf.org/public/ipr_generic.cgi?command=update_ipr&ipr_id=657
|
||||
200 /ipr/update/657/ https://datatracker.ietf.org/public/ipr_generic.cgi?command=update_ipr&ipr_id=657
|
||||
200 /ipr/update/820/ https://datatracker.ietf.org/public/ipr_notify.cgi?command=update_ipr&ipr_id=820
|
||||
200 /ipr/update/844/ https://datatracker.ietf.org/public/ipr.cgi?command=update_ipr&ipr_id=844
|
||||
|
||||
200 /ipr/search/ https://datatracker.ietf.org/public/ipr_search.cgi
|
||||
302 /ipr/search/?option=document_search # incomplete argument set gives redirect
|
||||
200 /ipr/search/ https://datatracker.ietf.org/public/ipr_search.cgi
|
||||
302 /ipr/search/?option=document_search # incomplete argument set gives redirect
|
||||
|
||||
200 /ipr/search/?document_search=mod&option=document_search https://datatracker.ietf.org/public/ipr_search.cgi?option=document_search&document_search=mod
|
||||
200 /ipr/search/?document_search=mod&option=document_search https://datatracker.ietf.org/public/ipr_search.cgi?option=document_search&document_search=mod
|
||||
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
|
||||
200,skipredirect /ipr/search/?option=document_search&document_search=draft-housley-tls-authz-extns-05 https://datatracker.ietf.org/ipr/search/?option=document_search&document_search=draft-housley-tls-authz-extns
|
||||
200,skipredirect /ipr/search/?option=document_search&document_search=draft-housley-tls-authz-extns-05.txt https://datatracker.ietf.org/ipr/search/?option=document_search&document_search=draft-housley-tls-authz-extns
|
||||
|
||||
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
|
||||
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
|
||||
# This takes ~ 300s:
|
||||
#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
|
||||
200,sort /ipr/search/?rfc_search=1032&option=rfc_search https://datatracker.ietf.org/public/ipr_search.cgi?option=rfc_search&rfc_search=1032 # Loong result, RFC search
|
||||
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
|
||||
|
||||
200 /ipr/search/?patent_search=nortel&option=patent_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_search&patent_search=nortel
|
||||
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
|
||||
200 /ipr/search/?patent_search=nortel&option=patent_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_search&patent_search=nortel
|
||||
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
|
||||
|
||||
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
|
||||
#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
|
||||
|
@ -29,17 +35,17 @@
|
|||
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
|
||||
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
|
||||
|
||||
200,sort /ipr/search/?patent_info_search=123&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=123
|
||||
200,sort /ipr/search/?patent_info_search=31415&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=31415 # Empty result
|
||||
200,sort /ipr/search/?patent_info_search=123&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=123
|
||||
200,sort /ipr/search/?patent_info_search=31415&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=31415 # Empty result
|
||||
|
||||
200 /ipr/search/?patent_info_search=12&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=12 # Error: at least 3 characters
|
||||
200 /ipr/search/?patent_info_search=abc&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=abc # Error: at least 1 digit
|
||||
200 /ipr/search/?patent_info_search=12&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=12 # Error: at least 3 characters
|
||||
200 /ipr/search/?patent_info_search=abc&option=patent_info_search https://datatracker.ietf.org/public/ipr_search.cgi?option=patent_info_search&patent_info_search=abc # Error: at least 1 digit
|
||||
|
||||
200 /ipr/search/?option=ipr_title_search&ipr_title_search=nortel https://datatracker.ietf.org/public/ipr_search.cgi?option=ipr_title_search&ipr_title_search=nortel
|
||||
200 /ipr/search/?option=ipr_title_search&ipr_title_search=nortelxz https://datatracker.ietf.org/public/ipr_search.cgi?option=ipr_title_search&ipr_title_search=nortelxz # Empty result
|
||||
200 /ipr/search/?option=ipr_title_search&ipr_title_search=nortel https://datatracker.ietf.org/public/ipr_search.cgi?option=ipr_title_search&ipr_title_search=nortel
|
||||
200 /ipr/search/?option=ipr_title_search&ipr_title_search=nortelxz https://datatracker.ietf.org/public/ipr_search.cgi?option=ipr_title_search&ipr_title_search=nortelxz # Empty result
|
||||
|
||||
|
||||
200 /ipr/about/ https://datatracker.ietf.org/public/ipr_disclosure.cgi
|
||||
200 /ipr/2006/
|
||||
200 /ipr/2006/feb/
|
||||
200 /ipr/by-date/
|
||||
200 /ipr/about/ https://datatracker.ietf.org/public/ipr_disclosure.cgi
|
||||
200 /ipr/y/2006/
|
||||
200 /ipr/y/2006/feb/
|
||||
200 /ipr/by-date/
|
||||
|
|
|
@ -6,7 +6,7 @@ from ietf.ipr import models, views, new, search
|
|||
urlpatterns = patterns('',
|
||||
(r'^$', views.showlist),
|
||||
(r'^about/$', views.default),
|
||||
(r'^ipr-(?P<ipr_id>\d+)/$', views.show),
|
||||
(r'^(?P<ipr_id>\d+)/$', views.show),
|
||||
(r'^update/$', views.updatelist),
|
||||
(r'^update/(?P<ipr_id>\d+)/$', new.update),
|
||||
(r'^new-(?P<type>specific)/$', new.new),
|
||||
|
@ -20,8 +20,8 @@ archive = {'queryset':queryset, 'date_field': 'submitted_date', 'allow_empty':Tr
|
|||
|
||||
urlpatterns += patterns('django.views.generic.date_based',
|
||||
(r'^by-date/$', 'archive_index', archive),
|
||||
(r'^(?P<year>\d{4})/$', 'archive_year', archive),
|
||||
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', archive),
|
||||
(r'^y/(?P<year>\d{4})/$', 'archive_year', archive),
|
||||
(r'^y/(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', archive),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
import django.utils.html
|
||||
from django.shortcuts import render_to_response as render
|
||||
from django.shortcuts import render_to_response as render, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.html import escape
|
||||
from django.http import Http404
|
||||
|
@ -47,7 +47,7 @@ def list_all(request, template):
|
|||
def show(request, ipr_id=None):
|
||||
"""Show a specific IPR disclosure"""
|
||||
assert ipr_id != None
|
||||
ipr = IprDetail.objects.get(ipr_id=ipr_id)
|
||||
ipr = get_object_or_404(IprDetail, ipr_id=ipr_id)
|
||||
if not ipr.status == 1:
|
||||
raise Http404
|
||||
section_list = get_section_list(ipr)
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
200 /liaison/help/from_ietf/ https://datatracker.ietf.org/public/liaison_guide_from_ietf.cgi
|
||||
200 /liaison/help/fields/ https://datatracker.ietf.org/public/liaison_field_help.cgi
|
||||
200 /liaison/help/
|
||||
|
||||
# Test case for ticket #182:
|
||||
200 /liaison/337/
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
<object pk="17" model="redirects.redirect">
|
||||
<field type="CharField" name="cgi">public/ipr_detail_show.cgi</field>
|
||||
<field type="CharField" name="url">ipr</field>
|
||||
<field type="CharField" name="rest">ipr-%(ipr_id)s</field>
|
||||
<field type="CharField" name="rest">%(ipr_id)s</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
<object pk="18" model="redirects.redirect">
|
||||
|
@ -116,20 +116,20 @@
|
|||
</object>
|
||||
<object pk="20" model="redirects.redirect">
|
||||
<field type="CharField" name="cgi">public/ipr_generic.cgi</field>
|
||||
<field type="CharField" name="url">ipr/new-generic</field>
|
||||
<field type="CharField" name="rest"></field>
|
||||
<field type="CharField" name="url">ipr</field>
|
||||
<field type="CharField" name="rest">new-generic</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
<object pk="21" model="redirects.redirect">
|
||||
<field type="CharField" name="cgi">public/ipr_notify.cgi</field>
|
||||
<field type="CharField" name="url">ipr/new-third-party</field>
|
||||
<field type="CharField" name="rest"></field>
|
||||
<field type="CharField" name="url">ipr</field>
|
||||
<field type="CharField" name="rest">new-third-party</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
<object pk="22" model="redirects.redirect">
|
||||
<field type="CharField" name="cgi">public/ipr.cgi</field>
|
||||
<field type="CharField" name="url">ipr/new-specific</field>
|
||||
<field type="CharField" name="rest"></field>
|
||||
<field type="CharField" name="url">ipr</field>
|
||||
<field type="CharField" name="rest">new-specific</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
<object pk="23" model="redirects.redirect">
|
||||
|
@ -272,7 +272,7 @@
|
|||
</object>
|
||||
<object pk="13" model="redirects.command">
|
||||
<field type="CharField" name="command">show_wg_id</field>
|
||||
<field type="CharField" name="url">wg</field>
|
||||
<field type="CharField" name="url">wgid</field>
|
||||
<field to="redirects.redirect" name="script" rel="ManyToOneRel">7</field>
|
||||
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">4</field>
|
||||
</object>
|
||||
|
@ -318,6 +318,24 @@
|
|||
<field to="redirects.redirect" name="script" rel="ManyToOneRel">7</field>
|
||||
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">8</field>
|
||||
</object>
|
||||
<object pk="21" model="redirects.command">
|
||||
<field type="CharField" name="command">update_ipr</field>
|
||||
<field type="CharField" name="url">update</field>
|
||||
<field to="redirects.redirect" name="script" rel="ManyToOneRel">20</field>
|
||||
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">9</field>
|
||||
</object>
|
||||
<object pk="22" model="redirects.command">
|
||||
<field type="CharField" name="command">update_ipr</field>
|
||||
<field type="CharField" name="url">update</field>
|
||||
<field to="redirects.redirect" name="script" rel="ManyToOneRel">22</field>
|
||||
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">9</field>
|
||||
</object>
|
||||
<object pk="23" model="redirects.command">
|
||||
<field type="CharField" name="command">update_ipr</field>
|
||||
<field type="CharField" name="url">update</field>
|
||||
<field to="redirects.redirect" name="script" rel="ManyToOneRel">21</field>
|
||||
<field to="redirects.suffix" name="suffix" rel="ManyToOneRel">9</field>
|
||||
</object>
|
||||
<object pk="2" model="redirects.suffix">
|
||||
<field type="CharField" name="rest">%(fl)s</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
|
@ -342,4 +360,8 @@
|
|||
<field type="CharField" name="rest">%(id)s/related</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
<object pk="9" model="redirects.suffix">
|
||||
<field type="CharField" name="rest">%(ipr_id)s</field>
|
||||
<field type="CharField" name="remove"></field>
|
||||
</object>
|
||||
</django-objects>
|
||||
|
|
|
@ -15,7 +15,7 @@ class Redirect(models.Model):
|
|||
searched for in the Command table to see if there
|
||||
is a different value of rest= and remove=.
|
||||
"""
|
||||
cgi = models.CharField(maxlength=50, unique=True)
|
||||
cgi = models.CharField(maxlength=50, unique=True, blank=True)
|
||||
url = models.CharField(maxlength=255)
|
||||
rest = models.CharField(maxlength=100, blank=True)
|
||||
remove = models.CharField(maxlength=50, blank=True)
|
||||
|
|
|
@ -26,7 +26,8 @@ def redirect(request, path="", script=""):
|
|||
continue
|
||||
if request.REQUEST.has_key(fc[0]):
|
||||
remove_args.append(fc[0])
|
||||
if int(request.REQUEST[fc[0]]):
|
||||
num = re.match('(\d+)', request.REQUEST[fc[0]])
|
||||
if num and int(num.group(1)):
|
||||
cmd = flag
|
||||
break
|
||||
#
|
||||
|
@ -39,6 +40,10 @@ def redirect(request, path="", script=""):
|
|||
pass # it's ok, there's no more-specific request.
|
||||
except KeyError:
|
||||
pass # it's ok, request didn't have 'command'.
|
||||
except:
|
||||
pass # strange exception like the one described in
|
||||
# http://merlot.tools.ietf.org/tools/ietfdb/ticket/179 ?
|
||||
# just ignore the command string.
|
||||
if cmd is not None:
|
||||
remove_args.append('command')
|
||||
if cmd.url:
|
||||
|
|
|
@ -51,7 +51,7 @@ SITE_ID = 1
|
|||
|
||||
# If you set this to False, Django will make some optimizations so as not
|
||||
# to load the internationalization machinery.
|
||||
USE_I18N = True
|
||||
USE_I18N = False
|
||||
|
||||
# Absolute path to the directory that holds media.
|
||||
# Example: "/home/media/media.lawrence.com/"
|
||||
|
@ -157,6 +157,8 @@ TEST_RUNNER = 'ietf.tests.run_tests'
|
|||
|
||||
IPR_DOCUMENT_PATH = '/home/master-site/ftp/data/ietf/IPR'
|
||||
|
||||
TEST_REFERENCE_URL_PREFIX = 'http://compost.research.att.com/old/'
|
||||
|
||||
# Put SECRET_KEY in here, or any other sensitive or site-specific
|
||||
# changes. DO NOT commit settings_local.py to svn.
|
||||
from settings_local import *
|
||||
|
|
|
@ -1,36 +1,47 @@
|
|||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load versiontags %}
|
||||
|
||||
{% block content %}
|
||||
<center>
|
||||
<img src="http://www.ietf.org/images/ietflogo2e.gif" height="160" width="280">
|
||||
<img src="/images/ietflogo2e.gif" height="80" width="140">
|
||||
<br clear=all>
|
||||
|
||||
<center><h1>The Internet Engineering Task Force</h1></center>
|
||||
<h2>The Internet Engineering Task Force</h2>
|
||||
<table border=0 cellspacing=5 cellpadding=5>
|
||||
|
||||
<br>
|
||||
<font size = 3>
|
||||
<center><img alt="" src="http://www.ietf.org/images/blue-line.jpg"></center>
|
||||
<center><img alt="" src="/images/blue-line.jpg"></center>
|
||||
<br clear=all>
|
||||
<h3>The page you are looking for cannot be found.</h3><br>
|
||||
If it is an Internet-Draft, the version may have expired.<br>
|
||||
Please visit <A HREF="http://search.ietf.org"> search.ietf.org</A> and enter in keywords or the name of the draft without the version numbers.
|
||||
<h2>The page you were looking for couldn't be found.</h2>
|
||||
<div style="width:50%">
|
||||
The requested URL was not found on this server. If you entered the URL
|
||||
manually please check your spelling and try again.
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
If you think this is a server error, please contact <a
|
||||
href="mailto:webtools@ietf.org">webtools@ietf.org</a>.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
For other Web page issues, please contact <a href="mailto:webmaster@ietf.org">webmaster@ietf.org</a>. <br>
|
||||
<br>
|
||||
<font size = 3>
|
||||
<center><img alt="Blue Line" src="http://www.ietf.org/images/blue-line.jpg"></center>
|
||||
<!--
|
||||
<center><img alt="Blue Line" src="/images/blue-line.jpg"></center>
|
||||
<br clear=all>
|
||||
The IETF is an organized activity of the <a href="http://www.isoc.org"><img alt="ISOC" src="http://www.ietf.org/images/isoc-small.gif" hspace="3" border="0"></A>
|
||||
The IETF is an organized activity of the <a href="http://www.isoc.org"><img alt="ISOC" src="/images/isoc-small.gif" hspace="3" border="0"></A>
|
||||
|
||||
<br>
|
||||
|
||||
<hr>
|
||||
<i>The <A HREF="/secretariat.html">IETF Secretariat</A> is hosted by the NeuStar Secretariat Services, a wholly owned subsidiary of <a href="http://www.neustar.biz/"><img src="http://www.ietf.org/images/NS_logo_100px.gif" alt="NeuStar Logo" border="0">
|
||||
|
||||
</i>
|
||||
<i>The <A HREF="/secretariat.html">IETF Secretariat</A> is hosted by the NeuStar Secretariat Services, a wholly owned subsidiary of <a href="http://www.neustar.biz/"><img src="/images/NS_logo_100px.gif" alt="NeuStar Logo" border="0"/></a></i>
|
||||
-->
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
<hr/>
|
||||
<div style="width: 100%; height: 1em; font-size: 9pt; font-style: italic;">
|
||||
<span style="float: left;">Made with <a href="http://www.djangoproject.com/">django</a></span>
|
||||
<span style="float: right;">v{% version_num %}, {% revision_date %} - <a href="mailto:webtools@ietf.org">webtools@ietf.org</a></span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,34 +1,45 @@
|
|||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load versiontags %}
|
||||
|
||||
{% block content %}
|
||||
<center>
|
||||
<img src="http://www.ietf.org/images/ietflogo2e.gif" height="160" width="280">
|
||||
<img src="/images/ietflogo2e.gif" height="80" width="140">
|
||||
<br clear=all>
|
||||
|
||||
<center><h1>The Internet Engineering Task Force</h1></center>
|
||||
<h2>The Internet Engineering Task Force</h2>
|
||||
<table border=0 cellspacing=5 cellpadding=5>
|
||||
|
||||
<br>
|
||||
<font size = 3>
|
||||
<center><img alt="" src="http://www.ietf.org/images/blue-line.jpg"></center>
|
||||
<center><img alt="" src="/images/blue-line.jpg"></center>
|
||||
<br clear=all>
|
||||
<h1>Error 500</h1>
|
||||
<h2>Internal Server Error</h2>
|
||||
<h2>Internal Server Error.</h2>
|
||||
<div style="width:50%">
|
||||
The server encountered an internal error and was
|
||||
unable to complete your request. Either the server is
|
||||
overloaded or there was an error in a script used to
|
||||
generate the requested page.
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
Please contact <a href="mailto:webmaster@ietf.org">webmaster@ietf.org</a>. <br>
|
||||
Please contact <a href="mailto:webtools@ietf.org">webtools@ietf.org</a>. <br>
|
||||
<br>
|
||||
<font size = 3>
|
||||
<center><img alt="Blue Line" src="http://www.ietf.org/images/blue-line.jpg"></center>
|
||||
<!--
|
||||
<center><img alt="Blue Line" src="/images/blue-line.jpg"></center>
|
||||
<br clear=all>
|
||||
The IETF is an organized activity of the <a href="http://www.isoc.org"><img alt="ISOC" src="http://www.ietf.org/images/isoc-small.gif" hspace="3" border="0"></A>
|
||||
The IETF is an organized activity of the <a href="http://www.isoc.org"><img alt="ISOC" src="/images/isoc-small.gif" hspace="3" border="0"></A>
|
||||
|
||||
<br>
|
||||
|
||||
<hr>
|
||||
<i>The <A HREF="/secretariat.html">IETF Secretariat</A> is hosted by the NeuStar Secretariat Services, a wholly owned subsidiary of <a href="http://www.neustar.biz/"><img src="http://www.ietf.org/images/NS_logo_100px.gif" alt="NeuStar Logo" border="0">
|
||||
|
||||
</i>
|
||||
<i>The <A HREF="/secretariat.html">IETF Secretariat</A> is hosted by the NeuStar Secretariat Services, a wholly owned subsidiary of <a href="http://www.neustar.biz/"><img src="/images/NS_logo_100px.gif" alt="NeuStar Logo" border="0"/></a></i>
|
||||
-->
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
<hr/>
|
||||
<div style="width: 100%; height: 1em; font-size: 9pt; font-style: italic;">
|
||||
<span style="float: left;">Made with <a href="http://www.djangoproject.com/">django</a></span>
|
||||
<span style="float: right;">v{% version_num %}, {% revision_date %} - <a href="mailto:webtools@ietf.org">webtools@ietf.org</a></span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<div id="leftmenu">
|
||||
<div class="menulogo">
|
||||
<img class="menulogo" src="http://www1.tools.ietf.org/images/ietflogo2i.png" alt="IETF logo" />
|
||||
<img class="menulogo" src="/images/ietflogo2i.png" alt="IETF logo" />
|
||||
</div>
|
||||
<ul>
|
||||
<li><a title="About the Internet Engineering Task Force">About the IETF</a>
|
||||
|
@ -104,11 +104,7 @@
|
|||
<div id="footer">
|
||||
|
||||
The IETF is an organized activity of the <a href="http://www.isoc.org">Internet Society</a>
|
||||
<!-- <img src="http://tools.ietf.org/demo/www.ietf.org/images/isoc-small.gif" alt="Internet Society"> -->
|
||||
<br>Please send problem reports to <a href="mailto:ietf-web@ietf.org">ietf-web@ietf.org</a>.
|
||||
<br>
|
||||
<a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangomade124x25.gif" border="0" alt="Made with Django." title="Made with Django." /></a>
|
||||
|
||||
{% include "footer.html" %}
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -24,18 +24,18 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|||
<center>
|
||||
<table border=0 cellpadding=0 cellspacing=0>
|
||||
<tr>
|
||||
<td><a href="http://www.ietf.org/home.html"><img src="https://www1.ietf.org/images/header/ietflogo_sm.gif" border="0" /></a></td>
|
||||
<td><a href="http://www.ietf.org/home.html"><img src="https://www1.ietf.org/images/header/home11.gif" border="0" /></a></td>
|
||||
<td><img src="https://www1.ietf.org/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/html.charters/wg-dir.html"><img src="https://www1.ietf.org/images/header/wg11.gif" border="0" /></a></td>
|
||||
<td><img src="https://www1.ietf.org/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/meetings/meetings.html"><img src="https://www1.ietf.org/images/header/meetings11.gif" border="0" /></a></td>
|
||||
<td><img src="https://www1.ietf.org/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/proceedings_directory.html"><img src="https://www1.ietf.org/images/header/proceed11.gif" border="0" /></a></td>
|
||||
<td><img src="https://www1.ietf.org/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="{% url ietf.idindex.views.search %}"><img src="https://www1.ietf.org/images/header/id-index11.gif" border="0" /></a></td>
|
||||
<td><img src="https://www1.ietf.org/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/rfc.html"><img src="https://www1.ietf.org/images/header/rfc11.gif" border="0" /></a></td>
|
||||
<td><a href="http://www.ietf.org/home.html"><img src="/images/header/ietflogo_sm.gif" border="0" /></a></td>
|
||||
<td><a href="http://www.ietf.org/home.html"><img src="/images/header/home11.gif" border="0" /></a></td>
|
||||
<td><img src="/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/html.charters/wg-dir.html"><img src="/images/header/wg11.gif" border="0" /></a></td>
|
||||
<td><img src="/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/meetings/meetings.html"><img src="/images/header/meetings11.gif" border="0" /></a></td>
|
||||
<td><img src="/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/proceedings_directory.html"><img src="/images/header/proceed11.gif" border="0" /></a></td>
|
||||
<td><img src="/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="{% url ietf.idindex.views.search %}"><img src="/images/header/id-index11.gif" border="0" /></a></td>
|
||||
<td><img src="/images/header/separator.gif" border="0" /></td>
|
||||
<td><a href="http://www.ietf.org/rfc.html"><img src="/images/header/rfc11.gif" border="0" /></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
|
@ -50,7 +50,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|||
{% block content %}{% endblock %}
|
||||
{% block main_content %}{% endblock %}
|
||||
</div>
|
||||
{% include "footer.html" %}
|
||||
{% block footer %}{% include "footer.html" %}{% endblock %}
|
||||
{% include "debug.html" %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
17
ietf/templates/googlea30ad1dacffb5e5b.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load versiontags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h3>This is a verification page for the <a href="https://www.google.com/webmasters/tools/siteoverview">Google Webmaster Tools</a>.</h3>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
<hr/>
|
||||
<div style="width: 100%; height: 1em; font-size: 9pt; font-style: italic;">
|
||||
<span style="float: left;">Made with <a href="http://www.djangoproject.com/">django</a></span>
|
||||
<span style="float: right;">v{% version_num %}, {% revision_date %} - <a href="mailto:webtools@ietf.org">webtools@ietf.org</a></span>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -4,6 +4,7 @@
|
|||
{% block title %}Internet Draft Database Index - Search{% endblock %}
|
||||
|
||||
{% block iddbcontent %}
|
||||
<hr>
|
||||
{% if didsearch %}
|
||||
{# existing page just displays header and no results. #}
|
||||
{% if object_list %}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "idindex/base.html" %}
|
||||
|
||||
{% block title %}Internet Draft Database Index - documents related to {{ startdoc.filename }}{% endblock %}
|
||||
|
||||
{% block iddbcontent %}
|
||||
<hr>
|
||||
<table>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
{% block iddbcontent %}
|
||||
<hr>
|
||||
<h3>Please select a Working Group from the list below</h3>
|
||||
{% if object_list %}
|
||||
<blockquote>
|
||||
{% regroup object_list by status as grouped %}
|
||||
{% for status in grouped %}
|
||||
|
@ -19,5 +20,8 @@
|
|||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>No working groups found beginning with "{{ search }}".</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% extends "idtracker/base.html" %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}IESG Announcement{% endblock %}
|
||||
{% block title %}-- Ballot for {{ object.drafts.all.0.document.filename }}{% endblock %}
|
||||
|
||||
{% block idcontent %}
|
||||
<pre>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<HEAD>
|
||||
<!-- Project Revision {{ revision_num }}, {{ revision_time }} -->
|
||||
<title>{% block title %}IETF Data{% endblock %}{% ifnotequal server_mode "production" %} - {{ server_mode|upper }} MODE{% endifnotequal %}</title>
|
||||
<title>IETF I-D Tracker {% block title %}{% endblock %}{% ifnotequal server_mode "production" %} - {{ server_mode|upper }} MODE{% endifnotequal %}</title>
|
||||
{% ifnotequal server_mode "production" %}
|
||||
<link rel="icon" href="/images/ietf-dev-icon.bmp" />
|
||||
{% else %}
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}-- comment on {{ object.document.document.filename }}{% endblock %}
|
||||
|
||||
{% block idcontent %}
|
||||
|
||||
{% if object.ballot %}
|
||||
|
@ -11,15 +13,16 @@
|
|||
<table cellpadding="1" cellspacing="1" border="0">
|
||||
|
||||
<tr><td><b>Date and Time:</td><td>{{ object.date }}, {{ object.time }}</td></tr>
|
||||
<tr><td><b>Document:</td><td>{{ object.document.document.filename }}</td></tr>
|
||||
<tr><td><b>Version:</td><td>{{ object.version }}</td></tr>
|
||||
<tr><td><b>Commented by:</td><td>{{ object.created_by.first_name }} {{ object.created_by.last_name }}</td></tr>
|
||||
<tr><td><b>Commented by:</td><td>{{ object.get_author }}</td></tr>
|
||||
{% if object.origin_state %}
|
||||
<tr><td><b>State before Comment:</td><td>{{ object.origin_state }}</td></tr>
|
||||
{% endif %}
|
||||
{% if object.result_state %}
|
||||
<tr><td><b>State after Comment:</td><td>{{ object.result_state }}</td></tr>
|
||||
{% endif %}
|
||||
<Tr><td><b>Comment:</td><td>{{ object.comment_text|format_textarea }}</td></tr>
|
||||
<tr><td><b>Comment:</td><td>{{ object.comment_text|format_textarea }}</td></tr>
|
||||
</table>
|
||||
<center><form>
|
||||
<input type="button" value="close" onClick="history.go(-1);return true">
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}-- {{ object.document.filename }}{% endblock %}
|
||||
|
||||
{% block idcontent %}
|
||||
<table width="90%" cellpading="1" cellspacing="0">
|
||||
<tr>
|
||||
|
@ -282,19 +284,5 @@
|
|||
<input type="button" name="back_button" value="BACK"
|
||||
onclick="history.go(-1);return true">
|
||||
</form>
|
||||
<!-- begin new footer -->
|
||||
<hr>
|
||||
|
||||
<p>Did you find a bug? <a href=
|
||||
"pidtracker.cgi?command=send_email&cat=bugs">Let us
|
||||
know</a>.</p>
|
||||
|
||||
<p><a href=
|
||||
"pidtracker.cgi?command=send_email&cat=discuss">Any
|
||||
question or suggestion</a>?</p>
|
||||
|
||||
<p><i>This page produced by the <a href=
|
||||
"mailto:iesg-secretary@ietf.org">IETF Secretariat</a> for
|
||||
the <a href="mailto:iesg@ietf.org">IESG</a></i></p>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<center>
|
||||
{% if searching %}
|
||||
{% else %}
|
||||
<img src="https://www.ietf.org/images/ietflogo2e.gif" border=0><br>
|
||||
<img src="/images/ietflogo2e.gif" border=0><br>
|
||||
<h1>IETF I-D TRACKER</h1>
|
||||
{% endif %}
|
||||
|
||||
|
@ -74,8 +74,8 @@ Document States: <a href="/images/state_diagram.gif">State Diagram</a> and
|
|||
|
||||
</center>
|
||||
|
||||
<hr>
|
||||
{% if matches %}
|
||||
<hr>
|
||||
<b>Search Result</b><br>
|
||||
{% regroup matches by docstate as grouped %}
|
||||
{% include "idtracker/search_result_table.html" %}
|
||||
|
|
|
@ -108,15 +108,15 @@
|
|||
There are 3 different IPR disclosures that can be made:
|
||||
</p>
|
||||
<p>
|
||||
<img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0" />
|
||||
<img src="/images/blue.gif" hspace="3" border="0" />
|
||||
"Specific": <a href="{% url ietf.ipr.views.new_specific %}">A disclosure about your IPR related to a specific IETF contribution</a>
|
||||
</p>
|
||||
<p>
|
||||
<img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0" />
|
||||
<img src="/images/blue.gif" hspace="3" border="0" />
|
||||
"Generic": <a href="{% url ietf.ipr.views.new_generic %}">An IPR disclosure about your IPR that is not related to a specific IETF contribution</a>
|
||||
</p>
|
||||
<p>
|
||||
<img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0" />
|
||||
<img src="/images/blue.gif" hspace="3" border="0" />
|
||||
"Third-Party": <a href="{% url ietf.ipr.views.new_thirdpty %}">Notify the IETF of IPR other than your own which you believe may be related to a specific IETF contribution</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
@ -564,8 +564,8 @@
|
|||
</form>
|
||||
<blockquote>
|
||||
<hr>
|
||||
<img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="./ipr_disclosure.cgi">IPR Disclosure Page</a><br>
|
||||
<img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="./ipr_list.cgi">View IPR Disclosures</a><br><br>
|
||||
<img src="/images/blue.gif" hspace="3" border="0"><a href="{% url ietf.ipr.views.default %}">IPR Disclosure Page</a><br>
|
||||
<img src="/images/blue.gif" hspace="3" border="0"><a href="{% url ietf.ipr.views.showlist %}">View IPR Disclosures</a><br><br>
|
||||
</blockquote>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
{% block title %}IPR Disclosure Page{% endblock %}
|
||||
{% block content %}
|
||||
<center>
|
||||
<img src="http://www.ietf.org/images/ietflogo2e.gif" height="160" width="280">
|
||||
<img src="/images/ietflogo2e.gif" height="160" width="280">
|
||||
</center>
|
||||
<div>
|
||||
<center>
|
||||
<img src="http://www.ietf.org/images/ipr_header.gif" >
|
||||
<img src="/images/ipr_header.gif" >
|
||||
</center>
|
||||
<p>
|
||||
This page provides a mechanism for filing Disclosures about intellectual property rights
|
||||
|
@ -25,17 +25,17 @@
|
|||
<p />
|
||||
<hr>
|
||||
<p>
|
||||
<a href="{% url ietf.ipr.new.new "specific" %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">File a disclosure about your IPR related to a specific IETF contribution</a>
|
||||
<a href="{% url ietf.ipr.new.new "specific" %}"><img src="/images/blue.gif" hspace="3" border="0">File a disclosure about your IPR related to a specific IETF contribution</a>
|
||||
</p>
|
||||
<p><a href="{% url ietf.ipr.new.new "generic" %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">File an IPR disclosure that is not related to a specific IETF contribution</a>
|
||||
<p><a href="{% url ietf.ipr.new.new "generic" %}"><img src="/images/blue.gif" hspace="3" border="0">File an IPR disclosure that is not related to a specific IETF contribution</a>
|
||||
</p>
|
||||
<p><a href="{% url ietf.ipr.new.new "third-party" %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Notify the IETF of IPR other than your own</a>
|
||||
<p><a href="{% url ietf.ipr.new.new "third-party" %}"><img src="/images/blue.gif" hspace="3" border="0">Notify the IETF of IPR other than your own</a>
|
||||
</p>
|
||||
<p><a href="{% url ietf.ipr.views.updatelist %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Update an existing IPR disclosure</a>
|
||||
<p><a href="{% url ietf.ipr.views.updatelist %}"><img src="/images/blue.gif" hspace="3" border="0">Update an existing IPR disclosure</a>
|
||||
</p>
|
||||
<p><a href="{% url ietf.ipr.search.search %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Search the IPR disclosures</a>
|
||||
<p><a href="{% url ietf.ipr.search.search %}"><img src="/images/blue.gif" hspace="3" border="0">Search the IPR disclosures</a>
|
||||
</p>
|
||||
<p><a href="{% url ietf.ipr.views.showlist %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">List of IPR disclosures</a><p>
|
||||
<p><a href="{% url ietf.ipr.views.showlist %}"><img src="/images/blue.gif" hspace="3" border="0">List of IPR disclosures</a><p>
|
||||
</p>
|
||||
<hr>
|
||||
<p>To remove an IPR disclosure from the list, please contact the IETF Secretariat at <a href="mailto:ietf-ipr@ietf.org">ietf-ipr@ietf.org</a>.
|
||||
|
@ -65,8 +65,5 @@ A participant in any IETF activity acknowledges that written, audio and video re
|
|||
An Internet-Draft intended by the Contributor to be submitted to the
|
||||
RFC Editor for publication as an Informational or Experimental RFC but not intended to be part of the IETF Standards Process.<br>
|
||||
</p>
|
||||
<hr>
|
||||
<p>Please report any problems to <a href="mailto:ietf-action@ietf.org">ietf-action@ietf.org</a>
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<h3>Archives by Year</h3>
|
||||
<ul>
|
||||
{% for year in date_list %}
|
||||
<li><a href="/ipr/{{ year|date:"Y" }}/">{{ year|date:"Y" }}</a>
|
||||
<li><a href="/ipr/y/{{ year|date:"Y" }}/">{{ year|date:"Y" }}</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
{% block content %}
|
||||
<h2>IPR Declarations - {{ year }}</h2>
|
||||
|
||||
<a href="../">All dates</a>
|
||||
<a href="../../">All dates</a>
|
||||
|
||||
<ul>
|
||||
{% for month in date_list %}
|
||||
|
|
|
@ -17,10 +17,10 @@ which any license under such rights might or might not be available; nor does it
|
|||
<a href="{% url ietf.ipr.views.default %}">Click here to submit an IPR disclosure</a>
|
||||
|
||||
<hr><p>
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="{% url ietf.ipr.search.search %}">Search the IPR Disclosures</a><p>
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="#generic">Generic IPR Disclosures</a><p>
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="#specific">Specific IPR Disclosures</a><p>
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="#notify">Specific Third Party IPR Disclosures</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="{% url ietf.ipr.search.search %}">Search the IPR Disclosures</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="#generic">Generic IPR Disclosures</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="#specific">Specific IPR Disclosures</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="#notify">Specific Third Party IPR Disclosures</a><p>
|
||||
<hr>
|
||||
|
||||
|
||||
|
@ -37,7 +37,7 @@ which any license under such rights might or might not be available; nor does it
|
|||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="#top">Back to Top</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="#top">Back to Top</a><p>
|
||||
<a name="specific"></a>
|
||||
<h2>Specific IPR Disclosures</h2><br>
|
||||
|
||||
|
@ -49,7 +49,7 @@ which any license under such rights might or might not be available; nor does it
|
|||
</table>
|
||||
<br>
|
||||
|
||||
<P><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0"><a href="#top">Back to Top</a><p>
|
||||
<P><img src="/images/blue.gif" hspace="3" border="0"><a href="#top">Back to Top</a><p>
|
||||
<a name="notify"></a>
|
||||
<h2>Specific Third Party IPR Disclosures</h2><br>
|
||||
<table border="1" cellpadding="2" cellspacing="2" width="820">
|
||||
|
@ -58,11 +58,6 @@ which any license under such rights might or might not be available; nor does it
|
|||
{% include "ipr/list_item.html" %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<p>Please report any problems to <a href="mailto:ietf-action@ietf.org">ietf-act
|
||||
ion@ietf.org</a>
|
||||
<br><br><br><br>
|
||||
{% endblock %}
|
||||
|
||||
|
|
@ -109,6 +109,6 @@
|
|||
|
||||
</table>
|
||||
<hr width="600"><br><br>
|
||||
<center><a href="{% url ietf.ipr.views.showlist %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">IPR Disclosure Page</a>
|
||||
<center><a href="{% url ietf.ipr.views.showlist %}"><img src="/images/blue.gif" hspace="3" border="0">IPR Disclosure Page</a>
|
||||
</center>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,42 +2,42 @@
|
|||
{% extends "ipr/search_result.html" %}
|
||||
{% load ietf_filters %}
|
||||
{% block search_result %}
|
||||
<table cellpadding="1" cellspacing="0" border="0">
|
||||
<table cellpadding="1" cellspacing="0" border="0">
|
||||
|
||||
<tr><td colspan="3">Total number of IPR disclosures found: {{ iprs|length }} </td></tr>
|
||||
{% for ipr in iprs|dictsort:"submitted_date" %}
|
||||
<tr valign="top" bgcolor="#dadada">
|
||||
<td width="100">{{ ipr.submitted_date }}</td>
|
||||
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
|
||||
<td><a href="{% url ietf.ipr.views.show ipr_id=ipr.ipr_id %}">"{{ ipr.title }}"</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr><td colspan="3">Total number of IPR disclosures found: {{ iprs|length }} </td></tr>
|
||||
{% for ipr in iprs|dictsort:"submitted_date" %}
|
||||
<tr valign="top" bgcolor="#dadada">
|
||||
<td width="100">{{ ipr.submitted_date }}</td>
|
||||
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
|
||||
<td><a href="{% url ietf.ipr.views.show ipr_id=ipr.ipr_id %}">"{{ ipr.title }}"</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
<tr><td colspan="3"><hr>Total number of documents searched: {{ docs|length}}</td></tr>
|
||||
{% for doc in docs %}
|
||||
<tbody bgcolor="#{% cycle dadada,eaeaea as bgcolor %}">
|
||||
<tr >
|
||||
<td colspan="3">
|
||||
Search result on {{ doc|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.title }}"{% ifnotequal doc first %}{% if doc.related %}, {{ doc.relation }} {{ doc.related|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.related.title }}"{% endif %}
|
||||
{% endifnotequal %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if doc.iprs %}
|
||||
{% for ipr in doc.iprs %}
|
||||
<tr valign="top">
|
||||
<td width="100">{{ ipr.submitted_date }}</td>
|
||||
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
|
||||
<td><a href="{% url ietf.ipr.views.show %}{{ ipr.ipr_id }}">"{{ ipr.title }}"</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"><b>No IPR disclosures related to <i>{{ doc|rfcspace|lstrip:"0" }}</i> have been submitted</b></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
{% endfor %}
|
||||
<tr><td colspan="3"><hr>Total number of documents searched: {{ docs|length}}</td></tr>
|
||||
{% for doc in docs %}
|
||||
<tbody bgcolor="#{% cycle dadada,eaeaea as bgcolor %}">
|
||||
<tr >
|
||||
<td colspan="3">
|
||||
Search result on {{ doc|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.title }}"{% ifnotequal doc first %}{% if doc.related %}, {{ doc.relation }} {{ doc.related|rfcspace|lstrip:"0"|rfcnospace }}, "{{ doc.related.title }}"{% endif %}
|
||||
{% endifnotequal %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if doc.iprs %}
|
||||
{% for ipr in doc.iprs %}
|
||||
<tr valign="top">
|
||||
<td width="100">{{ ipr.submitted_date }}</td>
|
||||
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
|
||||
<td><a href="{% url ietf.ipr.views.show %}{{ ipr.ipr_id }}">"{{ ipr.title }}"</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2"><b>No IPR disclosures related to <i>{{ doc|rfcspace|lstrip:"0" }}</i> have been submitted</b></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
@ -29,18 +29,12 @@
|
|||
<td width="100">{{ ipr.submitted_date }}</td>
|
||||
<td width="90"><li>ID # {{ ipr.ipr_id }}</li></td>
|
||||
<td>
|
||||
<!--
|
||||
{% for item in ipr.updates.all %}
|
||||
{% ifequal item.updated.status 1 %}
|
||||
IPR disclosure ID# {{ item.updated.ipr_id }}, "<a href="{% url ietf.ipr.views.show item.updated.ipr_id %}">{{ item.updated.title }}</a>" Updated by
|
||||
{% endifequal %}
|
||||
{% endfor %}-->
|
||||
{% for item in ipr.updated_by.all %}
|
||||
{% ifequal item.processed 1 %}
|
||||
IPR disclosure ID# {{ item.ipr.ipr_id }} "<a href="{% url ietf.ipr.views.show item.ipr.ipr_id %}">{{ item.ipr.title }}</a>" Updates
|
||||
{% endifequal %}
|
||||
{% endfor %}
|
||||
<a href="{% url ietf.ipr.views.show %}{{ ipr.ipr_id }}">"{{ ipr.title }}"</a>
|
||||
<a href="{% url ietf.ipr.views.show ipr.ipr_id %}">"{{ ipr.title }}"</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -64,8 +64,8 @@
|
|||
{% endblock %}
|
||||
<hr><br>
|
||||
|
||||
<a href="{% url ietf.ipr.search.search %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">IPR Search Main Page</a><br>
|
||||
<a href="{% url ietf.ipr.views.showlist %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">IPR Disclosure Page</a>
|
||||
<a href="{% url ietf.ipr.search.search %}"><img src="/images/blue.gif" hspace="3" border="0">IPR Search Main Page</a><br>
|
||||
<a href="{% url ietf.ipr.views.showlist %}"><img src="/images/blue.gif" hspace="3" border="0">IPR Disclosure Page</a>
|
||||
<br>
|
||||
</blockquote>
|
||||
{% endblock %}
|
||||
|
|
|
@ -35,12 +35,7 @@
|
|||
IPR disclosure ID# {{ item.updated.ipr_id }}, "<a href="{% url ietf.ipr.views.show item.updated.ipr_id %}">{{ item.updated.title }}</a>" Updated by
|
||||
{% endifequal %}
|
||||
{% endfor %}
|
||||
<a href="{% url ietf.ipr.views.show %}{{ ipr.ipr_id }}">"{{ ipr.title }}"</a>
|
||||
<!--{% for item in ipr.updated_by.all %}
|
||||
{% ifequal item.processed 1 %}
|
||||
Updated by "<a href="{% url ietf.ipr.views.show item.ipr.ipr_id %}">{{ item.ipr.title }}</a>"<br>
|
||||
{% endifequal %}
|
||||
{% endfor %}-->
|
||||
<a href="{% url ietf.ipr.views.show ipr.ipr_id %}">"{{ ipr.title }}"</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
{% include "ipr/style.html" %}
|
||||
|
||||
<h4><font color="#000055"><center>Updating {{ type|title }} IPR Disclosures <br><i>{{ ipr.title|escape }}</i></center></font></h4>
|
||||
|
||||
<form name="form1" method="post">
|
||||
{% if form.errors %}
|
||||
<p class="errorlist">
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<a href="{% url ietf.ipr.views.default %}">Click here to submit an IPR disclosure</a>
|
||||
|
||||
<hr><p>
|
||||
<P><a href="{% url ietf.ipr.search.search %}"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Search the IPR Disclosures</a><p>
|
||||
<P><a href="#generic"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Generic IPR Disclosures</a><p>
|
||||
<P><a href="{% url ietf.ipr.search.search %}"><img src="/images/blue.gif" hspace="3" border="0">Search the IPR Disclosures</a><p>
|
||||
<P><a href="#generic"><img src="/images/blue.gif" hspace="3" border="0">Generic IPR Disclosures</a><p>
|
||||
|
||||
<P><a href="#specific"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Specific IPR Disclosures</a><p>
|
||||
<P><a href="#notify"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Specific Third Party IPR Disclosures</a><p>
|
||||
<P><a href="#specific"><img src="/images/blue.gif" hspace="3" border="0">Specific IPR Disclosures</a><p>
|
||||
<P><a href="#notify"><img src="/images/blue.gif" hspace="3" border="0">Specific Third Party IPR Disclosures</a><p>
|
||||
<hr>
|
||||
|
||||
<a name="generic"></a>
|
||||
|
@ -30,7 +30,7 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<P><a href="#top"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Back to Top</a><p>
|
||||
<P><a href="#top"><img src="/images/blue.gif" hspace="3" border="0">Back to Top</a><p>
|
||||
<a name="specific"></a>
|
||||
<h3>Specific IPR Disclosures</h3>
|
||||
<b><font size = +1>Please select the IPR disclosure that you wish to update.</font><br>
|
||||
|
@ -47,7 +47,7 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
<br>
|
||||
<P><a href="#top"><img src="http://www.ietf.org/images/blue.gif" hspace="3" border="0">Back to Top</a><p>
|
||||
<P><a href="#top"><img src="/images/blue.gif" hspace="3" border="0">Back to Top</a><p>
|
||||
<a name="notify"></a>
|
||||
<h3>Specific Third Party IPR Disclosures</h3>
|
||||
<b><font size = +1>Please select the IPR disclosure that you wish to update.</font><br>
|
||||
|
|
|
@ -52,9 +52,4 @@ clean_forms: {{ clean_forms|escape }}
|
|||
</td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
<i>Please send problem reports to</i> <A HREF="mailto:ietf-action@ietf.org">ietf-action@ietf.org</A>.
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -17,7 +17,7 @@ Updated as of {% now "F j, Y, H:i:s (T)" %}
|
|||
{% for wgs in areas %}
|
||||
<table cellpadding="0" cellspacing="0" border="2" width="80%">
|
||||
<tr>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>{{ wgs.grouper }}</h3></center></font>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="/images/ib2.gif" width="100%" height=21><br>{{ wgs.grouper }}</h3></center></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -63,7 +63,7 @@ Updated as of {% now "F j, Y, H:i:s (T)" %}
|
|||
{% if training_list %}
|
||||
<table cellpadding="0" cellspacing="0" border="2" width="80%">
|
||||
<tr>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>Training</h3></center></font>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="/images/ib2.gif" width="100%" height=21><br>Training</h3></center></font>
|
||||
</td> </tr> </table>
|
||||
{% for wg in training_list|dictsort:"acronym" %}
|
||||
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <tr><a name="wg-{{ wg.acronym }}"></a>
|
||||
|
@ -84,7 +84,7 @@ Updated as of {% now "F j, Y, H:i:s (T)" %}
|
|||
{% if irtf_list %}
|
||||
<table cellpadding="0" cellspacing="0" border="2" width="80%">
|
||||
<tr>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>IRTF</h3></center></font>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="/images/ib2.gif" width="100%" height=21><br>IRTF</h3></center></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -110,7 +110,7 @@ Updated as of {% now "F j, Y, H:i:s (T)" %}
|
|||
{% if interim_list %}
|
||||
<table cellpadding="0" cellspacing="0" border="2" width="80%">
|
||||
<tr>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>Interim Meetings</h3></center></font>
|
||||
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="/images/ib2.gif" width="100%" height=21><br>Interim Meetings</h3></center></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -19,11 +19,11 @@ from ietf.utils import log
|
|||
|
||||
startup_database = settings.DATABASE_NAME # The startup database name, before changing to test_...
|
||||
|
||||
def run_tests(module_list, verbosity=1, extra_tests=[]):
|
||||
def run_tests(module_list, verbosity=0, extra_tests=[]):
|
||||
module_list.append(ietf.urls)
|
||||
# If we append 'ietf.tests', we get it twice, first as itself, then
|
||||
# during the search for a 'tests' module ...
|
||||
return django.test.simple.run_tests(module_list, verbosity, extra_tests)
|
||||
return django.test.simple.run_tests(module_list, 0, extra_tests)
|
||||
|
||||
def reduce_text(html, pre=False, fill=True):
|
||||
if html.count("<li>") > 5*html.count("</li>"):
|
||||
|
@ -90,6 +90,10 @@ def read_testurls(filename):
|
|||
goodurl = None
|
||||
elif len(urlspec) == 3:
|
||||
codes, testurl, goodurl = urlspec
|
||||
# strip protocol and host -- we're making that configurable
|
||||
goodurl = re.sub("^https?://[a-z0-9.]+", "", goodurl)
|
||||
if not goodurl.startswith("/"):
|
||||
goodurl = "/" + goodurl
|
||||
else:
|
||||
raise ValueError("Expected 'HTTP_CODE TESTURL [GOODURL]' in %s line, found '%s'." % (filename, line))
|
||||
|
||||
|
@ -289,6 +293,11 @@ class UrlTestCase(TestCase):
|
|||
note("Exception for URL '%s'" % url)
|
||||
traceback.print_exc()
|
||||
if master and not "skipdiff" in codes:
|
||||
hostprefix = settings.TEST_REFERENCE_URL_PREFIX
|
||||
if hostprefix.endswith("/"):
|
||||
hostprefix = hostprefix[:-1]
|
||||
master = hostprefix + master
|
||||
goodhtml = None
|
||||
try:
|
||||
#print "Fetching", master, "...",
|
||||
mfile = urllib.urlopen(master)
|
||||
|
@ -296,8 +305,9 @@ class UrlTestCase(TestCase):
|
|||
mfile.close()
|
||||
note(" 200 %s" % (master))
|
||||
except urllib.URLError, e:
|
||||
note(" Error retrieving %s: %s" % (e.url, e))
|
||||
goodhtml = None
|
||||
note(" Error retrieving %s: %s" % (master, e))
|
||||
except urllib.BadStatusLine, e:
|
||||
note(" Error retrieving %s: %s" % (master, e))
|
||||
try:
|
||||
if goodhtml and response.content:
|
||||
if "sort" in codes:
|
||||
|
@ -335,7 +345,7 @@ class UrlTestCase(TestCase):
|
|||
else:
|
||||
contextlines = 0
|
||||
difflist = list(unified_diff(goodtext, testtext, master, url, "", "", contextlines, lineterm=""))
|
||||
diff = "\n".join(difflist)
|
||||
diff = "\n".join(difflist[2:])
|
||||
log("Checking diff: %s" % diff[:96])
|
||||
keys = module.diffchunks.keys()
|
||||
keys.sort
|
||||
|
@ -352,7 +362,7 @@ class UrlTestCase(TestCase):
|
|||
# discard them too
|
||||
diff = ""
|
||||
if diff:
|
||||
dfile = "%s/../test/diff/%s" % (settings.BASE_DIR, url.replace("/", "_").replace("?", "_"))
|
||||
dfile = "%s/../test/diff/%s" % (settings.BASE_DIR, re.sub("[/?&=]", "_", url) )
|
||||
if os.path.exists(dfile):
|
||||
dfile = open(dfile)
|
||||
#print "Reading OK diff file:", dfile.name
|
||||
|
@ -367,9 +377,9 @@ class UrlTestCase(TestCase):
|
|||
note("Failed diff: %s" % (url))
|
||||
else:
|
||||
note("Diff: %s" % (url))
|
||||
print "\n".join(diff.split("\n")[:120])
|
||||
if len(diff.split("\n")) > 120:
|
||||
print "... (skipping %s lines of diff)" % (len(difflist)-120)
|
||||
print "\n".join(diff.split("\n")[:100])
|
||||
if len(diff.split("\n")) > 100:
|
||||
print "... (skipping %s lines of diff)" % (len(difflist)-100)
|
||||
else:
|
||||
note("OK cmp %s" % (url))
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
# Top-level test URL list. Should probably be empty; all test URls should be
|
||||
# specified in the application level testurl.list
|
||||
|
||||
200 / # Top level url. Has no comparable page today.
|
||||
301 / # Top level url. Has no comparable page today.
|
||||
skip /images/ietf-icon.bmp
|
||||
skip /css/base.css
|
||||
skip /js/
|
||||
|
||||
200 /googlea30ad1dacffb5e5b.html # Google webmaster tool verification page
|
||||
|
|
|
@ -5,8 +5,6 @@ from django.conf.urls.defaults import patterns, include, handler404, handler500
|
|||
from ietf.iesg.feeds import IESGMinutes
|
||||
from ietf.idtracker.feeds import DocumentComments
|
||||
from ietf.ipr.feeds import LatestIprDisclosures
|
||||
import ietf.utils.views
|
||||
import ietf.views
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -31,7 +29,7 @@ urlpatterns = patterns('',
|
|||
(r'^meeting/', include('ietf.meeting.urls')),
|
||||
(r'^accounts/', include('ietf.ietfauth.urls')),
|
||||
|
||||
(r'^$', ietf.views.apps),
|
||||
(r'^$', 'ietf.redirects.views.redirect'),
|
||||
|
||||
# Uncomment this for admin:
|
||||
(r'^admin/', include('django.contrib.admin.urls')),
|
||||
|
@ -42,6 +40,9 @@ urlpatterns = patterns('',
|
|||
(r'^review/(?P<page>[0-9a-f]+)/$', 'ietf.utils.views.review'),
|
||||
(r'^review/top/(?P<page>[0-9a-f]+)/$', 'ietf.utils.views.top'),
|
||||
|
||||
# Google webmaster tools verification url
|
||||
(r'googlea30ad1dacffb5e5b.html', 'django.views.generic.simple.direct_to_template', { 'template': 'googlea30ad1dacffb5e5b.html' })
|
||||
|
||||
)
|
||||
|
||||
if settings.SERVER_MODE in ('development', 'test'):
|
||||
|
|
|
@ -5,6 +5,7 @@ from log import log
|
|||
from cache_foreign_key import FKAsOneToOne
|
||||
from templated_form import makeTemplatedForm
|
||||
from soup2text import TextSoup, soup2text
|
||||
from draft_search import normalize_draftname
|
||||
|
||||
makeFormattingForm = makeTemplatedForm
|
||||
|
||||
|
|
8
ietf/utils/draft_search.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
import re
|
||||
|
||||
def normalize_draftname(string):
|
||||
string = string.strip()
|
||||
string = re.sub("\.txt$","",string)
|
||||
string = re.sub("-\d\d$","",string)
|
||||
return string
|
BIN
static/images/NS_logo_100px.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
static/images/blue-line.jpg
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
static/images/header/home11.gif
Normal file
After Width: | Height: | Size: 300 B |
BIN
static/images/header/id-index11.gif
Normal file
After Width: | Height: | Size: 371 B |
BIN
static/images/header/ietflogo_sm.gif
Normal file
After Width: | Height: | Size: 977 B |
BIN
static/images/header/meetings11.gif
Normal file
After Width: | Height: | Size: 388 B |
BIN
static/images/header/proceed11.gif
Normal file
After Width: | Height: | Size: 492 B |
BIN
static/images/header/rfc11.gif
Normal file
After Width: | Height: | Size: 289 B |
BIN
static/images/header/separator.gif
Normal file
After Width: | Height: | Size: 81 B |
BIN
static/images/header/wg11.gif
Normal file
After Width: | Height: | Size: 554 B |
BIN
static/images/ib2.gif
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
static/images/ietflogo2e.gif
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
static/images/ietflogo2i.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
static/images/ipr_header.gif
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
static/images/isoc-small.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
|
@ -1,7 +1,8 @@
|
|||
--- https://datatracker.ietf.org/public/show_nomcom_message.cgi?id=1230
|
||||
+++ /ann/nomcom/1230/
|
||||
@@ -3,2 +3,2 @@
|
||||
-IETF Announcement Date: June 3, 2007 Subject: IETF Nomcom Appointment
|
||||
-- 2007-2008
|
||||
+IETF Announcement list Date: June 3, 2007 Subject: IETF Nomcom
|
||||
+Appointment - 2007-2008
|
||||
@@ -10,1 +10,1 @@
|
||||
-at .
|
||||
+at <ldondeti at qualcomm.com>.
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/idindex.cgi
|
||||
+++ /drafts/
|
||||
@@ -16,1 +16,0 @@
|
||||
-I-D Exists
|
||||
@@ -546,2 +545,2 @@
|
||||
|
|
18
test/diff/_drafts_dead_
Normal file
|
@ -0,0 +1,18 @@
|
|||
@@ -4,1 +4,1 @@
|
||||
-Expired/Withdrawn/Replaced I-Ds sorted by UNKNOWN
|
||||
+Expired/Withdrawn/Replaced I-Ds sorted by Filename
|
||||
@@ -3214,1 +3214,1 @@
|
||||
-draft-iab-char-rep-01 2004-02-18 Expired Dead
|
||||
+draft-iab-char-rep-01 2004-02-18 Expired Dead: : Revised I-D Needed
|
||||
@@ -4225,1 +4225,1 @@
|
||||
-draft-ietf-ldapext-ldap-java-api-19 2004-06-07 Expired Dead
|
||||
+draft-ietf-ldapext-ldap-java-api-19 2004-06-07 Expired Dead: : Revised I-D Needed
|
||||
@@ -4331,1 +4331,1 @@
|
||||
-draft-ietf-mboned-rfc3171bis-02 2004-03-15 Expired Dead
|
||||
+draft-ietf-mboned-rfc3171bis-02 2004-03-15 Expired Dead: : Revised I-D Needed
|
||||
@@ -4470,1 +4470,1 @@
|
||||
-draft-ietf-msec-tesla-spec-00 2002-10-30 Expired Dead
|
||||
+draft-ietf-msec-tesla-spec-00 2002-10-30 Expired Dead: : Revised I-D Needed
|
||||
@@ -4798,1 +4798,1 @@
|
||||
-draft-ietf-ppvpn-vr-mib-05 Replaced I-D Exists
|
||||
+draft-ietf-ppvpn-vr-mib-05 None Replaced I-D Exists
|
17
test/diff/_drafts_dead__sort_name
Normal file
|
@ -0,0 +1,17 @@
|
|||
@@ -1018,1 +1018,0 @@
|
||||
-draft-cain-post-inch-phishingextns-00 2006-10-17 Expired I-D Exists
|
||||
@@ -3215,1 +3214,1 @@
|
||||
-draft-iab-char-rep-01 2004-02-18 Expired Dead
|
||||
+draft-iab-char-rep-01 2004-02-18 Expired Dead: : Revised I-D Needed
|
||||
@@ -4226,1 +4225,1 @@
|
||||
-draft-ietf-ldapext-ldap-java-api-19 2004-06-07 Expired Dead
|
||||
+draft-ietf-ldapext-ldap-java-api-19 2004-06-07 Expired Dead: : Revised I-D Needed
|
||||
@@ -4332,1 +4331,1 @@
|
||||
-draft-ietf-mboned-rfc3171bis-02 2004-03-15 Expired Dead
|
||||
+draft-ietf-mboned-rfc3171bis-02 2004-03-15 Expired Dead: : Revised I-D Needed
|
||||
@@ -4472,1 +4471,1 @@
|
||||
-draft-ietf-msec-tesla-spec-00 2002-10-30 Expired Dead
|
||||
+draft-ietf-msec-tesla-spec-00 2002-10-30 Expired Dead: : Revised I-D Needed
|
||||
@@ -4799,1 +4798,1 @@
|
||||
-draft-ietf-ppvpn-vr-mib-05 Replaced I-D Exists
|
||||
+draft-ietf-ppvpn-vr-mib-05 None Replaced I-D Exists
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=rfc
|
||||
+++ /drafts/rfc/
|
||||
@@ -12,1 +12,1 @@
|
||||
-Published I-Ds sorted by UNKNOWN
|
||||
+Published I-Ds sorted by Filename
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=rfc&sort=name
|
||||
+++ /drafts/rfc/?sort=name
|
||||
@@ -1123,0 +1123,1 @@
|
||||
+draft-ietf-hubmib-etherif-MIB-06 1998-08-06 RFC 2358 I-D Exists
|
||||
@@ -1124,1 +1125,0 @@
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi
|
||||
+++ /idtracker/
|
||||
@@ -68,0 +68,1 @@
|
||||
+--All Substates
|
||||
@@ -73,1 +74,0 @@
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
+++ /idtracker/12689/
|
||||
@@ -40,2 +40,3 @@
|
||||
-This draft is basically ready for publication, but has nits and more
|
||||
-...
|
||||
|
@ -51,3 +49,7 @@
|
|||
+> Definition of an IS-IS Link Attribute sub-TLV > > draft-ietf-isis-
|
||||
+link-attr-01.txt > > Abstract > > This document defines a sub-TLV
|
||||
+called "Link-attributes" carried > within the ...
|
||||
@@ -140,3 +142,0 @@
|
||||
-Did you find a bug? Let us know.
|
||||
-Any question or suggestion?
|
||||
-This page produced by the IETF Secretariat for the IESG
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=search_list&search_job_owner=0&search_group_acronym=&search_status_id=&search_cur_state=&sub_state_id=6&search_filename=bgp-m&search_rfcnumber=&search_area_acronym=&search_button=SEARCH
|
||||
+++ /idtracker/?search_group_acronym=&search_job_owner=0&search_rfcnumber=&search_status_id=&sub_state_id=6&search_cur_state=&search_button=SEARCH&search_filename=bgp-m&search_area_acronym=
|
||||
@@ -67,0 +67,1 @@
|
||||
+--All Substates
|
||||
@@ -72,1 +73,0 @@
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=print_ballot&ballot_id=1760&filename=draft-ietf-isis-link-attr
|
||||
+++ /idtracker/ballot/1760/
|
||||
@@ -7,1 +7,1 @@
|
||||
-https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
+https://datatracker.ietf.org/idtracker/ballot/1760/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=view_comment&id=65232
|
||||
+++ /idtracker/comment/65232/
|
||||
@@ -5,2 +5,0 @@
|
||||
@@ -3,0 +3,1 @@
|
||||
+Document: draft-ietf-isis-link-attr
|
||||
@@ -5,2 +6,0 @@
|
||||
-State before Comment: 0
|
||||
-State after Comment: 0
|
||||
-State after Comment: 0
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=view_id&dTag=12689&rfc_flag=0
|
||||
+++ /idtracker/draft-ietf-isis-link-attr/
|
||||
@@ -40,2 +40,3 @@
|
||||
-This draft is basically ready for publication, but has nits and more
|
||||
-...
|
||||
|
@ -51,3 +49,7 @@
|
|||
+> Definition of an IS-IS Link Attribute sub-TLV > > draft-ietf-isis-
|
||||
+link-attr-01.txt > > Abstract > > This document defines a sub-TLV
|
||||
+called "Link-attributes" carried > within the ...
|
||||
@@ -140,3 +142,0 @@
|
||||
-Did you find a bug? Let us know.
|
||||
-Any question or suggestion?
|
||||
-This page produced by the IETF Secretariat for the IESG
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- https://datatracker.ietf.org/public/pidtracker.cgi?command=view_comment&id=65232
|
||||
+++ /idtracker/draft-ietf-isis-link-attr/comment/65232/
|
||||
@@ -5,2 +5,0 @@
|
||||
@@ -3,0 +3,1 @@
|
||||
+Document: draft-ietf-isis-link-attr
|
||||
@@ -5,2 +6,0 @@
|
||||
-State before Comment: 0
|
||||
-State after Comment: 0
|
||||
-State after Comment: 0
|
||||
|
|
4
test/diff/_idtracker_rfc3847_
Normal file
|
@ -0,0 +1,4 @@
|
|||
@@ -30,3 +30,0 @@
|
||||
-Did you find a bug? Let us know.
|
||||
-Any question or suggestion?
|
||||
-This page produced by the IETF Secretariat for the IESG
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/previous_announcement.cgi?command=show_detail&ballot_id=1563
|
||||
+++ /iesg/ann/1563/
|
||||
@@ -1,0 +1,7 @@
|
||||
+IESG Announcement
|
||||
+This page contains an IESG Protocol, Document, or Working Group Action
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/recent_announcement.cgi?command=show_detail&ballot_id=2422
|
||||
+++ /iesg/ann/2422/
|
||||
@@ -1,0 +1,6 @@
|
||||
+IESG Announcement
|
||||
+This page contains an IESG Protocol, Document, or Working Group Action
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/previous_announcement.cgi
|
||||
+++ /iesg/ann/prev/
|
||||
@@ -314,0 +314,1 @@
|
||||
+Date Sent: April 4, 2002
|
||||
@@ -468,1 +469,0 @@
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_list.cgi
|
||||
+++ /ipr/
|
||||
@@ -63,0 +63,1 @@
|
||||
+2000-09-15 170 i-DNS.net International general License statement
|
||||
@@ -66,1 +67,0 @@
|
||||
-0000-09-15 170 i-DNS.net International general License statement
|
||||
@@ -22,0 +22,1 @@
|
||||
+2007-06-26 859 QUALCOMM Incorporated's General License Statement
|
||||
@@ -1362,1 +1363,0 @@
|
||||
-Please report any problems to ietf-act ion@ietf.org
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=657
|
||||
+++ /ipr/ipr-657/
|
||||
@@ -43,3 +43,4 @@
|
||||
-Licensing information, comments, notes, or URL for further information
|
||||
-:
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=795
|
||||
+++ /ipr/ipr-795/
|
||||
@@ -23,4 +23,2 @@
|
||||
-Relates
|
||||
-Title:
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_detail_show.cgi?&ipr_id=834
|
||||
+++ /ipr/ipr-834/
|
||||
@@ -30,4 +30,2 @@
|
||||
-Relates
|
||||
-Title:
|
|
@ -1,7 +1,6 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_disclosure.cgi
|
||||
+++ /ipr/about/
|
||||
@@ -5,2 +5,2 @@
|
||||
-Technology" (updated by RFC4879, "Clarification of the Thrid Party
|
||||
-Disclosure Procedure in RFC3979".)
|
||||
@@ -5,1 +5,2 @@
|
||||
-Technology".
|
||||
+Technology" (updated by RFC4879, "Clarification of the Third Party
|
||||
+Disclosure Procedure in RFC3979").
|
||||
+Disclosure Procedure in RFC3979").
|
||||
@@ -50,1 +51,0 @@
|
||||
-Please report any problems to ietf-action@ietf.org
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_generic.cgi
|
||||
+++ /ipr/new-generic/
|
||||
@@ -9,1 +9,1 @@
|
||||
-Note: According to Section 6.4.3 ofRFC3979, "Intellectual Property
|
||||
+Note: According to Section 6.4.3 of RFC3979, "Intellectual Property
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr.cgi
|
||||
+++ /ipr/new-specific/
|
||||
@@ -16,0 +16,1 @@
|
||||
+Fields marked with * are required.
|
||||
@@ -17,2 +18,2 @@
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_notify.cgi
|
||||
+++ /ipr/new-third-party/
|
||||
@@ -10,1 +10,1 @@
|
||||
-it to ietf-ipr@ietf.org.Submissions made by e-mail that do not comply
|
||||
+it to ietf-ipr@ietf.org. Submissions made by e-mail that do not comply
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
--- https://datatracker.ietf.org/public/ipr_search.cgi?option=title_search&title_search=AAAxz
|
||||
+++ /ipr/search/?option=title_search&title_search=AAAxz
|
||||
@@ -1,0 +1,1 @@
|
||||
+IPR Disclosure Page
|
||||
@@ -2,0 +3,1 @@
|
||||
+IPR Search Main Page
|