Changed the handling of the milestone edit form to defer deletion if deletion is indicated together with other changes to the same milestone. Instead emit a warning, and ask for deletion without simultaneous changes to the milestone.

- Legacy-Id: 14761
This commit is contained in:
Henrik Levkowetz 2018-03-09 20:05:09 +00:00
parent 9287ce2b3b
commit cb051a7f59

View file

@ -4,6 +4,7 @@ import datetime
import calendar
from django import forms
from django.contrib import messages
from django.http import HttpResponseForbidden, HttpResponseBadRequest, HttpResponseRedirect, Http404
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
@ -155,23 +156,22 @@ def edit_milestones(request, acronym, group_type=None, milestone_set="current"):
if f.milestone:
m = f.milestone
initial_state = m.state_id
named_milestone = 'milestone "%s"' % m.desc
if milestone_set == "charter":
named_milestone = "charter " + named_milestone
if c["delete"]:
save_milestone_in_history(m)
m.state_id = "deleted"
m.save()
return 'Deleted %s' % named_milestone
# compute changes
history = None
changes = ['Changed %s' % named_milestone]
if c["delete"]:
history = save_milestone_in_history(m)
m.state_id = "deleted"
changes = ['Deleted %s' % named_milestone]
else:
changes = ['Changed %s' % named_milestone]
if m.state_id == "review" and not needs_review and c["review"] != "noaction":
if not history:
@ -231,6 +231,13 @@ def edit_milestones(request, acronym, group_type=None, milestone_set="current"):
m.docs.set(new_docs)
if len(changes) > 1:
if c["delete"]:
messages.warning(request, "Found conflicting form data: both delete action and milestone changes for '%s'. "
"Ignoring the delete; if delete is wanted, please mark for deletion without making other changes." % (m.desc, ))
m.state_id = initial_state
changes[0] = 'Changed %s' % named_milestone
m.save()
return ", ".join(changes)