Merged in some Django 1.0 related fixes plus conversion script from Pasi. Merged in menubar link fixes from Chris. Merged in abstract generation scripts from Jelte.

- Legacy-Id: 1605
This commit is contained in:
Henrik Levkowetz 2009-07-28 11:28:09 +00:00
parent 8869468254
commit 24678327b4
36 changed files with 252 additions and 89 deletions

View file

@ -1,11 +1,31 @@
ietfdb (2.29)
* New script bin/abstracts.py, intended to be run as a cronjob, to generate
the ID abstracts files. Merged in from Jelte.
* Fixed bug in wg-dir.html to support additional area URLs properly.
From Chris.
* Added new rfcurl filter to eliminate hardcoded references to RFC URLs
primarily in the liaisons and drafts pages. From Chris.
* Fixed URLs that were broken or outdated by the IETF web page
re-organization throughout the tree. In particular, references to
html.charters in URLs, and old charter references. Including many
broken links in leftmenu. From Chris.
* Some Django 1.0 related fixes plus conversion script. From Pasi.
-- Henrik Levkowetz <henrik@levkowetz.com> 25 Jul 2009 19:46:45 +0200
ietfdb (2.28)
* Show full name in document comment log. From Pasi.
* Optimize meeting agenda page to use less SQL queries. From Pasi.
* Include version in iesg/agenda/documents.txt. From Pasi.
* Include version in iesg/agenda/documents.txt. From Pasi.
-- Henrik Levkowetz <henrik@levkowetz.com> 25 Jul 2009 14:38:41 +0200
ietfdb (2.27)

108
ietf/bin/convert-096.py Executable file
View file

@ -0,0 +1,108 @@
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of the Nokia Corporation and/or its
# subsidiary(-ies) nor the names of its contributors may be used
# to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from os.path import exists
import os
import re
def convert_py(file):
print " Converting ", file
inf = open(file)
outf_name = file+'.tmp~'
outf = open(outf_name, "w")
fixes = {}
for line in inf:
if re.search("Field.*maxlength=\d", line):
line = line.replace("maxlength=", "max_length=")
fixes['changed maxlength to max_length'] = True
if re.search("^\s*from django import newforms as forms\s*$", line):
line = "from django import forms\n"
fixes['changed newforms to forms'] = True
if re.search("^\s*import django.newforms as forms\s*$", line):
line = "from django import forms\n"
fixes['changed newforms to forms'] = True
if re.search("^\s*from django.core.validators import email_re\s*$", line):
line = "from django.forms.fields import email_re\n"
fixes['changed email_re import'] = True
if re.search("ForeignKey.*raw_id_admin=True", line):
line = re.sub(",\s*raw_id_admin=True", "", line)
fixes['removed raw_id_admin'] = True
if re.search("ForeignKey.*edit_inline=True", line):
line = re.sub(",\s*edit_inline=True", "", line)
fixes['removed edit_inline'] = True
if re.search("ForeignKey.*edit_inline=models\.\w+", line):
line = re.sub(",\s*edit_inline=models\.\w+", "", line)
fixes['removed edit_inline'] = True
if re.search("ForeignKey.*num_in_admin=\d+", line):
line = re.sub(",\s*num_in_admin=\d+", "", line)
fixes['removed num_in_admin'] = True
if re.search("ForeignKey.*max_num_in_admin=\d+", line):
line = re.sub(",\s*max_num_in_admin=\d+", "", line)
fixes['removed max_num_in_admin'] = True
if re.search("ManyToManyField.*filter_interface=models\.\w+", line):
line = re.sub(",\s*filter_interface=models\.\w+", "", line)
fixes['removed filter_interface'] = True
if re.search("(Field|ForeignKey).*core=True", line):
line = re.sub(",\s*core=True", "", line)
fixes['removed core'] = True
if re.search("\.clean_data", line):
line = re.sub("\.clean_data", ".cleaned_data", line)
fixes['cleaned_data'] = True
outf.write(line)
inf.close()
fixes_list = fixes.keys()
fixes_list.sort()
something_fixed = len(fixes_list) > 0
if something_fixed:
outf.write("\n# changes done by convert-096.py:")
outf.write("\n# ".join(fixes_list))
outf.write("\n")
outf.close()
if something_fixed:
os.rename(file, file+'.backup~')
os.rename(outf_name, file)
print " Fixes: "+", ".join(fixes_list)
else:
os.remove(outf_name)
if not exists("settings.py"):
raise Exception("Please run this in directory containing settings.py")
for root, dirs, files in os.walk("."):
if root.find(".svn") >= 0:
continue
print "Processing ", root
for file in files:
if file.endswith(".py"):
convert_py(root+"/"+file)

View file

