Make deletion not required, use deepcopy
This commit is contained in:
parent
1497678f71
commit
0a0e162910
3 changed files with 37 additions and 25 deletions
|
|
@ -204,13 +204,20 @@ class GovernmentPlanAdmin(admin.ModelAdmin):
|
|||
if request.method == "POST":
|
||||
proposals = obj.proposals or {}
|
||||
proposal_id = request.POST.get("proposal_id")
|
||||
delete_proposals = request.POST.getlist("proposal_delete")
|
||||
update = None
|
||||
if proposal_id:
|
||||
data = proposals[proposal_id]["data"]
|
||||
form = GovernmentPlanUpdateAcceptProposalForm(data=data, plan=obj)
|
||||
if form.is_valid():
|
||||
update = form.save(
|
||||
proposal_id=proposal_id,
|
||||
delete_proposals=request.POST.getlist("proposal_delete"),
|
||||
delete_proposals=delete_proposals,
|
||||
)
|
||||
else:
|
||||
form = GovernmentPlanUpdateAcceptProposalForm(data={}, plan=obj)
|
||||
form.delete_proposals(delete_proposals)
|
||||
|
||||
if update is None:
|
||||
self.message_user(request, _("The proposal has been deleted."))
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import copy
|
||||
|
||||
from django import forms
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils import timezone
|
||||
|
|
@ -141,7 +143,7 @@ class GovernmentPlanUpdateAcceptProposalForm(GovernmentPlanUpdateProposalForm):
|
|||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_proposals(self):
|
||||
data = dict(self.plan.proposals)
|
||||
data = copy.deepcopy(self.plan.proposals)
|
||||
user_ids = self.plan.proposals.keys()
|
||||
user_map = {
|
||||
str(u.id): u for u in get_user_model().objects.filter(id__in=user_ids)
|
||||
|
|
@ -173,12 +175,15 @@ class GovernmentPlanUpdateAcceptProposalForm(GovernmentPlanUpdateProposalForm):
|
|||
proposal_user = proposals[proposal_id]["user"]
|
||||
update.user = proposal_user
|
||||
delete_proposals.append(proposal_id)
|
||||
|
||||
self.delete_proposals(delete_proposals)
|
||||
update.save()
|
||||
return update
|
||||
|
||||
def delete_proposals(self, delete_proposals):
|
||||
for pid in delete_proposals:
|
||||
if pid in self.plan.proposals:
|
||||
del self.plan.proposals[pid]
|
||||
if not self.plan.proposals:
|
||||
self.plan.proposals = None
|
||||
self.plan.save(update_fields=["proposals"])
|
||||
|
||||
update.save()
|
||||
return update
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
{% for key, proposal in proposals.items %}
|
||||
<td>
|
||||
<label>
|
||||
<input type="radio" name="proposal_id" class="proposal" value="{{ key }}" required>
|
||||
<input type="radio" name="proposal_id" class="proposal" value="{{ key }}">
|
||||
{% trans "Turn into update draft" %}
|
||||
</label>
|
||||
</td>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue