Commit 4263a9ac9e621b81dd4ee53cb2e577b92bfb8a11

Authored by Andrew Buss
1 parent 51fcb6875f
Exists in master

send is_authored_by, send feed events when a card is edited

Showing 4 changed files with 21 additions and 6 deletions Side-by-side Diff

flashcards/models.py View file @ 4263a9a
... ... @@ -20,6 +20,9 @@
20 20  
21 21  
22 22  
  23 +
  24 +
  25 +
23 26 # Hack to fix AbstractUser before subclassing it
24 27  
25 28 AbstractUser._meta.get_field('email')._unique = True
... ... @@ -347,7 +350,10 @@
347 350 self.pk = None
348 351 self.mask = new_data.get('mask', self.mask)
349 352 self.save()
350   - self.hide_by_user(user)
  353 + Flashcard.objects.get(pk=self.previous_id).hide_by_user(user)
  354 + import flashcards.pushes
  355 +
  356 + flashcards.pushes.push_feed_event('new_card', self)
351 357 user.pull(self)
352 358 else:
353 359 user_card, created = UserFlashcard.objects.get_or_create(user=user, flashcard=self)
354 360  
355 361  
... ... @@ -361,13 +367,15 @@
361 367 return self
362 368  
363 369 def hide_by_user(self, user, reason=None):
364   - import flashcards.pushes
365 370  
366   - flashcards.pushes.push_deck_event('card_hidden', self, user)
367 371 if self.is_in_deck(user): user.unpull(self)
368 372 hide, created = FlashcardHide.objects.get_or_create(user=user, flashcard=self)
369 373 hide.reason = reason
370 374 hide.save()
  375 + if not created: return
  376 + import flashcards.pushes
  377 +
  378 + flashcards.pushes.push_deck_event('card_hidden', self, user)
371 379  
372 380 def unhide_by_user(self, user, reason=None):
373 381 import flashcards.pushes
flashcards/pushes.py View file @ 4263a9a
... ... @@ -14,6 +14,7 @@
14 14 def push_deck_event(event_type, flashcard, user):
15 15 redis_publisher = RedisPublisher(facility='deck/%d' % flashcard.section_id, users=[user])
16 16 redis_publisher.publish_message(RedisMessage(JSONRenderer().render(
17   - {'event_type': event_type, 'flashcard': serializers.FlashcardSerializer(flashcard).data}
  17 + {'event_type': event_type,
  18 + 'flashcard': serializers.FlashcardSerializer(flashcard, context={'user': user}).data}
18 19 )))
flashcards/serializers.py View file @ 4263a9a
... ... @@ -141,6 +141,7 @@
141 141 class FlashcardSerializer(ModelSerializer):
142 142 is_hidden = SerializerMethodField()
143 143 is_in_deck = SerializerMethodField()
  144 + is_authored_by_user = SerializerMethodField()
144 145 material_week_num = IntegerField(read_only=True)
145 146 material_date = DateTimeField(default=now)
146 147 mask = MaskFieldSerializer(allow_null=True)
... ... @@ -172,6 +173,11 @@
172 173 def get_is_in_deck(self, obj):
173 174 if 'user' not in self.context: return False
174 175 return obj.is_in_deck(self.context['user'])
  176 +
  177 + def get_is_authored_by_user(self, obj):
  178 + if 'user' not in self.context: return False
  179 + return obj.author == self.context['user']
  180 +
175 181  
176 182 class Meta:
177 183 model = Flashcard
flashcards/views.py View file @ 4263a9a
... ... @@ -118,7 +118,7 @@
118 118 Gets the contents of a user's deck for a given section.
119 119 """
120 120 qs = request.user.get_deck(self.get_object())
121   - serializer = FlashcardSerializer(qs, many=True)
  121 + serializer = FlashcardSerializer(qs, context={'user': request.user}, many=True)
122 122 log_event(request, str(self.get_object()))
123 123 return Response(serializer.data)
124 124  
... ... @@ -349,7 +349,7 @@
349 349 raise PermissionDenied('The user is not enrolled in that section')
350 350 data['author'] = request.user
351 351 flashcard = Flashcard.push(**data)
352   - response_data = FlashcardSerializer(flashcard).data
  352 + response_data = FlashcardSerializer(flashcard, context={'user': request.user}).data
353 353 log_event(request, response_data)
354 354 headers = self.get_success_headers(data)
355 355 return Response(response_data, status=HTTP_201_CREATED, headers=headers)