Merge branch 'release/v13.60'
This commit is contained in:
@@ -2223,7 +2223,7 @@ class CourseStandard(models.Model):
|
||||
weightclass = models.CharField(max_length=150,default='hwt')
|
||||
adaptiveclass = models.CharField(choices=mytypes.adaptivetypes,max_length=50,default="None")
|
||||
skillclass = models.CharField(max_length=150,default='Open')
|
||||
standardcollection = models.ForeignKey(StandardCollection,on_delete=models.CASCADE)
|
||||
standardcollection = models.ForeignKey(StandardCollection,on_delete=models.CASCADE,related_name='standards')
|
||||
|
||||
class Meta:
|
||||
unique_together = (
|
||||
|
||||
@@ -26,3 +26,8 @@ class IsOwnerOrNot(permissions.BasePermission):
|
||||
def has_object_permission(self, request, view, obj):
|
||||
r = Rower.objects.get(user=request.user)
|
||||
return (obj.user == r)
|
||||
|
||||
class IsCompetitorOrNot(permissions.BasePermission):
|
||||
|
||||
def has_object_permission(self, request, view, obj):
|
||||
return (obj.userid == request.user.id)
|
||||
|
||||
@@ -7,7 +7,11 @@ from __future__ import unicode_literals
|
||||
# Also optionally define POST, PATCH methods (create, update)
|
||||
|
||||
from rest_framework import serializers
|
||||
from rowers.models import Workout,Rower,FavoriteChart
|
||||
from rowers.models import (
|
||||
Workout,Rower,FavoriteChart,VirtualRaceResult,
|
||||
VirtualRace,GeoCourse,StandardCollection, CourseStandard,
|
||||
|
||||
)
|
||||
|
||||
import datetime
|
||||
|
||||
@@ -42,7 +46,80 @@ class FavoriteChartSerializer(serializers.ModelSerializer):
|
||||
'reststrokes',
|
||||
'user'
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class CourseStandardSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = CourseStandard
|
||||
fields = (
|
||||
'id',
|
||||
'name',
|
||||
'coursedistance',
|
||||
'coursetime',
|
||||
'agemin',
|
||||
'agemax',
|
||||
'boatclass',
|
||||
'boattype',
|
||||
'sex',
|
||||
'weightclass',
|
||||
'adaptiveclass',
|
||||
'skillclass',
|
||||
'standardcollection',
|
||||
)
|
||||
|
||||
class StandardCollectionSerializer(serializers.ModelSerializer):
|
||||
standards = CourseStandardSerializer(many=True,read_only=True)
|
||||
class Meta:
|
||||
model = StandardCollection
|
||||
fields = (
|
||||
'id',
|
||||
'notes',
|
||||
'active',
|
||||
'standards'
|
||||
)
|
||||
|
||||
class EntrySerializer(serializers.ModelSerializer):
|
||||
entrycategory = CourseStandardSerializer(read_only=True)
|
||||
class Meta:
|
||||
model = VirtualRaceResult
|
||||
fields = (
|
||||
'id',
|
||||
'teamname',
|
||||
'adaptiveclass',
|
||||
'skillclass',
|
||||
'race',
|
||||
'distance',
|
||||
'duration',
|
||||
'points',
|
||||
'boattype',
|
||||
'sex',
|
||||
'age',
|
||||
'entrycategory',
|
||||
)
|
||||
|
||||
class VirtualRaceSerializer(serializers.ModelSerializer):
|
||||
coursestandards = StandardCollectionSerializer(read_only=True)
|
||||
class Meta:
|
||||
model = VirtualRace
|
||||
fields = (
|
||||
'id',
|
||||
'registration_closure',
|
||||
'evaluation_closure',
|
||||
'start_time',
|
||||
'end_time',
|
||||
'country',
|
||||
'timezone',
|
||||
'contact_phone',
|
||||
'contact_email',
|
||||
'coursestandards',
|
||||
)
|
||||
|
||||
|
||||
class WorkoutSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Workout
|
||||
@@ -58,7 +135,7 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
||||
'maxhr',
|
||||
'notes',
|
||||
'summary',
|
||||
'boattype',
|
||||
'boattype',
|
||||
'timezone',
|
||||
'forceunit',
|
||||
'inboard',
|
||||
@@ -101,7 +178,7 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
||||
rankingpiece=validated_data['rankingpiece'],)
|
||||
w.save()
|
||||
return w
|
||||
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
d = validated_data['date']
|
||||
t = validated_data['starttime']
|
||||
@@ -138,7 +215,7 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
||||
class StrokeDataSerializer(serializers.Serializer):
|
||||
workoutid = serializers.IntegerField
|
||||
strokedata = serializers.JSONField
|
||||
|
||||
|
||||
def create(self, workoutid, strokedata):
|
||||
"""
|
||||
Create and enter a new set of stroke data into the DB
|
||||
@@ -146,6 +223,3 @@ class StrokeDataSerializer(serializers.Serializer):
|
||||
|
||||
# do something
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -356,7 +356,8 @@ def async_get_workout(user,stravaid):
|
||||
try:
|
||||
token = strava_open(user)
|
||||
except NoTokenError:
|
||||
return 0
|
||||
return 0
|
||||
|
||||
csvfilename = 'media/{code}_{stravaid}.csv'.format(code=uuid4().hex[:16],stravaid=stravaid)
|
||||
job = myqueue(queue,
|
||||
fetch_strava_workout,
|
||||
|
||||
@@ -7,7 +7,10 @@ from django.conf.urls import url, include
|
||||
from django.urls import path, re_path
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from rowers.models import Workout,Rower,FavoriteChart
|
||||
from rowers.models import (
|
||||
Workout,Rower,FavoriteChart,VirtualRaceResult,
|
||||
VirtualRace,StandardCollection,CourseStandard,
|
||||
)
|
||||
|
||||
from rest_framework import routers, serializers, viewsets,permissions
|
||||
from rest_framework.urlpatterns import format_suffix_patterns
|
||||
@@ -16,12 +19,19 @@ from rowers import views
|
||||
from django.contrib.auth import views as auth_views
|
||||
from django.views.generic.base import TemplateView
|
||||
|
||||
from rowers.permissions import IsOwnerOrNot,IsOwnerOrReadOnly
|
||||
from rowers.permissions import (
|
||||
IsOwnerOrNot,IsOwnerOrReadOnly,
|
||||
IsCompetitorOrNot,
|
||||
)
|
||||
from rowers.serializers import (
|
||||
WorkoutSerializer,
|
||||
RowerSerializer,
|
||||
StrokeDataSerializer,
|
||||
FavoriteChartSerializer,
|
||||
EntrySerializer,
|
||||
CourseStandardSerializer,
|
||||
StandardCollectionSerializer,
|
||||
VirtualRaceSerializer,
|
||||
)
|
||||
|
||||
from oauth2_provider.views import (
|
||||
@@ -78,7 +88,7 @@ class FavoriteChartViewSet(viewsets.ModelViewSet):
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
r = Rower.objects.filter(user=self.request.user)
|
||||
r = Rower.objects.get(user=self.request.user)
|
||||
return FavoriteChart.objects.filter(user=r)
|
||||
except TypeError:
|
||||
return []
|
||||
@@ -89,6 +99,59 @@ class FavoriteChartViewSet(viewsets.ModelViewSet):
|
||||
|
||||
http_method_names = ['get','put','patch','delete']
|
||||
|
||||
class EntryViewSet(viewsets.ModelViewSet):
|
||||
model = VirtualRaceResult
|
||||
serializer_class = EntrySerializer
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
return VirtualRaceResult.objects.filter(userid=self.request.user.id)
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
http_method_names = ['get']
|
||||
|
||||
permission_classes = (
|
||||
IsCompetitorOrNot,
|
||||
)
|
||||
|
||||
class VirtualRaceViewSet(viewsets.ModelViewSet):
|
||||
model = VirtualRace
|
||||
serializer_class = VirtualRaceSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
return VirtualRace.objects.all()
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
http_method_names = ['get']
|
||||
|
||||
class CourseStandardViewSet(viewsets.ModelViewSet):
|
||||
model = CourseStandard
|
||||
serializer_class = CourseStandardSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
return CourseStandard.objects.all()
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
http_method_names = ['get']
|
||||
|
||||
class StandardCollectionViewSet(viewsets.ModelViewSet):
|
||||
model = StandardCollection
|
||||
|
||||
serializer_class = StandardCollectionSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
return StandardCollection.objects.all()
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
http_method_names = ['get']
|
||||
|
||||
class StrokeDataViewSet(viewsets.ModelViewSet):
|
||||
serializer_class = StrokeDataSerializer
|
||||
|
||||
@@ -97,6 +160,10 @@ router = routers.DefaultRouter()
|
||||
router.register(r'api/workouts',WorkoutViewSet, 'workout')
|
||||
router.register(r'api/me',RowerViewSet, 'rower')
|
||||
router.register(r'api/charts',FavoriteChartViewSet, 'charts')
|
||||
router.register(r'api/entries',EntryViewSet,'entries')
|
||||
router.register(r'api/challenges',VirtualRaceViewSet,'challenges')
|
||||
router.register(r'api/standards',CourseStandardViewSet,'standards')
|
||||
router.register(r'api/standardcollections',StandardCollectionViewSet,'standardcollections')
|
||||
|
||||
def permissiondenied_view(request):
|
||||
raise PermissionDenied
|
||||
|
||||
@@ -643,7 +643,7 @@ except ImportError:
|
||||
from rest_framework.decorators import api_view, renderer_classes
|
||||
|
||||
|
||||
from rowers.permissions import IsOwnerOrNot
|
||||
from rowers.permissions import IsOwnerOrNot, IsCompetitorOrNot
|
||||
|
||||
import rowers.plots as plots
|
||||
import rowers.mailprocessing as mailprocessing
|
||||
|
||||
Reference in New Issue
Block a user