Private
Public Access
1
0

initial multicreate plannedsesssion not working

This commit is contained in:
Sander Roosendaal
2018-02-13 16:03:58 +01:00
parent 41c38354bc
commit 7d4a2f2251
5 changed files with 234 additions and 3 deletions

View File

@@ -614,6 +614,12 @@ class BaseFavoriteFormSet(BaseFormSet):
if not yparam2: if not yparam2:
yparam2 = 'None' yparam2 = 'None'
class BasePlannedSessionFormSet(BaseFormSet):
def clean(self):
if any(self.serrors):
return
# Check if workout is owned by this user # Check if workout is owned by this user
def checkworkoutuser(user,workout): def checkworkoutuser(user,workout):
try: try:
@@ -918,6 +924,35 @@ class PlannedSessionForm(ModelForm):
'enddate': AdminDateWidget(), '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 # Workout
class Workout(models.Model): class Workout(models.Model):

View File

@@ -0,0 +1,139 @@
{% extends "base.html" %}
{% load staticfiles %}
{% load rowerfilters %}
{% block title %}New Planned Session{% endblock %}
{% block content %}
<div class="grid_12 alpha">
{% include "planningbuttons.html" %}
</div>
<div class="grid_12 alpha">
<div id="left" class="grid_6 alpha">
<h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
</div>
<div id="timeperiod" class="grid_2 dropdown">
<button class="grid_2 alpha button gray small dropbtn">Select Time Period ({{ timeperiod|verbosetimeperiod }})</button>
<div class="dropdown-content">
<a class="button gray small alpha"
href="/rowers/sessions/multicreate/today/rower/{{ rower.id }}">
Today
</a>
<a class="button gray small alpha"
href="/rowers/sessions/multicreate/thisweek/rower/{{ rower.id }}">
This Week
</a>
<a class="button gray small alpha"
href="/rowers/sessions/multicreate/thismonth/rower/{{ rower.id }}">
This Month
</a>
<a class="button gray small alpha"
href="/rowers/sessions/multicreate/lastweek/rower/{{ rower.id }}">
Last Week
</a>
<a class="button gray small alpha"
href="/rowers/sessions/multicreate/lastmonth/rower/{{ rower.id }}">
Last Month
</a>
</div>
</div>
{% if user.is_authenticated and user|is_manager %}
<div class="grid_2 dropdown">
<button class="grid_2 alpha button green small dropbtn">
Change Rower
</button>
<div class="dropdown-content">
{% for member in user|team_rowers %}
<a class="button green small" href="/rowers/sessions/multicreate/{{ timeperiod }}/rower/{{ member.id }}">{{ member.user.first_name }} {{ member.user.last_name }}</a>
{% endfor %}
</div>
</div>
{% endif %}
</div>
<div class="grid_12 alpha">
<form id="ps-form-table" method="post">
{% csrf_token %}
{{ ps_formset.management_form }}
<table width="100%">
<thead>
<tr>
<th>&nbsp;</th>
{% for field in ps_formset.0.visible_fields %}
<td>{{ field.label_tag }}</td>
{% endfor %}
</tr>
</thead>
<tbody>
{% for form in ps_formset %}
<tr>
<td> {{ forloop.counter }}
{% if form.instance.pk %}{{ form.DELETE }}{% endif %}
{% for field in form.visible_fields %}
<td>
{{ field }}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
<button type="submit">Submit</button>
</form>
</div>
{% endblock %}
{% block scripts %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="/static/js/jquery.formset.js"></script>
<script>
$(document).ready(function(){
$('#ps-form-table tbody tr').formset({
prefix: '{{ formset.prefix }}'
});
$("td #id_sessionmode").change(function() {
if (this.value == 'TRIMP') {
$("td #id_sessionunit").prop("value","None");
}
if (this.value == 'distance') {
$("td #id_sessionunit").prop("value","m");
}
if (this.value == 'time') {
$("td #id_sessionunit").prop("value","min");
}
if (this.value == 'rScore') {
$("td #id_sessionunit").prop("value","None");
}
});
$("td #id_sessiontype").change(function() {
if (this.value == 'session') {
$("td #id_criterium").prop("value","none");
}
if (this.value == 'test') {
$("td #id_criterium").prop("value","exact");
}
if (this.value == 'challenge') {
$("td #id_criterium").prop("value","minimum");
}
}
);
});
</script>
{% endblock %}

View File

@@ -11,7 +11,7 @@
<div class="grid_12 alpha"> <div class="grid_12 alpha">
<div id="left" class="grid_6 alpha"> <div id="left" class="grid_6 alpha">
<h1>Create Session for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1> <h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
</div> </div>
<div id="timeperiod" class="grid_2 dropdown"> <div id="timeperiod" class="grid_2 dropdown">
<button class="grid_2 alpha button gray small dropbtn">Select Time Period ({{ timeperiod|verbosetimeperiod }})</button> <button class="grid_2 alpha button gray small dropbtn">Select Time Period ({{ timeperiod|verbosetimeperiod }})</button>

View File

@@ -419,6 +419,15 @@ urlpatterns = [
url(r'^sessions/create/(?P<timeperiod>[\w\ ]+.*)$', url(r'^sessions/create/(?P<timeperiod>[\w\ ]+.*)$',
views.plannedsession_create_view), views.plannedsession_create_view),
url(r'^sessions/multicreate$',views.plannedsession_multicreate_view),
url(r'^sessions/multicreate/rower/(?P<rowerid>\d+)$',
views.plannedsession_multicreate_view),
url(
r'^sessions/multicreate/(?P<timeperiod>[\w\ ]+.*)/rower/(?P<rowerid>\d+)$',
views.plannedsession_multicreate_view),
url(r'^sessions/multicreate/(?P<timeperiod>[\w\ ]+.*)$',
views.plannedsession_multicreate_view),
url(r'^sessions/(?P<id>\d+)/edit$',views.plannedsession_edit_view), url(r'^sessions/(?P<id>\d+)/edit$',views.plannedsession_edit_view),
url(r'^sessions/(?P<id>\d+)/edit/(?P<timeperiod>[\w\ ]+.*)/rower/(?P<rowerid>\d+)$',views.plannedsession_edit_view), url(r'^sessions/(?P<id>\d+)/edit/(?P<timeperiod>[\w\ ]+.*)/rower/(?P<rowerid>\d+)$',views.plannedsession_edit_view),
url(r'^sessions/(?P<id>\d+)/edit/(?P<timeperiod>[\w\ ]+.*)$',views.plannedsession_edit_view), url(r'^sessions/(?P<id>\d+)/edit/(?P<timeperiod>[\w\ ]+.*)$',views.plannedsession_edit_view),

View File

@@ -60,13 +60,17 @@ from rowers.models import (
RowerPowerZonesForm,AccountRowerForm,UserForm,StrokeData, RowerPowerZonesForm,AccountRowerForm,UserForm,StrokeData,
Team,TeamForm,TeamInviteForm,TeamInvite,TeamRequest, Team,TeamForm,TeamInviteForm,TeamInvite,TeamRequest,
WorkoutComment,WorkoutCommentForm,RowerExportForm, 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.metrics import rowingmetrics,defaultfavoritecharts
from rowers import metrics from rowers import metrics
import rowers.uploads as uploads import rowers.uploads as uploads
from django.forms.formsets import formset_factory from django.forms.formsets import formset_factory
from django.forms import modelformset_factory
import StringIO import StringIO
from django.contrib.auth.decorators import login_required,user_passes_test from django.contrib.auth.decorators import login_required,user_passes_test
from time import strftime,strptime,mktime,time,daylight from time import strftime,strptime,mktime,time,daylight
@@ -11659,6 +11663,50 @@ def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0):
'timeperiod':timeperiod, '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 # Manager creates sessions for entire team
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/", @user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
redirect_field_name=None) redirect_field_name=None)