Commit cec534fd3cccbe0358af9217e29855043407f167
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) |