def category_suggestions(): users = (User.query.filter( ~User.is_deleted, User._all_settings.any( db.and_(UserSetting.module == 'users', UserSetting.name == 'suggest_categories', db.cast(UserSetting.value, db.String) == 'true')))) for user in users: existing = {x.category: x for x in user.suggested_categories} related = set(get_related_categories(user, detailed=False)) for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue if (category in related or category.is_deleted or category.suggestions_disabled or any(p.suggestions_disabled for p in category.parent_chain_query)): continue logger.debug('Suggesting %s with score %.03f for %s', category, score, user) suggestion = existing.get(category) or SuggestedCategory( category=category, user=user) suggestion.score = score user.settings.set('suggest_categories', False) db.session.commit()
def _update_suggestions(self, avatar): for category, score in get_category_scores(avatar).iteritems(): if score < SUGGESTION_MIN_SCORE: continue #print 'Suggest category for %r: %r (%.03f)' % (avatar, category, score) redis_suggestions.suggest(avatar, 'category', category.getId(), score)
def category_suggestions(): if not redis_write_client: return while True: user_id = next_scheduled_check() if user_id is None: break user = User.get(int(user_id)) if user: for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue logger.debug('Suggesting {} with score {:.03} for {}'.format(category, score, user)) suggest(user, 'category', category.getId(), score) unschedule_check(user_id)
def category_suggestions(): if not redis_write_client: return while True: user_id = next_scheduled_check() if user_id is None: break user = User.get(int(user_id)) if user: for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue logger.debug('Suggesting %s with score %.03f for %s', category, score, user) suggest(user, 'category', category.getId(), score) unschedule_check(user_id)
def category_suggestions(): users = (User.query .filter(~User.is_deleted, User._all_settings.any(db.and_(UserSetting.module == 'users', UserSetting.name == 'suggest_categories', db.cast(UserSetting.value, db.String) == 'true')))) for user in users: existing = {x.category: x for x in user.suggested_categories} related = set(get_related_categories(user, detailed=False)) for category, score in get_category_scores(user).iteritems(): if score < SUGGESTION_MIN_SCORE: continue if (category in related or category.is_deleted or category.suggestions_disabled or any(p.suggestions_disabled for p in category.parent_chain_query)): continue logger.debug('Suggesting %s with score %.03f for %s', category, score, user) suggestion = existing.get(category) or SuggestedCategory(category=category, user=user) suggestion.score = score user.settings.set('suggest_categories', False) db.session.commit()
import sys from pprint import pprint from MaKaC.common import DBMgr from MaKaC.user import AvatarHolder from indico.util.suggestions import get_category_scores, update_event_data, iter_interesting_events with DBMgr.getInstance().global_connection(): # 44 is jb # 22116 is pedro # 42604 is me (adrian) avatar = AvatarHolder().getById(sys.argv[1] if len(sys.argv) > 1 else '42604') pprint(dict((' -> '.join(c.getCategoryPathTitles()), score) for c, score in get_category_scores(avatar, True).iteritems())) data = {} for categ, score in get_category_scores(avatar).iteritems(): if score > 0: update_event_data(avatar, categ, data) if data: for event in iter_interesting_events(avatar, data): print repr(event)