def get_context_data(self, **kwargs): data = super().get_context_data(**kwargs) try: data['profile'] = self.user = User.objects.get( pk=self.kwargs['pk'], is_active=True) except: raise Http404 self.tags_stat = tags_stat(self.user.id) data['tree'] = json.dumps(self.gen_tag_tree(-1)) data['p_tags'] = list(Problem.objects.all()) data['tag_problem_recommendation'] = dict() for tag_id in TagInfo.objects.values_list('tag_id', flat=True): if tag_id in self.tags_stat: problem_id_list = select_with_tags( self.user.id, [(tag_id, self.tags_stat[tag_id])], max_count_per_tag=5) data['tag_problem_recommendation'][tag_id] = [ Problem.objects.get(id=p_id) for p_id in problem_id_list ] else: data['tag_problem_recommendation'][tag_id] = [] return data
def unfamiliar_problems(user_id): tags_record = list(filter(lambda k: k[1][0] < 2 and k[1][1] - k[1][0] >= 1, tags_stat(user_id).items())) random.shuffle(tags_record) return select_with_tags(user_id, tags_record)