66from django .contrib .sites .models import Site
77
88from ietf .idtracker .models import (InternetDraft , PersonOrOrgInfo , IETFWG ,
9- IDAuthor , EmailAddress , IDState )
9+ IDAuthor , EmailAddress , IESGLogin )
1010from ietf .utils .mail import send_mail
1111from ietf .idrfc .utils import add_document_comment
1212
@@ -36,32 +36,34 @@ def request_full_url(request, submission):
3636
3737def perform_post (submission ):
3838 group_id = submission .group_acronym and submission .group_acronym .pk or NONE_WG
39+ state_change_msg = ''
3940 try :
4041 draft = InternetDraft .objects .get (filename = submission .filename )
4142 draft .title = submission .id_document_name
4243 draft .group_id = group_id
4344 draft .filename = submission .filename
4445 draft .revision = submission .revision
45- draft .revision_date = submission .creation_date
46+ draft .revision_date = submission .submission_date
4647 draft .file_type = submission .file_type
4748 draft .txt_page_count = submission .txt_page_count
4849 draft .last_modified_date = datetime .date .today ()
4950 draft .abstract = submission .abstract
50- draft .status_id = 1 # Active
51- draft .expired_tombstone = 0
51+ draft .status_id = 1 # Active
52+ draft .expired_tombstone = 0
5253 draft .save ()
5354 if draft .idinternal and draft .idinternal .cur_sub_state_id == 5 and draft .idinternal .rfc_flag == 0 : # Substate 5 Revised ID Needed
5455 draft .idinternal .prev_sub_state_id = draft .idinternal .cur_sub_state_id
5556 draft .idinternal .cur_sub_state_id = 2 # Substate 2 AD Followup
5657 draft .idinternal .save ()
57- add_document_comment (None , draft , "Sub state has been changed to AD Follow up from New Id Needed" )
58+ state_change_msg = "Sub state has been changed to AD Follow up from New Id Needed"
59+ add_document_comment (None , draft , state_change_msg )
5860 except InternetDraft .DoesNotExist :
5961 draft = InternetDraft .objects .create (
6062 title = submission .id_document_name ,
6163 group_id = group_id ,
6264 filename = submission .filename ,
6365 revision = submission .revision ,
64- revision_date = submission .creation_date ,
66+ revision_date = submission .submission_date ,
6567 file_type = submission .file_type ,
6668 txt_page_count = submission .txt_page_count ,
6769 start_date = datetime .date .today (),
@@ -71,11 +73,73 @@ def perform_post(submission):
7173 intended_status_id = 8 , # None
7274 )
7375 update_authors (draft , submission )
76+ add_document_comment (None , draft , "New version available" )
7477 move_docs (submission )
7578 submission .status_id = POSTED
79+ send_announcements (submission , draft , state_change_msg )
7680 submission .save ()
7781
7882
83+ def send_announcements (submission , draft , state_change_msg ):
84+ announce_to_lists (submission )
85+ if draft .idinternal and not draft .idinternal .rfc_flag :
86+ announce_new_version (submission , draft , state_change_msg )
87+ announce_to_authors (submission )
88+
89+
90+ def announce_to_lists (submission ):
91+ subject = 'I-D Action: %s-%s.txt' % (submission .filename , submission .revision )
92+ from_email = settings .IDST_ID_EMAIL
93+ to_email = [settings .IDST_ID_ANNOUNCE_LIST ]
94+ authors = []
95+ for i in submission .tempidauthors_set .order_by ('author_order' ):
96+ if not i .author_order :
97+ continue
98+ authors .append (i .get_full_name ())
99+ if submission .group_acronym :
100+ cc = [submission .group_acronym .email_address ]
101+ else :
102+ cc = None
103+ send_mail (None , to_email , from_email , subject , 'submit/announce_to_lists.txt' ,
104+ {'submission' : submission ,
105+ 'authors' : authors }, cc = cc )
106+
107+
108+ def announce_new_version (submission , draft , state_change_msg ):
109+ to_email = []
110+ if draft .idinternal .state_change_notice_to :
111+ to_email .append (draft .idinternal .state_change_notice_to )
112+ if draft .idinternal .job_owner :
113+ to_email .append (draft .idinternal .job_owner .person .email ()[1 ])
114+ if draft .idinternal .ballot :
115+ for p in draft .idinternal .ballot .positions .all ():
116+ if p .discuss == 1 and p .ad .user_level == IESGLogin .AD_LEVEL :
117+ to_email .append (p .ad .person .email ()[1 ])
118+ subject = 'New Version Notification - %s-%s.txt' % (submission .filename , submission .revision )
119+ from_email = settings .IDST_ID_EMAIL
120+ send_mail (None , to_email , from_email , subject , 'submit/announce_new_version.txt' ,
121+ {'submission' : submission ,
122+ 'msg' : state_change_msg })
123+
124+
125+ def announce_to_authors (submission ):
126+ authors = submission .tempidauthors_set .order_by ('author_order' )
127+ cc = list (set ([i .email ()[1 ] for i in authors ]))
128+ to_email = [authors [0 ].email ()[1 ]] # First TempIdAuthor is submitter
129+ from_email = settings .IDST_ID_EMAIL
130+ subject = 'New Version Notification for %s-%s.txt' % (submission .filename , submission .revision )
131+ if submission .group_acronym :
132+ wg = submission .group_acronym .group_acronym .acronym
133+ elif submission .filename .startswith ('draft-iesg' ):
134+ wg = 'IESG'
135+ else :
136+ wg = 'Individual Submission'
137+ send_mail (None , to_email , from_email , subject , 'submit/announce_to_authors.txt' ,
138+ {'submission' : submission ,
139+ 'submitter' : authors [0 ].get_full_name (),
140+ 'wg' : wg }, cc = cc )
141+
142+
79143def find_person (first_name , last_name , middle_initial , name_suffix , email ):
80144 person_list = None
81145 if email :
0 commit comments