Private
Public Access
1
0

minor improvements

This commit is contained in:
Sander Roosendaal
2018-02-08 20:50:37 +01:00
parent d9d6c3d6d3
commit 2457a0d968
8 changed files with 102 additions and 20 deletions

View File

@@ -10,6 +10,7 @@ from django.dispatch import receiver
from django.forms.widgets import SplitDateTimeWidget from django.forms.widgets import SplitDateTimeWidget
from django.forms.extras.widgets import SelectDateWidget from django.forms.extras.widgets import SelectDateWidget
from django.forms.formsets import BaseFormSet from django.forms.formsets import BaseFormSet
from django.contrib.admin.widgets import AdminDateWidget
from datetimewidget.widgets import DateTimeWidget from datetimewidget.widgets import DateTimeWidget
from django.core.validators import validate_email from django.core.validators import validate_email
import os import os
@@ -671,6 +672,8 @@ class GeoPoint(models.Model):
def half_year_from_now(): def half_year_from_now():
return timezone.now()+timezone.timedelta(days=182) return timezone.now()+timezone.timedelta(days=182)
def a_week_from_now():
return timezone.now()+timezone.timedelta(days=7)
# models related to training planning - draft # models related to training planning - draft
# Do we need a separate class TestTarget? # Do we need a separate class TestTarget?
@@ -819,13 +822,13 @@ class PlannedSession(models.Model):
name = models.CharField(max_length=150,blank=True) name = models.CharField(max_length=150,blank=True)
comment = models.TextField(max_length=300,blank=True, comment = models.TextField(max_length=500,blank=True,
) )
startdate = models.DateField(default=timezone.now, startdate = models.DateField(default=timezone.now,
verbose_name='Start Date') verbose_name='Start Date')
enddate = models.DateField(default=timezone.now, enddate = models.DateField(default=a_week_from_now,
verbose_name='End Date') verbose_name='End Date')
sessiontype = models.CharField(default='session', sessiontype = models.CharField(default='session',
@@ -899,7 +902,7 @@ class PlannedSessionForm(ModelForm):
widgets = { widgets = {
'comment': forms.Textarea, 'comment': forms.Textarea,
'startdate': DateInput(), 'startdate': DateInput(),
'enddate': DateInput(), 'enddate': AdminDateWidget(),
} }

View File

@@ -3,6 +3,7 @@
{% block title %}New Planned Session{% endblock %} {% block title %}New Planned Session{% endblock %}
{% block content %} {% block content %}
<div class="grid_12 alpha"> <div class="grid_12 alpha">
{% include "planningbuttons.html" %} {% include "planningbuttons.html" %}
@@ -38,6 +39,19 @@
</div> </div>
</div> </div>
</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/{{ timeperiod }}/rower/{{ member.id }}">{{ member.user.first_name }} {{ member.user.last_name }}</a>
{% endfor %}
</div>
</div>
{% endif %}
<div class="grid_12 alpha"> <div class="grid_12 alpha">
<div class="grid_6 alpha"> <div class="grid_6 alpha">
<form enctype="multipart/form-data" action="{{ formloc }}" method="post"> <form enctype="multipart/form-data" action="{{ formloc }}" method="post">

View File

@@ -12,7 +12,7 @@
<h1>Plan for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1> <h1>Plan 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">Time Period</button> <button class="grid_2 alpha button gray small dropbtn">Select Time Period ({{ timeperiod|verbosetimeperiod }})</button>
<div class="dropdown-content"> <div class="dropdown-content">
<a class="button gray small alpha" <a class="button gray small alpha"
href="/rowers/sessions/today/rower/{{ rower.id }}"> href="/rowers/sessions/today/rower/{{ rower.id }}">
@@ -36,6 +36,19 @@
</a> </a>
</div> </div>
</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/{{ timeperiod }}/rower/{{ member.id }}">{{ member.user.first_name }} {{ member.user.last_name }}</a>
{% endfor %}
</div>
</div>
{% endif %}
<div class="grid_12 alpha"> <div class="grid_12 alpha">
{% if plannedsessions %} {% if plannedsessions %}
<p> <p>

View File

@@ -23,6 +23,12 @@
</div> </div>
<div class="grid_2 suffix_6 omega"> <div class="grid_2 suffix_6 omega">
<p> <p>
{% if timeperiod and rower %}
<a class="button gray small" href="/rowers/sessions/create/{{ timeperiod }}/rower/{{ rower.id }}">Add Session</a>
{% elif timeperiod %}
<a class="button gray small" href="/rowers/sessions/create/{{ timeperiod }}">Add Session</a>
{% else %}
<a class="button gray small" href="/rowers/sessions/create">Add Session</a> <a class="button gray small" href="/rowers/sessions/create">Add Session</a>
{% endif %}
</p> </p>
</div> </div>

View File

@@ -145,10 +145,41 @@ def team_members(user):
if therower.rowerplan != 'coach': if therower.rowerplan != 'coach':
return [] return []
teams = Team.objects.filter(manager=user) teams = Team.objects.filter(manager=user)
members = Rower.objects.filter(team__in=teams) members = Rower.objects.filter(team__in=teams).distinct()
return [rower.user for rower in members] return [rower.user for rower in members]
except TypeError: except TypeError:
return [] return []
return [] return []
@register.filter
def team_rowers(user):
try:
therower = Rower.objects.get(user=user)
if therower.rowerplan != 'coach':
return []
teams = Team.objects.filter(manager=user)
members = Rower.objects.filter(team__in=teams).distinct()
return members
except TypeError:
return []
return []
@register.filter
def verbosetimeperiod(timeperiod):
table = {
'today':'Today',
'thisweek': 'This Week',
'thismonth': 'This Month',
'lastmonth': 'Last Month',
'lastweek': 'Last Week',
}
try:
verbose = table[timeperiod]
except KeyError:
verbose = timeperiod
return verbose

View File

@@ -11759,7 +11759,11 @@ def plannedsession_create_view(request,timeperiod='today',rowerid=0):
add_rower_session(r,ps) add_rower_session(r,ps)
url = reverse(plannedsession_create_view) url = reverse(plannedsession_create_view,
kwargs = {
'rowerid':r.id,
'timeperiod':timeperiod,
})
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
sessioncreateform = PlannedSessionForm() sessioncreateform = PlannedSessionForm()

View File

@@ -11,6 +11,15 @@
<head> <head>
{% block scripts %} {% endblock %} {% block scripts %} {% endblock %}
<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="/static/admin/js/core.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"> </script>
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.min.js"></script>
<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>
<script src="/static/cookielaw/js/cookielaw.js"></script> <script src="/static/cookielaw/js/cookielaw.js"></script>
{% analytical_head_top %} {% analytical_head_top %}
{% if GOOGLE_ANALYTICS_PROPERTY_ID %} {% if GOOGLE_ANALYTICS_PROPERTY_ID %}
@@ -38,6 +47,8 @@
<meta property="fb:app_id" content="694685920739849" /> <meta property="fb:app_id" content="694685920739849" />
<meta property="og:title" content="{% block og_title %}Rowsandall{% endblock %}" /> <meta property="og:title" content="{% block og_title %}Rowsandall{% endblock %}" />
<meta property="og:description" content="{% block og_description %}Rowsandall: Free Data and Analysis. For Rowers. By Rowers.{% endblock %}" /> <meta property="og:description" content="{% block og_description %}Rowsandall: Free Data and Analysis. For Rowers. By Rowers.{% endblock %}" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css"/>
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css"/>
<link rel="stylesheet" href="/static/css/reset.css" /> <link rel="stylesheet" href="/static/css/reset.css" />
<link rel="stylesheet" href="/static/css/text.css" /> <link rel="stylesheet" href="/static/css/text.css" />
<link rel="stylesheet" href="/static/css/960_12_col.css" /> <link rel="stylesheet" href="/static/css/960_12_col.css" />