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
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
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_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)
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)