|
4 | 4 | import calendar |
5 | 5 |
|
6 | 6 | from django import forms |
| 7 | +from django.contrib import messages |
7 | 8 | from django.http import HttpResponseForbidden, HttpResponseBadRequest, HttpResponseRedirect, Http404 |
8 | 9 | from django.shortcuts import render, redirect |
9 | 10 | from django.contrib.auth.decorators import login_required |
@@ -155,23 +156,22 @@ def save_milestone_form(f): |
155 | 156 |
|
156 | 157 | if f.milestone: |
157 | 158 | m = f.milestone |
| 159 | + initial_state = m.state_id |
158 | 160 |
|
159 | 161 | named_milestone = 'milestone "%s"' % m.desc |
160 | 162 | if milestone_set == "charter": |
161 | 163 | named_milestone = "charter " + named_milestone |
162 | 164 |
|
163 | | - if c["delete"]: |
164 | | - save_milestone_in_history(m) |
165 | | - |
166 | | - m.state_id = "deleted" |
167 | | - m.save() |
168 | | - |
169 | | - return 'Deleted %s' % named_milestone |
170 | | - |
171 | 165 | # compute changes |
172 | 166 | history = None |
173 | 167 |
|
174 | | - changes = ['Changed %s' % named_milestone] |
| 168 | + if c["delete"]: |
| 169 | + history = save_milestone_in_history(m) |
| 170 | + m.state_id = "deleted" |
| 171 | + |
| 172 | + changes = ['Deleted %s' % named_milestone] |
| 173 | + else: |
| 174 | + changes = ['Changed %s' % named_milestone] |
175 | 175 |
|
176 | 176 | if m.state_id == "review" and not needs_review and c["review"] != "noaction": |
177 | 177 | if not history: |
@@ -231,6 +231,13 @@ def save_milestone_form(f): |
231 | 231 | m.docs.set(new_docs) |
232 | 232 |
|
233 | 233 | if len(changes) > 1: |
| 234 | + if c["delete"]: |
| 235 | + messages.warning(request, "Found conflicting form data: both delete action and milestone changes for '%s'. " |
| 236 | + "Ignoring the delete; if delete is wanted, please mark for deletion without making other changes." % (m.desc, )) |
| 237 | + m.state_id = initial_state |
| 238 | + changes[0] = 'Changed %s' % named_milestone |
| 239 | + |
| 240 | + |
234 | 241 | m.save() |
235 | 242 |
|
236 | 243 | return ", ".join(changes) |
|
0 commit comments