Skip to content

Commit

Permalink
update project views and serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
Evgeniy-Golodnykh committed Aug 6, 2024
1 parent 5c633dd commit 1238c57
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 13 deletions.
33 changes: 25 additions & 8 deletions blackfox/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,32 @@
from rest_framework import serializers

from training.models import BodyStatsDiary, FoodDiary, Project
from users.serializers import CustomUserSerializer

User = get_user_model()


class BodyStatsDiarySerializer(serializers.ModelSerializer):
"""A serializer to read BodyStatsDiary instances."""

class Meta:
model = BodyStatsDiary
exclude = ['id']


class FoodDiarySerializer(serializers.ModelSerializer):
"""A serializer to read FoodDiary instances."""

class Meta:
model = FoodDiary
exclude = ['id']


class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id']


class ProjectSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
coach = UserSerializer(read_only=True)
"""A serializer to read Project instances."""

user = CustomUserSerializer(read_only=True)
coach = CustomUserSerializer(read_only=True)
start_date = serializers.DateField()
deadline = serializers.DateField()
target_calories = serializers.IntegerField(min_value=0, max_value=10_000)
Expand All @@ -40,3 +41,19 @@ class ProjectSerializer(serializers.ModelSerializer):
class Meta:
model = Project
exclude = ['id', 'is_closed']


class CreateUpdateProjectSerializer(serializers.ModelSerializer):
"""A serializer to create/update Project instances."""

user = serializers.PrimaryKeyRelatedField(queryset=User.objects)
coach = serializers.PrimaryKeyRelatedField(queryset=User.objects)

class Meta:
model = Project
exclude = ['id', 'is_closed']

def to_representation(self, instance):
request = self.context.get('request')
context = {'request': request}
return ProjectSerializer(instance, context=context).data
12 changes: 7 additions & 5 deletions blackfox/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from api.permissions import IsAdmin, IsCoach
from api.serializers import (
BodyStatsDiarySerializer, FoodDiarySerializer, ProjectSerializer,
BodyStatsDiarySerializer, CreateUpdateProjectSerializer,
FoodDiarySerializer, ProjectSerializer,
)
from training.models import BodyStatsDiary, FoodDiary, Project

Expand Down Expand Up @@ -31,11 +32,12 @@ def perform_create(self, serializer):


class ProjectViewSet(viewsets.ModelViewSet):
permission_classes = [(IsAdmin | IsCoach)]
serializer_class = ProjectSerializer
permission_classes = [IsAdmin | IsCoach]
queryset = Project.objects.all()
filter_backends = [filters.SearchFilter]
search_fields = ['user', 'coach', 'start_date']

def perform_create(self, serializer):
serializer.save(trainer=self.request.user)
def get_serializer_class(self):
if self.action in ('create', 'partial_update'):
return CreateUpdateProjectSerializer
return ProjectSerializer
Binary file modified blackfox/db.sqlite3
Binary file not shown.

0 comments on commit 1238c57

Please sign in to comment.