|
|
|
@ -1,3 +1,4 @@ |
|
|
|
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
from rest_framework import serializers |
|
|
|
from rest_framework import serializers |
|
|
|
|
|
|
|
|
|
|
|
from api.v1.serializers.content import ContentSerializer, ContentCreateSerializer, ImageObjectSerializer |
|
|
|
from api.v1.serializers.content import ContentSerializer, ContentCreateSerializer, ImageObjectSerializer |
|
|
|
@ -5,6 +6,8 @@ from api.v1.serializers.mixins import DispatchContentMixin |
|
|
|
|
|
|
|
|
|
|
|
from apps.content.models import (Contest, ContestWork) |
|
|
|
from apps.content.models import (Contest, ContestWork) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
User = get_user_model() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ContestSerializer(serializers.ModelSerializer): |
|
|
|
class ContestSerializer(serializers.ModelSerializer): |
|
|
|
cover = ImageObjectSerializer() |
|
|
|
cover = ImageObjectSerializer() |
|
|
|
@ -12,7 +15,8 @@ class ContestSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
class Meta: |
|
|
|
model = Contest |
|
|
|
model = Contest |
|
|
|
fields = '__all__' |
|
|
|
fields = ['title', 'description', 'slug', 'cover', |
|
|
|
|
|
|
|
'date_start', 'date_end', 'active', 'content', 'finished'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ContestCreateSerializer(DispatchContentMixin, serializers.ModelSerializer): |
|
|
|
class ContestCreateSerializer(DispatchContentMixin, serializers.ModelSerializer): |
|
|
|
@ -52,11 +56,14 @@ class ContestWorkSerializer(serializers.ModelSerializer): |
|
|
|
'created_at', 'likes', 'user_liked', 'img_width', 'img_height'] |
|
|
|
'created_at', 'likes', 'user_liked', 'img_width', 'img_height'] |
|
|
|
|
|
|
|
|
|
|
|
def get_likes(self, instance): |
|
|
|
def get_likes(self, instance): |
|
|
|
return instance.likes.count() |
|
|
|
return instance.likes.filter(user__is_active=True).count() |
|
|
|
|
|
|
|
|
|
|
|
def get_user_liked(self, instance): |
|
|
|
def get_user_liked(self, instance): |
|
|
|
user = self.context['request'].user |
|
|
|
# FIXME |
|
|
|
return instance.likes.filter(user=user).exists() if user.is_authenticated else False |
|
|
|
user = self.context['request'].query_params.get('current_user') |
|
|
|
|
|
|
|
if user: |
|
|
|
|
|
|
|
user = User.objects.get(pk=user) |
|
|
|
|
|
|
|
return instance.likes.filter(user=user).exists() if user else False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ContestWorkCreateSerializer(serializers.ModelSerializer): |
|
|
|
class ContestWorkCreateSerializer(serializers.ModelSerializer): |
|
|
|
|