Merged in branch/iola/charter-fixes from olau@iola.dk with a series of fixes to the charter management code.
- Legacy-Id: 4483
This commit is contained in:
commit
b1b21e5529
|
@ -101,7 +101,7 @@ def render_ballot_icon(user, doc):
|
|||
|
||||
c = "position-%s" % (pos.pos.slug if pos else "norecord")
|
||||
|
||||
if hasattr(user, "get_profile") and ad == user.get_profile():
|
||||
if ad.user_id == user.id:
|
||||
c += " my"
|
||||
|
||||
res.append('<td class="%s" />' % c)
|
||||
|
|
|
@ -42,33 +42,33 @@ urlpatterns = patterns('',
|
|||
(r'^in-last-call/$', views_search.in_last_call),
|
||||
url(r'^ad/(?P<name>[A-Za-z0-9.-]+)/$', views_search.by_ad, name="doc_search_by_ad"),
|
||||
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/((?P<rev>[0-9-]+)/)?$', views_doc.document_main, name="doc_view"),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/history/$', views_doc.document_history, name="doc_history"),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/writeup/$', views_doc.document_writeup, name="doc_writeup"),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/position/$', views_ballot.edit_position, name='doc_edit_position'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/emailposition/$', views_ballot.send_ballot_comment, name='doc_send_ballot_comment'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/$', views_doc.document_ballot, name="doc_ballot"),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/$', views_doc.document_ballot, name="doc_ballot"),
|
||||
(r'^(?P<name>[A-Za-z0-9.-]+)/doc.json$', views_doc.document_debug),
|
||||
(r'^(?P<name>[A-Za-z0-9.-]+)/_ballot.data$', views_doc.ballot_html), # why is this url so weird instead of just ballot.html?
|
||||
(r'^(?P<name>[A-Za-z0-9.-]+)/ballot.tsv$', views_doc.ballot_tsv),
|
||||
(r'^(?P<name>[A-Za-z0-9.-]+)/ballot.json$', views_doc.ballot_json),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/((?P<rev>[0-9-]+)/)?$', views_doc.document_main, name="doc_view"),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/history/$', views_doc.document_history, name="doc_history"),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/writeup/$', views_doc.document_writeup, name="doc_writeup"),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/position/$', views_ballot.edit_position, name='doc_edit_position'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/emailposition/$', views_ballot.send_ballot_comment, name='doc_send_ballot_comment'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/$', views_doc.document_ballot, name="doc_ballot"),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/ballot/$', views_doc.document_ballot, name="doc_ballot"),
|
||||
(r'^(?P<name>[A-Za-z0-9._-]+)/doc.json$', views_doc.document_debug),
|
||||
(r'^(?P<name>[A-Za-z0-9._-]+)/_ballot.data$', views_doc.ballot_html), # why is this url so weird instead of just ballot.html?
|
||||
(r'^(?P<name>[A-Za-z0-9._-]+)/ballot.tsv$', views_doc.ballot_tsv),
|
||||
(r'^(?P<name>[A-Za-z0-9._-]+)/ballot.json$', views_doc.ballot_json),
|
||||
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/state/$', views_edit.change_state, name='doc_change_state'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/info/$', views_edit.edit_info, name='doc_edit_info'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/requestresurrect/$', views_edit.request_resurrect, name='doc_request_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/resurrect/$', views_edit.resurrect, name='doc_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/addcomment/$', views_edit.add_comment, name='doc_add_comment'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/clearballot/$', views_ballot.clear_ballot, name='doc_clear_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/undeferballot/$', views_ballot.undefer_ballot, name='doc_undefer_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/lastcalltext/$', views_ballot.lastcalltext, name='doc_ballot_lastcall'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/ballotwriteupnotes/$', views_ballot.ballot_writeupnotes, name='doc_ballot_writeupnotes'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/approvaltext/$', views_ballot.ballot_approvaltext, name='doc_ballot_approvaltext'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/approveballot/$', views_ballot.approve_ballot, name='doc_approve_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/makelastcall/$', views_ballot.make_last_call, name='doc_make_last_call'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/state/$', views_edit.change_state, name='doc_change_state'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/info/$', views_edit.edit_info, name='doc_edit_info'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/requestresurrect/$', views_edit.request_resurrect, name='doc_request_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/resurrect/$', views_edit.resurrect, name='doc_resurrect'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/addcomment/$', views_edit.add_comment, name='doc_add_comment'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/clearballot/$', views_ballot.clear_ballot, name='doc_clear_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/undeferballot/$', views_ballot.undefer_ballot, name='doc_undefer_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/lastcalltext/$', views_ballot.lastcalltext, name='doc_ballot_lastcall'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/ballotwriteupnotes/$', views_ballot.ballot_writeupnotes, name='doc_ballot_writeupnotes'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/approvaltext/$', views_ballot.ballot_approvaltext, name='doc_ballot_approvaltext'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/approveballot/$', views_ballot.approve_ballot, name='doc_approve_ballot'),
|
||||
url(r'^(?P<name>[A-Za-z0-9._-]+)/edit/makelastcall/$', views_ballot.make_last_call, name='doc_make_last_call'),
|
||||
|
||||
(r'^(?P<name>[A-Za-z0-9.-]+)/charter/', include('ietf.wgcharter.urls')),
|
||||
(r'^(?P<name>[A-Za-z0-9._-]+)/charter/', include('ietf.wgcharter.urls')),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('django.views.generic.simple',
|
||||
|
|
|
@ -55,20 +55,20 @@ from ietf.utils.history import find_history_active_at
|
|||
from ietf.ietfauth.decorators import has_role
|
||||
|
||||
|
||||
def render_document_top(request, doc, tab):
|
||||
def render_document_top(request, doc, tab, name):
|
||||
tabs = []
|
||||
tabs.append(("Document", "document", urlreverse("ietf.idrfc.views_doc.document_main", kwargs=dict(name=doc.name)), True))
|
||||
tabs.append(("Document", "document", urlreverse("ietf.idrfc.views_doc.document_main", kwargs=dict(name=name)), True))
|
||||
|
||||
ballot = doc.latest_event(BallotDocEvent, type="created_ballot")
|
||||
if doc.type_id == "draft":
|
||||
# if doc.in_ietf_process and doc.ietf_process.has_iesg_ballot:
|
||||
tabs.append(("IESG Evaluation Record", "ballot", urlreverse("ietf.idrfc.views_doc.document_ballot", kwargs=dict(name=doc.name)), ballot))
|
||||
tabs.append(("IESG Evaluation Record", "ballot", urlreverse("ietf.idrfc.views_doc.document_ballot", kwargs=dict(name=name)), ballot))
|
||||
elif doc.type_id == "charter":
|
||||
tabs.append(("IESG Review", "ballot", urlreverse("ietf.idrfc.views_doc.document_ballot", kwargs=dict(name=doc.name)), ballot))
|
||||
tabs.append(("IESG Review", "ballot", urlreverse("ietf.idrfc.views_doc.document_ballot", kwargs=dict(name=name)), ballot))
|
||||
|
||||
# FIXME: if doc.in_ietf_process and doc.ietf_process.has_iesg_ballot:
|
||||
tabs.append(("IESG Writeups", "writeup", urlreverse("ietf.idrfc.views_doc.document_writeup", kwargs=dict(name=doc.name)), True))
|
||||
tabs.append(("History", "history", urlreverse("ietf.idrfc.views_doc.document_history", kwargs=dict(name=doc.name)), True))
|
||||
tabs.append(("IESG Writeups", "writeup", urlreverse("ietf.idrfc.views_doc.document_writeup", kwargs=dict(name=name)), True))
|
||||
tabs.append(("History", "history", urlreverse("ietf.idrfc.views_doc.document_history", kwargs=dict(name=name)), True))
|
||||
|
||||
name = doc.canonical_name()
|
||||
if name.startswith("rfc"):
|
||||
|
@ -120,7 +120,7 @@ def document_main(request, name, rev=None):
|
|||
if gh:
|
||||
group = gh
|
||||
|
||||
top = render_document_top(request, doc, "document")
|
||||
top = render_document_top(request, doc, "document", name)
|
||||
|
||||
|
||||
telechat = doc.latest_event(TelechatDocEvent, type="scheduled_for_telechat")
|
||||
|
@ -159,9 +159,8 @@ def document_history(request, name):
|
|||
if name.lower().startswith("draft") or name.lower().startswith("rfc"):
|
||||
return document_main_idrfc(request, name, "history")
|
||||
|
||||
|
||||
doc = get_object_or_404(Document, docalias__name=name)
|
||||
top = render_document_top(request, doc, "history")
|
||||
top = render_document_top(request, doc, "history", name)
|
||||
|
||||
diff_documents = [ doc ]
|
||||
diff_documents.extend(Document.objects.filter(docalias__relateddocument__source=doc, docalias__relateddocument__relationship="replaces"))
|
||||
|
@ -206,7 +205,7 @@ def document_writeup(request, name):
|
|||
return document_main_idrfc(request, name, "writeup")
|
||||
|
||||
doc = get_object_or_404(Document, docalias__name=name)
|
||||
top = render_document_top(request, doc, "writeup")
|
||||
top = render_document_top(request, doc, "writeup", name)
|
||||
|
||||
writeups = []
|
||||
if doc.type_id == "charter":
|
||||
|
@ -328,7 +327,7 @@ def document_ballot_content(request, doc, ballot_id, editable=True):
|
|||
|
||||
def document_ballot(request, name, ballot_id=None):
|
||||
doc = get_object_or_404(Document, docalias__name=name)
|
||||
top = render_document_top(request, doc, "ballot")
|
||||
top = render_document_top(request, doc, "ballot", name)
|
||||
|
||||
c = document_ballot_content(request, doc, ballot_id, editable=True)
|
||||
|
||||
|
|
|
@ -221,11 +221,13 @@ def agenda_docs(date, next_agenda):
|
|||
|
||||
def agenda_wg_actions(date):
|
||||
res = dict(("s%s%s%s" % (i, j, k), []) for i in range(2, 5) for j in range (1, 4) for k in range(1, 4))
|
||||
charters = Document.objects.filter(type="charter", docevent__telechatdocevent__telechat_date=date).distinct()
|
||||
charters = Document.objects.filter(type="charter", docevent__telechatdocevent__telechat_date=date).select_related("group").distinct()
|
||||
for c in charters:
|
||||
if c.latest_event(TelechatDocEvent, type="scheduled_for_telechat").telechat_date != date:
|
||||
continue
|
||||
|
||||
c.group.txt_link = settings.CHARTER_TXT_URL + "%s-%s.txt" % (c.canonical_name(), c.rev)
|
||||
|
||||
section_key = "s" + get_wg_section(c.group)
|
||||
if section_key not in res:
|
||||
res[section_key] = []
|
||||
|
|
|
@ -193,7 +193,7 @@ INTERNET_DRAFT_PATH = '/a/www/ietf-ftp/internet-drafts/'
|
|||
INTERNET_DRAFT_PDF_PATH = '/a/www/ietf-datatracker/pdf/'
|
||||
RFC_PATH = '/a/www/ietf-ftp/rfc/'
|
||||
CHARTER_PATH = '/a/www/ietf-ftp/charters/'
|
||||
CHARTER_TXT_URL = 'http://www.ietf.org/charters/'
|
||||
CHARTER_TXT_URL = 'http://www.ietf.org/charter/'
|
||||
AGENDA_PATH = '/a/www/www6s/proceedings/'
|
||||
AGENDA_PATH_PATTERN = '/a/www/www6s/proceedings/%(meeting)s/agenda/%(wg)s.%(ext)s'
|
||||
MINUTES_PATH_PATTERN = '/a/www/www6s/proceedings/%(meeting)s/minutes/%(wg)s.%(ext)s'
|
||||
|
|
|
@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<td>{{ wg.obj.parent.acronym|upper }}</td>
|
||||
<td>{{ wg.obj.time|date:"M d"}}</td>
|
||||
<td>
|
||||
<a href="http://www.ietf.org/iesg/evaluation/charter-ietf-{{wg.obj.acronym}}-{{wg.obj.charter.rev}}.txt">
|
||||
<a href="{{ wg.obj.txt_link }}">
|
||||
{{ wg.obj.name|escape }} ({{wg.obj.acronym}})
|
||||
</a>
|
||||
</td>
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
{% load ietf_filters %}{% autoescape off %}From: The IESG <iesg-secretary@ietf.org>
|
||||
To: IETF-Announce <ietf-announce@ietf.org>
|
||||
To: IETF-Announce <ietf-announce@ietf.org>{% if wg.list_email %}
|
||||
Cc: {{ wg.acronym }} WG <{{ wg.list_email }}> {% endif %}
|
||||
Subject: WG Action: {{ action_type }} {{ wg.name }} ({{ wg.acronym }})
|
||||
|
||||
{% filter wordwrap:73 %}{% ifequal action_type "Formed" %}A new IETF working group has been formed in the {{ wg.parent.name }}.{% endifequal %}{% ifequal action_type "Rechartered" %}The {{ wg.name }} ({{ wg.acronym }}) working group in the {{ wg.parent.name }} of the IETF has been rechartered.{% endifequal %} For additional information please contact the Area Directors or the WG Chair{{ chairs|pluralize}}.
|
||||
|
||||
{% include "wgcharter/wg_info.txt" %}
|
||||
|
||||
{% endfilter %}
|
||||
{% endautoescape %}
|
||||
{% include "wgcharter/wg_info.txt" %}{% endfilter %}{% endautoescape %}
|
||||
|
|
|
@ -18,14 +18,20 @@ form #id_announcement_text {
|
|||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" name="save_text" value="Save WG {{ announcement }} announcement text" />
|
||||
<input type="submit" name="regenerate_text" value="Regenerate {{ announcement }} text" />
|
||||
<input type="submit" name="regenerate_text" value="Regenerate" />
|
||||
<input type="submit" name="save_text" value="Save" />
|
||||
</div>
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<h3>Secretariat actions</h3>
|
||||
|
||||
<div class="actions">
|
||||
{% if announcement == "action" %}
|
||||
<a href="{% url charter_approve name=charter.canonical_name %}">Go to charter approval page</a>
|
||||
{% else %}
|
||||
<input type="submit" name="send_text" value="Send WG {{ announcement }} announcement" />
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ form.approve .announcement {
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Approve {{ charter.canonical_name }}</h1>
|
||||
<h1>Approve {{ charter.canonical_name }}-{{ charter.rev }}</h1>
|
||||
|
||||
<div>IETF announcement:</div>
|
||||
|
||||
|
@ -31,6 +31,7 @@ form.approve .announcement {
|
|||
|
||||
<div class="actions">
|
||||
<a href="{% url doc_view name=charter.name %}">Back</a>
|
||||
<a href="{% url charter_edit_announcement name=charter.canonical_name,ann="action" %}?next=approve">Go to edit/regenerate announcement page</a>
|
||||
<input type="submit" value="Send out the announcement, close ballot and update revision"/>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
{% load ietf_filters %}{% autoescape off %}From: The IESG <iesg-secretary@ietf.org>
|
||||
To: IETF-Announce <ietf-announce@ietf.org>
|
||||
To: IETF-Announce <ietf-announce@ietf.org>{% if wg.list_email %}
|
||||
Cc: {{ wg.acronym }} WG <{{ wg.list_email }}> {% endif %}
|
||||
Subject: WG Review: {{ wg.name }} ({{ wg.acronym }})
|
||||
|
||||
{% filter wordwrap:73 %}{% ifequal review_type "new" %}A new IETF working group has been proposed in the {{ wg.parent.name }}.{% endifequal %}{% ifequal review_type "recharter" %}The {{ wg.name }} ({{wg.acronym}}) working group in the {{ wg.parent.name }} of the IETF is undergoing rechartering.{% endifequal %} The IESG has not made any determination yet. The following draft charter was submitted, and is provided for informational purposes only. Please send your comments to the IESG mailing list (iesg at ietf.org) by {{ review_date }}.
|
||||
|
||||
{% include "wgcharter/wg_info.txt" %}
|
||||
|
||||
{% endfilter %}
|
||||
{% endautoescape %}
|
||||
{% include "wgcharter/wg_info.txt" %}{% endfilter %}{% endautoescape %}
|
||||
|
|
|
@ -22,3 +22,7 @@ Current Status: {{ wg.state.name }} Working Group
|
|||
Charter of Working Group:
|
||||
|
||||
{{ charter_text }}
|
||||
|
||||
Milestones:
|
||||
{% for milestone in milestones %} {% if milestone.done %}Done {% else %}{{ milestone.expected_due_date|date:"M Y" }}{% endif %} - {{ milestone.desc|safe }}
|
||||
{% endfor %}
|
||||
|
|
|
@ -79,6 +79,7 @@ def default_action_text(wg, charter, user):
|
|||
chairs=wg.role_set.filter(name="chair"),
|
||||
secr=wg.role_set.filter(name="secr"),
|
||||
techadv=wg.role_set.filter(name="techadv"),
|
||||
milestones=wg.groupmilestone_set.all(),
|
||||
ad_email=wg.ad.role_email("ad") if wg.ad else None,
|
||||
action_type=action,
|
||||
))
|
||||
|
@ -98,6 +99,7 @@ def default_review_text(wg, charter, user):
|
|||
chairs=wg.role_set.filter(name="chair"),
|
||||
secr=wg.role_set.filter(name="secr"),
|
||||
techadv=wg.role_set.filter(name="techadv"),
|
||||
milestones=wg.groupmilestone_set.all(),
|
||||
ad_email=wg.ad.role_email("ad") if wg.ad else None,
|
||||
review_date=(datetime.date.today() + datetime.timedelta(weeks=1)).isoformat(),
|
||||
review_type="new" if wg.state_id == "proposed" else "recharter",
|
||||
|
|
|
@ -7,7 +7,7 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<option>initcharter|recharter|abandon)/$', "ietf.wgcharter.views.change_state", name='charter_startstop_process'),
|
||||
url(r'^telechat/$', "ietf.wgcharter.views.telechat_date", name='charter_telechat_date'),
|
||||
url(r'^notify/$', "ietf.wgcharter.views.edit_notify", name='charter_edit_notify'),
|
||||
url(r'^(?P<ann>action|review)/$', "ietf.wgcharter.views.announcement_text"),
|
||||
url(r'^(?P<ann>action|review)/$', "ietf.wgcharter.views.announcement_text", name="charter_edit_announcement"),
|
||||
url(r'^ballotwriteupnotes/$', "ietf.wgcharter.views.ballot_writeupnotes"),
|
||||
url(r'^approve/$', "ietf.wgcharter.views.approve", name='charter_approve'),
|
||||
url(r'^submit/$', "ietf.wgcharter.views.submit", name='charter_submit'),
|
||||
|
|
|
@ -397,7 +397,11 @@ def announcement_text(request, name, ann):
|
|||
|
||||
charter.time = e.time
|
||||
charter.save()
|
||||
return redirect('doc_writeup', name=charter.name)
|
||||
|
||||
if request.GET.get("next", "") == "approve":
|
||||
return redirect('charter_approve', name=charter.canonical_name())
|
||||
|
||||
return redirect('doc_writeup', name=charter.canonical_name())
|
||||
|
||||
if "regenerate_text" in request.POST:
|
||||
if ann == "action":
|
||||
|
|
Loading…
Reference in a new issue