Move idrfc/ templates to doc/ and subdirectories in doc/, move ported ballot_icon template tag, delete dead code
- Legacy-Id: 6052
This commit is contained in:
parent
742dbace24
commit
6ac0920af0
|
@ -82,7 +82,7 @@ def send_expire_warning_for_draft(doc):
|
|||
if to or cc:
|
||||
send_mail(request, to, frm,
|
||||
u"Expiration impending: %s" % doc.file_tag(),
|
||||
"idrfc/expire_warning_email.txt",
|
||||
"doc/draft/expire_warning_email.txt",
|
||||
dict(doc=doc,
|
||||
state=state,
|
||||
expiration=expiration
|
||||
|
@ -101,7 +101,7 @@ def send_expire_notice_for_draft(doc):
|
|||
send_mail(request, to,
|
||||
"I-D Expiring System <ietf-secretariat-reply@ietf.org>",
|
||||
u"I-D was expired %s" % doc.file_tag(),
|
||||
"idrfc/id_expired_email.txt",
|
||||
"doc/draft/id_expired_email.txt",
|
||||
dict(doc=doc,
|
||||
state=state,
|
||||
))
|
||||
|
|
|
@ -21,7 +21,7 @@ def email_state_changed(request, doc, text):
|
|||
text = strip_tags(text)
|
||||
send_mail(request, to, None,
|
||||
"ID Tracker State Update Notice: %s" % doc.file_tag(),
|
||||
"idrfc/state_changed_email.txt",
|
||||
"doc/mail/state_changed_email.txt",
|
||||
dict(text=text,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
||||
|
@ -44,14 +44,14 @@ def email_stream_changed(request, doc, old_stream, new_stream, text=""):
|
|||
|
||||
send_mail(request, to, None,
|
||||
"ID Tracker Stream Change Notice: %s" % doc.file_tag(),
|
||||
"idrfc/stream_changed_email.txt",
|
||||
"doc/mail/stream_changed_email.txt",
|
||||
dict(text=text,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
||||
def email_pulled_from_rfc_queue(request, doc, comment, prev_state, next_state):
|
||||
send_mail(request, ["IANA <iana@iana.org>", "RFC Editor <rfc-editor@rfc-editor.org>"], None,
|
||||
"%s changed state from %s to %s" % (doc.name, prev_state.name, next_state.name),
|
||||
"idrfc/pulled_from_rfc_queue_email.txt",
|
||||
"doc/mail/pulled_from_rfc_queue_email.txt",
|
||||
dict(doc=doc,
|
||||
prev_state=prev_state,
|
||||
next_state=next_state,
|
||||
|
@ -78,7 +78,7 @@ def email_ad(request, doc, ad, changed_by, text, subject=None):
|
|||
send_mail(request, to,
|
||||
"DraftTracker Mail System <iesg-secretary@ietf.org>",
|
||||
"%s updated by %s" % (doc.file_tag(), changed_by.plain_name()),
|
||||
"idrfc/change_notice.txt",
|
||||
"doc/mail/change_notice.txt",
|
||||
dict(text=html_to_text(text),
|
||||
doc=doc,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
@ -93,7 +93,7 @@ def generate_ballot_writeup(request, doc):
|
|||
e.by = request.user.get_profile()
|
||||
e.doc = doc
|
||||
e.desc = u"Ballot writeup was generated"
|
||||
e.text = unicode(render_to_string("idrfc/ballot_writeup.txt", {'iana': iana}))
|
||||
e.text = unicode(render_to_string("doc/mail/ballot_writeup.txt", {'iana': iana}))
|
||||
e.save()
|
||||
|
||||
return e
|
||||
|
@ -118,7 +118,7 @@ def generate_last_call_announcement(request, doc):
|
|||
else:
|
||||
ipr_links = None
|
||||
|
||||
mail = render_to_string("idrfc/last_call_announcement.txt",
|
||||
mail = render_to_string("doc/mail/last_call_announcement.txt",
|
||||
dict(doc=doc,
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url() + "ballot/",
|
||||
expiration_date=expiration_date.strftime("%Y-%m-%d"), #.strftime("%B %-d, %Y"),
|
||||
|
@ -196,7 +196,7 @@ def generate_approval_mail_approved(request, doc):
|
|||
|
||||
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet Draft"
|
||||
|
||||
return render_to_string("idrfc/approval_mail.txt",
|
||||
return render_to_string("doc/mail/approval_mail.txt",
|
||||
dict(doc=doc,
|
||||
docs=[doc],
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
|
||||
|
@ -227,7 +227,7 @@ def generate_approval_mail_rfc_editor(request, doc):
|
|||
# include IRSG
|
||||
to.append('"Internet Research Steering Group" <irsg@irtf.org>')
|
||||
|
||||
return render_to_string("idrfc/approval_mail_rfc_editor.txt",
|
||||
return render_to_string("doc/mail/approval_mail_rfc_editor.txt",
|
||||
dict(doc=doc,
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
|
||||
doc_type=doc_type,
|
||||
|
@ -251,7 +251,7 @@ def generate_publication_request(request, doc):
|
|||
approving_body = str(doc.stream)
|
||||
consensus_body = approving_body
|
||||
|
||||
return render_to_string("idrfc/publication_request.txt",
|
||||
return render_to_string("doc/mail/publication_request.txt",
|
||||
dict(doc=doc,
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
|
||||
group_description=group_description,
|
||||
|
@ -267,7 +267,7 @@ def send_last_call_request(request, doc):
|
|||
|
||||
send_mail(request, to, frm,
|
||||
"Last Call: %s" % doc.file_tag(),
|
||||
"idrfc/last_call_request.txt",
|
||||
"doc/mail/last_call_request.txt",
|
||||
dict(docs=[doc],
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
||||
|
@ -282,7 +282,7 @@ def email_resurrect_requested(request, doc, by):
|
|||
|
||||
send_mail(request, to, e.formatted_email(),
|
||||
"I-D Resurrection Request",
|
||||
"idrfc/resurrect_request_email.txt",
|
||||
"doc/mail/resurrect_request_email.txt",
|
||||
dict(doc=doc,
|
||||
by=frm,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
@ -297,7 +297,7 @@ def email_resurrection_completed(request, doc, requester):
|
|||
frm = "I-D Administrator <internet-drafts-reply@ietf.org>"
|
||||
send_mail(request, to, frm,
|
||||
"I-D Resurrection Completed - %s" % doc.file_tag(),
|
||||
"idrfc/resurrect_completed_email.txt",
|
||||
"doc/mail/resurrect_completed_email.txt",
|
||||
dict(doc=doc,
|
||||
by=frm,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
|
||||
|
@ -307,7 +307,7 @@ def email_ballot_deferred(request, doc, by, telechat_date):
|
|||
frm = "DraftTracker Mail System <iesg-secretary@ietf.org>"
|
||||
send_mail(request, to, frm,
|
||||
"IESG Deferred Ballot notification: %s" % doc.file_tag(),
|
||||
"idrfc/ballot_deferred_email.txt",
|
||||
"doc/mail/ballot_deferred_email.txt",
|
||||
dict(doc=doc,
|
||||
by=by,
|
||||
telechat_date=telechat_date))
|
||||
|
@ -364,7 +364,7 @@ def generate_issue_ballot_mail(request, doc, ballot):
|
|||
e = doc.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text")
|
||||
ballot_writeup = e.text if e else ""
|
||||
|
||||
return render_to_string("idrfc/issue_ballot_mail.txt",
|
||||
return render_to_string("doc/mail/issue_ballot_mail.txt",
|
||||
dict(doc=doc,
|
||||
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
|
||||
active_ad_positions=active_ad_positions,
|
||||
|
@ -408,7 +408,7 @@ def email_last_call_expired(doc):
|
|||
to,
|
||||
"DraftTracker Mail System <iesg-secretary@ietf.org>",
|
||||
"Last Call Expired: %s" % doc.file_tag(),
|
||||
"idrfc/change_notice.txt",
|
||||
"doc/mail/change_notice.txt",
|
||||
dict(text=text,
|
||||
doc=doc,
|
||||
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()),
|
||||
|
|
|
@ -45,7 +45,7 @@ area_short_names = {
|
|||
|
||||
class WgMenuNode(template.Node):
|
||||
def render(self, context):
|
||||
x = cache.get('idrfc_wgmenu')
|
||||
x = cache.get('base_left_wgmenu')
|
||||
if x:
|
||||
return x
|
||||
|
||||
|
@ -62,7 +62,7 @@ class WgMenuNode(template.Node):
|
|||
areas = [a for a in areas if a.active_groups]
|
||||
|
||||
res = loader.render_to_string('base_wgmenu.html', {'areas':areas})
|
||||
cache.set('idrfc_wgmenu', x, 30*60)
|
||||
cache.set('base_left_wgmenu', x, 30*60)
|
||||
return res
|
||||
|
||||
def do_wg_menu(parser, token):
|
||||
|
|
|
@ -246,3 +246,42 @@ class DocTestCase(django.test.TestCase):
|
|||
|
||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_json", kwargs=dict(name=doc.name)))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
|
||||
class AddCommentTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
|
||||
def test_add_comment(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('doc_add_comment', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form textarea[name=comment]')), 1)
|
||||
|
||||
# request resurrect
|
||||
events_before = draft.docevent_set.count()
|
||||
mailbox_before = len(outbox)
|
||||
|
||||
r = self.client.post(url, dict(comment="This is a test."))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
self.assertEquals(draft.docevent_set.count(), events_before + 1)
|
||||
self.assertEquals("This is a test.", draft.latest_event().desc)
|
||||
self.assertEquals("added_comment", draft.latest_event().type)
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("updated" in outbox[-1]['Subject'])
|
||||
self.assertTrue(draft.name in outbox[-1]['Subject'])
|
||||
|
||||
# Make sure we can also do it as IANA
|
||||
self.client.login(remote_user="iana")
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form textarea[name=comment]')), 1)
|
||||
|
||||
|
|
|
@ -493,41 +493,3 @@ class MakeLastCallTestCase(django.test.TestCase):
|
|||
self.assertTrue("Last Call" in outbox[-3]['Subject'])
|
||||
self.assertTrue("Last Call" in draft.message_set.order_by("-time")[0].subject)
|
||||
|
||||
class RequestPublicationTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
|
||||
def test_request_publication(self):
|
||||
draft = make_test_data()
|
||||
draft.stream = StreamName.objects.get(slug="iab")
|
||||
draft.group = Group.objects.get(acronym="iab")
|
||||
draft.intended_std_level = IntendedStdLevelName.objects.get(slug="inf")
|
||||
draft.save()
|
||||
draft.set_state(State.objects.get(used=True, type="draft-stream-iab", slug="approved"))
|
||||
|
||||
url = urlreverse('doc_request_publication', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "iabchair", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
subject = q('input#id_subject')[0].get("value")
|
||||
self.assertTrue("Document Action" in subject)
|
||||
body = q('.request-publication #id_body').text()
|
||||
self.assertTrue("Informational" in body)
|
||||
self.assertTrue("IAB" in body)
|
||||
|
||||
# approve
|
||||
mailbox_before = len(outbox)
|
||||
|
||||
r = self.client.post(url, dict(subject=subject, body=body, skiprfceditorpost="1"))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(name=draft.name)
|
||||
self.assertEquals(draft.get_state_slug("draft-stream-iab"), "rfc-edit")
|
||||
self.assertEquals(len(outbox), mailbox_before + 2)
|
||||
self.assertTrue("Document Action" in outbox[-2]['Subject'])
|
||||
self.assertTrue("Document Action" in draft.message_set.order_by("-time")[0].subject)
|
||||
# the IANA copy
|
||||
self.assertTrue("Document Action" in outbox[-1]['Subject'])
|
||||
self.assertTrue(not outbox[-1]['CC'])
|
||||
|
|
|
@ -406,44 +406,6 @@ class ResurrectTestCase(django.test.TestCase):
|
|||
self.assertEquals(draft.get_state_slug(), "active")
|
||||
self.assertTrue(draft.expires >= datetime.datetime.now() + datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE - 1))
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
|
||||
class AddCommentTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
|
||||
def test_add_comment(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('doc_add_comment', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form textarea[name=comment]')), 1)
|
||||
|
||||
# request resurrect
|
||||
events_before = draft.docevent_set.count()
|
||||
mailbox_before = len(outbox)
|
||||
|
||||
r = self.client.post(url, dict(comment="This is a test."))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
self.assertEquals(draft.docevent_set.count(), events_before + 1)
|
||||
self.assertEquals("This is a test.", draft.latest_event().desc)
|
||||
self.assertEquals("added_comment", draft.latest_event().type)
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("updated" in outbox[-1]['Subject'])
|
||||
self.assertTrue(draft.name in outbox[-1]['Subject'])
|
||||
|
||||
# Make sure we can also do it as IANA
|
||||
self.client.login(remote_user="iana")
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form textarea[name=comment]')), 1)
|
||||
|
||||
|
||||
|
||||
class ExpireIDsTestCase(django.test.TestCase):
|
||||
|
@ -905,3 +867,41 @@ class IndividualInfoFormsTestCase(django.test.TestCase):
|
|||
self.docname='draft-ietf-mars-test'
|
||||
self.doc = Document.objects.get(name=self.docname)
|
||||
|
||||
class RequestPublicationTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
|
||||
def test_request_publication(self):
|
||||
draft = make_test_data()
|
||||
draft.stream = StreamName.objects.get(slug="iab")
|
||||
draft.group = Group.objects.get(acronym="iab")
|
||||
draft.intended_std_level = IntendedStdLevelName.objects.get(slug="inf")
|
||||
draft.save()
|
||||
draft.set_state(State.objects.get(used=True, type="draft-stream-iab", slug="approved"))
|
||||
|
||||
url = urlreverse('doc_request_publication', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "iabchair", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
subject = q('input#id_subject')[0].get("value")
|
||||
self.assertTrue("Document Action" in subject)
|
||||
body = q('.request-publication #id_body').text()
|
||||
self.assertTrue("Informational" in body)
|
||||
self.assertTrue("IAB" in body)
|
||||
|
||||
# approve
|
||||
mailbox_before = len(outbox)
|
||||
|
||||
r = self.client.post(url, dict(subject=subject, body=body, skiprfceditorpost="1"))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(name=draft.name)
|
||||
self.assertEquals(draft.get_state_slug("draft-stream-iab"), "rfc-edit")
|
||||
self.assertEquals(len(outbox), mailbox_before + 2)
|
||||
self.assertTrue("Document Action" in outbox[-2]['Subject'])
|
||||
self.assertTrue("Document Action" in draft.message_set.order_by("-time")[0].subject)
|
||||
# the IANA copy
|
||||
self.assertTrue("Document Action" in outbox[-1]['Subject'])
|
||||
self.assertTrue(not outbox[-1]['CC'])
|
||||
|
|
|
@ -70,7 +70,7 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/info/$', views_draft.edit_info, name='doc_edit_info'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/requestresurrect/$', views_draft.request_resurrect, name='doc_request_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/resurrect/$', views_draft.resurrect, name='doc_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/addcomment/$', views_draft.add_comment, name='doc_add_comment'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/addcomment/$', views_doc.add_comment, name='doc_add_comment'),
|
||||
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/stream/$', views_draft.change_stream, name='doc_change_stream'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/notify/$', views_draft.edit_notices, name='doc_change_notify'),
|
||||
|
|
|
@ -230,7 +230,7 @@ def edit_position(request, name, ballot_id):
|
|||
|
||||
ballot_deferred = doc.active_defer_event()
|
||||
|
||||
return render_to_response('idrfc/edit_position.html',
|
||||
return render_to_response('doc/ballot/edit_position.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
ad=ad,
|
||||
|
@ -289,7 +289,7 @@ def send_ballot_comment(request, name, ballot_id):
|
|||
if subj:
|
||||
subject += ": (with %s)" % " and ".join(subj)
|
||||
|
||||
body = render_to_string("idrfc/ballot_comment_mail.txt",
|
||||
body = render_to_string("doc/ballot/ballot_comment_mail.txt",
|
||||
dict(discuss=d,
|
||||
comment=c,
|
||||
ad=ad.plain_name(),
|
||||
|
@ -305,11 +305,11 @@ def send_ballot_comment(request, name, ballot_id):
|
|||
if request.POST.get("cc_state_change") and doc.notify:
|
||||
cc.extend(doc.notify.split(','))
|
||||
|
||||
send_mail_text(request, to, frm, subject, body, cc=", ".join(cc))
|
||||
send_mail_text(request, to, frm, subject, body, cc=u", ".join(cc))
|
||||
|
||||
return HttpResponseRedirect(return_to_url)
|
||||
|
||||
return render_to_response('idrfc/send_ballot_comment.html',
|
||||
return render_to_response('doc/ballot/send_ballot_comment.html',
|
||||
dict(doc=doc,
|
||||
subject=subject,
|
||||
body=body,
|
||||
|
@ -334,7 +334,7 @@ def clear_ballot(request, name):
|
|||
do_undefer_ballot(request,doc)
|
||||
return HttpResponseRedirect(urlreverse("doc_view", kwargs=dict(name=doc.name)))
|
||||
|
||||
return render_to_response('idrfc/clear_ballot.html',
|
||||
return render_to_response('doc/ballot/clear_ballot.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url()),
|
||||
context_instance=RequestContext(request))
|
||||
|
@ -376,7 +376,7 @@ def defer_ballot(request, name):
|
|||
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/defer_ballot.html',
|
||||
return render_to_response('doc/ballot/defer_ballot.html',
|
||||
dict(doc=doc,
|
||||
telechat_date=telechat_date,
|
||||
back_url=doc.get_absolute_url()),
|
||||
|
@ -397,7 +397,7 @@ def undefer_ballot(request, name):
|
|||
do_undefer_ballot(request,doc)
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/undefer_ballot.html',
|
||||
return render_to_response('doc/ballot/undefer_ballot.html',
|
||||
dict(doc=doc,
|
||||
telechat_date=telechat_date,
|
||||
back_url=doc.get_absolute_url()),
|
||||
|
@ -464,7 +464,7 @@ def lastcalltext(request, name):
|
|||
|
||||
request_last_call(request, doc)
|
||||
|
||||
return render_to_response('idrfc/last_call_requested.html',
|
||||
return render_to_response('doc/draft/last_call_requested.html',
|
||||
dict(doc=doc),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
@ -484,7 +484,7 @@ def lastcalltext(request, name):
|
|||
if not doc.intended_std_level:
|
||||
need_intended_status = doc.file_tag()
|
||||
|
||||
return render_to_response('idrfc/ballot_lastcalltext.html',
|
||||
return render_to_response('doc/ballot/lastcalltext.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url(),
|
||||
last_call_form=form,
|
||||
|
@ -554,7 +554,7 @@ def ballot_writeupnotes(request, name):
|
|||
e.desc = "Ballot has been issued"
|
||||
e.save()
|
||||
|
||||
return render_to_response('idrfc/ballot_issued.html',
|
||||
return render_to_response('doc/ballot/ballot_issued.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url()),
|
||||
context_instance=RequestContext(request))
|
||||
|
@ -564,7 +564,7 @@ def ballot_writeupnotes(request, name):
|
|||
if not doc.intended_std_level:
|
||||
need_intended_status = doc.file_tag()
|
||||
|
||||
return render_to_response('idrfc/ballot_writeupnotes.html',
|
||||
return render_to_response('doc/ballot/writeupnotes.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url(),
|
||||
ballot_issued=bool(doc.latest_event(type="sent_ballot_announcement")),
|
||||
|
@ -618,7 +618,7 @@ def ballot_approvaltext(request, name):
|
|||
if not doc.intended_std_level:
|
||||
need_intended_status = doc.file_tag()
|
||||
|
||||
return render_to_response('idrfc/ballot_approvaltext.html',
|
||||
return render_to_response('doc/ballot/approvaltext.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url(),
|
||||
approval_text_form=form,
|
||||
|
@ -672,7 +672,7 @@ def approve_ballot(request, name):
|
|||
import ietf.sync.rfceditor
|
||||
response, error = ietf.sync.rfceditor.post_approved_draft(settings.RFC_EDITOR_SYNC_NOTIFICATION_URL, doc.name)
|
||||
if error:
|
||||
return render_to_response('doc/rfceditor_post_approved_draft_failed.html',
|
||||
return render_to_response('doc/draft/rfceditor_post_approved_draft_failed.html',
|
||||
dict(name=doc.name,
|
||||
response=response,
|
||||
error=error),
|
||||
|
@ -725,7 +725,7 @@ def approve_ballot(request, name):
|
|||
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/approve_ballot.html',
|
||||
return render_to_response('doc/ballot/approve_ballot.html',
|
||||
dict(doc=doc,
|
||||
action=action,
|
||||
announcement=announcement),
|
||||
|
@ -817,7 +817,7 @@ def make_last_call(request, name):
|
|||
expire_days = 14
|
||||
if doc.group.type_id in ("individ", "area"):
|
||||
expire_days = 28
|
||||
templ = 'idrfc/make_last_call.html'
|
||||
templ = 'doc/draft/make_last_call.html'
|
||||
else:
|
||||
expire_days=28
|
||||
templ = 'doc/status_change/make_last_call.html'
|
||||
|
|
|
@ -42,6 +42,7 @@ from django.utils.decorators import decorator_from_middleware
|
|||
from django.middleware.gzip import GZipMiddleware
|
||||
from django.core.urlresolvers import reverse as urlreverse, NoReverseMatch
|
||||
from django.conf import settings
|
||||
from django import forms
|
||||
|
||||
from ietf.doc.models import *
|
||||
from ietf.doc.utils import *
|
||||
|
@ -49,6 +50,7 @@ from ietf.utils.history import find_history_active_at
|
|||
from ietf.ietfauth.utils import *
|
||||
from ietf.doc.views_status_change import RELATION_SLUGS as status_change_relationships
|
||||
from ietf.wgcharter.utils import historic_milestones_for_charter
|
||||
from ietf.doc.mails import email_ad
|
||||
|
||||
def render_document_top(request, doc, tab, name):
|
||||
tabs = []
|
||||
|
@ -446,7 +448,7 @@ def document_main(request, name, rev=None):
|
|||
else:
|
||||
sorted_relations=None
|
||||
|
||||
return render_to_response("idrfc/document_status_change.html",
|
||||
return render_to_response("doc/document_status_change.html",
|
||||
dict(doc=doc,
|
||||
top=top,
|
||||
content=content,
|
||||
|
@ -764,3 +766,35 @@ def ballot_json(request, name):
|
|||
response.write(json.dumps(ballot.dict(), indent=2))
|
||||
return response
|
||||
|
||||
class AddCommentForm(forms.Form):
|
||||
comment = forms.CharField(required=True, widget=forms.Textarea)
|
||||
|
||||
@role_required('Area Director', 'Secretariat', 'IANA', 'RFC Editor')
|
||||
def add_comment(request, name):
|
||||
"""Add comment to history of document."""
|
||||
doc = get_object_or_404(Document, docalias__name=name)
|
||||
|
||||
login = request.user.get_profile()
|
||||
|
||||
if request.method == 'POST':
|
||||
form = AddCommentForm(request.POST)
|
||||
if form.is_valid():
|
||||
c = form.cleaned_data['comment']
|
||||
|
||||
e = DocEvent(doc=doc, by=login)
|
||||
e.type = "added_comment"
|
||||
e.desc = c
|
||||
e.save()
|
||||
|
||||
if doc.type_id == "draft":
|
||||
email_ad(request, doc, doc.ad, login,
|
||||
"A new comment added by %s" % login.name)
|
||||
return HttpResponseRedirect(urlreverse("doc_history", kwargs=dict(name=doc.name)))
|
||||
else:
|
||||
form = AddCommentForm()
|
||||
|
||||
return render_to_response('doc/add_comment.html',
|
||||
dict(doc=doc,
|
||||
form=form),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# changing state and metadata and commenting on Internet Drafts for
|
||||
# Area Directors and Secretariat
|
||||
# changing state and metadata on Internet Drafts
|
||||
|
||||
import re, os, datetime
|
||||
|
||||
|
@ -123,7 +122,7 @@ def change_state(request, name):
|
|||
if next_state.slug == "lc-req":
|
||||
request_last_call(request, doc)
|
||||
|
||||
return render_to_response('idrfc/last_call_requested.html',
|
||||
return render_to_response('doc/draft/last_call_requested.html',
|
||||
dict(doc=doc,
|
||||
url=doc.get_absolute_url()),
|
||||
context_instance=RequestContext(request))
|
||||
|
@ -151,7 +150,7 @@ def change_state(request, name):
|
|||
to_iesg_eval = State.objects.get(used=True, type="draft-iesg", slug="iesg-eva")
|
||||
next_states = next_states.exclude(slug="iesg-eva")
|
||||
|
||||
return render_to_response('idrfc/change_state.html',
|
||||
return render_to_response('doc/draft/change_state.html',
|
||||
dict(form=form,
|
||||
doc=doc,
|
||||
state=state,
|
||||
|
@ -199,7 +198,7 @@ def change_iana_state(request, name, state_type):
|
|||
else:
|
||||
form = ChangeIanaStateForm(state_type, initial=dict(state=prev_state.pk if prev_state else None))
|
||||
|
||||
return render_to_response('idrfc/change_iana_state.html',
|
||||
return render_to_response('doc/draft/change_iana_state.html',
|
||||
dict(form=form,
|
||||
doc=doc),
|
||||
context_instance=RequestContext(request))
|
||||
|
@ -263,7 +262,7 @@ def change_stream(request, name):
|
|||
stream = doc.stream
|
||||
form = ChangeStreamForm(initial=dict(stream=stream))
|
||||
|
||||
return render_to_response('idrfc/change_stream.html',
|
||||
return render_to_response('doc/draft/change_stream.html',
|
||||
dict(form=form,
|
||||
doc=doc,
|
||||
),
|
||||
|
@ -321,7 +320,7 @@ def change_intention(request, name):
|
|||
intended_std_level = doc.intended_std_level
|
||||
form = ChangeIntentionForm(initial=dict(intended_std_level=intended_std_level))
|
||||
|
||||
return render_to_response('idrfc/change_intended_status.html',
|
||||
return render_to_response('doc/draft/change_intended_status.html',
|
||||
dict(form=form,
|
||||
doc=doc,
|
||||
),
|
||||
|
@ -506,7 +505,7 @@ def edit_info(request, name):
|
|||
if doc.group.type_id not in ("individ", "area"):
|
||||
form.standard_fields = [x for x in form.standard_fields if x.name != "area"]
|
||||
|
||||
return render_to_response('idrfc/edit_info.html',
|
||||
return render_to_response('doc/draft/edit_info.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
user=request.user,
|
||||
|
@ -533,7 +532,7 @@ def request_resurrect(request, name):
|
|||
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/request_resurrect.html',
|
||||
return render_to_response('doc/draft/request_resurrect.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url()),
|
||||
context_instance=RequestContext(request))
|
||||
|
@ -565,43 +564,11 @@ def resurrect(request, name):
|
|||
doc.save()
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/resurrect.html',
|
||||
return render_to_response('doc/draft/resurrect.html',
|
||||
dict(doc=doc,
|
||||
back_url=doc.get_absolute_url()),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
class AddCommentForm(forms.Form):
|
||||
comment = forms.CharField(required=True, widget=forms.Textarea)
|
||||
|
||||
@role_required('Area Director', 'Secretariat', 'IANA', 'RFC Editor')
|
||||
def add_comment(request, name):
|
||||
"""Add comment to history of document."""
|
||||
doc = get_object_or_404(Document, docalias__name=name)
|
||||
|
||||
login = request.user.get_profile()
|
||||
|
||||
if request.method == 'POST':
|
||||
form = AddCommentForm(request.POST)
|
||||
if form.is_valid():
|
||||
c = form.cleaned_data['comment']
|
||||
|
||||
e = DocEvent(doc=doc, by=login)
|
||||
e.type = "added_comment"
|
||||
e.desc = c
|
||||
e.save()
|
||||
|
||||
if doc.type_id == "draft":
|
||||
email_ad(request, doc, doc.ad, login,
|
||||
"A new comment added by %s" % login.name)
|
||||
return HttpResponseRedirect(urlreverse("doc_history", kwargs=dict(name=doc.name)))
|
||||
else:
|
||||
form = AddCommentForm()
|
||||
|
||||
return render_to_response('idrfc/add_comment.html',
|
||||
dict(doc=doc,
|
||||
form=form),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
class NotifyForm(forms.Form):
|
||||
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas", required=False)
|
||||
|
||||
|
@ -642,7 +609,7 @@ def edit_notices(request, name):
|
|||
init = { "notify" : doc.notify }
|
||||
form = NotifyForm(initial=init)
|
||||
|
||||
return render_to_response('idrfc/change_notify.html',
|
||||
return render_to_response('doc/draft/change_notify.html',
|
||||
{'form': form,
|
||||
'doc': doc,
|
||||
},
|
||||
|
@ -683,7 +650,7 @@ def telechat_date(request, name):
|
|||
else:
|
||||
form = TelechatForm(initial=initial)
|
||||
|
||||
return render_to_response('idrfc/edit_telechat_date.html',
|
||||
return render_to_response('doc/edit_telechat_date.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
user=request.user,
|
||||
|
@ -732,7 +699,7 @@ def edit_iesg_note(request, name):
|
|||
else:
|
||||
form = IESGNoteForm(initial=initial)
|
||||
|
||||
return render_to_response('idrfc/edit_iesg_note.html',
|
||||
return render_to_response('doc/draft/edit_iesg_note.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
),
|
||||
|
@ -802,7 +769,7 @@ def edit_shepherd_writeup(request, name):
|
|||
)
|
||||
form = ShepherdWriteupUploadForm(initial=init)
|
||||
|
||||
return render_to_response('idrfc/change_shepherd_writeup.html',
|
||||
return render_to_response('doc/draft/change_shepherd_writeup.html',
|
||||
{'form': form,
|
||||
'doc' : doc,
|
||||
},
|
||||
|
@ -853,7 +820,7 @@ def edit_shepherd(request, name):
|
|||
init = { "shepherd": current_shepherd}
|
||||
form = ShepherdForm(initial=init)
|
||||
|
||||
return render_to_response('idrfc/change_shepherd.html',
|
||||
return render_to_response('doc/change_shepherd.html',
|
||||
{'form': form,
|
||||
'doc': doc,
|
||||
},
|
||||
|
@ -896,7 +863,7 @@ def edit_ad(request, name):
|
|||
init = { "ad" : doc.ad_id }
|
||||
form = AdForm(initial=init)
|
||||
|
||||
return render_to_response('idrfc/change_ad.html',
|
||||
return render_to_response('doc/draft/change_ad.html',
|
||||
{'form': form,
|
||||
'doc': doc,
|
||||
},
|
||||
|
@ -934,7 +901,7 @@ def edit_consensus(request, name):
|
|||
else:
|
||||
form = ConsensusForm(initial=dict(consensus=nice_consensus(prev_consensus).replace("Unknown", "")))
|
||||
|
||||
return render_to_response('idrfc/change_consensus.html',
|
||||
return render_to_response('doc/draft/change_consensus.html',
|
||||
{'form': form,
|
||||
'doc': doc,
|
||||
},
|
||||
|
@ -968,7 +935,7 @@ def request_publication(request, name):
|
|||
import ietf.sync.rfceditor
|
||||
response, error = ietf.sync.rfceditor.post_approved_draft(settings.RFC_EDITOR_SYNC_NOTIFICATION_URL, doc.name)
|
||||
if error:
|
||||
return render_to_response('doc/rfceditor_post_approved_draft_failed.html',
|
||||
return render_to_response('doc/draft/rfceditor_post_approved_draft_failed.html',
|
||||
dict(name=doc.name,
|
||||
response=response,
|
||||
error=error),
|
||||
|
@ -1017,7 +984,7 @@ def request_publication(request, name):
|
|||
form = PublicationForm(initial=dict(subject=subject,
|
||||
body=body))
|
||||
|
||||
return render_to_response('idrfc/request_publication.html',
|
||||
return render_to_response('doc/draft/request_publication.html',
|
||||
dict(form=form,
|
||||
doc=doc,
|
||||
message=m,
|
||||
|
|
|
@ -363,13 +363,13 @@ def search(request):
|
|||
results = []
|
||||
meta = { 'by': None, 'advanced': False, 'searching': False }
|
||||
|
||||
return render_to_response('doc/search.html',
|
||||
return render_to_response('doc/search/search.html',
|
||||
{'form':form, 'docs':results, 'meta':meta, 'show_add_to_list': True },
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def frontpage(request):
|
||||
form = SearchForm()
|
||||
return render_to_response('idrfc/main.html', {'form':form}, context_instance=RequestContext(request))
|
||||
return render_to_response('doc/frontpage.html', {'form':form}, context_instance=RequestContext(request))
|
||||
|
||||
def ad_dashboard_group(doc):
|
||||
|
||||
|
|
|
@ -700,7 +700,7 @@ def last_call(request, name):
|
|||
|
||||
request_last_call(request, status_change)
|
||||
|
||||
return render_to_response('idrfc/last_call_requested.html',
|
||||
return render_to_response('doc/draft/last_call_requested.html',
|
||||
dict(doc=status_change,
|
||||
url = status_change.get_absolute_url(),
|
||||
),
|
||||
|
|
|
@ -1,191 +0,0 @@
|
|||
# Copyright (C) 2009-2010 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 django import template
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
from ietf.idtracker.models import IDInternal, BallotInfo
|
||||
from ietf.idrfc.idrfc_wrapper import position_to_string, BALLOT_ACTIVE_STATES
|
||||
from ietf.idtracker.templatetags.ietf_filters import in_group, timesince_days
|
||||
from ietf.ietfauth.decorators import has_role
|
||||
from ietf.doc.models import BallotDocEvent
|
||||
|
||||
register = template.Library()
|
||||
|
||||
def get_user_name(context):
|
||||
if 'user' in context and context['user'].is_authenticated():
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.person.models import Person
|
||||
try:
|
||||
return context['user'].get_profile().plain_name()
|
||||
except Person.DoesNotExist:
|
||||
return None
|
||||
|
||||
person = context['user'].get_profile().person()
|
||||
if person:
|
||||
return str(person)
|
||||
return None
|
||||
|
||||
def render_ballot_icon(user, doc):
|
||||
if not doc:
|
||||
return ""
|
||||
|
||||
if doc.type_id == "draft":
|
||||
s = doc.get_state("draft-iesg")
|
||||
if s and s.name not in BALLOT_ACTIVE_STATES:
|
||||
return ""
|
||||
elif doc.type_id == "charter":
|
||||
if doc.get_state_slug() not in ("intrev", "iesgrev"):
|
||||
return ""
|
||||
|
||||
ballot = doc.latest_event(BallotDocEvent, type="created_ballot")
|
||||
if not ballot:
|
||||
return ""
|
||||
|
||||
edit_position_url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=doc.name, ballot_id=ballot.pk))
|
||||
|
||||
def sort_key(t):
|
||||
_, pos = t
|
||||
if not pos:
|
||||
return (2, 0)
|
||||
elif pos.pos.blocking:
|
||||
return (0, pos.pos.order)
|
||||
else:
|
||||
return (1, pos.pos.order)
|
||||
|
||||
positions = list(doc.active_ballot().active_ad_positions().items())
|
||||
positions.sort(key=sort_key)
|
||||
|
||||
cm = ""
|
||||
if has_role(user, "Area Director"):
|
||||
cm = ' oncontextmenu="editBallot(\''+str(edit_position_url)+'\');return false;"'
|
||||
|
||||
res = ['<table class="ballot_icon" title="IESG Evaluation Record (click to show more, right-click to edit position)" onclick="showBallot(\'' + doc.name + '\',\'' + str(edit_position_url) + '\')"' + cm + '>']
|
||||
|
||||
res.append("<tr>")
|
||||
|
||||
for i, (ad, pos) in enumerate(positions):
|
||||
if i > 0 and i % 5 == 0:
|
||||
res.append("</tr>")
|
||||
res.append("<tr>")
|
||||
|
||||
c = "position-%s" % (pos.pos.slug if pos else "norecord")
|
||||
|
||||
if ad.user_id == user.id:
|
||||
c += " my"
|
||||
|
||||
res.append('<td class="%s" />' % c)
|
||||
|
||||
res.append("</tr>")
|
||||
res.append("</table>")
|
||||
|
||||
return "".join(res)
|
||||
|
||||
class BallotIconNode(template.Node):
|
||||
def __init__(self, doc_var):
|
||||
self.doc_var = doc_var
|
||||
def render(self, context):
|
||||
doc = template.resolve_variable(self.doc_var, context)
|
||||
if hasattr(doc, "_idinternal"):
|
||||
# hack for old schema
|
||||
doc = doc._idinternal
|
||||
return render_ballot_icon(context.get("user"), doc)
|
||||
|
||||
def do_ballot_icon(parser, token):
|
||||
try:
|
||||
tagName, docName = token.split_contents()
|
||||
except ValueError:
|
||||
raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0]
|
||||
return BallotIconNode(docName)
|
||||
|
||||
register.tag('ballot_icon', do_ballot_icon)
|
||||
|
||||
@register.filter
|
||||
def my_position(doc, user):
|
||||
user_name = get_user_name({'user':user})
|
||||
if not user_name:
|
||||
return None
|
||||
if not in_group(user, "Area_Director"):
|
||||
return None
|
||||
if not doc.in_ietf_process():
|
||||
return None
|
||||
if not doc.ietf_process.has_iesg_ballot():
|
||||
return None
|
||||
ballot = doc.ietf_process.iesg_ballot()
|
||||
return ballot.position_for_ad(user_name)
|
||||
|
||||
@register.filter
|
||||
def state_age_colored(doc):
|
||||
if not doc.in_ietf_process():
|
||||
return ""
|
||||
if doc.is_id_wrapper and not doc.draft_status in ["Active", "RFC"]:
|
||||
# Don't show anything for expired/withdrawn/replaced drafts
|
||||
return ""
|
||||
main_state = doc.ietf_process.main_state
|
||||
sub_state = doc.ietf_process.sub_state
|
||||
if main_state in ["Dead","AD is watching","RFC Published"]:
|
||||
return ""
|
||||
days = timesince_days(doc.ietf_process.state_date())
|
||||
# loosely based on
|
||||
# http://trac.tools.ietf.org/group/iesg/trac/wiki/PublishPath
|
||||
if main_state == "In Last Call":
|
||||
goal1 = 30
|
||||
goal2 = 30
|
||||
elif main_state == "RFC Ed Queue":
|
||||
goal1 = 60
|
||||
goal2 = 120
|
||||
elif main_state in ["Last Call Requested", "Approved-announcement to be sent"]:
|
||||
goal1 = 4
|
||||
goal2 = 7
|
||||
elif sub_state == "Revised ID Needed":
|
||||
goal1 = 14
|
||||
goal2 = 28
|
||||
elif main_state == "Publication Requested":
|
||||
goal1 = 7
|
||||
goal2 = 14
|
||||
elif main_state == "AD Evaluation":
|
||||
goal1 = 14
|
||||
goal2 = 28
|
||||
else:
|
||||
goal1 = 14
|
||||
goal2 = 28
|
||||
if days > goal2:
|
||||
class_name = "ietf-small ietf-highlight-r"
|
||||
elif days > goal1:
|
||||
class_name = "ietf-small ietf-highlight-y"
|
||||
else:
|
||||
class_name = "ietf-small"
|
||||
if days > goal1:
|
||||
title = ' title="Goal is <%d days"' % (goal1,)
|
||||
else:
|
||||
title = ''
|
||||
return '<span class="%s"%s>(for %d day%s)</span>' % (class_name,title,days,('','s')[days != 1])
|
|
@ -5,7 +5,7 @@
|
|||
{% block content %}
|
||||
<h1>Documents for {{ ad_name }}</h1>
|
||||
|
||||
{% include "idrfc/search_results.html" %}
|
||||
{% include "doc/search/search_results.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block content %}
|
||||
<h1>Internet-Drafts in IETF Last Call</h1>
|
||||
|
||||
{% include "idrfc/search_results.html" %}
|
||||
{% include "doc/search/search_results.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ td.ietf-main-intro { width:200px; background:#fff5df; padding:8px; border:1px so
|
|||
|
||||
<tr valign="top"><td class="ietf-box ietf-main-search">
|
||||
<h1>Search Internet-Drafts and RFCs</h1>
|
||||
{% include "idrfc/search_form.html" %}
|
||||
{% include "doc/search/search_form.html" %}
|
||||
</td>
|
||||
<td style="width:8px;"> </td>
|
||||
<td class="ietf-main-intro">
|
|
@ -6,10 +6,10 @@
|
|||
<h1>Search Internet-Drafts and RFCs</h1>
|
||||
|
||||
<div class="ietf-box search-form-box">
|
||||
{% include "idrfc/search_form.html" %}
|
||||
{% include "doc/search/search_form.html" %}
|
||||
</div>
|
||||
|
||||
{% if meta.searching %}{% include "idrfc/search_results.html" %}{% endif %}
|
||||
{% if meta.searching %}{% include "doc/search/search_results.html" %}{% endif %}
|
||||
|
||||
{% endblock content %}
|
||||
|
|
@ -33,7 +33,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% endcomment %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% load ballot_icon %}
|
||||
<tr class="{{ forloop.counter|divisibleby:2|yesno:"oddrow,evenrow" }}">
|
||||
{% if show_add_to_list and user.is_authenticated %}
|
||||
<td class="addtolist">
|
||||
|
@ -62,7 +61,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% endif %}
|
||||
</td>
|
||||
|
||||
{% include "doc/status_columns.html" %}
|
||||
{% include "doc/search/status_columns.html" %}
|
||||
|
||||
<td class="ipr">
|
||||
{% if doc.iprs %}
|
|
@ -65,7 +65,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<tr class="header"><td colspan="10">{{ doc_group.grouper|plural:doc_group.list }}</td></tr>
|
||||
|
||||
{% for doc in doc_group.list %}
|
||||
{% include "idrfc/search_result_row.html" %}
|
||||
{% include "doc/search/search_result_row.html" %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</table>
|
|
@ -1,4 +1,4 @@
|
|||
{% load ietf_filters %}{% load ballot_icon_redesign %}
|
||||
{% load ietf_filters %}{% load ballot_icon %}
|
||||
<td class="status">
|
||||
{{ doc.friendly_state|safe }} {% if not doc.get_state_slug == "rfc" %}{{ doc|state_age_colored }}{% endif %}
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
{% comment %}
|
||||
Copyright (C) 2010 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. #}
|
||||
{% endcomment %}
|
||||
<html>
|
||||
<head>
|
||||
<title>Active Internet-Drafts</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Active Internet-Drafts</h1>
|
||||
|
||||
<p>This page lists all active Internet-Drafts, grouped by
|
||||
working group (and individual submissions last).
|
||||
For normal use, it is recommended to use
|
||||
the <a href="/doc/">search page</a> instead.</p>
|
||||
|
||||
<p>There is also a list of <a href="/doc/all/">all Internet-Drafts</a>, and
|
||||
the following files are available for download:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.ietf.org/id/1id-index.txt">Active Internet-Drafts (text)</a>
|
||||
<li><a href="http://www.ietf.org/id/1id-abstracts.txt">Active Internet-Drafts with abstracts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/all_id2.txt">All Internet-Drafts (tab-separated)</a>, <a href="http://www.ietf.org/id/all_id.txt">older version (with fewer fields)</a></li>
|
||||
</ul>
|
||||
|
||||
{% for group in groups|dictsort:"group_acronym.acronym" %}{% if group.active_drafts %}
|
||||
<h2 id="{{group.group_acronym.acronym}}">{{ group.group_acronym.name }} ({{ group.group_acronym.acronym}})</h2>
|
||||
{% for draft in group.active_drafts|dictsort:"filename" %}
|
||||
<p>{{draft.title.strip}}<br/>{% for author in draft.authors.all|dictsort:"final_author_order" %}{{author.person}}{% if not forloop.last %}, {% endif %}{% endfor %}<br/><a href="/doc/{{draft.filename}}/">{{draft.filename}}-{{draft.revision}}</a> ({{draft.revision_date|date:"Y-m-d"}})</p>
|
||||
{% endfor %}{%endif %}{% endfor %}
|
||||
|
||||
<h2 id="individual">Individual Submissions</h2>
|
||||
|
||||
{% for draft in individual.active_drafts|dictsort:"filename" %}
|
||||
<p>{{draft.title.strip}}<br/>{% for author in draft.authors.all|dictsort:"final_author_order" %}{{author.person}}{% if not forloop.last %}, {% endif %}{% endfor %}<br/><a href="/doc/{{draft.filename}}/">{{draft.filename}}-{{draft.revision}}</a> ({{draft.revision_date|date:"Y-m-d"}})</p>
|
||||
{% endfor %}
|
||||
|
||||
</body></html>
|
|
@ -1,86 +0,0 @@
|
|||
{% comment %}
|
||||
Copyright (C) 2010 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. #}
|
||||
{% endcomment %}
|
||||
<html>
|
||||
<head>
|
||||
<title>All Internet-Drafts and RFCs</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>All Internet-Drafts and RFCs</h1>
|
||||
|
||||
<p>This page lists all Internet-Drafts and RFCs, grouped by
|
||||
status. The main purpose of this page is to ensure all pages can be
|
||||
found by search engines. For normal use, it is recommended to use
|
||||
the <a href="/doc/">search page</a> instead.</p>
|
||||
|
||||
<p>The following files are also available for download:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.ietf.org/id/1id-index.txt">Active Internet-Drafts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/1id-abstracts.txt">Active Internet-Drafts with abstracts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/all_id2.txt">All Internet-Drafts (tab-separated)</a>, <a href="http://www.ietf.org/id/all_id.txt">older version (with fewer fields)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.txt">All RFCs (text)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.xml">All RFCs (XML)</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="active">Active Internet-Drafts</h2>
|
||||
|
||||
<p><a href="/doc/active/">More information about active Internet-Drafts</a></p>
|
||||
|
||||
<p>
|
||||
{% for doc in active %}<a href="/doc/{{ doc.filename }}/">{{ doc.filename }}</a><br/>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
<h2 id="rfc">Internet-Drafts Published as RFCs</h2>
|
||||
|
||||
<p>
|
||||
{% for doc in rfc1 %}<a href="/doc/{{ doc.filename }}/">{{ doc.filename }}</a> (<a href="/doc/rfc{{doc.rfc_number}}/">RFC {{ doc.rfc_number }}</a>)<br/>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
<h2 id="rfc2">RFCs Without Internet-Draft Information</h2>
|
||||
|
||||
<p>
|
||||
{% for doc in rfc2 %}<a href="/doc/rfc{{ doc.rfc_number }}/">RFC {{ doc.rfc_number }}</a>{% if doc.draft %} ({{ doc.draft }}?){% endif %}<br/>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
<h2 id="dead">Expired/Withdrawn/Replaced Internet-Drafts</h2>
|
||||
|
||||
<p>
|
||||
{% for doc in dead %}<a href="/doc/{{ doc.filename }}/">{{ doc.filename }}</a> ({{ doc.status.status}})<br/>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
</body></html>
|
|
@ -1,54 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% comment %}
|
||||
Copyright (C) 2009-2010 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.
|
||||
{% endcomment %}
|
||||
|
||||
{% block title %}Internet-Drafts and RFCs for {{ ad_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Internet-Drafts and RFCs for {{ ad_name }}</h1>
|
||||
|
||||
{% regroup docs by view_sort_group_byad as grouped_docs %}
|
||||
|
||||
<table class="ietf-table ietf-doctable">
|
||||
<tr><th class="doc">Document</th><th class="title">Title</th><th class="date">Date</th><th class="status" colspan="2">Status</th><th class="ipr">ipr</th><th class="ad">AD / Shepherd</th></tr>
|
||||
{% for doc_group in grouped_docs %}
|
||||
<tr class="header"><td colspan="7">{{doc_group.grouper}}s</td></tr>
|
||||
|
||||
{% for doc in doc_group.list %}
|
||||
{% include "idrfc/search_result_row.html" %}
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock content %}
|
|
@ -1,155 +0,0 @@
|
|||
{% extends "idrfc/doc_main.html" %}
|
||||
{% comment extends "base.html" %}
|
||||
{% endcomment %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}{{ doc.canonical_name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
<div class="snapshots">
|
||||
Snapshots:
|
||||
<span class="revisions">
|
||||
{% for rev in revisions %}
|
||||
<a {% if rev != doc.rev %}href="{% url doc_view name=doc.name %}{% if not forloop.last %}{{ rev }}/{% endif %}"{% endif %}>{{ rev }}</a>
|
||||
{% endfor %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="ietf-box metabox">
|
||||
<div>
|
||||
{% if snapshot %}Snapshot of{% endif %}
|
||||
{% if doc.get_state_slug != "approved" %}Proposed{% endif %}
|
||||
Charter for "{{ group.name }}"
|
||||
(<a href="{% url wginfo.views.wg_charter acronym=group.acronym %}">{{ group.acronym }}</a>) {{ group.type.name }}
|
||||
</div>
|
||||
|
||||
<table id="metatable" width="100%">
|
||||
<tr>
|
||||
<td>WG State:</td>
|
||||
<td>{{ group.state.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/doc/help/state/charter/">Charter State</a>:</td>
|
||||
<td>
|
||||
<div>
|
||||
<a title="{{ doc.get_state.desc }}"
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
class="editlink" href="{% url charter_change_state name=doc.name %}"
|
||||
{% endif %}>
|
||||
{{ doc.get_state.name }}
|
||||
</a>
|
||||
{% if chartering == "initial" %} - (Initial Chartering){% endif %}
|
||||
{% if chartering == "rechartering" %} - (Rechartering){% endif %}
|
||||
</div>
|
||||
|
||||
{% if not snapshot and chartering %}
|
||||
<div class="telechat">
|
||||
<a
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
class="editlink" href="{% url charter_telechat_date name=doc.name %}"
|
||||
{% endif %}>
|
||||
{% if not telechat %}Not on agenda of IESG telechat{% else %}On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% if ballot_summary %}
|
||||
<div class="ballot-summary">
|
||||
({{ ballot_summary }})
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if chartering and group.comments %}
|
||||
<tr>
|
||||
{% if chartering == "initial" %}<td>Reason for chartering:</td>{% endif %}
|
||||
{% if chartering == "rechartering" %}<td>Reason for rechartering:</td>{% endif %}
|
||||
<td>{{ group.comments }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<td>Responsible AD:</td>
|
||||
<td><a {% if request.user|has_role:"Area Director,Secretariat" %}class="editlink" href="{% url charter_edit_ad name=doc.name %}"{% endif %}>{{ doc.ad|default:"none" }}</a> </td>
|
||||
</tr>
|
||||
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
<tr>
|
||||
<td>Send notices to:</td>
|
||||
<td><a {% if user|has_role:"Area Director,Secretariat" %}
|
||||
class="editlink" href="{% url charter_edit_notify name=doc.name %}"
|
||||
{% endif %}>
|
||||
{{ doc.notify|default:"none" }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td>Last updated:</td><td> {{ doc.time|date:"Y-m-d" }}</td></tr>
|
||||
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
</table>
|
||||
|
||||
<div class="actions">
|
||||
<a href="/feed/group-changes/{{ group.acronym }}/">Atom feed</a>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if chartering %}
|
||||
<span id="charter_abandon_effort_button" class="yui-button yui-link-button" style="margin-left:2px;margin-top:2px">{% url charter_startstop_process name=doc.name option='abandon' as abandon_url %}{% if abandon_url %}<span class="first-child"><a href="{{abandon_url}}">Abandon Effort</a></span>{% endif %}</span>
|
||||
|
||||
{% if request.user|has_role:"Secretariat" %}
|
||||
<span id="charter_approve_button" class="yui-button yui-link-button" style="margin-left:2px;margin-top:2px">{% url charter_approve name=doc.name as approve_url %}{% if approve_url %}<span class="first-child"><a href="{{approve_url}}">Approve Charter</a></span>{% endif %}</span>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
{% if group.state_id == "proposed" or group.state_id == "bof" %}
|
||||
<span id="charter_start_button" class="yui-button yui-link-button" style="margin-left:2px;margin-top:2px">{% url charter_submit name=doc.name option='initcharter' as start_url %}{% if start_url %}<span class="first-child"><a href="{{start_url}}">Start Chartering</a></span>{% endif %}</span>
|
||||
{% else %}
|
||||
<span id="charter_recharter_button" class="yui-button yui-link-button" style="margin-left:2px;margin-top:2px">{% url charter_submit name=doc.name option='recharter' as recharter_url %}{% if recharter_url %}<span class="first-child"><a href="{{recharter_url}}">Recharter</a></span>{% endif %}</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Other versions: <a href="{{ txt_url }}">plain text</a></p>
|
||||
|
||||
<h3>Charter {{ doc.canonical_name }}-{{ doc.rev }}
|
||||
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and chartering and group.state_id != "conclude" %}
|
||||
<a class="edit" href="{% url charter_submit name=doc.name %}">Change charter text</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if doc.rev != "" %}
|
||||
<div class="markup_draft">
|
||||
{{ content|safe|keep_spacing|sanitize_html|wordwrap:80|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h3>{% if chartering %}Proposed{% endif %} Milestones
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
<a class="edit" href="{% url wg_edit_charter_milestones acronym=doc.group.acronym %}">Edit charter milestones</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if milestones %}
|
||||
{% include "wginfo/milestones.html" %}
|
||||
{% else %}
|
||||
<p>No milestones for charter found.</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Internet-Drafts in IETF Last Call{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Internet-Drafts in IETF Last Call</h1>
|
||||
|
||||
<table class="ietf-table ietf-doctable">
|
||||
<tr><th class="doc">Document</th><th class="title">Title</th><th class="date">Date</th><th class="status" colspan="2">Status</th><th class="ipr">ipr</th><th class="ad">Area Director</th></tr>
|
||||
|
||||
{% for doc in lcdocs %}
|
||||
{% include "idrfc/search_result_row.html" %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
|
@ -1,36 +0,0 @@
|
|||
{% comment %}
|
||||
Copyright (C) 2009-2010 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.
|
||||
{% endcomment %}
|
||||
{% load ietf_filters %}<td class="ipr">
|
||||
{% if doc.iprCount %}<a href="{{ doc.iprUrl }}" rel="nofollow"> {{ doc.iprCount }} </a>{% endif %}
|
||||
</td>
|
|
@ -1,55 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% comment %}
|
||||
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.
|
||||
{% endcomment %}
|
||||
|
||||
{% block title %}Internet-Drafts and RFCs{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Internet-Drafts and RFCs</h1>
|
||||
|
||||
<div class="ietf-box search-form-box">
|
||||
{% include "idrfc/search_form.html" %}
|
||||
</div>
|
||||
|
||||
<div id="search-results">
|
||||
{% if meta.searching %}
|
||||
{% include "idrfc/search-results.html" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/utils.js"></script>
|
||||
<script type="text/javascript" src="/js/doc-search.js"></script>
|
||||
{% endblock %}
|
|
@ -1,25 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_content {
|
||||
width: 40em;
|
||||
height: 450px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Shepherd writeup for {{ doc.canonical_name }}-{{ doc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Shepherd writeup for {{ doc.canonical_name }}-{{ doc.rev }}</h1>
|
||||
|
||||
<pre style="border:1px solid black;padding:5px;">{{writeup}}</pre>
|
||||
|
||||
<a href="{% url doc_view name=doc.name %}">Back</a>
|
||||
|
||||
{% if can_edit %}
|
||||
<span id="doc_edit_shepherd_writeup" class="yui-button yui-link-button" style="margin-left:2px;">{% url doc_edit_shepherd_writeup name=doc.name as doc_edit_url %}{% if doc_edit_url %}<span class="first-child"><a href="{{doc_edit_url}}">Edit</a></span>{% endif %}</span>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
|
@ -31,7 +31,7 @@ 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 %}
|
||||
{% load ietf_filters ietf_streams %}{% load ballot_icon_redesign %}
|
||||
{% load ietf_filters ietf_streams %}{% load ballot_icon %}
|
||||
<td class="status">
|
||||
{{ doc.friendly_state|safe }} {% if not doc.rfc %}{{ doc.id|state_age_colored|safe }}{% endif %}
|
||||
{% if not hide_telechat_date %}{% if doc.telechat_date %}<br/>IESG Telechat: {{ doc.telechat_date }}{% endif %}{% endif %}
|
||||
|
|
|
@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% comment %}
|
||||
Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
|
||||
{% endcomment %}
|
||||
{% load ietf_filters %}{% load ballot_icon_redesign %}
|
||||
{% load ietf_filters %}{% load ballot_icon %}
|
||||
|
||||
{% if title2_first %}{% if title1_first %}<h2>{{ title1 }}</h2>
|
||||
{% endif %}
|
||||
|
|
|
@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% comment %}
|
||||
Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
|
||||
{% endcomment %}
|
||||
{% load ietf_filters %}{% load ballot_icon_redesign %}
|
||||
{% load ietf_filters %}{% load ballot_icon %}
|
||||
|
||||
{% if title2_first %}{% if title1_first %}<h2>{{ title1 }}</h2>
|
||||
{% if title1|startswith:"2." %}
|
||||
|
|
|
@ -32,7 +32,7 @@ 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 %}
|
||||
{% load ballot_icon_redesign %}
|
||||
{% load ballot_icon %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}Documents on Future IESG Telechat Agendas{% endblock %}
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
{% comment %}
|
||||
Copyright (C) 2009-2010 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.
|
||||
{% endcomment %}
|
||||
|
||||
{% load ballot_icon %}
|
||||
{% load ietf_filters %}
|
||||
<tr
|
||||
{% if user|in_group:"Area_Director" %}
|
||||
{% if doc|my_position:user|equal:"Discuss" %}style="background:#ffa0a0;"{% endif %}
|
||||
{% if doc|my_position:user|equal:"Abstain" %}style="background:#ffff00;"{% endif %}
|
||||
{% if doc|my_position:user|equal:"Yes" or doc|my_position:user|slugify|equal:"no-objection" %}style="background:#a0ffa0;"{% endif %}
|
||||
{% if doc|my_position:user|equal:"Recuse" %}style="background:#c0c0c0;"{% endif %}
|
||||
{% endif %}
|
||||
>
|
||||
<td class="doc">
|
||||
<div>{{ doc.displayname_with_link|safe }}</div>
|
||||
{% if doc.ietf_process.iesg_ballot.was_deferred %}
|
||||
<div><b title="deferred by {{ doc.ietf_process.iesg_ballot.deferred_by}}">(deferred on {{ doc.ietf_process.iesg_ballot.deferred_date }})</b></div>
|
||||
{% endif %}
|
||||
{% if user|in_group:"Secretariat" %}
|
||||
<div class="reschedule"><label>Reschedule: {{ doc.reschedule_form.telechat_date }}</label></div>
|
||||
{% if doc.reschedule_form.show_clear %}
|
||||
<div class="clear-returning-item"><label>{{ doc.reschedule_form.clear_returning_item }} Clear returning item</label></div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="title">{{ doc.title }}
|
||||
{% with doc.pages as pagecount %}{% if pagecount %}<span class="doc_pages">({{doc.pages}} pp)</span>{% endif %}{% endwith %}
|
||||
</td>
|
||||
{% include "iesg/agenda_documents_row_status.html" %}
|
||||
{% include "idrfc/ipr_column_with_label.html" %}
|
||||
<td class="ad">{{ doc.ad_name|default:"" }}</td>
|
||||
</tr>
|
|
@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
-->
|
||||
{% endcomment %}
|
||||
|
||||
{% load ballot_icon_redesign %}
|
||||
{% load ballot_icon %}
|
||||
{% load ietf_filters %}
|
||||
<tr
|
||||
{% if user|in_group:"Area_Director" %}
|
||||
|
@ -61,6 +61,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% with doc.pages as pagecount %}{% if pagecount %}<span class="doc_pages">({{doc.pages}} pp)</span>{% endif %}{% endwith %}
|
||||
</td>
|
||||
{% include "iesg/agenda_documents_row_status_redesign.html" %}
|
||||
{% include "idrfc/ipr_column_with_label.html" %}
|
||||
{% include "doc/search/ipr_column_with_label.html" %}
|
||||
<td class="ad">{{ doc.ad.plain_name|default:"" }}</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "doc/status_columns.html" %}
|
||||
{% extends "doc/search/status_columns.html" %}
|
||||
{% block extra_status %}
|
||||
{% if doc.type.slug == 'draft' %}
|
||||
<br/>Intended status: {{doc.intended_std_level}}
|
||||
<br/>Intended status: {{ doc.intended_std_level }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -31,7 +31,7 @@ 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 %}
|
||||
{% load ballot_icon_redesign %}
|
||||
{% load ballot_icon %}
|
||||
{% if title2_first %}{% if title1_first %}<h2>{{ title1 }}</h2>
|
||||
{% endif %}
|
||||
<h3>{{ title2 }}</h3>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
{% block content %}
|
||||
{% load ietf_filters %}
|
||||
{% load ballot_icon_redesign %}
|
||||
{% load ballot_icon %}
|
||||
|
||||
<h1>Chartering or Re-Chartering Working Groups</h1>
|
||||
|
||||
|
|
|
@ -37,9 +37,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
{% block wg_content %}
|
||||
<div class="group-documents">
|
||||
|
||||
{% include "idrfc/search_results.html" %}
|
||||
{% include "doc/search/search_results.html" %}
|
||||
|
||||
{% with docs_related as docs %}{% include "idrfc/search_results.html" %}{% endwith %}
|
||||
{% with docs_related as docs %}{% include "doc/search/search_results.html" %}{% endwith %}
|
||||
|
||||
</div>
|
||||
{% endblock wg_content %}
|
||||
|
|
Loading…
Reference in a new issue