Forward merge from trunk.
- Legacy-Id: 10423
This commit is contained in:
commit
c427d989ab
10
INSTALL
10
INSTALL
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
32
changelog
32
changelog
|
@ -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**
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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"},
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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'])
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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"]),
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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}}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in a new issue