From 54cc552a99b5fb22a08d4f4e099eef17e1305b22 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 7 Sep 2018 19:32:04 +0200 Subject: [PATCH] adding plan and target edit --- rowers/models.py | 5 +- rowers/templates/trainingplan_create.html | 4 ++ rowers/templates/trainingplan_edit.html | 32 +++++++++ rowers/urls.py | 4 ++ rowers/views.py | 81 +++++++++++++++++++++++ 5 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 rowers/templates/trainingplan_edit.html diff --git a/rowers/models.py b/rowers/models.py index 28c15d86..e79c7722 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -840,6 +840,7 @@ def checkworkoutuser(user,workout): except Rower.DoesNotExist: return False + # Check if user is coach or rower def checkaccessuser(user,rower): try: @@ -1008,7 +1009,7 @@ class TrainingPlan(models.Model): self.startdate = enddate self.enddate = startdate - otherplans = TrainingPlan.objects.filter(rower=self.rower) + otherplans = TrainingPlan.objects.filter(rower=self.rower).exclude(pk=self.pk) for otherplan in otherplans: if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate: @@ -1016,8 +1017,6 @@ class TrainingPlan(models.Model): if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate: self.startdate = otherplan.enddate+datetime.timedelta(days=1) - print self.startdate,self.enddate - if not self.enddate <= self.startdate: super(TrainingPlan,self).save(*args, **kwargs) diff --git a/rowers/templates/trainingplan_create.html b/rowers/templates/trainingplan_create.html index 1a4f2c29..3ea01a93 100644 --- a/rowers/templates/trainingplan_create.html +++ b/rowers/templates/trainingplan_create.html @@ -34,6 +34,8 @@ {{ target.date }} {{ target.name }} {{ target.notes }} + Edit + Delete {% endfor %} @@ -82,6 +84,8 @@ {{ plan.startdate }} {{ plan.enddate }} {{ plan.name }} + Edit + Delete {% endfor %} diff --git a/rowers/templates/trainingplan_edit.html b/rowers/templates/trainingplan_edit.html new file mode 100644 index 00000000..1dc67326 --- /dev/null +++ b/rowers/templates/trainingplan_edit.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}Rowsandall Training Plans{% endblock %} + +{% block scripts %} + +{% endblock %} + +{% block content %} + + +
+ +
+ {% csrf_token %} + + {{ form.as_table }} +
+
+ +
+
+ + +
+ {% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 5e0b41e0..9c554557 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -421,6 +421,10 @@ urlpatterns = [ url(r'^test\_callback',views.rower_process_testcallback), url(r'^createplan$',views.rower_create_trainingplan), url(r'^createplan/(?P\d+)$',views.rower_create_trainingplan), + url(r'^deleteplan/(?P\d+)$',views.rower_delete_trainingplan), + url(r'^deletetarget/(?P\d+)$',views.rower_delete_trainingtarget), + url(r'^editplan/(?P\d+)$',views.TrainingPlanUpdate.as_view()), + url(r'^edittarget/(?P\d+)$',views.TrainingTargetUpdate.as_view()), url(r'^workout/(?P\d+)/test\_strokedata$',views.strokedataform), url(r'^sessions/teamcreate$',views.plannedsession_teamcreate_view), diff --git a/rowers/views.py b/rowers/views.py index 9a1bc520..b261271f 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -27,6 +27,9 @@ import codecs import isodate from django.shortcuts import render + +from django.views.generic.edit import UpdateView + from django.http import ( HttpResponse, HttpResponseRedirect, HttpResponseForbidden, HttpResponseNotAllowed, @@ -125,6 +128,9 @@ from rowers.tasks_standalone import addcomment2 from django.contrib import messages from async_messages import messages as a_messages +from django.contrib.admin.widgets import AdminDateWidget,AdminTimeWidget,AdminSplitDateTime + + import requests import json from rest_framework.renderers import JSONRenderer @@ -14170,6 +14176,41 @@ def virtualevent_submit_result_view(request,id=0): 'w_form':w_form, }) +@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None) +def rower_delete_trainingtarget(request,id=0): + try: + target = TrainingTarget.objects.get(id=id) + except TrainingPlan.DoesNotExist: + raise Http404("Training Plan Does Not Exist") + + if checkaccessuser(request.user,target.rower): + target.delete() + messages.info(request,"We have deleted the training plan") + else: + raise PermissionDenied("Access denied") + + url = reverse(rower_create_trainingplan) + + return HttpResponseRedirect(url) + + +@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None) +def rower_delete_trainingplan(request,id=0): + try: + plan = TrainingPlan.objects.get(id=id) + except TrainingPlan.DoesNotExist: + raise Http404("Training Plan Does Not Exist") + + if checkaccessuser(request.user,plan.rower): + plan.delete() + messages.info(request,"We have deleted the training plan") + else: + raise PermissionDenied("Access denied") + + url = reverse(rower_create_trainingplan) + + return HttpResponseRedirect(url) + @user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None) def rower_create_trainingplan(request,id=0): @@ -14228,3 +14269,43 @@ def rower_create_trainingplan(request,id=0): +class TrainingPlanUpdate(UpdateView): + model = TrainingPlan + template_name = 'trainingplan_edit.html' + form_class = TrainingPlanForm + + def get_success_url(self): + return reverse(rower_create_trainingplan) + + def form_valid(self, form): + form.instance.user = self.request.user + form.instance.post_date = datetime.datetime.now() + plan = form.save() + return super(TrainingPlanUpdate, self).form_valid(form) + + def get_object(self, *args, **kwargs): + obj = super(TrainingPlanUpdate, self).get_object(*args, **kwargs) + if not checkaccessuser(self.request.user,obj.rower): + raise Http404 + return obj + +class TrainingTargetUpdate(UpdateView): + model = TrainingTarget + template_name = 'trainingplan_edit.html' + form_class = TrainingTargetForm + + def get_success_url(self): + return reverse(rower_create_trainingplan) + + def form_valid(self, form): + form.instance.user = self.request.user + form.instance.post_date = datetime.datetime.now() + plan = form.save() + return super(TrainingTargetUpdate, self).form_valid(form) + + def get_object(self, *args, **kwargs): + obj = super(TrainingTargetUpdate, self).get_object(*args, **kwargs) + if not checkaccessuser(self.request.user,obj.rower): + raise Http404 + return obj +