can delete sessions with deletion of plan
This commit is contained in:
@@ -1978,6 +1978,21 @@ class TrainingPlan(models.Model):
|
||||
|
||||
return stri
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
delete_sessions = kwargs.pop('delete_sessions', False)
|
||||
delete_all_sessions = kwargs.pop('delete_all_sessions', False)
|
||||
if delete_sessions:
|
||||
sessions = PlannedSession.objects.filter(from_plan=self)
|
||||
for s in sessions:
|
||||
s.delete()
|
||||
|
||||
if delete_all_sessions:
|
||||
sessions = PlannedSession.objects.filter(startdate__gte=self.startdate,enddate__lte=self.enddate)
|
||||
for s in sessions:
|
||||
s.delete()
|
||||
|
||||
super().delete(*args, **kwargs)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
manager = self.manager
|
||||
if not can_add_plan(manager.user): # pragma: no cover
|
||||
|
||||
@@ -13,7 +13,15 @@
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<p>Are you sure you want to delete <em>{{ object }}</em>?</p>
|
||||
<input class="button red" type="submit" value="Confirm">
|
||||
<p>
|
||||
<input type="checkbox" name="delete_sessions" value="1"> Delete all planned sessions linked to the plan
|
||||
</p>
|
||||
<p>
|
||||
<input type="checkbox" name="delete_all_sessions" value="1">Delete all planned sessions in the plan time frame
|
||||
</p>
|
||||
<p>
|
||||
<input class="button red" type="submit" value="Confirm">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
@@ -3335,6 +3335,13 @@ class TrainingPlanDelete(DeleteView):
|
||||
template_name = 'trainingplan_delete.html'
|
||||
success_url = reverse_lazy(rower_create_trainingplan)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
delete_sessions = request.POST.get('delete_sessions')
|
||||
delete_all_sessions = request.POST.get('delete_all_sessions')
|
||||
self.object = self.get_object()
|
||||
self.object.delete(delete_sessions=delete_sessions, delete_all_sessions=delete_all_sessions)
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
def get_object(self, *args, **kwargs):
|
||||
obj = super(TrainingPlanDelete, self).get_object(*args, **kwargs)
|
||||
if not can_delete_plan(self.request.user, obj): # pragma: no cover
|
||||
|
||||
Reference in New Issue
Block a user