def get_suggested_categories(user): """Gets the suggested categories of a user for the dashboard""" from MaKaC.conference import CategoryManager if not redis_write_client: return [] related = user.favorite_categories | user.get_linked_objects('category', 'manager') res = [] for id_, score in suggestions.get_suggestions(user, 'category').iteritems(): try: categ = CategoryManager().getById(id_) except KeyError: suggestions.unsuggest(user, 'category', id_) continue if not categ or categ.isSuggestionsDisabled() or categ in related: continue if any(p.isSuggestionsDisabled() for p in categ.iterParents()): continue if not categ.canAccess(AccessWrapper(user.as_avatar)): continue res.append({ 'score': score, 'categ': categ, 'path': truncate_path(categ.getCategoryPathTitles()[:-1], chars=50) }) return res
def _process_PUT(self): category = CategoryManager().getById(request.view_args['category_id']) if category not in self.user.favorite_categories: if not category.canAccess(AccessWrapper(self.user.as_avatar)): raise Forbidden() self.user.favorite_categories.add(category) if redis_write_client: suggestions.unignore(self.user, 'category', category.getId()) suggestions.unsuggest(self.user, 'category', category.getId()) return jsonify(success=True)
def _process_PUT(self): category = CategoryManager().getById(request.view_args['category_id']) if category not in self.user.favorite_categories: if not category.canAccess(AccessWrapper(self.user.as_avatar)): raise Forbidden() self.user.favorite_categories.add(category) if redis_write_client: suggestions.unignore(self.user, 'category', category.getId()) suggestions.unsuggest(self.user, 'category', category.getId()) return jsonify(success=True)