@ -41,8 +41,7 @@ class RfcEditorQueue(models.Model):
(3, 'IRTF'),
(4, 'Independent')
)
draft = models.OneToOneField(InternetDraft, db_column="id_document_tag", related_name="rfc_editor_queue_state")
#draft = models.CharField(maxlength=200,primary_key=True)
draft = models.OneToOneField(InternetDraft, db_column="id_document_tag", related_name="rfc_editor_queue_state",primary_key=True)
date_received = models.DateField()
state = models.CharField(maxlength=200, blank=True, null=True)
# currently, queue2.xml does not have this information, so

View file

@ -588,7 +588,7 @@ class IDInternal(models.Model):
def comments(self):
# would filter by rfc_flag but the database is broken. (see
# trac ticket #96) so this risks collisions.
return self.documentcomment_set.all().order_by('-comment_date','-comment_time','-id')
return self.documentcomment_set.all().order_by('-date','-time','-id')
def ballot_set(self):
return IDInternal.objects.filter(ballot=self.ballot_id).order_by('-primary_flag')
def ballot_primary(self):

View file

@ -1,6 +1,7 @@
# Copyright The IETF Trust 2007, All Rights Reserved
import textwrap
import django
from django import template
from django.utils.html import escape, fix_ampersands, linebreaks
from django.template.defaultfilters import linebreaksbr
@ -199,6 +200,15 @@ def rfcnospace(string):
else:
return string
@register.filter(name='rfcurl')
def rfclink(string):
"""
This takes just the RFC number, and turns it into the
URL for that RFC.
"""
string = str(string);
return "http://tools.ietf.org/html/rfc" + string;
@register.filter(name='dashify')
def dashify(string):
"""
@ -311,6 +321,12 @@ def equal(x, y):
def in_group(user, groups):
return user and user.is_authenticated() and bool(user.groups.filter(name__in=groups.split(',')).values('name'))
# DJANGO_096: a dummy safe filter for Django 0.96
if django.VERSION[0] == 0:
@register.filter
def safe(x):
return x
def _test():
import doctest
doctest.testmod()

View file

@ -76,7 +76,7 @@ def search(request):
if status != '':
q_objs.append(Q(draft__status=status,rfc_flag=0))
matches = IDInternal.objects.all().filter(*q_objs)
matches = matches.order_by('cur_state', 'cur_sub_state', 'ballot_id', '-primary_flag')
matches = matches.order_by('cur_state', 'cur_sub_state', 'ballot', '-primary_flag')
# sort by date in reverse
# first build docstate groups, within which we sort
# in each docstate group, we build ballot id groups, which we sort
@ -207,11 +207,11 @@ def send_email(request):
context_instance=RequestContext(request))
def status(request):
queryset = IDInternal.objects.filter(primary_flag=1).exclude(cur_state__state__in=('RFC Ed Queue', 'RFC Published', 'AD is watching', 'Dead')).order_by('cur_state', 'status_date', 'ballot_id')
queryset = IDInternal.objects.filter(primary_flag=1).exclude(cur_state__state__in=('RFC Ed Queue', 'RFC Published', 'AD is watching', 'Dead')).order_by('cur_state', 'status_date', 'ballot')
return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'IESG Status of Items'})
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')
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')
return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'Documents in Last Call', 'lastcall': 1})
def redirect_id(request, object_id):

View file

@ -117,8 +117,8 @@ def agenda_docs(date, next_agenda):
matches = IDInternal.objects.filter(telechat_date=date, primary_flag=1, agenda=1)
else:
matches = IDInternal.objects.filter(telechat_date=date, primary_flag=1)
idmatches = matches.filter(rfc_flag=0).order_by('ballot_id')
rfcmatches = matches.filter(rfc_flag=1).order_by('ballot_id')
idmatches = matches.filter(rfc_flag=0).order_by('ballot')
rfcmatches = matches.filter(rfc_flag=1).order_by('ballot')
res = {}
for id in list(idmatches)+list(rfcmatches):
section_key = "s"+get_doc_section(id)
@ -212,8 +212,8 @@ def telechat_agenda_documents(request):
telechats = []
for date in dates:
matches = IDInternal.objects.filter(telechat_date=date,primary_flag=1,agenda=1)
idmatches = matches.filter(rfc_flag=0).order_by('ballot_id')
rfcmatches = matches.filter(rfc_flag=1).order_by('ballot_id')
idmatches = matches.filter(rfc_flag=0).order_by('ballot')
rfcmatches = matches.filter(rfc_flag=1).order_by('ballot')
res = {}
for id in list(idmatches)+list(rfcmatches):
section_key = "s"+get_doc_section(id)

View file

@ -1,4 +1,5 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load ietf_filters %}
<!-- {{ object_list|length }} result{{ object_list|length|pluralize }}.<br> -->
<b>Please click a document below to view detail information,
or the [draft] link for the document itself.</b><br>
@ -29,7 +30,7 @@ or the [draft] link for the document itself.</b><br>
{% else %}
<td>
{% if draft.rfc_number %}
<a href="http://www.ietf.org/rfc/rfc{{ draft.rfc_number|stringformat:"04d" }}.txt">{{ draft.rfc_number }}</a>
<a href="{{ draft.rfc_number|rfcurl }}">{{ draft.rfc_number }}</a>
{% else %}
&nbsp;
{% endif %}

View file

@ -1,5 +1,5 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "idindex/base.html" %}
{% extends "idindex/base.html" %}{% load ietf_filters %}
{% block title %}Internet Draft Database Index - {{ object.filename }}{% endblock %}
@ -13,7 +13,7 @@
<li> <b><a href="related/">View Related Documents</a></b> (e.g., documents that replaced or were replaced by the subject I-D, and their derivatives and precursors.)</li>
{% ifequal object.group.acronym "none" %}
{% else %}
<li> <b>IETF Working Group: <a href="http://www.ietf.org/html.charters/{{ object.group.acronym }}-charter.html">{{ object.group.name }}</a></li>
<li> <b>IETF Working Group: <a href="http://www.ietf.org/dyn/wg/charter/{{ object.group.acronym }}-charter.html">{{ object.group.name }}</a></li>
{% endifequal %}
<li> <b>I-D Title:</b> {{ object.title }}</li>
<li> <b>I-D Status:</b> {{ object.status }}
@ -25,7 +25,7 @@
{% endif %}
</li>
<li> <b>I-D Intended Status at Publication:</b> {{ object.intended_status }}</li>
<li> <b>RFC Number:</b> {% if object.rfc_number %}<a href="http://www.ietf.org/rfc/rfc{{ object.rfc_number }}.txt">{{ object.rfc_number }}</a>{% endif %}</li>
<li> <b>RFC Number:</b> {% if object.rfc_number %}<a href="{{ object.rfc_number|rfcurl }}">{{ object.rfc_number }}</a>{% endif %}</li>
<li> <b><a href="{% url ietf.idtracker.views.search %}">I-D Tracker</a> State:</b>
{% if object.idtracker %}
<a href="/idtracker/{{ object.filename }}/">{{ object.idstate }}</a>

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% block title %}Internet-Drafts and RFCs for {{ ad_name }}
{% endblock %}

View file

@ -38,60 +38,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<tr valign="top">
<td class="left">
<p><span style="border:1px solid black;position:relative;top:2px;background:#c00000; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>Discuss</b><br/>
<p><span class="square" style="background:#c00000;"></span><b>Discuss</b><br/>
{% if ballot.get_discuss %}
{% for p in ballot.get_discuss %}
{{p.ad_name}} {% if p.has_text %}*{% endif %}<br/>
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>
{% endif %}
</p>
<p><span style="border:1px solid black;position:relative;top:2px;background:#80ff80; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>Yes</b><br/>
<p><span class="square" style="background:#80ff80;"></span><b>Yes</b><br/>
{% if ballot.get_yes %}
{% for p in ballot.get_yes %}
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>
{% endif %}
</p>
<p><span style="border:1px solid black;position:relative;top:2px;background:#80ff80; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>No Objection</b><br/>
<p><span class="square" style="background:#80ff80;"></span><b>No Objection</b><br/>
{% if ballot.get_no_objection %}
{% for p in ballot.get_no_objection %}
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>
{% endif %}
</p>
<p><span style="border:1px solid black;position:relative;top:2px;background:#c0c0c0; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>Abstain</b><br/>
<p><span class="square" style="background:#c0c0c0;"></span><b>Abstain</b><br/>
{% if ballot.get_abstain %}
{% for p in ballot.get_abstain %}
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>
{% endif %}
</p>
<p><span style="border:1px solid black;position:relative;top:2px;background:#c0c0c0; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>Recuse</b><br/>
<p><span class="square" style="background:#c0c0c0;"></span><b>Recuse</b><br/>
{% if ballot.get_recuse %}
{% for p in ballot.get_recuse %}
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>
{% endif %}
</p>
<p><span style="border:1px solid black;position:relative;top:2px;background:white; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px;"></span><b>No Record</b><br/>
<p><span class="square" style="background:white;"></span><b>No Record</b><br/>
{% if ballot.get_no_record %}
{% for p in ballot.get_no_record %}
{% if p.is_old_ad %}[{%endif%}{{p.ad_name}}{% if p.is_old_ad %}]{%endif%} {% if p.has_text %}*{% endif %} <br/>
{% if p.old_positions %}<span class="was">(was {{p.old_positions|join:", "}})</span><br/>{%endif%}
{% endfor %}
{% else %}
<i>none</i>

View file

@ -48,13 +48,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[Ballot {{ c.comment.get_ballot_display }}]<br />
{% endif %}
{% if c.info.snipped %}
<div class="commentSnippet" id="commentS{{c.info.commentNumber}}">{{ c.info.textSnippet }}</div>
<div class="commentSnippet" id="commentS{{c.info.commentNumber}}">{{ c.info.textSnippet|safe }}</div>
<span class="commentToggle" onClick="toggleComment({{c.info.commentNumber}})" id="commentT{{c.info.commentNumber}}">[show all]</span>
<div class="commentFull" id="commentF{{c.info.commentNumber}}" style="display:none;">
{{c.info.text|fill:"80"|format_textarea}}
{{c.info.text|fill:"80"|format_textarea|safe}}
</div>
{% else %}
{{ c.info.text|fill:"80"|format_textarea}}
{{ c.info.text|fill:"80"|format_textarea|safe}}
{% endif %}
</td>
{% endfor %}

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% block title %}{{ doc.draft_name_and_revision }}{% endblock %}

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% block title %}RFC {{ doc.rfc_number }}{% endblock %}

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% block title %}Internet-Drafts and RFCs
{% endblock %}

View file

@ -45,8 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% if doc.id and doc.id.expected_expiration_date and doc.id.expected_expiration_date|timesince_days|greater_than:"-14" %}<br/><span style="padding:0 2px;font-size:85%;background:yellow;">expires soon</span>{%endif%}
</td>
<td class="status">{{ doc.friendly_state }}
{% if not doc.rfc %}{{ doc.id|state_age_colored }}{% endif %}
<td class="status">{{ doc.friendly_state|safe }}
{% if not doc.rfc %}{{ doc.id|state_age_colored|safe }}{% endif %}
{% if doc.rfc %}
{% if doc.rfc.obsoleted_by %}<br />Obsoleted by {{ doc.rfc.obsoleted_by }}{%endif %}
{% if doc.rfc.updated_by %}<br />Updated by {{ doc.rfc.updated_by }}{%endif %}

View file

@ -16,7 +16,7 @@
<td></td><td></td>
{% endif %}
<td>{{ doc.document.title }} ({{ doc.document.intended_status }})</td></tr>
<tr><td></td><td></td><td><a href="{{ doc.document.doclink }}">{{ doc.document.displayname }}</a></td></tr>
<tr><td></td><td></td><td><a href="{{ doc.document.doclink }}">{{ doc.document.displayname|safe }}</a></td></tr>
{% if doc.primary_flag %}
<tr><td></td><td>Token:</td><td><a href="mailto:{{ doc.token_email|urlencode }}">{{ doc.token_name }}</a></td></tr>
{% if doc.note %}

View file

@ -8,14 +8,14 @@ Comment on {{ object.document.document.filename }}
{% endblock %}
{% block content %}
<h1 class="first">Comment on {{ object.document.document.displayname_with_link }}</h1>
<h1 class="first">Comment on {{ object.document.document.displayname_with_link|safe }}</h1>
<table class="top">
<tr><th>Date:</th><td>{{ object.date }}, {{ object.time }}</td></tr>
<tr><th>Document:</th>
<td>{{ object.document.document.displayname_with_link }}</td>
<td>{{ object.document.document.displayname_with_link|safe }}</td>
</tr>
<tr><th>Version:</th><td>{{ object.version }}</td></tr>
<tr><th>Commented by:</th><td>{{ object.get_author }}</td></tr>

View file

@ -25,7 +25,7 @@
</th>
<td>
{{ object.document.displayname_with_link }}
{{ object.document.displayname_with_link|safe }}
{% ifequal object.document.doctype "Draft" %}
{% ifnotequal object.document.status.status "Active" %}
({{ object.document.status.status }})

View file

@ -1,6 +1,7 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load myifchanged %}
{% load ietf_filters %}
{# we can't do alternating row colors with CSS alone #}
<tr
bgcolor="#{% myifchanged match.ballot_id %}{% cycle F8D6F8,E2AFE2 as ballotcolor %}{% else %}{% if match.synthetic %}{% cycle ballotcolor %}{% else %}{% cyclevalue ballotcolor %}{% endif %}{% endmyifchanged %}">
@ -9,7 +10,7 @@
<td {% if not match.primary_flag %} class="nonprimary" {% endif %} >
<a href="{% url ietf.idtracker.views.view_id match.document.filename %}">
{{ match.document.displayname }}
{{ match.document.displayname|safe }}
</a>
{% ifequal match.document.status.status "Replaced" %}

View file

@ -1,4 +1,4 @@
{#
{% comment %}
Copyright (C) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -30,10 +30,10 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#}
{#
{% endcomment %}
{% comment %}
Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
#}
{% endcomment %}
{% if forloop.first %}
<table><tr><th>Area</th><th>Date</th></tr>

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% load ballot_icon %}
{% load ietf_filters %}

View file

@ -1,4 +1,4 @@
{#
{% comment %}
Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -30,7 +30,7 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#}
{% endcomment %}
{% if forloop.first %}
<table>

View file

@ -1,3 +1,4 @@
{% extends "idrfc/base.html" %}
{% comment %}
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
@ -32,7 +33,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}
{% extends "idrfc/base.html" %}
{% load ballot_icon %}
{% load ietf_filters %}
@ -70,7 +70,7 @@ class="discuss_my" {% else %} class="discuss_not_my" {% endif %}{% endif %}>
<a href="/doc/{{doc.draft_name}}/">{{doc.draft_name_and_revision}}</a>
{% endif %}
</td>
<td class="status">{{ doc.friendly_state }}</td>
<td class="status">{{ doc.friendly_state|safe }}</td>
<td class="ballot">{% ballot_icon doc %}</td>
<td class="ad">{% if doc.ad_name %}{{ doc.ad_name|escape }}{% else %}&nbsp;{% endif %}</td>
<td>

View file

@ -2,21 +2,20 @@
<img class="menulogo" src="/images/ietflogo-blue.png" alt="IETF logo" width="140" />
</div>
<ul>
<li><a title="About the Internet Engineering Task Force">About the IETF</a>
<li><a href="http://www.ietf.org/about/" title="About the Internet Engineering Task Force">About the IETF</a>
<ul> <!--sublist for about-->
<li><a href="http://www.ietf.org/overview.html" title="What is the IETF?">Overview</a></li>
<li>IETF history</li>
<li><a href="http://www.ietf.org/IESG/content/procdocs.html" title="How an IETF standard is adopted">IETF process</a></li>
<li><a href="http://www.ietf.org/about/mission.html" title="IETF Mission">Mission</a></li>
<li><a href="http://www.ietf.org/about/standards-process.html" title="How an IETF standard is adopted">IETF process</a></li>
</ul>
</li><!--end about sublist-->
<li><a title="What the IETF is doing">IETF activities</a>
<ul> <!--sublist for activities-->
<li><a href="http://www.ietf.org/iesg.html" title="Internet Engineering Steering Group">IESG</a></li>
<li><a href="http://www.ietf.org/liaisonActivities.html" title="Liasons with other standards bodies">IETF Liaison Activities</a></li>
<li><a href="http://www.ietf.org/liaison/" title="Liasons with other standards bodies">IETF Liaison Activities</a></li>
<li><a href="http://www.ietf.org/secretariat.html" title="The Secretariat">IETF secretariat</a> </li>
<li><a href="/ann/nomcom/" title="IESG and IAB Nominations Committee">NomCom Announcements</a></li>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html" title="IETF Working Groups">Working Groups</a></li>
<li><a href="http://www.ietf.org/meetings/meetings.html" title="Meetings past, present, and future">Meetings</a></li>
<li><a href="/wg/" title="IETF Working Groups">Working Groups</a></li>
<li><a href="http://www.ietf.org/meeting/" title="Meetings past, present, and future">Meetings</a></li>
<li><a href="/meeting/agenda/" title="Meeting Agenda">Agenda</a></li>
</ul>
</li><!--end activities sublist-->
@ -26,7 +25,7 @@
<li><a href="http://tools.ietf.org/rfc/mini-index" title="Repository of RFC documents">RFCs</a></li>
<li><a href="/drafts" title="Internet Draft pages">Internet-Drafts</a></li>
<li><a href="http://tools.ietf.org/search">Document Search</a></li>
<li><a href="http://www.ietf.org/proceedings_directory.html" title="Proceedings of past meetings">Proceedings</a></li>
<li><a href="http://www.ietf.org/meeting/proceedings.html" title="Proceedings of past meetings">Proceedings</a></li>
<li><a href="https://datatracker.ietf.org/idst/upload.cgi" title="Submit Internet Drafts">Submission</a></li>
</ul>
</li><!--end documents sublist-->
@ -43,7 +42,7 @@
<li><a title="Tools, tools, tools">Various Tools</a>
<ul> <!--begin othersites sublist-->
<li><a href="http://www.ietf.org/tools.html" >Tools on www.ietf.org</a></li>
<li><a href="http://www.ietf.org/tools/" >Tools on www.ietf.org</a></li>
<li><a href="http://tools.ietf.org" >Tools on tools.ietf.org</a></li>
<li><a href="http://datatracker.ietf.org" >&nbsp;&nbsp;&nbsp;datatracker.ietf.org</a>
<ul>

View file

@ -1,5 +1,5 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% extends "base.html" %}{% load ietf_filters %}
{% block title %}Liaison Statement Management Tool Field Help{% endblock %}
@ -14,11 +14,11 @@ completing this form can be found in the following documents:
<ul>
<li><a href="/liaison/help/to_ietf/">Liaison Statements to the IETF: Guidelines for Completing the "To:" and "Cc:" Fields </a>
<li><a href="/liaison/help/from_ietf/">Liaison Statements from the IETF: Guidelines for Completing the "Cc:" Field</a>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">Active IETF Working Groups</a>
<li><a href="/wg/">Active IETF Working Groups</a>
<li><a href="/liaison/managers/">IETF Liaison Managers</a>
</ul>
For definitive information on generating liaison statements, please see RFC 4053 (BCP 103)
<a href="http://www.ietf.org/rfc/rfc4053.txt?number=4053">"Procedures for Handling Liaison Statements to and from the IETF."</a><br><br>
For definitive information on generating liaison statements, please
see <a href="{{ "4053"|rfcurl }}">RFC 4053 (BCP 103) "Procedures for Handling Liaison Statements to and from the IETF."</a><br><br>
<table cellpadding="3" cellspacing="0" border="1">
<tr align="center">
<td><b>Field</b></td>

View file

@ -1,5 +1,5 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% extends "base.html" %}{% load ietf_filters %}
{% block title %}Liaison Statements from the IETF - Guidelines for Completing the "Cc:" Field{% endblock %}
@ -9,9 +9,13 @@
The individuals copied on a liaison statement that is sent BY the IETF to another Standards Development Organization (SDO) depend on the IETF entity that is sending the liaison statement.
The following table provides guidelines for completing the "Cc:" field of liaison statements that are sent by the IETF.
<br><br>
For definitive information on generating liaison statements, please see:<br><br>
<li>RFC 4052 (BCP 102), "<a href="http://www.ietf.org/rfc/rfc4052.txt?number=4052">IAB Processes for Management of IETF Liaison Relationships.</a>"</li>
<li>RFC 4053 (BCP 103), "<a href="http://www.ietf.org/rfc/rfc4053.txt?number=4053">Procedures for Handling Liaison Statements to and from the IETF.</a>"</li><br>
For definitive information on generating liaison statements, please
see:
<ul>
<li><a href="{{ "4052"|rfcurl }}">RFC 4052 (BCP 102), "IAB Processes for Management of IETF Liaison Relationships."</a></li>
<li><a href="{{ "4053"|rfcurl }}">RFC 4053 (BCP 103),
"Procedures for Handling Liaison Statements to and from the IETF."</a></li>
</ul>
<table cellspacing="0" cellpadding="3" border="1" bgcolor="#ffffff">
<tr>
<td colspan="2"><center><b>Liaison Statements FROM the IETF</b></center></td></tr>
@ -36,18 +40,18 @@ For definitive information on generating liaison statements, please see:<br><br>
<tr>
<td><ul><li>An IETF Area </li></td>
<td><ul><li><a href="/liaison/managers/">The IETF Liaison Manager for the SDO</a> <sup><small>(4)</small></sup><br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Area Director(s)</a> (if not the submitter)<br><br>
<li><a href="/wg/">The IETF Area Director(s)</a> (if not the submitter)<br><br>
<li>The IETF Chair &lt;chair@ietf.org&gt;<br><br>
<li>The IETF Area Directorate Mailing List (where applicable) <sup><small>(5)</small></sup></li></td></tr>
<tr>
<td><ul><li>An IETF Working Group </li></td>
<td><ul><li><a href="/liaison/managers/">The IETF Liaison Manager for the SDO</a> <sup><small>(4)</small></sup><br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Working Group Chair(s)</a> (if not the submitter)<br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Area Director(s)</a><br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Working Group Discussion List</a></li></td></tr>
<li><a href="/wg/">The IETF Working Group Chair(s)</a> (if not the submitter)<br><br>
<li><a href="/wg/">The IETF Area Director(s)</a><br><br>
<li><a href="/wg/">The IETF Working Group Discussion List</a></li></td></tr>
<tr>
<td colspan="2"> <sup><small>(1)</small></sup> Please see Section 4., "Approval and Transmission of Liaison Statements,"
of <a href="http://www.ietf.org/rfc/rfc4052.txt?number=4052">RFC 4052</a> for information on who may submit a liaison statement on behalf of an IETF entity, and who should be copied.<br><br>
of <a href="{{ "4052"|rfcurl }}">RFC 4052</a> for information on who may submit a liaison statement on behalf of an IETF entity, and who should be copied.<br><br>
<sup><small>(2)</small></sup> The IETF Secretariat, <a href="mailto:statements@ietf.org">&lt;statements@ietf.org&gt;</a>, is automatically blind-copied on every liaison statement sent by the IETF.<br><br>
<sup><small>(3)</small></sup> Any addresses included in the "Response Contact" and "Technical Contact" fields of a liaison statement will also receive copies of the liaison statement.<br><br>
<sup><small>(4)</small></sup> This guideline does not apply when sending a liaison statement to an SDO where no formal liaison relationship exists between the IETF and that SDO. <br><br>

View file

@ -1,5 +1,5 @@
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% extends "base.html" %}{% load ietf_filters %}
{% block title %}Liaison Statements to the IETF - Guidelines for Completing the "To:" and "Cc:" Fields{% endblock %}
@ -8,8 +8,8 @@
<center><font size=+2>Liaison Statements to the IETF <br>Guidelines for Completing the "To:" and "Cc:" Fields</font></center>
<br>
The following table provides guidelines for completing the "To:" and "Cc:" fields of liaison statements that are sent TO the IETF by other Standards Development Organizations (SDOs).
For definitive information on generating liaison statements, please see RFC 4053 (BCP 103),
"<a href="http://www.ietf.org/rfc/rfc4053.txt?number=4053">Procedures for Handling Liaison Statements to and from the IETF.</a>"<br><br>
For definitive information on generating liaison statements, please
see <a href="{{ "4053"|rfcurl }}">RFC 4053 (BCP 103) "Procedures for Handling Liaison Statements to and from the IETF."</a><br><br>
<table cellspacing="0" cellpadding="3" border="1" bgcolor="#ffffff">
<tr>
@ -37,16 +37,16 @@ For definitive information on generating liaison statements, please see RFC 4053
<li>The IESG &lt;iesg@ietf.org&gt;</li></td></tr>
<tr>
<td><ul><li>An IETF Area </li></td>
<td><ul><li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Area Director(s)</a></li></td>
<td><ul><li><a href="/wg/">The IETF Area Director(s)</a></li></td>
<td><ul><li><a href="/liaison/managers/">The IETF Liaison Manager for the SDO</a><br><br>
<li>The IETF Chair &lt;chair@ietf.org&gt;<br><br>
<li>The IETF Area Directorate Mailing List(where applicable)<sup><small>(3)</small></sup></li></td></tr>
<tr>
<td><ul><li>An IETF Working Group </li></td>
<td><ul><li><a href="http://www.ietf.org/html.charters/wg-dir.html">The Working Group Chair(s)</a></li></td>
<td><ul><li><a href="/wg/">The Working Group Chair(s)</a></li></td>
<td><ul><li><a href="/liaison/managers/">The IETF Liaison Manager for the SDO</a><br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Area Director(s)</a><br><br>
<li><a href="http://www.ietf.org/html.charters/wg-dir.html">The IETF Working Group Discussion List</a></li></td></tr>
<li><a href="/wg/">The IETF Area Director(s)</a><br><br>
<li><a href="/wg/">The IETF Working Group Discussion List</a></li></td></tr>
<tr>
<td colspan="3"> <sup><small>(1)</small></sup> The IETF Secretariat, <a href="mailto:statement@ietf.org">&lt;statements@ietf.org&gt;</a>, is automatically blind-copied on every liaison statement sent to the IETF.<br>
<sup><small>(2)</small></sup> Any addresses included in the "Response Contact" and

View file

@ -99,7 +99,7 @@ An AD can also request that the listing be changed or removed. </p>
<p>The following types of lists SHOULD be added:</p>
<ul>
<li>Directorates (see also the <a
href="http://www.ietf.org/u/ietfchair/directorates.html">list of
href="http://www.ietf.org/iesg/directorate.html">list of
directorates</a>)
<li>Review lists specified in IANA procedures
<li>Lists of former WGs that wish to remain active
@ -110,12 +110,11 @@ An AD can also request that the listing be changed or removed. </p>
<ul>
<li>Existing WGs (listed in the <a
href="http://www.ietf.org/html.charters/wg-dir.html">list of working
groups</a>)
href="/wg/">list of working groups</a>)
<li>IRTF Research Groups (listed at <a
href="http://www.irtf.org/">http://www.irtf.org/</a>)
<li>Lists of former WGs where the list is expected to go passive after WG
shutdown (these can also be found at <a href="http://www.ietf.org/html.charters/OLD/index.html">http://www.ietf.org/html.charters/OLD/index.html</a>
shutdown (these can also be found at <a href="http://www.ietf.org/wg/concluded/index.html">http://www.ietf.org/wg/concluded/index.html</a>)
<li>Closed lists where normal IETF participants should have no reason to want
to contact them
<li>Completely passive lists</li></ul>

View file

@ -11,10 +11,10 @@
charters for more information about the mailing lists and archives
of specific working groups. Charters for active working groups are
available on
the <a href="http://www.ietf.org/html.charters/wg-dir.html">Active
the <a href="/wg/">Active
IETF Working Groups</a> Web page. Charters for concluded working
groups are available on
the <a href="http://www.ietf.org/html.charters/OLD/index.html">Concluded
the <a href="http://www.ietf.org/wg/concluded/index.html">Concluded
Working Groups</a> Web page.</p>
<br/>
<blockquote>

View file

@ -66,7 +66,7 @@ IETF agendas are subject to change, up to and during the meeting.<br />
<td><a href="http://tools.ietf.org/agenda/{{meeting.num}}/venue/?room={{session.info.room_id.room_name|slugify}}">{{ session.info.room_id.room_name}}</a></td>
{% if session.info.area %}
<td>{{ session.info.area|upper}}</td>
<td>{% if session.info.isWG %}<a href="http://www.ietf.org/html.charters/{{ session.info.acronym|lower }}-charter.html">{{ session.info.acronym|lower }}</a>{% else %}{{ session.info.acronym|lower }}{% endif %}</td>
<td>{% if session.info.isWG %}<a href="http://www.ietf.org/dyn/wg/charter/{{ session.info.acronym|lower }}-charter.html">{{ session.info.acronym|lower }}</a>{% else %}{{ session.info.acronym|lower }}{% endif %}</td>
<td>
{% if session.info.agenda_file %}<a href="http://www3.ietf.org/proceedings/{{ session.info.agenda_file }}">{{ session.info.acronym_name|escape }} {{ session.info.group_type_str }}</a>{% else %}{{ session.info.acronym_name|escape }} {{ session.info.group_type_str }}{% endif %}
{% if session.info.special_agenda_note %}<br/> - {{ session.info.special_agenda_note }}{% endif %}

View file

@ -19,7 +19,8 @@
var utc = now;
utc.setMinutes(now.getMinutes() + now.getTimezoneOffset());
var loc = utc;
loc.setHours(utc.getHours() + {{meeting.time_zone}});
// Switch page location 1 hour after local time, to give stragglers some leeway.
loc.setHours(utc.getHours() + {{meeting.time_zone}} - 1);
localtime = loc.format("%Y-%m-%d_%H%M");
var anchors = document.getElementsByTagName("a");
for (var i = 0; i<anchors.length;i++){
@ -93,7 +94,7 @@
<tr id="{{meeting.num}}-{{slot.meeting_date|date:"D"|lower}}-{{slot.time_desc|slice:":4"}}-{{session.info.acronym|lower}}"> <td><a href="http://tools.ietf.org/agenda/{{meeting.num}}/venue/?room={{session.info.room_id.room_name|slugify}}">{{ session.info.room_id.room_name}}</a></td>
{% if session.info.area %}
<td>
{% if session.info.isWG %}<a href="http://www.ietf.org/html.charters/{{ session.info.acronym|lower }}-charter.html">{%endif%}
{% if session.info.isWG %}<a href="http://www.ietf.org/dyn/wg/charter/{{ session.info.acronym|lower }}-charter.html">{%endif%}
{{ session.info.acronym|lower }}
{% if session.info.isWG %}</a>{%endif%}
</td>
@ -110,6 +111,7 @@
{% for session in slot.sessions %}
<tr>
<td colspan="4">
<a name="{{slot.meeting_date|date:"Y-m-d"}}_{{slot.time_desc|slice:":4"}}" /a>
{{ slot.time_desc }} {{ session.acronym_name|escape }} - <a href="http://tools.ietf.org/agenda/{{meeting.num}}/venue/?room={{session.room_id.room_name|slugify}}">{{ session.room_id.room_name}}</a>
</td>
</tr>

View file

@ -8,10 +8,14 @@
<h1>Active IETF Working Groups</h1>
<hr/>
<p>
Old WG pages can be found in the <a href="http://www.ietf.org/html.charters/OLD/index.html">Concluded WG Index</a>.
Old WG pages can be found in
the <a href="http://www.ietf.org/wg/concluded/index.html">Concluded
Working Groups</a>.
</p>
<p>
Archived WG Charters can be found in the <a href="http://www.ietf.org/html.charters/HISTORY/">Historic Charter Index</a>.
Archived WG Charters can be found in
the <a href="http://www.ietf.org/dyn/wg/charter/history/">Historic
Charters page</a>.
</p>
<hr/>
<h2>Table of Contents</h2>
@ -61,7 +65,7 @@
</colgroup>
{% endif %}
{% if wg.start_date %}
<tr><td></td><td><a href="http://www.ietf.org/html.charters/{{ wg|escape }}-charter.html">{{ wg|escape }}</a></td><td>{{ wg.group_acronym.name|escape }}</td></tr>
<tr><td></td><td><a href="http://www.ietf.org/dyn/wg/charter/{{ wg|escape }}-charter.html">{{ wg|escape }}</a></td><td>{{ wg.group_acronym.name|escape }}</td></tr>
{% endif %}
{% if forloop.last %}
</table>

View file

@ -55,6 +55,8 @@ urlpatterns = patterns('',
(r'^$', 'ietf.redirects.views.redirect'),
# DJANGO_096: Comment out this line for Django 1.0 -- new admin
# site works differently, and needs work
# Uncomment this for admin:
(r'^admin/', include('django.contrib.admin.urls')),

View file

@ -3,10 +3,11 @@
from listop import orl, flattenl
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
# DJANGO_096: needs to be removed
from templated_form import makeTemplatedForm
makeFormattingForm = makeTemplatedForm
# See http://docs.python.org/tut/node8.html regarding the use of __all__ and

View file

@ -49,7 +49,8 @@ body { margin: 0; }
.ballotTable .right { padding-left: 15px; padding-right:15px; width:610px;padding-top:0px;}
.ballotTable h2.ballot_ad { background: #2647A0; color:white; padding: 2px 4px; font-size: 108%; margin-top: 0;}
.ballotTable .right { background: white; }
.ballotTable .square { border:1px solid black;position:relative;top:2px; display: block; float:left;width: 10px; height:10px;font-size:1px;margin-right:4px; }
.ballotTable .was { padding-left: 10px; font-size:85%; }
.mydialog button { margin-left: 8px; }
.mybutton { background-color:white; border: 1px outset #808080; padding: 1px 3px; }
.mybutton a { text-decoration: none; color: black; }