|
|
|
|
@ -1,6 +1,8 @@ |
|
|
|
|
from rest_framework import serializers |
|
|
|
|
from rest_framework.validators import UniqueValidator |
|
|
|
|
|
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
|
|
|
|
|
from apps.course.models import ( |
|
|
|
|
Category, Course, |
|
|
|
|
Comment, CourseComment, LessonComment, |
|
|
|
|
@ -21,6 +23,9 @@ from .user import UserSerializer |
|
|
|
|
from .mixins import DispatchContentMixin, DispatchGalleryMixin, DispatchMaterialMixin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
User = get_user_model() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MaterialCreateSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
@ -71,16 +76,22 @@ class LikeCreateSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
model = Like |
|
|
|
|
fields = ['obj_type', 'obj_id'] |
|
|
|
|
fields = ['user', 'obj_type', 'obj_id'] |
|
|
|
|
|
|
|
|
|
def create(self, validated_data): |
|
|
|
|
user = self.context['request'].user |
|
|
|
|
if not (user and user.is_authenticated): |
|
|
|
|
# FIXME |
|
|
|
|
if validated_data.get('user'): |
|
|
|
|
user = validated_data.get('user') |
|
|
|
|
else: |
|
|
|
|
user = self.context['request'].user |
|
|
|
|
if not user: # FIXME and user.is_authenticated): |
|
|
|
|
return Like() |
|
|
|
|
obj_type = validated_data.pop('obj_type') |
|
|
|
|
obj_id = validated_data.pop('obj_id') |
|
|
|
|
if obj_type == self.OBJ_TYPE_CONTEST_WORK: |
|
|
|
|
contest_work = ContestWork.objects.get(pk=obj_id) |
|
|
|
|
# FIXME in prod: |
|
|
|
|
# if contest_work.user == user or contest_work.likes.filter(user=user).exists(): |
|
|
|
|
if contest_work.likes.filter(user=user).exists(): |
|
|
|
|
return Like() |
|
|
|
|
like = Like.objects.create(user=user) |
|
|
|
|
|