Merged in [12099] from rjsparks@nostrum.com:

Changes interim announcements and interim cancellation announcements to use mailtriggers. Adds irtf-announce to announcements for IRTF groups. Fixes #2018.
 - Legacy-Id: 12100
Note: SVN reference [12099] has been migrated to Git commit 5b32cc2da7
This commit is contained in:
Henrik Levkowetz 2016-10-07 15:30:43 +00:00
commit 269226a486
6 changed files with 203 additions and 73 deletions

View file

@ -1,3 +1,29 @@
ietfdb (6.34.3) ietf; urgency=medium
* Merged in [12082] from rcross@amsl.com:
Fixed an issue where interim meeting request form didn't list research
groups when the logged-in user was both a working group chair and a
research group chair.
* Made it possible to merge nominations with inactive email addresses.
By default the SearchableEmail form field only displays active email
addresses, but this use case needs all known email addresses.
* Fixed inclusion of tablesorter css and js for use when displaying the
SQL query list in development mode.
* Added admin support for the DocumentAuthor model.
* Fixed a place where email addresses which were not all lowercase could
slip in, which messed up some reverse table relationships. (This was
found by running our check_referential_integrity management command.)
* Fixed a problem with the error message text for the nominee email edit
form.
-- Henrik Levkowetz <henrik@levkowetz.com> 05 Oct 2016 11:56:01 -0700
ietfdb (6.34.2) ietf; urgency=medium ietfdb (6.34.2) ietf; urgency=medium
**Draft submission and document DOI fixes** **Draft submission and document DOI fixes**

View file

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
def forward(apps, schema_editor):
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
Recipient=apps.get_model('mailtrigger','Recipient')
Recipient.objects.create(
slug='group_stream_announce',
desc="The group's stream's announce list",
template="{% if group.type_id == 'wg' %}IETF-Announce <ietf-announce@ietf.org>{% elif group.type_id == 'rg' %}IRTF-Announce <irtf-announce@irtf.org>{% endif %}"
)
annc = MailTrigger.objects.create(
slug='interim_announced',
desc='Recipients when an interim meeting is announced',
)
annc.to = Recipient.objects.filter(slug__in=['ietf_announce','stream_announce'])
annc.cc = Recipient.objects.filter(slug__in=['group_mail_list',])
annc = MailTrigger.objects.create(
slug='interim_cancelled',
desc='Recipients when an interim meeting is cancelled',
)
annc.to = Recipient.objects.filter(slug__in=['ietf_announce','stream_aanounce'])
annc.cc = Recipient.objects.filter(slug__in=['group_chairs','group_mail_list','logged_in_person'])
def reverse(apps, schema_editor):
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
Recipient=apps.get_model('mailtrigger','Recipient')
MailTrigger.objects.filter(slug__in=['interim_announced','interim_cancelled']).delete()
Recipient.objects.filter(slug='group_stream_announce').delete()
class Migration(migrations.Migration):
dependencies = [
('mailtrigger', '0006_auto_20160707_1933'),
]
operations = [
migrations.RunPython(forward,reverse),
]

View file

