Merged in [15114] from rjsparks@nostrum.com:
Restored a test that was unintentionally removed. Removed unused templates. Related to #2513. Merged in [15113] from rjsparks@nostrum.com: Removed the already disabled \'Make RFC\' functionality from /secr/drafts. Fixes #2513. Merged in [15112] from rjsparks@nostrum.com: Removed the \'announce\' functionality from /secr/drafts. Addresses part of #2513. - Legacy-Id: 15121 Note: SVN reference [15112] has been migrated to Git commit82681b28dd
Note: SVN reference [15113] has been migrated to Git commit7d2ac8306e
Note: SVN reference [15114] has been migrated to Git commitf64bf957f3
This commit is contained in:
commit
b768c59069
|
@ -1,7 +1,6 @@
|
|||
import datetime
|
||||
import glob
|
||||
import os
|
||||
import time
|
||||
|
||||
from django.conf import settings
|
||||
from django.template.loader import render_to_string
|
||||
|
@ -173,13 +172,11 @@ def get_fullcc_list(draft):
|
|||
def get_email_initial(draft, action=None, input=None):
|
||||
"""
|
||||
Takes a draft object, a string representing the email type:
|
||||
(extend,new,replace,resurrect,revision,update,withdraw) and
|
||||
a dictonary of the action form input data (for use with replace, update, extend).
|
||||
(extend,resurrect,revision,update,withdraw) and
|
||||
a dictonary of the action form input data (for use with update, extend).
|
||||
Returns a dictionary containing initial field values for a email notification.
|
||||
The dictionary consists of to, cc, subject, body.
|
||||
|
||||
NOTE: for type=new we are listing all authors in the message body to match legacy app.
|
||||
It appears datatracker abbreviates the list with "et al".
|
||||
"""
|
||||
expiration_date = (datetime.date.today() + datetime.timedelta(185)).strftime('%B %d, %Y')
|
||||
new_revision = str(int(draft.rev)+1).zfill(2)
|
||||
|
@ -196,33 +193,6 @@ def get_email_initial(draft, action=None, input=None):
|
|||
data['body'] = render_to_string('drafts/message_extend.txt', context)
|
||||
data['expiration_date'] = input['expiration_date']
|
||||
|
||||
elif action == 'new':
|
||||
# if the ID belongs to a group other than "none" add line to message body
|
||||
if draft.group.type.slug == 'wg':
|
||||
wg_message = 'This draft is a work item of the %s Working Group of the IETF.' % draft.group.name
|
||||
else:
|
||||
wg_message = ''
|
||||
context = {'wg_message':wg_message,
|
||||
'draft':draft,
|
||||
'authors':get_abbr_authors(draft),
|
||||
'revision_date':draft.latest_event(type='new_revision').time.date(),
|
||||
'timestamp':time.strftime("%Y-%m-%d%H%M%S", time.localtime())}
|
||||
data['to'] = 'i-d-announce@ietf.org'
|
||||
data['cc'] = draft.group.list_email
|
||||
data['subject'] = 'I-D Action: %s' % (curr_filename)
|
||||
data['body'] = render_to_string('drafts/message_new.txt', context)
|
||||
|
||||
elif action == 'replace':
|
||||
'''
|
||||
input['replaced'] is a DocAlias
|
||||
input['replaced_by'] is a Document
|
||||
'''
|
||||
context = {'doc':input['replaced'],'replaced_by':input['replaced_by']}
|
||||
data['subject'] = 'Replacement of %s with %s' % (input['replaced'],input['replaced_by'])
|
||||
data['body'] = render_to_string('drafts/message_replace.txt', context)
|
||||
data['replaced'] = input['replaced']
|
||||
data['replaced_by'] = input['replaced_by']
|
||||
|
||||
elif action == 'resurrect':
|
||||
last_revision = get_last_revision(draft.name)
|
||||
last_filename = draft.name + '-' + last_revision + '.txt'
|
||||
|
|
|
@ -74,23 +74,16 @@ class SecrDraftsTestCase(TestCase):
|
|||
response = self.client.post(url,post)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
def test_announce(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('ietf.secr.drafts.views.announce', kwargs={'id':draft.name})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
def test_approvals(self):
|
||||
make_test_data()
|
||||
Preapproval.objects.create(name='draft-dummy',
|
||||
by=Person.objects.get(name="(System)"))
|
||||
url = urlreverse('ietf.secr.drafts.views.approvals')
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue('draft-dummy' in response.content)
|
||||
|
||||
def test_approvals(self):
|
||||
make_test_data()
|
||||
Preapproval.objects.create(name='draft-dummy',
|
||||
by=Person.objects.get(name="(System)"))
|
||||
url = urlreverse('ietf.secr.drafts.views.approvals')
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue('draft-dummy' in response.content)
|
||||
|
||||
def test_edit(self):
|
||||
draft = make_test_data()
|
||||
url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name})
|
||||
|
|
|
@ -10,7 +10,6 @@ urlpatterns = [
|
|||
url(r'^nudge-report/$', views.nudge_report),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/$', views.view),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/abstract/$', views.abstract),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/announce/$', views.announce),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/authors/$', views.authors),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/author_delete/(?P<oid>\d{1,6})$', views.author_delete),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/confirm/$', views.confirm),
|
||||
|
@ -18,7 +17,6 @@ urlpatterns = [
|
|||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/edit/$', views.edit),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/extend/$', views.extend),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/email/$', views.email),
|
||||
# url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/makerfc/$', views.makerfc), # Not used any more
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/revision/$', views.revision),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/update/$', views.update),
|
||||
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/withdraw/$', views.withdraw),
|
||||
|
|
|
@ -480,31 +480,6 @@ def add(request):
|
|||
'upload_form': upload_form},
|
||||
)
|
||||
|
||||
@role_required('Secretariat')
|
||||
def announce(request, id):
|
||||
'''
|
||||
Schedule announcement of new Internet-Draft to I-D Announce list
|
||||
|
||||
**Templates:**
|
||||
|
||||
* none
|
||||
|
||||
**Template Variables:**
|
||||
|
||||
* none
|
||||
'''
|
||||
draft = get_object_or_404(Document, name=id)
|
||||
|
||||
email_form = EmailForm(get_email_initial(draft,action='new'))
|
||||
|
||||
announcement_from_form(email_form.data,
|
||||
by=request.user.person,
|
||||
from_val='Internet-Drafts@ietf.org',
|
||||
content_type='Multipart/Mixed; Boundary="NextPart"')
|
||||
|
||||
messages.success(request, 'Announcement scheduled successfully!')
|
||||
return redirect('ietf.secr.drafts.views.view', id=id)
|
||||
|
||||
@role_required('Secretariat')
|
||||
def approvals(request):
|
||||
'''
|
||||
|
@ -771,85 +746,6 @@ def extend(request, id):
|
|||
'draft': draft},
|
||||
)
|
||||
|
||||
# @role_required('Secretariat')
|
||||
# def makerfc(request, id):
|
||||
# '''
|
||||
# Make RFC out of Internet Draft
|
||||
#
|
||||
# **Templates:**
|
||||
#
|
||||
# * ``drafts/makerfc.html``
|
||||
#
|
||||
# **Template Variables:**
|
||||
#
|
||||
# * draft
|
||||
# '''
|
||||
# from ietf.utils import log
|
||||
# log.unreachable("2017-07-08")
|
||||
#
|
||||
# draft = get_object_or_404(Document, name=id)
|
||||
#
|
||||
# # raise error if draft intended standard is empty
|
||||
# if not draft.intended_std_level:
|
||||
# messages.error(request, 'ERROR: intended RFC status is not set')
|
||||
# return redirect('ietf.secr.drafts.views.view', id=id)
|
||||
#
|
||||
# ObsFormset = formset_factory(RfcObsoletesForm, extra=15, max_num=15)
|
||||
# if request.method == 'POST':
|
||||
# button_text = request.POST.get('submit', '')
|
||||
# if button_text == 'Cancel':
|
||||
# return redirect('ietf.secr.drafts.views.view', id=id)
|
||||
#
|
||||
# form = RfcModelForm(request.POST, instance=draft)
|
||||
# obs_formset = ObsFormset(request.POST, prefix='obs')
|
||||
# if form.is_valid() and obs_formset.is_valid():
|
||||
#
|
||||
# # TODO
|
||||
# archive_draft_files(draft.name + '-' + draft.rev)
|
||||
#
|
||||
# rfc = form.save(commit=False)
|
||||
#
|
||||
# # create DocEvent
|
||||
# e = DocEvent.objects.create(type='published_rfc',
|
||||
# by=request.user.person,
|
||||
# doc=rfc,
|
||||
# rev=draft.rev,
|
||||
# desc="Published RFC")
|
||||
#
|
||||
# # change state
|
||||
# draft.set_state(State.objects.get(type="draft", slug="rfc"))
|
||||
#
|
||||
# # handle rfc_obsoletes formset
|
||||
# # NOTE: because we are just adding RFCs in this form we don't need to worry
|
||||
# # about the previous state of the obs forms
|
||||
# for obs_form in obs_formset.forms:
|
||||
# if obs_form.has_changed():
|
||||
# rfc_acted_on = obs_form.cleaned_data.get('rfc','')
|
||||
# target = DocAlias.objects.get(name="rfc%s" % rfc_acted_on)
|
||||
# relation = obs_form.cleaned_data.get('relation','')
|
||||
# if rfc and relation:
|
||||
# # form validation ensures the rfc_acted_on exists, can safely use get
|
||||
# RelatedDocument.objects.create(source=draft,
|
||||
# target=target,
|
||||
# relationship=DocRelationshipName.objects.get(slug=relation))
|
||||
#
|
||||
# rfc.save_with_history([e])
|
||||
#
|
||||
# messages.success(request, 'RFC created successfully!')
|
||||
# return redirect('ietf.secr.drafts.views.view', id=id)
|
||||
# else:
|
||||
# # assert False, (form.errors, obs_formset.errors)
|
||||
# pass
|
||||
# else:
|
||||
# form = RfcModelForm(instance=draft)
|
||||
# obs_formset = ObsFormset(prefix='obs')
|
||||
#
|
||||
# return render(request, 'drafts/makerfc.html', {
|
||||
# 'form': form,
|
||||
# 'obs_formset': obs_formset,
|
||||
# 'draft': draft},
|
||||
# )
|
||||
|
||||
@role_required('Secretariat')
|
||||
def nudge_report(request):
|
||||
'''
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
--NextPart
|
||||
|
||||
A new Internet-Draft is available from the on-line Internet-Drafts directories.
|
||||
{{ wg_message }}
|
||||
|
||||
Title : {{ draft.title }}
|
||||
Author(s) : {{ authors }}
|
||||
Filename : {{ draft.name }}
|
||||
Pages : {{ draft.pages }}
|
||||
Date : {{ revision_date }}
|
||||
|
||||
{% autoescape off %}
|
||||
{{ draft.abstract }}
|
||||
{% endautoescape %}
|
||||
|
||||
A URL for this Internet-Draft is:
|
||||
https://www.ietf.org/internet-drafts/{{ draft.filename_with_rev }}
|
||||
|
||||
Internet-Drafts are also available by anonymous FTP at:
|
||||
ftp://ftp.ietf.org/internet-drafts/
|
||||
|
||||
Below is the data which will enable a MIME compliant mail reader
|
||||
implementation to automatically retrieve the ASCII version of the
|
||||
Internet-Draft.
|
||||
|
||||
--NextPart
|
||||
Content-Type: Message/External-body;
|
||||
name="{{ draft.name }}";
|
||||
site="ftp.ietf.org";
|
||||
access-type="anon-ftp";
|
||||
directory="internet-drafts"
|
||||
|
||||
Content-Type: text/plain
|
||||
Content-ID: <{{ timestamp }}.I-D@ietf.org>
|
||||
|
||||
--NextPart--
|
|
@ -1,4 +0,0 @@
|
|||
As you requested, {{ doc }} has been marked as replaced by
|
||||
{{ replaced_by }} in the IETF Internet-Drafts database.
|
||||
|
||||
IETF Secretariat.
|
|
@ -85,8 +85,6 @@
|
|||
<li><button {% if is_expired or is_withdrawn %}{% else %}disabled="disabled"{% endif %}onclick="window.location='{% url "ietf.secr.drafts.views.email" id=draft.name %}?action=resurrect'">Resurrect</button></li>
|
||||
<li><button {% if is_active %}{% else %}disabled="disabled"{% endif %}onclick="window.location='extend/'">Extend Expiry</button></li>
|
||||
<li><button {% if is_active %}{% else %}disabled="disabled"{% endif %}onclick="window.location='withdraw/'">Withdraw</button></li>
|
||||
<li><button {% if is_active %}{% else %}disabled="disabled"{% endif %}onclick="window.location='announce/'">Announcement</button></li>
|
||||
<li><button {% if is_active %}{% else %}disabled="disabled"{% endif %}onclick="window.location='makerfc/'">Make RFC</button></li>
|
||||
</ul>
|
||||
</div> <!-- inline-related -->
|
||||
</div> <!-- draft-view-col2 -->
|
||||
|
|
Binary file not shown.
Loading…
Reference in a new issue