def get_related_categories(user, detailed=True): """Gets the related categories of a user for the dashboard""" favorites = set() if user.favorite_categories: favorites = set( Category.query.filter( Category.id.in_(c.id for c in user.favorite_categories)).options( undefer('chain_titles')).all()) managed = set( Category.query.filter( Category.acl_entries.any( db.and_(CategoryPrincipal.type == PrincipalType.user, CategoryPrincipal.user == user, CategoryPrincipal.has_management_role())), ~Category.is_deleted).options(undefer('chain_titles'))) if not detailed: return favorites | managed res = {} for categ in favorites | managed: res[(categ.title, categ.id)] = { 'categ': categ, 'favorite': categ in favorites, 'managed': categ in managed, 'path': truncate_path(categ.chain_titles[:-1], chars=50) } return OrderedDict(sorted(res.items(), key=itemgetter(0)))
def get_related_categories(user, detailed=True): """Gets the related categories of a user for the dashboard""" favorites = set() if user.favorite_categories: favorites = set(Category.query .filter(Category.id.in_(c.id for c in user.favorite_categories)) .options(undefer('chain_titles')) .all()) managed = set(Category.query .filter(Category.acl_entries.any(db.and_(CategoryPrincipal.type == PrincipalType.user, CategoryPrincipal.user == user, CategoryPrincipal.has_management_role())), ~Category.is_deleted) .options(undefer('chain_titles'))) if not detailed: return favorites | managed res = {} for categ in favorites | managed: res[(categ.title, categ.id)] = { 'categ': categ, 'favorite': categ in favorites, 'managed': categ in managed, 'path': truncate_path(categ.chain_titles[:-1], chars=50) } return OrderedDict(sorted(res.items(), key=itemgetter(0)))
def _merge_users(target, source, **kwargs): from indico.modules.categories.models.principals import CategoryPrincipal CategoryPrincipal.merge_users(target, source, 'category')
def _merge_users(target, source, **kwargs): from indico.modules.categories.models.principals import CategoryPrincipal CategoryPrincipal.merge_users(target, source, 'category')