Forward merge from trunk.

- Legacy-Id: 10423
This commit is contained in:
Henrik Levkowetz 2015-11-04 08:52:36 +00:00
commit c427d989ab
16 changed files with 73 additions and 20 deletions

10
INSTALL
View file

@ -37,14 +37,14 @@ General Instructions for Deployment of a New Release
pip install -r requirements.txt
5. Run migrations::
ietf/manage.py migrate
6. Move static files to the appropriate direcrory for serving via CDN::
5. Move static files to the appropriate direcrory for serving via CDN::
ietf/manage.py collectstatic
6. Run migrations::
ietf/manage.py migrate
7. Run some basic datatracker system checks::
ietf/manage.py check

View file

@ -38,7 +38,7 @@ COPYRIGHT
"""
from __future__ import print_function
import sys, os.path, getopt, re
import sys, os.path, getopt, re, tzparse, pytz
import debug
version = "0.20"
@ -130,7 +130,9 @@ def split_loginfo(line):
who = parts[2]
date = parts[4]
time = parts[5]
when = "%s_%s" % (date, time)
tz = parts[6]
when = tzparse.tzparse(" ".join(parts[4:7]), "%Y-%m-%d %H:%M:%S %Z")
when = when.astimezone(pytz.utc)
return rev, who, when
# ----------------------------------------------------------------------
@ -235,7 +237,7 @@ def get_ready_commits(repo, tree):
branch = '/'.join(path.split('/')[1:4])
elif re.search("(?i)((commit|branch) ready (for|to) merge)", line):
if not (rev in merged_revs and branch == merged_revs[rev]):
note(" %s %s: %s@%s" % (when, who, branch, rev))
note(" %s %s: %s@%s" % (when.strftime("%Y-%m-%d %H:%MZ"), who, branch, rev))
list += [(rev, repo, branch),]
elif rev in merged_revs and not branch == merged_revs[rev]:
sys.stderr.write('Rev %s: %s != %s' % (rev, branch, merged_revs[rev]))
@ -282,7 +284,7 @@ for entry in ready:
#
merge_path = os.path.join(*path.split(os.path.sep)[:4])
if not (rev, repo, merge_path) in hold:
output_line = "%s %-24s %s@%s" % (when, who+":", merge_path, rev)
output_line = "%s %-24s %s@%s" % (when.strftime("%Y-%m-%d_%H:%MZ"), who+":", merge_path, rev)
if unittest == 'passed':
ready_commits[when] = output_line
else:

View file

@ -1,3 +1,35 @@
ietfdb (6.8.0) ietf; urgency=medium
* Merged in [10414] from rjsparks@nostrum.com:
Put possibly replaces sections in the right columns. Fixes #1802.
* Keep draft aliases for 2 years rather than 1 year from posting.
* Merged in [10405] from rjsparks@nostrum.com:
Addresses an issue where the WG document page would show the same document
in more than one section. Fixes #1827.
* Merged in [10384] from rjsparks@nostrum.com:
When a group gives a document a new group state (particularly for the
first time), send a message that says what happened instead of simply
\'Adopted\'. Fixes #1830.
* Merged in [10383] and [10413] from rcross@amsl.com:
Updated proceedings permissions.
* Merged in [10379] from rjsparks@nostrum.com:
Change the acronym link on the html agenda page to go to the group's
charter page rather than the charter's document page.
* Merged in [10378] from rjsparks@nostrum.com:
Make the internal review message reflect whether this is a new chartering
effort or a recharter. Fixes #1814.
* Fixed a unicode issue with rendering of contact names.
-- Henrik Levkowetz <henrik@levkowetz.com> 03 Nov 2015 23:44:55 -0800
ietfdb (6.8.0) ietf; urgency=medium
**IETF 94 Code Sprint**

View file

@ -2,6 +2,7 @@
branch/iola/event-saving-refactor-r10076 @ 10190
personal/rcross/v6.7.3.dev0@10382 # Test errors, corrected in later commit
branch/amsl/liaisons@10160 # Merged as branch/amsl/liaisons/6.4.1 @ 10160
personal/lars/6.2.1.dev0@9970 # Requires the timeline work
personal/lars/6.0.5.dev0@9734 # Obsoleted - don't use 'bleach'

View file

@ -106,7 +106,7 @@ if __name__ == '__main__':
import time
# Year ago?
show_since = datetime.datetime.now() - datetime.timedelta(365)
show_since = datetime.datetime.now() - datetime.timedelta(2*365)
# 10 years ago?
#show_since = datetime.datetime.now() - datetime.timedelta(10 * 365)

View file

@ -393,8 +393,8 @@ def email_adopted(request, doc, prev_state, new_state, by, comment=""):
state_type = (prev_state or new_state).type
send_mail(request, to, settings.DEFAULT_FROM_EMAIL,
u"The %s %s has adopted %s" %
(doc.group.acronym.upper(),doc.group.type_id.upper(), doc.name),
u'The %s %s has placed %s in state "%s"' %
(doc.group.acronym.upper(),doc.group.type_id.upper(), doc.name, new_state or "None"),
'doc/mail/doc_adopted_email.txt',
dict(doc=doc,
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
@ -473,6 +473,7 @@ def email_charter_internal_review(request, charter):
ads=charter.group.role_set.filter(name='ad').values_list('person__name',flat=True),
charter_text=charter_text,
milestones=charter.group.groupmilestone_set.filter(state="charter"),
review_type = "new" if charter.group.state_id == "proposed" else "recharter",
),
cc=addrs.cc,
extra={'Reply-To':"iesg@ietf.org"},

View file

@ -103,12 +103,22 @@ class EditCharterTests(TestCase):
if slug=="intrev":
self.assertTrue("Internal WG Review" in outbox[-3]['Subject'])
self.assertTrue(all([x in outbox[-3]['To'] for x in ['iab@','iesg@']]))
self.assertTrue("A new IETF working" in outbox[-3].get_payload())
self.assertTrue("state changed" in outbox[-2]['Subject'].lower())
self.assertTrue("iesg-secretary@" in outbox[-2]['To'])
self.assertTrue("State Update Notice" in outbox[-1]['Subject'])
self.assertTrue("ames-chairs@" in outbox[-1]['To'])
# Exercise internal review of a recharter
group = Group.objects.get(acronym="mars")
charter = group.charter
url = urlreverse('charter_change_state', kwargs=dict(name=charter.name))
empty_outbox()
r = self.client.post(url, dict(charter_state=str(State.objects.get(used=True,type="charter",slug="intrev").pk), message="test"))
self.assertEqual(r.status_code, 302)
self.assertTrue("A new charter" in outbox[-3].get_payload())
def test_edit_telechat_date(self):
make_test_data()

View file

@ -1141,7 +1141,7 @@ class AdoptDraftTests(TestCase):
self.assertEqual(draft.docevent_set.count() - events_before, 5)
self.assertEqual(draft.notify,"aliens@example.mars")
self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("has adopted" in outbox[-1]["Subject"].lower())
self.assertTrue("Call For Adoption" in outbox[-1]["Subject"])
self.assertTrue("mars-chairs@ietf.org" in outbox[-1]['To'])
self.assertTrue("draft-ietf-mars-test@" in outbox[-1]['To'])
self.assertTrue("mars-wg@" in outbox[-1]['To'])

View file

@ -390,7 +390,7 @@ def search_for_group_documents(group):
for d in raw_docs_related:
parts = d.name.split("-", 2);
# canonical form draft-<name|ietf|irtf>-wg-etc
if len(parts) >= 3 and parts[1] not in ("ietf", "irtf") and parts[2].startswith(group.acronym + "-"):
if len(parts) >= 3 and parts[1] not in ("ietf", "irtf") and parts[2].startswith(group.acronym + "-") and d not in docs:
d.search_heading = "Related Internet-Draft"
docs_related.append(d)

View file

@ -52,10 +52,12 @@ def has_role(user, role_names, *args, **kwargs):
"ISE" : Q(person=person, name="chair", group__acronym="ise"),
"IAD": Q(person=person, name="admdir", group__acronym="ietf"),
"IETF Chair": Q(person=person, name="chair", group__acronym="ietf"),
"IETF Trust Chair": Q(person=person, name="chair", group__acronym="ietf-trust"),
"IRTF Chair": Q(person=person, name="chair", group__acronym="irtf"),
"IAB Chair": Q(person=person, name="chair", group__acronym="iab"),
"IAB Executive Director": Q(person=person, name="execdir", group__acronym="iab"),
"IAB Group Chair": Q(person=person, name="chair", group__type="iab", group__state="active"),
"IAOC Chair": Q(person=person, name="chair", group__acronym="iaoc"),
"WG Chair": Q(person=person,name="chair", group__type="wg", group__state__in=["active","bof", "proposed"]),
"WG Secretary": Q(person=person,name="secr", group__type="wg", group__state__in=["active","bof", "proposed"]),
"RG Chair": Q(person=person,name="chair", group__type="rg", group__state__in=["active","proposed"]),

View file

@ -37,7 +37,7 @@ from ietf.utils.log import log
# -------------------------------------------------
# Globals
# -------------------------------------------------
AUTHORIZED_ROLES=('WG Chair','WG Secretary','RG Chair','AG Secretary','IRTF Chair','IAB Group Chair','Area Director','Secretariat','Team Chair')
AUTHORIZED_ROLES=('WG Chair','WG Secretary','RG Chair','AG Secretary','IRTF Chair','IETF Trust Chair','IAB Group Chair','IAOC Chair','IAD','Area Director','Secretariat','Team Chair')
# -------------------------------------------------
# Helper Functions
# -------------------------------------------------
@ -811,7 +811,7 @@ def select(request, meeting_num):
training_form = None
# iniialize plenary form
if has_role(user,['Secretariat','IETF Chair','IAB Chair']):
if has_role(user,['Secretariat','IETF Chair','IETF Trust Chair','IAB Chair','IAOC Chair','IAD']):
ss = SchedTimeSessAssignment.objects.filter(schedule=meeting.agenda,timeslot__type='plenary')
choices = [ (i.session.id, i.session.name) for i in sorted(ss,key=lambda x: x.session.name) ]
plenary_form = GroupSelectForm(choices=choices)

View file

@ -80,7 +80,9 @@ def check_permissions(func):
# if session is plenary allow ietf/iab chairs
if session and get_timeslot(session).type.slug=='plenary':
if login.role_set.filter(name='chair',group__acronym__in=('iesg','iab')):
chair = login.role_set.filter(name='chair',group__acronym__in=('iesg','iab','ietf-trust','iaoc'))
admdir = login.role_set.filter(name='admdir',group__acronym='ietf')
if chair or admdir:
return func(request, *args, **kwargs)
# if we get here access is denied

View file

@ -104,6 +104,7 @@
{% if can_view_possibly_replaces %}
{% if possibly_replaces %}
<tr>
<th></th>
<th>Possibly Replaces</th>
<td class="edit">
{% if can_edit_replaces %}
@ -118,6 +119,7 @@
{% if possibly_replaced_by %}
<tr>
<th></th>
<th>Possibly Replaced By</th>
<td class="edit">
{% if can_edit_replaces %}

View file

@ -1,6 +1,6 @@
{% autoescape off %}{% filter wordwrap:73 %}
A new IETF working group is being considered in the {{charter.group.parent.name}}. The draft charter for this working group is provided below for your review and comment.
{% if review_type == "new" %}A new IETF working group is being considered in the {{ charter.group.parent.name }}.{% endif %}{% if review_type == "recharter" %}A new charter for the {{ charter.group.name }} ({{charter.group.acronym}}) working group in the {{ charter.group.parent.name }} of the IETF is being considered. {% endif %} The draft charter for this working group is provided below for your review and comment.
Review time is one week.

View file

@ -1,5 +1,6 @@
{% autoescape off %}{% filter wordwrap:73 %}
The {{ doc.group.acronym|upper }} {{ doc.group.type_id|upper }} has adopted {{ doc }} (entered by {{by}})
The {{ doc.group.acronym|upper }} {{ doc.group.type_id|upper }} has placed {{ doc }} in state
{{ new_state|default:'"None"'}} (entered by {{by}})
{% if prev_state %}The document was previously in state {{prev_state.name}}

View file

@ -242,7 +242,7 @@
<td>
{% if item.session.historic_group.charter %}
<a href="{{item.session.historic_group.charter.get_absolute_url}}">{{item.session.historic_group.acronym}}</a>
<a href="{% url 'group_charter' acronym=item.session.historic_group.acronym %}">{{item.session.historic_group.acronym}}</a>
{% else %}
{{item.session.historic_group.acronym}}
{% endif %}