def test_userspecifics_needing_review_are_flagged(self): self.review.needs_review = False self.review.last_studied = past_time(5) self.review.save() all_srs() review = UserSpecific.objects.get(pk=self.review.id) self.assertTrue(review.needs_review)
def _update_calculated_fields(self, serializer): old_instance = serializer.instance user = old_instance.user if old_instance.on_vacation and not serializer.validated_data.get( "on_vacation" ): old_instance.return_from_vacation() all_srs(user) if not old_instance.on_vacation and serializer.validated_data.get( "on_vacation" ): old_instance.begin_vacation() if not old_instance.follow_me and serializer.validated_data.get( "follow_me" ): start_following_wanikani(user) # Since if we have gotten this far, we know that API key is valid, we set it here. api_validated = serializer.validated_data.get("api_key_v2", None) if api_validated: serializer.validated_data["api_valid"] = True return serializer
def test_user_returns_from_vacation_correctly_increments_review_timestamps( self): now = timezone.now() two_hours_ago = now - timezone.timedelta(hours=2) two_hours_from_now = now + timezone.timedelta(hours=2) four_hours_from_now = now + timezone.timedelta(hours=4) self.user.profile.on_vacation = True # Create review that should be reviewed never again, but got reviewed 2 hours ago. review = create_review(create_vocab("wazoop"), self.user) review.burned = True review.next_review_date = None review.last_studied = two_hours_ago review.save() self.user.profile.vacation_date = two_hours_ago self.user.profile.save() self.review.last_studied = two_hours_ago self.review.next_review_date = two_hours_from_now self.review.save() previously_studied = self.review.last_studied self.user.profile.return_from_vacation() all_srs(self.user) self.review.refresh_from_db() self.assertNotEqual(self.review.last_studied, previously_studied) self.assertAlmostEqual( self.review.next_review_date, four_hours_from_now, delta=timezone.timedelta(minutes=15), ) self.assertAlmostEqual(self.review.last_studied, now, delta=timezone.timedelta(minutes=15)) self.assertAlmostEqual( review.last_studied, two_hours_ago, delta=timezone.timedelta(minutes=15), ) self.assertAlmostEqual(review.next_review_date, None)
def test_users_who_are_on_vacation_are_ignored_by_all_srs_algorithm(self): self.review.last_studied = past_time(10) self.review.streak = 1 self.review.needs_review = False self.review.save() reviews_affected = all_srs() self.assertEqual(reviews_affected, 1) self.review.last_studied = past_time(10) self.review.streak = 1 self.review.needs_review = False self.review.save() self.user.profile.on_vacation = True self.user.profile.save() reviews_affected = all_srs() self.assertEqual(reviews_affected, 0)
def srs(self, request): all_srs(request.user) new_review_count = get_users_current_reviews(request.user).count() return Response({"review_count": new_review_count})