From 9fd5d104c7560738eb20b0f036979f99c673fa18 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 May 2018 20:09:08 +0000 Subject: [PATCH] Merged in [15111] from rjsparks@nostrum.com: Removed the \'replaces\' functionality from /secr/drafts. Addresses part of #2513. - Legacy-Id: 15117 Note: SVN reference [15111] has been migrated to Git commit c3241bddac66bd35ea2cf0ba784b5710b3e547ba --- ietf/secr/drafts/forms.py | 22 +------ ietf/secr/drafts/tests_views.py | 34 ----------- ietf/secr/drafts/urls.py | 1 - ietf/secr/drafts/views.py | 77 +------------------------ ietf/secr/templates/drafts/replace.html | 30 ---------- ietf/secr/templates/drafts/view.html | 1 - 6 files changed, 3 insertions(+), 162 deletions(-) delete mode 100644 ietf/secr/templates/drafts/replace.html diff --git a/ietf/secr/drafts/forms.py b/ietf/secr/drafts/forms.py index 620f9bbbb..6d1dbe7f8 100644 --- a/ietf/secr/drafts/forms.py +++ b/ietf/secr/drafts/forms.py @@ -4,7 +4,7 @@ import os from django import forms -from ietf.doc.models import Document, DocAlias, State +from ietf.doc.models import Document, State from ietf.name.models import IntendedStdLevelName from ietf.group.models import Group from ietf.person.models import Person, Email @@ -239,26 +239,6 @@ class ExtendForm(forms.Form): action = forms.CharField(max_length=255, widget=forms.HiddenInput(),initial='extend') expiration_date = forms.DateField() -class ReplaceForm(forms.Form): - replaced = AliasModelChoiceField(DocAlias.objects.none(),empty_label=None,help_text='This document may have more than one alias. Be sure to select the correct alias to replace.') - replaced_by = forms.CharField(max_length=100,help_text='Enter the filename of the Draft which replaces this one.') - - def __init__(self, *args, **kwargs): - self.draft = kwargs.pop('draft') - super(ReplaceForm, self).__init__(*args, **kwargs) - self.fields['replaced'].queryset = DocAlias.objects.filter(document=self.draft) - - # field must contain filename of existing draft - def clean_replaced_by(self): - name = self.cleaned_data.get('replaced_by', '') - try: - doc = Document.objects.get(name=name) - except Document.DoesNotExist: - raise forms.ValidationError("ERROR: Draft does not exist: %s" % name) - if name == self.draft.name: - raise forms.ValidationError("ERROR: A draft can't replace itself") - return doc - class BaseRevisionModelForm(forms.ModelForm): class Meta: model = Document diff --git a/ietf/secr/drafts/tests_views.py b/ietf/secr/drafts/tests_views.py index 2e0ac3a4a..ef34ae45d 100644 --- a/ietf/secr/drafts/tests_views.py +++ b/ietf/secr/drafts/tests_views.py @@ -331,40 +331,6 @@ class SecrDraftsTestCase(TestCase): draft = Document.objects.get(name=draft.name) self.assertTrue(draft.get_state_slug('draft') == 'ietf-rm') - def test_replace(self): - draft = make_test_data() - other_draft = Document.objects.filter(type='draft').exclude(name=draft.name).first() - url = urlreverse('ietf.secr.drafts.views.replace', kwargs={'id':draft.name}) - email_url = urlreverse('ietf.secr.drafts.views.email', kwargs={'id':draft.name}) - confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name}) - do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name}) - view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name}) - self.client.login(username="secretary", password="secretary+password") - response = self.client.get(url) - self.assertEqual(response.status_code, 200) - get_data = { - 'action': 'replace', - 'replaced': draft.name, - 'replaced_by': other_draft.name, - } - post_data = { - 'action': 'replace', - 'replaced': draft.name, - 'replaced_by': other_draft.name, - 'to': 'john@example.com', - 'cc': 'joe@example.com', - 'subject': 'test', - 'body': 'draft resurrected', - 'submit': 'Save' - } - response = self.client.get(email_url + '?' + urlencode(get_data)) - self.assertEqual(response.status_code, 200) - response = self.client.post(confirm_url, post_data) - response = self.client.post(do_action_url, post_data) - self.assertRedirects(response, view_url) - draft = Document.objects.get(name=draft.name) - self.assertTrue(draft.get_state_slug('draft') == 'repl') - def test_authors(self): draft = DocumentFactory() person = PersonFactory() diff --git a/ietf/secr/drafts/urls.py b/ietf/secr/drafts/urls.py index ed80b72c5..196cbb73a 100644 --- a/ietf/secr/drafts/urls.py +++ b/ietf/secr/drafts/urls.py @@ -19,7 +19,6 @@ urlpatterns = [ url(r'^(?P[A-Za-z0-9._\-\+]+)/extend/$', views.extend), url(r'^(?P[A-Za-z0-9._\-\+]+)/email/$', views.email), # url(r'^(?P[A-Za-z0-9._\-\+]+)/makerfc/$', views.makerfc), # Not used any more - url(r'^(?P[A-Za-z0-9._\-\+]+)/replace/$', views.replace), url(r'^(?P[A-Za-z0-9._\-\+]+)/revision/$', views.revision), url(r'^(?P[A-Za-z0-9._\-\+]+)/update/$', views.update), url(r'^(?P[A-Za-z0-9._\-\+]+)/withdraw/$', views.withdraw), diff --git a/ietf/secr/drafts/views.py b/ietf/secr/drafts/views.py index 67487903d..86fe7b5a8 100644 --- a/ietf/secr/drafts/views.py +++ b/ietf/secr/drafts/views.py @@ -11,7 +11,7 @@ from django.shortcuts import render, get_object_or_404, redirect from django.urls import reverse from django.utils.http import urlencode -from ietf.doc.models import Document, DocumentAuthor, DocAlias, DocRelationshipName, RelatedDocument, State +from ietf.doc.models import Document, DocumentAuthor, DocAlias, State from ietf.doc.models import DocEvent, NewRevisionDocEvent from ietf.doc.utils import add_state_change_event from ietf.ietfauth.utils import role_required @@ -20,7 +20,7 @@ from ietf.name.models import StreamName from ietf.person.models import Person from ietf.secr.drafts.email import announcement_from_form, get_email_initial from ietf.secr.drafts.forms import ( AddModelForm, AuthorForm, BaseRevisionModelForm, EditModelForm, - EmailForm, ExtendForm, ReplaceForm, RevisionModelForm, + EmailForm, ExtendForm, RevisionModelForm, SearchForm, UploadForm, WithdrawForm ) from ietf.secr.utils.ams_utils import get_base from ietf.secr.utils.document import get_rfc_num, get_start_date @@ -193,41 +193,6 @@ def do_extend(draft, request): return -def do_replace(draft, request): - 'Perform document replace' - - replaced = DocAlias.objects.get(name=request.POST.get('replaced')) # a DocAlias - replaced_by = Document.objects.get(name=request.POST.get('replaced_by')) # a Document - - # create relationship - RelatedDocument.objects.create(source=replaced_by, - target=replaced, - relationship=DocRelationshipName.objects.get(slug='replaces')) - - - - draft.set_state(State.objects.get(type="draft", slug="repl")) - - e = DocEvent.objects.create( - type='changed_document', - by=request.user.person, - doc=replaced_by, - rev=replaced_by.rev, - time=draft.time, - desc='This document now replaces %s' % replaced, - ) - - draft.save_with_history([e]) - - # move replaced document to archive - archive_draft_files(replaced.document.name + '-' + replaced.document.rev) - - # send announcement - form = EmailForm(request.POST) - announcement_from_form(form.data,by=request.user.person) - - return - def do_resurrect(draft, request): ''' Actions @@ -667,8 +632,6 @@ def do_action(request, id): func = do_revision elif action == 'resurrect': func = do_resurrect - elif action == 'replace': - func = do_replace elif action == 'update': func = do_update_announce elif action == 'extend': @@ -900,42 +863,6 @@ def nudge_report(request): 'docs': docs}, ) -@role_required('Secretariat') -def replace(request, id): - ''' - This view handles replacing one Internet-Draft with another - Prerequisites: draft must be active - Input: replacement draft filename - - # TODO: support two different replaced messages in email - ''' - - draft = get_object_or_404(Document, name=id) - - if request.method == 'POST': - button_text = request.POST.get('submit', '') - if button_text == 'Cancel': - return redirect('ietf.secr.drafts.views.view', id=id) - - form = ReplaceForm(request.POST, draft=draft) - if form.is_valid(): - #params = form.cleaned_data - params = {} - params['replaced'] = form.data['replaced'] - params['replaced_by'] = form.data['replaced_by'] - params['action'] = 'replace' - url = reverse('ietf.secr.drafts.views.email', kwargs={'id':id}) - url = url + '?' + urlencode(params) - return redirect(url) - - else: - form = ReplaceForm(draft=draft) - - return render(request, 'drafts/replace.html', { - 'form': form, - 'draft': draft}, - ) - @role_required('Secretariat') def revision(request, id): ''' diff --git a/ietf/secr/templates/drafts/replace.html b/ietf/secr/templates/drafts/replace.html deleted file mode 100644 index 79ab62f5e..000000000 --- a/ietf/secr/templates/drafts/replace.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "base_site.html" %} -{% load staticfiles %} - -{% block title %}Drafts - Replace{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Drafts - » {{ draft.name }} - » Replace -{% endblock %} - -{% block content %} - -
-

Draft - Replace

-
{% csrf_token %} - - {{ form.as_table }} -
- - {% include "includes/buttons_save_cancel.html" %} - -
-
- -{% endblock %} diff --git a/ietf/secr/templates/drafts/view.html b/ietf/secr/templates/drafts/view.html index 66f366e97..bd8bcd5a1 100644 --- a/ietf/secr/templates/drafts/view.html +++ b/ietf/secr/templates/drafts/view.html @@ -83,7 +83,6 @@
  • -