diff --git a/rowers/models.py b/rowers/models.py index 9c657e00..c75106ce 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2292,6 +2292,7 @@ class PlannedSession(models.Model): if self.sessionvalue <= 0: self.sessionvalue = 1 + manager = self.manager if self.sessiontype not in ['race','indoorrace']: if not can_add_session(self.manager): diff --git a/rowers/permissions.py b/rowers/permissions.py index 8ea8540e..614057b0 100644 --- a/rowers/permissions.py +++ b/rowers/permissions.py @@ -27,6 +27,16 @@ class IsOwnerOrNot(permissions.BasePermission): r = Rower.objects.get(user=request.user) return (obj.user == r) +class IsRowerOrNot(permissions.BasePermission): + def has_object_permission(self, request, view, obj): + r = Rower.objects.get(user=request.user) + return (r in obj.rower.all()) + +class IsPlanOrHigher(permissions.BasePermission): + def has_object_permission(self, request, view, obj): + r = Rower.objects.get(user=request.user) + return r not in ['basic','pro','freecoach'] + class IsCompetitorOrNot(permissions.BasePermission): def has_object_permission(self, request, view, obj): diff --git a/rowers/serializers.py b/rowers/serializers.py index 7bc3e8e9..fc01865f 100644 --- a/rowers/serializers.py +++ b/rowers/serializers.py @@ -10,7 +10,7 @@ from rest_framework import serializers from rowers.models import ( Workout,Rower,FavoriteChart,VirtualRaceResult, VirtualRace,GeoCourse,StandardCollection, CourseStandard, - GeoCourse, GeoPolygon, GeoPoint, + GeoCourse, GeoPolygon, GeoPoint,PlannedSession, ) from django.core.exceptions import PermissionDenied @@ -31,8 +31,11 @@ class RowerSerializer(serializers.HyperlinkedModelSerializer): 'at', 'tr', 'an', + 'hrzones', 'ftp', + 'hrftp', 'sex', + 'defaulttimezone', ) class FavoriteChartSerializer(serializers.ModelSerializer): @@ -127,6 +130,34 @@ class VirtualRaceSerializer(serializers.ModelSerializer): 'coursestandards', ) +class PlannedSessionSerializer(serializers.ModelSerializer): + class Meta: + model = VirtualRace + fields = ( + 'id', + 'name', + 'comment', + 'startdate', + 'enddate', + 'preferreddate', + 'sessiontype', + 'sessionvalue', + 'sessionunit', + 'sessionmode', + 'course', + ) + + def create(self, validated_data): + if self.context['request'].user.is_authenticated: + r = Rower.objects.get(user=self.context['request'].user) + else: + raise PermissionDenied("Not allowed") + + ps = PlannedSession.objects.create(manager=r.user,**validated_data) + ps.rower.add(r) + ps.save() + return ps + class EntrySerializer(serializers.ModelSerializer): entrycategory = CourseStandardSerializer(read_only=True) race = VirtualRaceSerializer(read_only=True) @@ -172,7 +203,6 @@ class WorkoutSerializer(serializers.ModelSerializer): ) def create(self, validated_data): - print(validated_data) if self.context['request'].user.is_authenticated: r = Rower.objects.get(user=self.context['request'].user) else: diff --git a/rowers/templates/developers.html b/rowers/templates/developers.html index bebe6949..9dbbf9e9 100644 --- a/rowers/templates/developers.html +++ b/rowers/templates/developers.html @@ -208,6 +208,32 @@ +
{
+ "id": 17,
+ "name": "Test Session",
+ "comment": "",
+ "startdate": "2021-01-25",
+ "enddate": "2021-01-31",
+ "preferreddate": "2021-01-29",
+ "sessiontype": "session",
+ "sessionvalue": 60,
+ "sessionunit": "min",
+ "sessionmode": "time",
+ "manager": 1,
+ "course": null
+ }
+
+