def article_info_for_teacher(self): from zeeguu_core.model import CohortArticleMap info = self.article_info() info["cohorts"] = CohortArticleMap.get_cohorts_for_article(self) return info
def cohort_articles_for_user(user): try: cohort = Cohort.find(user.cohort_id) cohort_articles = CohortArticleMap.get_articles_info_for_cohort(cohort) return cohort_articles except NoResultFound as e: return []
def cohort_articles_for_user(self): from zeeguu_core.model import Cohort, CohortArticleMap try: cohort = Cohort.find(self.cohort_id) cohort_articles = CohortArticleMap.get_articles_info_for_cohort(cohort) return cohort_articles except NoResultFound as e: return []
def article_recommendations_for_user(user, count): """ Retrieve :param count articles which are equally distributed over all the feeds to which the :param user is registered to. Fails if no language is selected. :return: """ # Temporary fix for the experiment of Gabriel AIKI_USERS_COHORT_ID = 109 if user.cohort_id == AIKI_USERS_COHORT_ID: return CohortArticleMap.get_articles_info_for_cohort(user.cohort) import zeeguu_core user_languages = Language.all_reading_for_user(user) if not user_languages: return [user.learned_language] reading_pref_hash = _reading_preferences_hash(user) _recompute_recommender_cache_if_needed(user, zeeguu_core.db.session) # two fast calls ot /articles/recommended might result in a race condition # in _recompute_recommender_cache; # race condition in _recompute_recommender_cache might result in # duplicates in the db; since this is being sunset for the elastic search # it's not worth fixing the race condition; instead we're simply # ensuring that duplicate articles are removed at this point all_articles = set( ArticlesCache.get_articles_for_hash(reading_pref_hash, count)) all_articles = [ each for each in all_articles if (not each.broken and each.published_time) ] all_articles = SortedList(all_articles, lambda x: x.published_time) return [ UserArticle.user_article_info(user, article) for article in reversed(all_articles) ]
def article_recommendations_for_user(user, count): """ Retrieve :param count articles which are equally distributed over all the feeds to which the :param user is registered to. Fails if no language is selected. :return: """ # Temporary fix for the experiment of Gabriel AIKI_USERS_COHORT_ID = 109 if user.cohort_id == AIKI_USERS_COHORT_ID: return CohortArticleMap.get_articles_info_for_cohort(user.cohort) import zeeguu_core user_languages = Language.all_reading_for_user(user) if not user_languages: return [user.learned_language] reading_pref_hash = _reading_preferences_hash(user) _recompute_recommender_cache_if_needed(user, zeeguu_core.db.session) all_articles = ArticlesCache.get_articles_for_hash(reading_pref_hash, count) all_articles = [ each for each in all_articles if (not each.broken and each.published_time) ] all_articles = SortedList(all_articles, lambda x: x.published_time) return [ UserArticle.user_article_info(user, article) for article in reversed(all_articles) ]