コード例 #1
0
ファイル: tasks.py プロジェクト: dwakna/indico-cbnu
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()
コード例 #2
0
ファイル: suggestions.py プロジェクト: marcosmolla/indico
 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)
コード例 #3
0
ファイル: tasks.py プロジェクト: dbourillot/indico
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)
コード例 #4
0
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)
コード例 #5
0
ファイル: tasks.py プロジェクト: ThiefMaster/indico
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()
コード例 #6
0
ファイル: suggestions.py プロジェクト: Ictp/indico
 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)
コード例 #7
0
ファイル: interest_scores.py プロジェクト: marcosmolla/indico
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)