diff --git a/ietf/settings.py b/ietf/settings.py index 2caf8d3f6..09f582d66 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -191,6 +191,8 @@ LIAISON_ATTACH_URL = '/documents/LIAISON/' # ID Submission Tool settings IDST_FROM_EMAIL = 'IETF I-D Submission Tool ' IDST_TO_EMAIL = 'internet-drafts@ietf.org' +IDST_ID_EMAIL = 'Internet-Drafts@ietf.org' +IDST_ID_ANNOUNCE_LIST = 'i-d-announce@ietf.org' # Days from meeting to cut off dates on submit FIRST_CUTOFF_DAYS = 5 diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 757b3a5f7..af522d5e9 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -6,7 +6,7 @@ from django.conf import settings from django.contrib.sites.models import Site from ietf.idtracker.models import (InternetDraft, PersonOrOrgInfo, IETFWG, - IDAuthor, EmailAddress, IDState) + IDAuthor, EmailAddress, IESGLogin) from ietf.utils.mail import send_mail from ietf.idrfc.utils import add_document_comment @@ -36,32 +36,34 @@ def request_full_url(request, submission): def perform_post(submission): group_id = submission.group_acronym and submission.group_acronym.pk or NONE_WG + state_change_msg = '' try: draft = InternetDraft.objects.get(filename=submission.filename) draft.title = submission.id_document_name draft.group_id = group_id draft.filename = submission.filename draft.revision = submission.revision - draft.revision_date = submission.creation_date + draft.revision_date = submission.submission_date draft.file_type = submission.file_type draft.txt_page_count = submission.txt_page_count draft.last_modified_date = datetime.date.today() draft.abstract = submission.abstract - draft.status_id=1 # Active - draft.expired_tombstone=0 + draft.status_id = 1 # Active + draft.expired_tombstone = 0 draft.save() if draft.idinternal and draft.idinternal.cur_sub_state_id == 5 and draft.idinternal.rfc_flag == 0: # Substate 5 Revised ID Needed draft.idinternal.prev_sub_state_id = draft.idinternal.cur_sub_state_id draft.idinternal.cur_sub_state_id = 2 # Substate 2 AD Followup draft.idinternal.save() - add_document_comment(None, draft, "Sub state has been changed to AD Follow up from New Id Needed") + state_change_msg = "Sub state has been changed to AD Follow up from New Id Needed" + add_document_comment(None, draft, state_change_msg) except InternetDraft.DoesNotExist: draft = InternetDraft.objects.create( title=submission.id_document_name, group_id=group_id, filename=submission.filename, revision=submission.revision, - revision_date=submission.creation_date, + revision_date=submission.submission_date, file_type=submission.file_type, txt_page_count=submission.txt_page_count, start_date=datetime.date.today(), @@ -71,11 +73,73 @@ def perform_post(submission): intended_status_id=8, # None ) update_authors(draft, submission) + add_document_comment(None, draft, "New version available") move_docs(submission) submission.status_id = POSTED + send_announcements(submission, draft, state_change_msg) submission.save() +def send_announcements(submission, draft, state_change_msg): + announce_to_lists(submission) + if draft.idinternal and not draft.idinternal.rfc_flag: + announce_new_version(submission, draft, state_change_msg) + announce_to_authors(submission) + + +def announce_to_lists(submission): + subject = 'I-D Action: %s-%s.txt' % (submission.filename, submission.revision) + from_email = settings.IDST_ID_EMAIL + to_email = [settings.IDST_ID_ANNOUNCE_LIST] + authors = [] + for i in submission.tempidauthors_set.order_by('author_order'): + if not i.author_order: + continue + authors.append(i.get_full_name()) + if submission.group_acronym: + cc = [submission.group_acronym.email_address] + else: + cc = None + send_mail(None, to_email, from_email, subject, 'submit/announce_to_lists.txt', + {'submission': submission, + 'authors': authors}, cc=cc) + + +def announce_new_version(submission, draft, state_change_msg): + to_email = [] + if draft.idinternal.state_change_notice_to: + to_email.append(draft.idinternal.state_change_notice_to) + if draft.idinternal.job_owner: + to_email.append(draft.idinternal.job_owner.person.email()[1]) + if draft.idinternal.ballot: + for p in draft.idinternal.ballot.positions.all(): + if p.discuss == 1 and p.ad.user_level == IESGLogin.AD_LEVEL: + to_email.append(p.ad.person.email()[1]) + subject = 'New Version Notification - %s-%s.txt' % (submission.filename, submission.revision) + from_email = settings.IDST_ID_EMAIL + send_mail(None, to_email, from_email, subject, 'submit/announce_new_version.txt', + {'submission': submission, + 'msg': state_change_msg}) + + +def announce_to_authors(submission): + authors = submission.tempidauthors_set.order_by('author_order') + cc = list(set([i.email()[1] for i in authors])) + to_email = [authors[0].email()[1]] # First TempIdAuthor is submitter + from_email = settings.IDST_ID_EMAIL + subject = 'New Version Notification for %s-%s.txt' % (submission.filename, submission.revision) + if submission.group_acronym: + wg = submission.group_acronym.group_acronym.acronym + elif submission.filename.startswith('draft-iesg'): + wg = 'IESG' + else: + wg = 'Individual Submission' + send_mail(None, to_email, from_email, subject, 'submit/announce_to_authors.txt', + {'submission': submission, + 'submitter': authors[0].get_full_name(), + 'wg': wg}, cc=cc) + + def find_person(first_name, last_name, middle_initial, name_suffix, email): person_list = None if email: diff --git a/ietf/templates/submit/announce_new_version.txt b/ietf/templates/submit/announce_new_version.txt new file mode 100644 index 000000000..5ea098a2c --- /dev/null +++ b/ietf/templates/submit/announce_new_version.txt @@ -0,0 +1,8 @@ +New version (-{{ submission.revision }}) has been submitted for {{ submission.filename }}-{{ submission.revision }}.txt. +http://www.ietf.org/internet-drafts/{{ submission.filename }}-{{ submission.revision }}.txt +{{ msg }} + +Diff from previous version: +http://tools.ietf.org/rfcdiff?url2={{ submission.filename }}-{{ submission.revision }} + +IETF Secretariat. diff --git a/ietf/templates/submit/announce_to_authors.txt b/ietf/templates/submit/announce_to_authors.txt new file mode 100644 index 000000000..b6f4c8878 --- /dev/null +++ b/ietf/templates/submit/announce_to_authors.txt @@ -0,0 +1,15 @@ +A new version of I-D, {{ submission.filename }}-{{ submission.revision }}.txt has been successfully submitted by {{ submitter }} and posted to the IETF repository. + +Filename: {{ submission.filename }} +Revision: {{ submission.revision }} +Title: {{ submission.id_document_name }} +Creation date: {{ submission.creation_date|date:"Y-m-d" }} +WG ID: {{ wg }} +Number of pages: {{ submission.txt_page_count }} + +Abstract: +{{ submission.abstract }} + +{{ submission.comment_to_sec|default:"" }} + +The IETF Secretariat diff --git a/ietf/templates/submit/announce_to_lists.txt b/ietf/templates/submit/announce_to_lists.txt new file mode 100644 index 000000000..6b4dca129 --- /dev/null +++ b/ietf/templates/submit/announce_to_lists.txt @@ -0,0 +1,19 @@ +A New Internet-Draft is available from the on-line Internet-Drafts directories.{% if submission.group_acronym %} This draft is a work item of the {{ submission.group_acronym.group_acronym.name }} Working Group of the IETF.{% endif %} + + Title : {{ submission.id_document_name }} + Author(s) : {% for author in authors %}{{ author }}{% if not forloop.last %} + {% endif %}{% endfor %} + Filename : {{ submission.filename }}-{{ submission.revision }}.txt + Pages : {{ submission.txt_page_count }} + Date : {{ submission.submission_date|date:"Y-m-d" }} + +{{ submission.abstract }} + +A URL for this Internet-Draft is: +http://www.ietf.org/internet-drafts/{{ submission.filename }}-{{ submission.revision }}.txt + +Internet-Drafts are also available by anonymous FTP at: +ftp://ftp.ietf.org/internet-drafts/ + +This Internet-Draft can be retrieved at: +ftp://ftp.ietf.org/internet-drafts/{{ submission.filename }}-{{ submission.revision }}.txt