Exemple #1
0
    def get_reviews(self, current_user=None, user_courses=None):
        """Return a list of all user reviews ("tips") about this course.

        Does not include professor reviews.

        Arguments:
            current_user: The current user. Used for revealing more author
                information if possible (eg. reviews written by friends who
                allow their friends to know that they wrote it).
            user_courses: An optional list of all user_courses that's
                associated with this course to speed up this function.
        """
        if not user_courses:
            limit_fields = ["course_id", "user_id", "course_review"]
            user_courses = _user_course.UserCourse.objects(course_id=self.id).only(*limit_fields)

        reviews = []
        for uc in user_courses:
            if len(uc.course_review.comment) < review.CourseReview.MIN_REVIEW_LENGTH:
                continue

            reviews.append(uc.course_review.to_dict(current_user, uc.user_id))

        # Filter out old reviews if we have enough results.
        date_getter = lambda review: review["comment_date"]
        reviews = util.publicly_visible_ratings_and_reviews_filter(reviews, date_getter, util.MIN_NUM_REVIEWS)

        return reviews
Exemple #2
0
    def get_reviews(self, current_user=None, user_courses=None):
        """Return a list of all user reviews ("tips") about this course.

        Does not include professor reviews.

        Arguments:
            current_user: The current user. Used for revealing more author
                information if possible (eg. reviews written by friends who
                allow their friends to know that they wrote it).
            user_courses: An optional list of all user_courses that's
                associated with this course to speed up this function.
        """
        if not user_courses:
            limit_fields = ['course_id', 'user_id', 'course_review']
            user_courses = _user_course.UserCourse.objects(
                    course_id=self.id).only(*limit_fields)

        reviews = []
        for uc in user_courses:
            if (len(uc.course_review.comment) <
                    review.CourseReview.MIN_REVIEW_LENGTH):
                continue

            reviews.append(uc.course_review.to_dict(current_user, uc.user_id,
                  uc.id))

        # Filter out old reviews if we have enough results.
        date_getter = lambda review: review['comment_date']
        reviews = util.publicly_visible_ratings_and_reviews_filter(
                reviews, date_getter, util.MIN_NUM_REVIEWS)

        return reviews
Exemple #3
0
    def get_reviews_for_course(self, course_id, current_user=None):
        ucs = user_course.get_reviews_for_course_prof(course_id, self.id)

        # Quality filter.
        # TODO(david): Eventually do this in mongo query or enforce quality
        #     metrics on front-end
        ucs = filter(
                lambda uc: len(uc.professor_review.comment)
                    >= _review.ProfessorReview.MIN_REVIEW_LENGTH,
                ucs)

        prof_review_dicts = [uc.professor_review.to_dict(current_user,
            getattr(uc, 'user_id', None)) for uc in ucs]

        # Try to not show older reviews, if we have enough results
        date_getter = lambda review: review['comment_date']
        prof_review_dicts = util.publicly_visible_ratings_and_reviews_filter(
                prof_review_dicts, date_getter, util.MIN_NUM_REVIEWS)

        return prof_review_dicts
Exemple #4
0
    def get_reviews_for_course(self, course_id, current_user=None):
        ucs = user_course.get_reviews_for_course_prof(course_id, self.id)

        # Quality filter.
        # TODO(david): Eventually do this in mongo query or enforce quality
        #     metrics on front-end
        ucs = filter(
            lambda uc: len(uc.professor_review.comment) >= _review.
            ProfessorReview.MIN_REVIEW_LENGTH, ucs)

        prof_review_dicts = [
            uc.professor_review.to_dict(current_user,
                                        getattr(uc, 'user_id', None))
            for uc in ucs
        ]

        # Try to not show older reviews, if we have enough results
        date_getter = lambda review: review['comment_date']
        prof_review_dicts = util.publicly_visible_ratings_and_reviews_filter(
            prof_review_dicts, date_getter, util.MIN_NUM_REVIEWS)

        return prof_review_dicts
 def get_publicly_visible(cls, min_num_ucs=0, num_days=None):
     """Filter out stale MenloCourses that we don't want to display."""
     return util.publicly_visible_ratings_and_reviews_filter(
         cls.objects, get_user_course_modified_date, min_num_ucs, num_days)
Exemple #6
0
 def get_publicly_visible(cls, min_num_ucs=0, num_days=None):
     """Filter out stale MenloCourses that we don't want to display."""
     return util.publicly_visible_ratings_and_reviews_filter(
         cls.objects, get_user_course_modified_date, min_num_ucs, num_days)