From 2457a0d968f48bff28fdd523bafce6856dd55f90 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 8 Feb 2018 20:50:37 +0100 Subject: [PATCH 1/2] minor improvements --- rowers/models.py | 9 ++++-- rowers/templates/list_workouts.html | 28 +++++++++--------- rowers/templates/plannedsessioncreate.html | 14 +++++++++ rowers/templates/plannedsessions.html | 15 +++++++++- rowers/templates/planningbuttons.html | 6 ++++ rowers/templatetags/rowerfilters.py | 33 +++++++++++++++++++++- rowers/views.py | 6 +++- templates/basebase.html | 11 ++++++++ 8 files changed, 102 insertions(+), 20 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index d6316883..b2b12116 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -10,6 +10,7 @@ from django.dispatch import receiver from django.forms.widgets import SplitDateTimeWidget from django.forms.extras.widgets import SelectDateWidget from django.forms.formsets import BaseFormSet +from django.contrib.admin.widgets import AdminDateWidget from datetimewidget.widgets import DateTimeWidget from django.core.validators import validate_email import os @@ -671,6 +672,8 @@ class GeoPoint(models.Model): def half_year_from_now(): 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 # Do we need a separate class TestTarget? @@ -819,13 +822,13 @@ class PlannedSession(models.Model): 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, verbose_name='Start Date') - enddate = models.DateField(default=timezone.now, + enddate = models.DateField(default=a_week_from_now, verbose_name='End Date') sessiontype = models.CharField(default='session', @@ -899,7 +902,7 @@ class PlannedSessionForm(ModelForm): widgets = { 'comment': forms.Textarea, 'startdate': DateInput(), - 'enddate': DateInput(), + 'enddate': AdminDateWidget(), } diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html index 82b4bba2..79fc24f5 100644 --- a/rowers/templates/list_workouts.html +++ b/rowers/templates/list_workouts.html @@ -66,21 +66,21 @@
- {% if user.is_authenticated and user|is_manager %} - diff --git a/rowers/templates/plannedsessioncreate.html b/rowers/templates/plannedsessioncreate.html index dd376e3e..3c7a6709 100644 --- a/rowers/templates/plannedsessioncreate.html +++ b/rowers/templates/plannedsessioncreate.html @@ -3,6 +3,7 @@ {% block title %}New Planned Session{% endblock %} + {% block content %}
{% include "planningbuttons.html" %} @@ -38,6 +39,19 @@
+{% if user.is_authenticated and user|is_manager %} + +{% endif %} +
diff --git a/rowers/templates/plannedsessions.html b/rowers/templates/plannedsessions.html index e660b33d..be596b5e 100644 --- a/rowers/templates/plannedsessions.html +++ b/rowers/templates/plannedsessions.html @@ -12,7 +12,7 @@

Plan for {{ rower.user.first_name }} {{ rower.user.last_name }}

+{% if user.is_authenticated and user|is_manager %} + +{% endif %} +
{% if plannedsessions %}

diff --git a/rowers/templates/planningbuttons.html b/rowers/templates/planningbuttons.html index 52d12a55..b4536fae 100644 --- a/rowers/templates/planningbuttons.html +++ b/rowers/templates/planningbuttons.html @@ -23,6 +23,12 @@

+ {% if timeperiod and rower %} + Add Session + {% elif timeperiod %} + Add Session + {% else %} Add Session + {% endif %}

diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index 2f1d66e3..8661e00f 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -145,10 +145,41 @@ def team_members(user): if therower.rowerplan != 'coach': return [] 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] except TypeError: 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 + diff --git a/rowers/views.py b/rowers/views.py index 503ecdf4..e9e0b196 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -11759,7 +11759,11 @@ def plannedsession_create_view(request,timeperiod='today',rowerid=0): add_rower_session(r,ps) - url = reverse(plannedsession_create_view) + url = reverse(plannedsession_create_view, + kwargs = { + 'rowerid':r.id, + 'timeperiod':timeperiod, + }) return HttpResponseRedirect(url) else: sessioncreateform = PlannedSessionForm() diff --git a/templates/basebase.html b/templates/basebase.html index 0a96c96d..0d05b10c 100644 --- a/templates/basebase.html +++ b/templates/basebase.html @@ -11,6 +11,15 @@ {% block scripts %} {% endblock %} + + + + + + + + + {% analytical_head_top %} {% if GOOGLE_ANALYTICS_PROPERTY_ID %} @@ -38,6 +47,8 @@ + + From f149e2b4316adfa66bedec92d77d502ed00e896c Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 8 Feb 2018 22:47:35 +0100 Subject: [PATCH 2/2] minor improvements --- rowers/models.py | 15 +- rowers/templates/plannedsessioncreate.html | 43 +- rowers/templates/plannedsessions.html | 64 +- rowers/templates/plannedsessionsmanage.html | 16 +- rowers/templates/planningbuttons.html | 6 +- rowers/views.py | 33 +- rowsandall_app/settings.py | 1 + static/css/bootstrap-grid.css | 2050 +++++ static/css/bootstrap-grid.css.map | 1 + static/css/bootstrap-grid.min.css | 7 + static/css/bootstrap-grid.min.css.map | 1 + static/css/bootstrap-reboot.css | 330 + static/css/bootstrap-reboot.css.map | 1 + static/css/bootstrap-reboot.min.css | 8 + static/css/bootstrap-reboot.min.css.map | 1 + static/css/bootstrap.css | 8975 +++++++++++++++++++ static/css/bootstrap.css.map | 1 + static/css/bootstrap.min.css | 7 + static/css/bootstrap.min.css.map | 1 + static/js/bootstrap.bundle.js | 6328 +++++++++++++ static/js/bootstrap.bundle.js.map | 1 + static/js/bootstrap.bundle.min.js | 7 + static/js/bootstrap.bundle.min.js.map | 1 + static/js/bootstrap.js | 3894 ++++++++ static/js/bootstrap.js.map | 1 + static/js/bootstrap.min.js | 7 + static/js/bootstrap.min.js.map | 1 + templates/basebase.html | 9 +- 28 files changed, 21741 insertions(+), 69 deletions(-) create mode 100644 static/css/bootstrap-grid.css create mode 100644 static/css/bootstrap-grid.css.map create mode 100644 static/css/bootstrap-grid.min.css create mode 100644 static/css/bootstrap-grid.min.css.map create mode 100644 static/css/bootstrap-reboot.css create mode 100644 static/css/bootstrap-reboot.css.map create mode 100644 static/css/bootstrap-reboot.min.css create mode 100644 static/css/bootstrap-reboot.min.css.map create mode 100644 static/css/bootstrap.css create mode 100644 static/css/bootstrap.css.map create mode 100644 static/css/bootstrap.min.css create mode 100644 static/css/bootstrap.min.css.map create mode 100644 static/js/bootstrap.bundle.js create mode 100644 static/js/bootstrap.bundle.js.map create mode 100644 static/js/bootstrap.bundle.min.js create mode 100644 static/js/bootstrap.bundle.min.js.map create mode 100644 static/js/bootstrap.js create mode 100644 static/js/bootstrap.js.map create mode 100644 static/js/bootstrap.min.js create mode 100644 static/js/bootstrap.min.js.map diff --git a/rowers/models.py b/rowers/models.py index b2b12116..74373e98 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -826,10 +826,10 @@ class PlannedSession(models.Model): ) startdate = models.DateField(default=timezone.now, - verbose_name='Start Date') + verbose_name='On or After') enddate = models.DateField(default=a_week_from_now, - verbose_name='End Date') + verbose_name='On or Before') sessiontype = models.CharField(default='session', choices=sessiontypechoices, @@ -861,7 +861,7 @@ class PlannedSession(models.Model): team = models.ManyToManyField(Team,blank=True) rower = models.ManyToManyField(Rower,blank=True) - sessionmode = models.CharField(default='distance', + sessionmode = models.CharField(default='time', choices=sessionmodechoices, max_length=150, verbose_name='Session Mode') @@ -887,6 +887,7 @@ class DateInput(forms.DateInput): input_type = 'date' class PlannedSessionForm(ModelForm): + class Meta: model = PlannedSession fields = ['startdate', @@ -899,10 +900,16 @@ class PlannedSessionForm(ModelForm): 'sessionunit', 'comment', ] + + dateTimeOptions = { + 'format': 'yyyy-mm-dd', + 'autoclose': True, + } + widgets = { 'comment': forms.Textarea, 'startdate': DateInput(), - 'enddate': AdminDateWidget(), + 'enddate': DateInput(), } diff --git a/rowers/templates/plannedsessioncreate.html b/rowers/templates/plannedsessioncreate.html index 3c7a6709..63bba657 100644 --- a/rowers/templates/plannedsessioncreate.html +++ b/rowers/templates/plannedsessioncreate.html @@ -1,9 +1,9 @@ {% extends "base.html" %} {% load staticfiles %} +{% load rowerfilters %} {% block title %}New Planned Session{% endblock %} - {% block content %}
{% include "planningbuttons.html" %} @@ -14,7 +14,7 @@

Create Session for {{ rower.user.first_name }} {{ rower.user.last_name }}

-
{% if user.is_authenticated and user|is_manager %} {% endif %} +
-
- - {% if form.errors %} -

- Please correct the error{{ form.errors|pluralize }} below. -

- {% endif %} - - - {{ form.as_table }} -
- {% csrf_token %} -
- -
-
-