team multicreate
This commit is contained in:
@@ -358,6 +358,7 @@ class TeamUploadOptionsForm(forms.Form):
|
|||||||
class Meta:
|
class Meta:
|
||||||
fields = ['make_plot','plottype']
|
fields = ['make_plot','plottype']
|
||||||
|
|
||||||
|
|
||||||
# This form is used on the Workout Split page
|
# This form is used on the Workout Split page
|
||||||
class WorkoutSplitForm(forms.Form):
|
class WorkoutSplitForm(forms.Form):
|
||||||
splitchoices = (
|
splitchoices = (
|
||||||
@@ -1201,6 +1202,19 @@ class WorkoutRaceSelectForm(forms.Form):
|
|||||||
|
|
||||||
# self.fields['evaluate_after'] =
|
# self.fields['evaluate_after'] =
|
||||||
|
|
||||||
|
# Form to select team by rower
|
||||||
|
class RowerTeamForm(forms.Form):
|
||||||
|
team = forms.ModelChoiceField(
|
||||||
|
queryset=Team.objects.all(),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(self, user, *args, **kwargs):
|
||||||
|
super(RowerTeamForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.fields['team'].queryset = Team.objects.filter(manager=user)
|
||||||
|
|
||||||
|
|
||||||
class PlannedSessionTeamForm(forms.Form):
|
class PlannedSessionTeamForm(forms.Form):
|
||||||
team = forms.ModelMultipleChoiceField(
|
team = forms.ModelMultipleChoiceField(
|
||||||
queryset=Team.objects.all(),
|
queryset=Team.objects.all(),
|
||||||
|
|||||||
@@ -2982,6 +2982,9 @@ def auto_delete_image_on_delete(sender,instance, **kwargs):
|
|||||||
print("couldn't find the file "+instance.filename)
|
print("couldn't find the file "+instance.filename)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Form to update Workout data
|
# Form to update Workout data
|
||||||
class WorkoutForm(ModelForm):
|
class WorkoutForm(ModelForm):
|
||||||
# duration = forms.TimeInput(format='%H:%M:%S.%f')
|
# duration = forms.TimeInput(format='%H:%M:%S.%f')
|
||||||
|
|||||||
@@ -486,6 +486,10 @@ def remove_rower_session(r,ps):
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
def get_team(request):
|
||||||
|
teamid = request.GET.get('team')
|
||||||
|
return teamid
|
||||||
|
|
||||||
def get_dates_timeperiod(request,startdatestring='',enddatestring='',
|
def get_dates_timeperiod(request,startdatestring='',enddatestring='',
|
||||||
defaulttimeperiod='thisweek'):
|
defaulttimeperiod='thisweek'):
|
||||||
# set start end date according timeperiod
|
# set start end date according timeperiod
|
||||||
|
|||||||
@@ -61,11 +61,6 @@
|
|||||||
<i class="far fa-calendar-plus fa-fw"></i> Add Session
|
<i class="far fa-calendar-plus fa-fw"></i> Add Session
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li id="plan-teamsession">
|
|
||||||
<a href="/rowers/sessions/teamcreate/?when={{ timeperiod }}">
|
|
||||||
<i class="fas fa-whistle fa-fw"></i> Add Group Session
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li id="plan-microcycle">
|
<li id="plan-microcycle">
|
||||||
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}">
|
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}">
|
||||||
<i class="fas fa-expand fa-fw"></i>Plan Microcycle
|
<i class="fas fa-expand fa-fw"></i>Plan Microcycle
|
||||||
@@ -78,6 +73,31 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
{% if request.user|user_teams %}
|
||||||
|
<li class="has-children" id="teamplan">
|
||||||
|
<input type="checkbox" name="group-plan" id="group-teamplan">
|
||||||
|
<label for="group-teamplan">
|
||||||
|
<i class="fas fa-calendar-plus fa-fw"></i> Plan Group Sessions
|
||||||
|
</label>
|
||||||
|
<ul>
|
||||||
|
<li id="plan-teamsession">
|
||||||
|
<a href="/rowers/sessions/teamcreate/?when={{ timeperiod }}">
|
||||||
|
<i class="fas fa-whistle fa-fw"></i> Add Group Session
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li id="plan-microcycle">
|
||||||
|
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}&team={{ request.user|user_team1 }}">
|
||||||
|
<i class="fas fa-expand fa-fw"></i>Plan Group Microcycle
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li id="plan-microcycle">
|
||||||
|
<a href="/rowers/sessions/multiclone/user/{{ rower.user.id }}/?when={{ timeperiod }}">
|
||||||
|
<i class="fas fa-layer-plus fa-fw"></i>Clone Multiple Group Sessions
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul><!-- cd-accordion-menu -->
|
</ul><!-- cd-accordion-menu -->
|
||||||
|
|
||||||
<p> </p>
|
<p> </p>
|
||||||
|
|||||||
@@ -5,7 +5,11 @@
|
|||||||
{% block title %}Plan entire microcycle{% endblock %}
|
{% block title %}Plan entire microcycle{% endblock %}
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
|
{% if team %}
|
||||||
|
<h1>Create Group Sessions for {{ team.name }}</h1>
|
||||||
|
{% else %}
|
||||||
<h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
|
<h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<ul class="main-content">
|
<ul class="main-content">
|
||||||
<li class="grid_2">
|
<li class="grid_2">
|
||||||
@@ -14,6 +18,9 @@
|
|||||||
<table>
|
<table>
|
||||||
{{ dateform.as_table }}
|
{{ dateform.as_table }}
|
||||||
</table>
|
</table>
|
||||||
|
<table>
|
||||||
|
{{ teamform.as_table }}
|
||||||
|
</table>
|
||||||
<input type="Submit" value="Set Date Range">
|
<input type="Submit" value="Set Date Range">
|
||||||
</form>
|
</form>
|
||||||
</p>
|
</p>
|
||||||
@@ -66,9 +73,15 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
{% if team %}
|
||||||
|
<a href="/rowers/sessions/multicreate/user/{{ rower.user.id }}/extra/{{ extrasessions }}/?when={{ timeperiod }}&team={{ team.id }}">
|
||||||
|
Add More
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
<a href="/rowers/sessions/multicreate/user/{{ rower.user.id }}/extra/{{ extrasessions }}/?when={{ timeperiod }}">
|
<a href="/rowers/sessions/multicreate/user/{{ rower.user.id }}/extra/{{ extrasessions }}/?when={{ timeperiod }}">
|
||||||
Add More
|
Add More
|
||||||
</a>
|
</a>
|
||||||
|
{% endif %}
|
||||||
or
|
or
|
||||||
<a href="/rowers/sessions/multiclone/user/{{ rower.user.id }}/?when={{ timeperiod }}">
|
<a href="/rowers/sessions/multiclone/user/{{ rower.user.id }}/?when={{ timeperiod }}">
|
||||||
Clone multiple sessions
|
Clone multiple sessions
|
||||||
|
|||||||
@@ -355,6 +355,18 @@ def user_teams(user):
|
|||||||
|
|
||||||
return teams
|
return teams
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def user_team1(user):
|
||||||
|
try:
|
||||||
|
therower = Rower.objects.get(user=user)
|
||||||
|
teams1 = therower.team.all()
|
||||||
|
teams2 = Team.objects.filter(manager=user)
|
||||||
|
teams = list(set(teams1).union(set(teams2)))
|
||||||
|
except TypeError:
|
||||||
|
teams = []
|
||||||
|
|
||||||
|
return teams[0].id
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def announcements(request):
|
def announcements(request):
|
||||||
announcements = SiteAnnouncement.objects.filter(
|
announcements = SiteAnnouncement.objects.filter(
|
||||||
|
|||||||
@@ -454,6 +454,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
|
|
||||||
|
|
||||||
startdate,enddate = get_dates_timeperiod(request)
|
startdate,enddate = get_dates_timeperiod(request)
|
||||||
|
teamid = get_team(request)
|
||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
@@ -472,6 +473,16 @@ def plannedsession_multicreate_view(request,
|
|||||||
).order_by("startdate","preferreddate","enddate").exclude(
|
).order_by("startdate","preferreddate","enddate").exclude(
|
||||||
sessiontype='race')
|
sessiontype='race')
|
||||||
|
|
||||||
|
if teamid:
|
||||||
|
qset = qset.filter(team__in=[teamid])
|
||||||
|
try:
|
||||||
|
team = Team.objects.get(id=teamid)
|
||||||
|
if team.manager != request.user:
|
||||||
|
team = None
|
||||||
|
except Team.DoesNotExist:
|
||||||
|
team = None
|
||||||
|
else:
|
||||||
|
team = None
|
||||||
|
|
||||||
|
|
||||||
initial = {
|
initial = {
|
||||||
@@ -500,6 +511,8 @@ def plannedsession_multicreate_view(request,
|
|||||||
for ps in instances:
|
for ps in instances:
|
||||||
ps.save()
|
ps.save()
|
||||||
add_rower_session(r,ps)
|
add_rower_session(r,ps)
|
||||||
|
if team:
|
||||||
|
add_team_session(team,ps)
|
||||||
messages.info(request,"Saved changes for Planned Session "+str(ps))
|
messages.info(request,"Saved changes for Planned Session "+str(ps))
|
||||||
for obj in ps_formset.deleted_objects:
|
for obj in ps_formset.deleted_objects:
|
||||||
messages.info(request,"Deleted Planned Session "+str(obj))
|
messages.info(request,"Deleted Planned Session "+str(obj))
|
||||||
@@ -516,6 +529,9 @@ def plannedsession_multicreate_view(request,
|
|||||||
enddatestring = enddate.strftime('%Y-%m-%d')
|
enddatestring = enddate.strftime('%Y-%m-%d')
|
||||||
url += '?when='+startdatestring+'/'+enddatestring
|
url += '?when='+startdatestring+'/'+enddatestring
|
||||||
|
|
||||||
|
if team:
|
||||||
|
url += '&team={teamid}'.format(teamid=team.id)
|
||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
ps_formset = PlannedSessionFormSet(queryset = qset,
|
ps_formset = PlannedSessionFormSet(queryset = qset,
|
||||||
@@ -537,16 +553,25 @@ def plannedsession_multicreate_view(request,
|
|||||||
'enddate':enddate
|
'enddate':enddate
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if len(Team.objects.filter(manager=request.user))>=1:
|
||||||
|
teamform = RowerTeamForm(request.user)
|
||||||
|
if teamid:
|
||||||
|
teamform = RowerTeamForm(request.user,initial={'team':teamid})
|
||||||
|
else:
|
||||||
|
teamform = None
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'ps_formset':ps_formset,
|
'ps_formset':ps_formset,
|
||||||
'breadcrumbs':breadcrumbs,
|
'breadcrumbs':breadcrumbs,
|
||||||
'rower':r,
|
'rower':r,
|
||||||
'active':'nav-plan',
|
'active':'nav-plan',
|
||||||
'dateform':dateform,
|
'dateform':dateform,
|
||||||
|
'teamform':teamform,
|
||||||
'plan':trainingplan,
|
'plan':trainingplan,
|
||||||
'timeperiod':timeperiod,
|
'timeperiod':timeperiod,
|
||||||
'teams':get_my_teams(request.user),
|
'teams':get_my_teams(request.user),
|
||||||
'extrasessions': extrasessions+1
|
'extrasessions': extrasessions+1,
|
||||||
|
'team':team,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ from rowers.forms import (
|
|||||||
FusionMetricChoiceForm,BoxPlotChoiceForm,MultiFlexChoiceForm,
|
FusionMetricChoiceForm,BoxPlotChoiceForm,MultiFlexChoiceForm,
|
||||||
TrendFlexModalForm,WorkoutSplitForm,WorkoutJoinParamForm,
|
TrendFlexModalForm,WorkoutSplitForm,WorkoutJoinParamForm,
|
||||||
AnalysisOptionsForm, AnalysisChoiceForm,
|
AnalysisOptionsForm, AnalysisChoiceForm,
|
||||||
PlannedSessionMultipleCloneForm,SessionDateShiftForm,
|
PlannedSessionMultipleCloneForm,SessionDateShiftForm,RowerTeamForm,
|
||||||
)
|
)
|
||||||
from rowers.models import (
|
from rowers.models import (
|
||||||
Workout, User, Rower, WorkoutForm,FavoriteChart,
|
Workout, User, Rower, WorkoutForm,FavoriteChart,
|
||||||
|
|||||||
Reference in New Issue
Block a user