@ -409,8 +409,7 @@ def get_announcement_initial(meeting, is_change=False):
group = meeting.session_set.first().group group = meeting.session_set.first().group
in_person = bool(meeting.city) in_person = bool(meeting.city)
initial = {} initial = {}
initial['to'] = settings.INTERIM_ANNOUNCE_TO_EMAIL (initial['to'],initial['cc']) = gather_address_lists('interim_announced',group=group)
initial['cc'] = group.list_email
initial['frm'] = settings.INTERIM_ANNOUNCE_FROM_EMAIL initial['frm'] = settings.INTERIM_ANNOUNCE_FROM_EMAIL
if in_person: if in_person:
desc = 'Interim' desc = 'Interim'
@ -585,8 +584,7 @@ def send_interim_cancellation_notice(meeting):
"""Sends an email that a scheduled interim meeting has been cancelled.""" """Sends an email that a scheduled interim meeting has been cancelled."""
session = meeting.session_set.first() session = meeting.session_set.first()
group = session.group group = session.group
to_email = settings.INTERIM_ANNOUNCE_TO_EMAIL (to_email, cc_list) = gather_address_lists('interim_cancelled',group=group)
(_, cc_list) = gather_address_lists('session_request_cancelled',group=group)
from_email = settings.INTERIM_ANNOUNCE_FROM_EMAIL from_email = settings.INTERIM_ANNOUNCE_FROM_EMAIL
subject = '{group} ({acronym}) {type} Interim Meeting Cancelled (was {date})'.format( subject = '{group} ({acronym}) {type} Interim Meeting Cancelled (was {date})'.format(
group=group.name, group=group.name,

View file

@ -47,7 +47,7 @@ def make_meeting_test_data(meeting=None):
room = Room.objects.create(meeting=meeting, name="Test Room", capacity=123, functional_name="Testing Ground") room = Room.objects.create(meeting=meeting, name="Test Room", capacity=123, functional_name="Testing Ground")
room.session_types.add("session") room.session_types.add("session")
room.resources.add(projector) room.resources.add(projector)
asname = RoomResourceName.objects.create(name='Audio Stream', slug='audiostream') asname = RoomResourceName.objects.get(slug='audiostream')
UrlResource.objects.create(name=asname, room=room, url='http://ietf{number}streaming.dnsalias.net/ietf/ietf{number}1.m3u'.format(number=meeting.number)) UrlResource.objects.create(name=asname, room=room, url='http://ietf{number}streaming.dnsalias.net/ietf/ietf{number}1.m3u'.format(number=meeting.number))
# another room # another room

View file

@ -197,9 +197,9 @@
{ {
"fields": { "fields": {
"order": 0, "order": 0,
"revname": "Normatively Referenced by", "revname": "is normatively referenced by",
"used": true, "used": true,
"name": "Normative Reference", "name": "normatively references",
"desc": "Normative Reference" "desc": "Normative Reference"
}, },
"model": "name.docrelationshipname", "model": "name.docrelationshipname",
@ -219,9 +219,9 @@
{ {
"fields": { "fields": {
"order": 0, "order": 0,
"revname": "Informatively Referenced by", "revname": "is informatively referenced by",
"used": true, "used": true,
"name": "Informative Reference", "name": "informatively references",
"desc": "Informative Reference" "desc": "Informative Reference"
}, },
"model": "name.docrelationshipname", "model": "name.docrelationshipname",
@ -816,7 +816,7 @@
"posted" "posted"
], ],
"used": true, "used": true,
"name": "Awaiting Approval from Previous Version Authors'", "name": "Awaiting Approval from Previous Version Authors",
"desc": "" "desc": ""
}, },
"model": "name.draftsubmissionstatename", "model": "name.draftsubmissionstatename",
@ -1060,6 +1060,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Internet Engineering Task Force",
"name": "IETF", "name": "IETF",
"desc": "" "desc": ""
}, },
@ -1070,6 +1071,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Area",
"name": "Area", "name": "Area",
"desc": "" "desc": ""
}, },
@ -1080,6 +1082,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Area Group",
"name": "AG", "name": "AG",
"desc": "Area group" "desc": "Area group"
}, },
@ -1090,6 +1093,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Working Group",
"name": "WG", "name": "WG",
"desc": "Working group" "desc": "Working group"
}, },
@ -1100,6 +1104,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Research Group",
"name": "RG", "name": "RG",
"desc": "Research group" "desc": "Research group"
}, },
@ -1110,6 +1115,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Team",
"name": "Team", "name": "Team",
"desc": "" "desc": ""
}, },
@ -1120,6 +1126,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "An Individual",
"name": "Individual", "name": "Individual",
"desc": "" "desc": ""
}, },
@ -1130,6 +1137,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Standards Organization",
"name": "SDO", "name": "SDO",
"desc": "Standards organization" "desc": "Standards organization"
}, },
@ -1140,6 +1148,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Internet Research Task Force",
"name": "IRTF", "name": "IRTF",
"desc": "" "desc": ""
}, },
@ -1150,6 +1159,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "The RFC Editor",
"name": "RFC Editor", "name": "RFC Editor",
"desc": "" "desc": ""
}, },
@ -1160,6 +1170,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "IETF/IAB Nominating Committee",
"name": "Nomcom", "name": "Nomcom",
"desc": "An IETF/IAB Nominating Committee. Use 'SDO' for external nominating committees." "desc": "An IETF/IAB Nominating Committee. Use 'SDO' for external nominating committees."
}, },
@ -1170,6 +1181,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Internet Architecture Board",
"name": "IAB", "name": "IAB",
"desc": "" "desc": ""
}, },
@ -1180,6 +1192,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "The Internet Society",
"name": "ISOC", "name": "ISOC",
"desc": "" "desc": ""
}, },
@ -1190,6 +1203,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"verbose_name": "Area Directorate",
"name": "Directorate", "name": "Directorate",
"desc": "In many areas, the Area Directors have formed an advisory group or directorate. These comprise experienced members of the IETF and the technical community represented by the area. The specific name and the details of the role for each group differ from area to area, but the primary intent is that these groups assist the Area Director(s), e.g., with the review of specifications produced in the area." "desc": "In many areas, the Area Directors have formed an advisory group or directorate. These comprise experienced members of the IETF and the technical community represented by the area. The specific name and the details of the role for each group differ from area to area, but the primary intent is that these groups assist the Area Director(s), e.g., with the review of specifications produced in the area."
}, },
@ -1980,7 +1994,7 @@
"fields": { "fields": {
"order": 0, "order": 0,
"used": true, "used": true,
"name": "Meetecho Remote Partition Support", "name": "Meetecho Support",
"desc": "The room will have a meetecho wrangler" "desc": "The room will have a meetecho wrangler"
}, },
"model": "name.roomresourcename", "model": "name.roomresourcename",
@ -1996,6 +2010,16 @@
"model": "name.roomresourcename", "model": "name.roomresourcename",
"pk": "boardroom" "pk": "boardroom"
}, },
{
"fields": {
"order": 0,
"used": true,
"name": "Audio Stream",
"desc": "Audio streaming support"
},
"model": "name.roomresourcename",
"pk": "audiostream"
},
{ {
"fields": { "fields": {
"order": 0, "order": 0,
@ -2036,16 +2060,6 @@
"model": "name.sessionstatusname", "model": "name.sessionstatusname",
"pk": "sched" "pk": "sched"
}, },
{
"fields": {
"order": 0,
"used": true,
"name": "Scheduled - Announcement to be sent",
"desc": ""
},
"model": "name.sessionstatusname",
"pk": "scheda"
},
{ {
"fields": { "fields": {
"order": 0, "order": 0,
@ -2056,16 +2070,6 @@
"model": "name.sessionstatusname", "model": "name.sessionstatusname",
"pk": "canceled" "pk": "canceled"
}, },
{
"fields": {
"order": 0,
"used": true,
"name": "Cancelled - Pre Announcement",
"desc": ""
},
"model": "name.sessionstatusname",
"pk": "canceledpa"
},
{ {
"fields": { "fields": {
"order": 0, "order": 0,
@ -2096,6 +2100,26 @@
"model": "name.sessionstatusname", "model": "name.sessionstatusname",
"pk": "deleted" "pk": "deleted"
}, },
{
"fields": {
"order": 0,
"used": true,
"name": "Scheduled - Announcement to be sent",
"desc": ""
},
"model": "name.sessionstatusname",
"pk": "scheda"
},
{
"fields": {
"order": 0,
"used": true,
"name": "Cancelled - Pre Announcement",
"desc": ""
},
"model": "name.sessionstatusname",
"pk": "canceledpa"
},
{ {
"fields": { "fields": {
"order": 0, "order": 0,
@ -4693,14 +4717,6 @@
"model": "mailtrigger.recipient", "model": "mailtrigger.recipient",
"pk": "group_chairs" "pk": "group_chairs"
}, },
{
"fields": {
"template": null,
"desc": "The group's secretaries"
},
"model": "mailtrigger.recipient",
"pk": "group_secretaries"
},
{ {
"fields": { "fields": {
"template": "{{ changed_personnel | join:\", \" }}", "template": "{{ changed_personnel | join:\", \" }}",
@ -4725,6 +4741,14 @@
"model": "mailtrigger.recipient", "model": "mailtrigger.recipient",
"pk": "group_responsible_directors" "pk": "group_responsible_directors"
}, },
{
"fields": {
"template": null,
"desc": "The group's secretaries"
},
"model": "mailtrigger.recipient",
"pk": "group_secretaries"
},
{ {
"fields": { "fields": {
"template": null, "template": null,
@ -4733,6 +4757,14 @@
"model": "mailtrigger.recipient", "model": "mailtrigger.recipient",
"pk": "group_steering_group" "pk": "group_steering_group"
}, },
{
"fields": {
"template": "{% if group.stream_id == 'ietf' %}IETF-Announce <ietf-announce@ietf.org>{% elif group.stream_id == 'irtf' %}IRTF-Announce <irtf-announce@irtf.org>{% endif %}",
"desc": "The group's stream's announce list"
},
"model": "mailtrigger.recipient",
"pk": "group_stream_announce"
},
{ {
"fields": { "fields": {
"template": "The IAB <iab@iab.org>", "template": "The IAB <iab@iab.org>",
@ -4917,14 +4949,6 @@
"model": "mailtrigger.recipient", "model": "mailtrigger.recipient",
"pk": "logged_in_person" "pk": "logged_in_person"
}, },
{
"fields": {
"template": "<ietf-manualpost@ietf.org>",
"desc": "IETF manual post handling"
},
"model": "mailtrigger.recipient",
"pk": "submission_manualpost_handling"
},
{ {
"fields": { "fields": {
"template": "<new-work@ietf.org>", "template": "<new-work@ietf.org>",
@ -5029,6 +5053,14 @@
"model": "mailtrigger.recipient", "model": "mailtrigger.recipient",
"pk": "submission_group_mail_list" "pk": "submission_group_mail_list"
}, },
{
"fields": {
"template": "<ietf-manualpost@ietf.org>",
"desc": "IETF manual post handling"
},
"model": "mailtrigger.recipient",
"pk": "submission_manualpost_handling"
},
{ {
"fields": { "fields": {
"template": "{{submission.submitter}}", "template": "{{submission.submitter}}",
@ -5528,6 +5560,45 @@
"model": "mailtrigger.mailtrigger", "model": "mailtrigger.mailtrigger",
"pk": "group_personnel_change" "pk": "group_personnel_change"
}, },
{
"fields": {
"cc": [
"group_mail_list"
],
"to": [
"ietf_announce"
],
"desc": "Recipients when an interim meeting is announced"
},
"model": "mailtrigger.mailtrigger",
"pk": "interim_announced"
},
{
"fields": {
"cc": [],
"to": [
"iesg_secretary"
],
"desc": "Recipients when an interim meeting is approved and an announcement needs to be sent"
},
"model": "mailtrigger.mailtrigger",
"pk": "interim_approved"
},
{
"fields": {
"cc": [
"group_chairs",
"group_mail_list",
"logged_in_person"
],
"to": [
"ietf_announce"
],
"desc": "Recipients when an interim meeting is cancelled"
},
"model": "mailtrigger.mailtrigger",
"pk": "interim_cancelled"
},
{ {
"fields": { "fields": {
"cc": [], "cc": [],
@ -5854,6 +5925,20 @@
"model": "mailtrigger.mailtrigger", "model": "mailtrigger.mailtrigger",
"pk": "resurrection_requested" "pk": "resurrection_requested"
}, },
{
"fields": {
"cc": [
"group_responsible_directors"
],
"to": [
"group_chairs",
"group_secretaries"
],
"desc": "Recipients when a group is sent a reminder to submit minutes for a session"
},
"model": "mailtrigger.mailtrigger",
"pk": "session_minutes_reminder"
},
{ {
"fields": { "fields": {
"cc": [ "cc": [
@ -5932,20 +6017,6 @@
"model": "mailtrigger.mailtrigger", "model": "mailtrigger.mailtrigger",
"pk": "session_scheduled" "pk": "session_scheduled"
}, },
{
"fields": {
"cc": [
"group_responsible_directors"
],
"to": [
"group_chairs",
"group_secretaries"
],
"desc": "Recipients when a group is sent a reminder to submit minutes for a session"
},
"model": "mailtrigger.mailtrigger",
"pk": "session_minutes_reminder"
},
{ {
"fields": { "fields": {
"cc": [ "cc": [
@ -6033,16 +6104,5 @@
}, },
"model": "mailtrigger.mailtrigger", "model": "mailtrigger.mailtrigger",
"pk": "sub_new_version" "pk": "sub_new_version"
},
{
"fields": {
"cc": [],
"to": [
"iesg_secretary"
],
"desc": "Recipients when an interim meeting is approved and an announcement needs to be sent"
},
"model": "mailtrigger.mailtrigger",
"pk": "interim_approved"
} }
] ]

View file

@ -516,7 +516,6 @@ IDSUBMIT_ANNOUNCE_LIST_EMAIL = 'i-d-announce@ietf.org'
# Interim Meeting Tool settings # Interim Meeting Tool settings
INTERIM_ANNOUNCE_FROM_EMAIL = 'IESG Secretary <iesg-secretary@ietf.org>' INTERIM_ANNOUNCE_FROM_EMAIL = 'IESG Secretary <iesg-secretary@ietf.org>'
INTERIM_ANNOUNCE_TO_EMAIL = 'IETF Announcement List <ietf-announce@ietf.org>'
# Days from meeting to day of cut off dates on submit -- cutoff_time_utc is added to this # Days from meeting to day of cut off dates on submit -- cutoff_time_utc is added to this
IDSUBMIT_DEFAULT_CUTOFF_DAY_OFFSET_00 = 13 IDSUBMIT_DEFAULT_CUTOFF_DAY_OFFSET_00 = 13