mirror of
https://github.com/workhardbekind/workout-challenge.git
synced 2026-07-04 09:23:32 -04:00
first commit
This commit is contained in:
commit
e7f627801f
152 changed files with 35352 additions and 0 deletions
57
src-backend/competition/serializers.py
Normal file
57
src-backend/competition/serializers.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from rest_framework import serializers
|
||||
from custom_user.models import CustomUser
|
||||
from .models import Competition, ActivityGoal, Team, Points
|
||||
|
||||
|
||||
class CompetitionSerializer(serializers.ModelSerializer):
|
||||
owner = serializers.PrimaryKeyRelatedField(
|
||||
queryset=CustomUser.objects.all(),
|
||||
required=False
|
||||
)
|
||||
user_info = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Competition
|
||||
fields = ['id', 'owner', 'user', 'user_info', 'name', 'start_date', 'start_date_fmt', 'start_date_epoch', 'end_date', 'end_date_fmt', 'end_date_epoch', 'has_teams', 'organizer_assigns_teams', 'join_code']
|
||||
read_only_fields = ['join_code', 'user', 'user_info']
|
||||
|
||||
def get_user_info(self, obj):
|
||||
# Assuming `obj.user` is a ManyToMany or related manager
|
||||
users = obj.user.all().order_by('username') if hasattr(obj.user, 'all') else [obj.user]
|
||||
return [{'id': u.id, 'username': u.username} for u in users]
|
||||
|
||||
|
||||
class TeamSerializer(serializers.ModelSerializer):
|
||||
user_info = serializers.SerializerMethodField()
|
||||
my = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Team
|
||||
fields = ['id', 'name', 'competition', 'user', 'user_info', 'my']
|
||||
read_only_fields = ['user', 'user_info', 'my']
|
||||
|
||||
def get_user_info(self, obj):
|
||||
# Assuming `obj.user` is a ManyToMany or related manager
|
||||
users = obj.user.all().order_by('username') if hasattr(obj.user, 'all') else [obj.user]
|
||||
return [{'id': u.id, 'username': u.username} for u in users]
|
||||
|
||||
def get_my(self, obj):
|
||||
# if it is the user's team
|
||||
request = self.context.get('request')
|
||||
if request and hasattr(request, "user"):
|
||||
return obj.user.filter(id=request.user.id).exists()
|
||||
return False
|
||||
|
||||
|
||||
class ActivityGoalSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ActivityGoal
|
||||
fields = '__all__'
|
||||
read_only_fields = []
|
||||
|
||||
|
||||
class PointsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Points
|
||||
fields = ['id', 'goal', 'award', 'workout', 'points_raw', 'points_capped']
|
||||
read_only_fields = []
|
||||
Loading…
Add table
Add a link
Reference in a new issue