added virtual challenge related data to API
This commit is contained in:
@@ -2223,7 +2223,7 @@ class CourseStandard(models.Model):
|
|||||||
weightclass = models.CharField(max_length=150,default='hwt')
|
weightclass = models.CharField(max_length=150,default='hwt')
|
||||||
adaptiveclass = models.CharField(choices=mytypes.adaptivetypes,max_length=50,default="None")
|
adaptiveclass = models.CharField(choices=mytypes.adaptivetypes,max_length=50,default="None")
|
||||||
skillclass = models.CharField(max_length=150,default='Open')
|
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:
|
class Meta:
|
||||||
unique_together = (
|
unique_together = (
|
||||||
|
|||||||
@@ -26,3 +26,8 @@ class IsOwnerOrNot(permissions.BasePermission):
|
|||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
r = Rower.objects.get(user=request.user)
|
r = Rower.objects.get(user=request.user)
|
||||||
return (obj.user == r)
|
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)
|
# Also optionally define POST, PATCH methods (create, update)
|
||||||
|
|
||||||
from rest_framework import serializers
|
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
|
import datetime
|
||||||
|
|
||||||
@@ -43,6 +47,79 @@ class FavoriteChartSerializer(serializers.ModelSerializer):
|
|||||||
'user'
|
'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 WorkoutSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Workout
|
model = Workout
|
||||||
@@ -146,6 +223,3 @@ class StrokeDataSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
# do something
|
# do something
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ from django.conf.urls import url, include
|
|||||||
from django.urls import path, re_path
|
from django.urls import path, re_path
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.decorators import login_required, permission_required
|
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 import routers, serializers, viewsets,permissions
|
||||||
from rest_framework.urlpatterns import format_suffix_patterns
|
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.contrib.auth import views as auth_views
|
||||||
from django.views.generic.base import TemplateView
|
from django.views.generic.base import TemplateView
|
||||||
|
|
||||||
from rowers.permissions import IsOwnerOrNot,IsOwnerOrReadOnly
|
from rowers.permissions import (
|
||||||
|
IsOwnerOrNot,IsOwnerOrReadOnly,
|
||||||
|
IsCompetitorOrNot,
|
||||||
|
)
|
||||||
from rowers.serializers import (
|
from rowers.serializers import (
|
||||||
WorkoutSerializer,
|
WorkoutSerializer,
|
||||||
RowerSerializer,
|
RowerSerializer,
|
||||||
StrokeDataSerializer,
|
StrokeDataSerializer,
|
||||||
FavoriteChartSerializer,
|
FavoriteChartSerializer,
|
||||||
|
EntrySerializer,
|
||||||
|
CourseStandardSerializer,
|
||||||
|
StandardCollectionSerializer,
|
||||||
|
VirtualRaceSerializer,
|
||||||
)
|
)
|
||||||
|
|
||||||
from oauth2_provider.views import (
|
from oauth2_provider.views import (
|
||||||
@@ -78,7 +88,7 @@ class FavoriteChartViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.filter(user=self.request.user)
|
r = Rower.objects.get(user=self.request.user)
|
||||||
return FavoriteChart.objects.filter(user=r)
|
return FavoriteChart.objects.filter(user=r)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return []
|
return []
|
||||||
@@ -89,6 +99,59 @@ class FavoriteChartViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
http_method_names = ['get','put','patch','delete']
|
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):
|
class StrokeDataViewSet(viewsets.ModelViewSet):
|
||||||
serializer_class = StrokeDataSerializer
|
serializer_class = StrokeDataSerializer
|
||||||
|
|
||||||
@@ -97,6 +160,10 @@ router = routers.DefaultRouter()
|
|||||||
router.register(r'api/workouts',WorkoutViewSet, 'workout')
|
router.register(r'api/workouts',WorkoutViewSet, 'workout')
|
||||||
router.register(r'api/me',RowerViewSet, 'rower')
|
router.register(r'api/me',RowerViewSet, 'rower')
|
||||||
router.register(r'api/charts',FavoriteChartViewSet, 'charts')
|
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):
|
def permissiondenied_view(request):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
|||||||
@@ -643,7 +643,7 @@ except ImportError:
|
|||||||
from rest_framework.decorators import api_view, renderer_classes
|
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.plots as plots
|
||||||
import rowers.mailprocessing as mailprocessing
|
import rowers.mailprocessing as mailprocessing
|
||||||
|
|||||||
Reference in New Issue
Block a user