diff --git a/logos/logofornk.gif b/logos/logofornk.gif
new file mode 100644
index 00000000..6e03addf
Binary files /dev/null and b/logos/logofornk.gif differ
diff --git a/logos/logofornk.jpg b/logos/logofornk.jpg
new file mode 100644
index 00000000..5b2e864e
Binary files /dev/null and b/logos/logofornk.jpg differ
diff --git a/logos/logofornk.png b/logos/logofornk.png
new file mode 100644
index 00000000..01d4c64f
Binary files /dev/null and b/logos/logofornk.png differ
diff --git a/logos/logofornk.xcf b/logos/logofornk.xcf
new file mode 100644
index 00000000..e9a1041f
Binary files /dev/null and b/logos/logofornk.xcf differ
diff --git a/rowers/admin.py b/rowers/admin.py
index ae1d32f4..0a5eaa14 100644
--- a/rowers/admin.py
+++ b/rowers/admin.py
@@ -2,7 +2,7 @@ from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
-from .models import Rower, Workout,GraphImage,FavoriteChart
+from .models import Rower, Workout,GraphImage,FavoriteChart,SiteAnnouncement
# Register your models here.
@@ -19,9 +19,13 @@ class WorkoutAdmin(admin.ModelAdmin):
class FavoriteChartAdmin(admin.ModelAdmin):
list_display = ('user','xparam','yparam1','yparam2','plottype','workouttype','reststrokes')
+
+class SiteAnnouncementAdmin(admin.ModelAdmin):
+ list_display = ('announcement','created','modified','expires')
admin.site.unregister(User)
admin.site.register(User,UserAdmin)
admin.site.register(Workout,WorkoutAdmin)
admin.site.register(GraphImage)
admin.site.register(FavoriteChart,FavoriteChartAdmin)
+admin.site.register(SiteAnnouncement,SiteAnnouncementAdmin)
diff --git a/rowers/models.py b/rowers/models.py
index dedacd62..87585c37 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -14,6 +14,8 @@ from django.conf import settings
from sqlalchemy import create_engine
import sqlalchemy as sa
from sqlite3 import OperationalError
+from django.utils import timezone
+import datetime
user = settings.DATABASES['default']['USER']
password = settings.DATABASES['default']['PASSWORD']
@@ -499,3 +501,16 @@ class RowerForm(ModelForm):
raise forms.ValidationError("TR should be lower than AN")
if an>=max:
raise forms.ValidationError("AN should be lower than Max")
+
+class SiteAnnouncement(models.Model):
+ created = models.DateField(default=timezone.now)
+ announcement = models.TextField(max_length=140)
+ expires = models.DateField(default=timezone.now)
+ modified = models.DateField(default=timezone.now)
+
+ def save(self, *args, **kwargs):
+ if not self.id:
+ self.created = timezone.now()
+ self.expires = timezone.now()+datetime.timedelta(days=10)
+ self.modified = timezone.now()
+ return super(SiteAnnouncement,self).save(*args, **kwargs)
diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html
index aaf47bdf..7fcc985b 100644
--- a/rowers/templates/list_workouts.html
+++ b/rowers/templates/list_workouts.html
@@ -22,36 +22,37 @@
-
-
My Workouts
-{% if workouts %}
-
-
-
- | Date |
- Time |
- Name |
- Type |
- Distance |
- Duration |
- Avg HR |
- Max HR |
- Delete |
- Export |
-
-
-
-{% for workout in workouts %}
-
- | {{ workout.date }} |
- {{ workout.starttime }} |
-
- {% if user.rower.rowerplan == 'pro' %}
- {{ workout.name }} |
- {% else %}
- {{ workout.name }}
-{% endif %}
+
+
My Workouts
+
+ {% if workouts %}
+
+
+
+ | Date |
+ Time |
+ Name |
+ Type |
+ Distance |
+ Duration |
+ Avg HR |
+ Max HR |
+ Delete |
+ Export |
+
+
+
+ {% for workout in workouts %}
+
+ | {{ workout.date }} |
+ {{ workout.starttime }} |
+
+ {% if user.rower.rowerplan == 'pro' %}
+ {{ workout.name }} |
+ {% else %}
+ {{ workout.name }}
+ {% endif %}
{{ workout.workouttype }} |
{{ workout.distance }}m |
{{ workout.duration |durationprint:"%H:%M:%S.%f" }} |
@@ -71,20 +72,52 @@
No workouts found
{% endif %}
-
+
+
+
+ {% if announcements %}
+
What's New?
+ {% for a in announcements %}
+
+
+ {{ a.created }}:
+ {{ a.announcement }}
+
+
+ {% endfor %}
+
+ {% endif %}
+
+
+
About
+
This site is a beta site, pioneering rowing data visualization and analysis. No warranties. The site's author is
+ Sander Roosendaal. A Masters rower.
+
+ Read his blog
+
+
+

+
+
+
+
+
+
+
+