diff --git a/flashcards/serializers.py b/flashcards/serializers.py index 731957d..afafbbe 100644 --- a/flashcards/serializers.py +++ b/flashcards/serializers.py @@ -123,11 +123,13 @@ class MaskFieldSerializer(serializers.Field): class FlashcardSerializer(ModelSerializer): is_hidden = SerializerMethodField() + is_in_deck = SerializerMethodField() # hide_reason = CharField(read_only=True) material_date = DateTimeField(default=now) mask = MaskFieldSerializer(allow_null=True) score = IntegerField(read_only=True) + def validate_material_date(self, value): # TODO: make this dynamic if QUARTER_START <= value <= QUARTER_END: @@ -151,6 +153,10 @@ class FlashcardSerializer(ModelSerializer): if 'user' not in self.context: return False return obj.is_hidden_from(self.context['user']) + def get_is_in_deck(self, obj): + if 'user' not in self.context: return False + return obj.is_in_deck(self.context['user']) + class Meta: model = Flashcard exclude = 'author', 'previous' diff --git a/flashcards/views.py b/flashcards/views.py index 0f8e175..0fdf34a 100644 --- a/flashcards/views.py +++ b/flashcards/views.py @@ -108,7 +108,8 @@ class SectionViewSet(ReadOnlyModelViewSet): Gets the contents of a user's feed for a section. Exclude cards that are already in the user's deck """ - serializer = FlashcardSerializer(self.get_object().get_feed_for_user(request.user), many=True) + serializer = FlashcardSerializer(self.get_object().get_feed_for_user(request.user), many=True, + context={'user': request.user}) return Response(serializer.data)