Esempio n. 1
0
def review_count_preprocessor(request):
    """
    preprocessor which returns user's review information like the following:
    1) Current review count.
    2) If no reviews, when is next review.
    3) How many reviews coming up in next hour.
    4) How many reviews coming up in next day.
    """
    context_dict = {}
    if hasattr(request, 'user'):
        if hasattr(request.user, 'profile'):
            review_count = get_users_current_reviews(request.user).count()
            context_dict['review_count'] = review_count
            if review_count == 0:
                reviews = get_users_future_reviews(request.user)
                if reviews:
                    next_review_date = reviews[0].next_review_date
                    context_dict['next_review_date'] = next_review_date
                    context_dict[
                        'next_review_timestamp_local'] = next_review_date.timestamp(
                        ) * 1000
                    context_dict['next_review_timestamp_utc'] = int(
                        time.mktime(next_review_date.timetuple())
                    ) * 1000  #TODO potentially remove?
            one_hour = datetime.timedelta(hours=1)
            today = datetime.timedelta(hours=24)
            context_dict[
                'reviews_within_hour_count'] = get_users_future_reviews(
                    request.user, time_limit=one_hour).count()
            context_dict[
                'reviews_within_day_count'] = get_users_future_reviews(
                    request.user, time_limit=today).count()
            return context_dict
    return context_dict
Esempio n. 2
0
 def get_next_review_date(self, obj):
     user = obj.user
     if self.get_reviews_count(obj) == 0:
         reviews = get_users_future_reviews(user)
         if reviews:
             next_review_date = reviews[0].next_review_date
             return next_review_date
Esempio n. 3
0
 def get_next_review_date(self, obj):
     user = obj.user
     if self.get_reviews_count(obj) == 0:
         reviews = get_users_future_reviews(user)
         if reviews:
             next_review_date = reviews[0].next_review_date
             return next_review_date
Esempio n. 4
0
    def test_returning_future_review_count_with_incorrect_argument_type_falls_back_to_default(self):
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(self.user, time_limit="this is not a timedelta")

        self.assertGreater(future_reviews.count(), 0)
Esempio n. 5
0
    def test_returning_future_review_count_with_invalid_time_limit_returns_empty_queryset(self):
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(self.user, time_limit=timezone.timedelta(hours=-1))

        self.assertEqual(future_reviews.count(), 0)
Esempio n. 6
0
    def test_returning_future_review_count_with_incorrect_argument_type_falls_back_to_default(
        self
    ):
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(
            self.user, time_limit="this is not a timedelta"
        )

        self.assertGreater(future_reviews.count(), 0)
Esempio n. 7
0
    def test_returning_future_review_count_with_invalid_time_limit_returns_empty_queryset(
        self
    ):
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(
            self.user, time_limit=timezone.timedelta(hours=-1)
        )

        self.assertEqual(future_reviews.count(), 0)
Esempio n. 8
0
    def test_returning_review_count_that_is_time_delimited_functions_correctly(self):
        new_review = create_review(create_vocab("arbitrary word"), self.user)
        new_review.needs_review = False
        more_than_24_hours_from_now = timezone.now() + timezone.timedelta(hours=25)
        new_review.next_review_date = more_than_24_hours_from_now
        new_review.save()
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(self.user, time_limit=timezone.timedelta(hours=24))

        self.assertEqual(future_reviews.count(), 1)
Esempio n. 9
0
    def test_returning_review_count_that_is_time_delimited_functions_correctly(self):
        new_review = create_review(create_vocab("arbitrary word"), self.user)
        new_review.needs_review = False
        more_than_24_hours_from_now = timezone.now() + timezone.timedelta(hours=25)
        new_review.next_review_date = more_than_24_hours_from_now
        new_review.save()
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(
            self.user, time_limit=timezone.timedelta(hours=24)
        )

        self.assertEqual(future_reviews.count(), 1)
Esempio n. 10
0
 def get_reviews_within_day_count(self, obj):
     return get_users_future_reviews(
         obj.user, time_limit=datetime.timedelta(hours=24)
     ).count()
Esempio n. 11
0
 def get_reviews_within_day_count(self, obj):
     return get_users_future_reviews(
         obj.user, time_limit=datetime.timedelta(hours=24)
     ).count()