Commit cec534fd3cccbe0358af9217e29855043407f167

Authored by Andrew Buss
1 parent 2958a1827e
Exists in master

moved more view logic into the model layer

Showing 3 changed files with 12 additions and 16 deletions Side-by-side Diff

flashcards/models.py View file @ cec534f
... ... @@ -12,6 +12,7 @@
12 12 AbstractUser._meta.get_field('email')._unique = True
13 13 AbstractUser._meta.get_field('username')._unique = False
14 14  
  15 +
15 16 class EmailOnlyUserManager(UserManager):
16 17 """
17 18 A tiny extension of Django's UserManager which correctly creates users
... ... @@ -176,7 +177,6 @@
176 177 # and there are no other users with this card in their decks
177 178 create_new = user != self.author or \
178 179 UserFlashcard.objects.filter(flashcard=self).exclude(user=user).exists()
179   -
180 180 if 'material_date' in new_data and self.material_date != new_data['material_date']:
181 181 content_changed = True
182 182 self.material_date = new_data['material_date']
183 183  
184 184  
185 185  
... ... @@ -184,12 +184,17 @@
184 184 content_changed = True
185 185 self.text = new_data['text']
186 186 if create_new and content_changed:
  187 + if self.is_in_deck(user): user.unpull(self)
187 188 self.previous_id = self.pk
188   - if 'mask' in new_data:
189   - self.mask = new_data['mask']
190 189 self.pk = None
  190 + self.mask = new_data.get('mask', self.mask)
191 191 self.save()
192   - return create_new and content_changed
  192 + self.add_to_deck(user)
  193 + else:
  194 + user_card, created = UserFlashcard.objects.get_or_create(user=user, flashcard=self)
  195 + user_card.mask = new_data.get('mask', user_card.mask)
  196 + user_card.save()
  197 + return self
193 198  
194 199 @classmethod
195 200 def cards_visible_to(cls, user):
flashcards/serializers.py View file @ cec534f
... ... @@ -7,7 +7,6 @@
7 7 from flashcards.validators import FlashcardMask, OverlapIntervalException
8 8 from rest_framework import serializers
9 9 from rest_framework.fields import EmailField, BooleanField, CharField, IntegerField, DateTimeField
10   -from rest_framework.relations import HyperlinkedRelatedField
11 10 from rest_framework.serializers import ModelSerializer, Serializer
12 11 from rest_framework.validators import UniqueValidator
13 12  
... ... @@ -81,7 +80,7 @@
81 80  
82 81 class UserSerializer(ModelSerializer):
83 82 email = EmailField(required=False)
84   - sections = HyperlinkedRelatedField(queryset=Section.objects.all(), many=True, view_name='section-detail')
  83 + sections = SectionSerializer(many=True)
85 84 is_confirmed = BooleanField()
86 85  
87 86 class Meta:
flashcards/views.py View file @ cec534f
... ... @@ -357,14 +357,6 @@
357 357 data = FlashcardUpdateSerializer(data=request.data)
358 358 data.is_valid(raise_exception=True)
359 359 new_flashcard = data.validated_data
360   - new_card = flashcard.edit(user, new_flashcard)
361   - if new_card:
362   - flashcard.add_to_deck(user)
363   - else:
364   - user_card, created = UserFlashcard.objects.get_or_create(user=user, flashcard=flashcard)
365   - if (not created) and ('mask' in new_flashcard):
366   - user_card.mask = new_flashcard['mask']
367   - user_card.save()
368   -
369   - return Response(FlashcardSerializer(flashcard).data, status=HTTP_200_OK)
  360 + new_flashcard = flashcard.edit(user, new_flashcard)
  361 + return Response(FlashcardSerializer(new_flashcard).data, status=HTTP_200_OK)