diff --git a/rowers/models.py b/rowers/models.py
index 5b30abb6..5513d86b 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -614,6 +614,12 @@ class BaseFavoriteFormSet(BaseFormSet):
if not yparam2:
yparam2 = 'None'
+class BasePlannedSessionFormSet(BaseFormSet):
+ def clean(self):
+ if any(self.serrors):
+ return
+
+
# Check if workout is owned by this user
def checkworkoutuser(user,workout):
try:
@@ -918,6 +924,35 @@ class PlannedSessionForm(ModelForm):
'enddate': AdminDateWidget(),
}
+class PlannedSessionFormSmall(ModelForm):
+
+ class Meta:
+ model = PlannedSession
+ fields = ['startdate',
+ 'enddate',
+ 'name',
+ 'sessiontype',
+ 'sessionmode',
+ 'criterium',
+ 'sessionvalue',
+ 'sessionunit',
+ 'comment',
+ ]
+
+ dateTimeOptions = {
+ 'format': 'yyyy-mm-dd',
+ 'autoclose': True,
+ }
+
+ widgets = {
+ 'startdate': DateInput(attrs={'size':10}),
+ 'enddate': DateInput(attrs={'size':10}),
+ 'name': forms.TextInput(attrs={'size':10}),
+ 'comment': forms.TextInput(attrs={'size':10}),
+ 'sessionvalue': forms.TextInput(attrs={'style':'width:3em',
+ 'type':'number'}),
+ }
+
# Workout
class Workout(models.Model):
diff --git a/rowers/templates/plannedsession_multicreate.html b/rowers/templates/plannedsession_multicreate.html
new file mode 100644
index 00000000..44aba51e
--- /dev/null
+++ b/rowers/templates/plannedsession_multicreate.html
@@ -0,0 +1,139 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+{% load rowerfilters %}
+
+{% block title %}New Planned Session{% endblock %}
+
+{% block content %}
+
-
Create Session for {{ rower.user.first_name }} {{ rower.user.last_name }}
+ Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}
diff --git a/rowers/urls.py b/rowers/urls.py
index 85d4a845..509efae6 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -419,6 +419,15 @@ urlpatterns = [
url(r'^sessions/create/(?P[\w\ ]+.*)$',
views.plannedsession_create_view),
+ url(r'^sessions/multicreate$',views.plannedsession_multicreate_view),
+ url(r'^sessions/multicreate/rower/(?P\d+)$',
+ views.plannedsession_multicreate_view),
+ url(
+ r'^sessions/multicreate/(?P[\w\ ]+.*)/rower/(?P\d+)$',
+ views.plannedsession_multicreate_view),
+ url(r'^sessions/multicreate/(?P[\w\ ]+.*)$',
+ views.plannedsession_multicreate_view),
+
url(r'^sessions/(?P\d+)/edit$',views.plannedsession_edit_view),
url(r'^sessions/(?P\d+)/edit/(?P[\w\ ]+.*)/rower/(?P\d+)$',views.plannedsession_edit_view),
url(r'^sessions/(?P\d+)/edit/(?P[\w\ ]+.*)$',views.plannedsession_edit_view),
diff --git a/rowers/views.py b/rowers/views.py
index c59cd8db..f10ff612 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -60,13 +60,17 @@ from rowers.models import (
RowerPowerZonesForm,AccountRowerForm,UserForm,StrokeData,
Team,TeamForm,TeamInviteForm,TeamInvite,TeamRequest,
WorkoutComment,WorkoutCommentForm,RowerExportForm,
- CalcAgePerformance,PowerTimeFitnessMetric,PlannedSessionForm
+ CalcAgePerformance,PowerTimeFitnessMetric,PlannedSessionForm,
+ PlannedSessionFormSmall,
+ )
+from rowers.models import (
+ FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement,BasePlannedSessionFormSet
)
-from rowers.models import FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement
from rowers.metrics import rowingmetrics,defaultfavoritecharts
from rowers import metrics
import rowers.uploads as uploads
from django.forms.formsets import formset_factory
+from django.forms import modelformset_factory
import StringIO
from django.contrib.auth.decorators import login_required,user_passes_test
from time import strftime,strptime,mktime,time,daylight
@@ -11659,6 +11663,50 @@ def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0):
'timeperiod':timeperiod,
})
+@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
+ redirect_field_name=None)
+def plannedsession_multicreate_view(request,timeperiod='thisweek',
+ teamid=0,rowerid=0):
+
+ if rowerid==0:
+ r = getrower(request.user)
+ else:
+ try:
+ r = Rower.objects.get(id=rowerid)
+ except Rower.DoesNotExist:
+ raise Http404("This rower doesn't exist")
+ if not checkaccessuser(request.user,r):
+ raise PermissionDenied("You don't have access to this plan")
+
+ startdate,enddate = get_dates_timeperiod(timeperiod)
+ sps = get_sessions(r,startdate=startdate,enddate=enddate)
+ qset = PlannedSession.objects.filter(
+ rower__in=[r],
+ startdate__lte=enddate,
+ enddate__gte=startdate,
+ ).order_by("startdate","enddate")
+
+
+ extrasessions = (enddate-startdate).days+1
+
+ PlannedSessionFormSet = modelformset_factory(PlannedSession,
+ form=PlannedSessionFormSmall,
+# formset=BasePlannedSessionFormSet,
+ can_delete=True,
+ extra=extrasessions,
+)
+ ps_formset = PlannedSessionFormSet(queryset = qset)
+
+
+ context = {
+ 'ps_formset':ps_formset,
+ 'rower':r,
+ 'timeperiod':timeperiod,
+ 'teams':get_my_teams(request.user)
+ }
+
+ return render(request,'plannedsession_multicreate.html',context)
+
# Manager creates sessions for entire team
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
redirect_field_name=None)