can delete sessions with deletion of plan
This commit is contained in:
@@ -1978,6 +1978,21 @@ class TrainingPlan(models.Model):
|
|||||||
|
|
||||||
return stri
|
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):
|
def save(self, *args, **kwargs):
|
||||||
manager = self.manager
|
manager = self.manager
|
||||||
if not can_add_plan(manager.user): # pragma: no cover
|
if not can_add_plan(manager.user): # pragma: no cover
|
||||||
|
|||||||
@@ -13,7 +13,15 @@
|
|||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<p>Are you sure you want to delete <em>{{ object }}</em>?</p>
|
<p>Are you sure you want to delete <em>{{ object }}</em>?</p>
|
||||||
|
<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">
|
<input class="button red" type="submit" value="Confirm">
|
||||||
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3335,6 +3335,13 @@ class TrainingPlanDelete(DeleteView):
|
|||||||
template_name = 'trainingplan_delete.html'
|
template_name = 'trainingplan_delete.html'
|
||||||
success_url = reverse_lazy(rower_create_trainingplan)
|
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):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(TrainingPlanDelete, self).get_object(*args, **kwargs)
|
obj = super(TrainingPlanDelete, self).get_object(*args, **kwargs)
|
||||||
if not can_delete_plan(self.request.user, obj): # pragma: no cover
|
if not can_delete_plan(self.request.user, obj): # pragma: no cover
|
||||||
|
|||||||
Reference in New Issue
Block a user