def can_view_user_votes(request_user, target_user): return auth.can_view_user_votes(request_user, target_user)
def user_votes(request, user_id, user_view): user = get_object_or_404(User, id=user_id) if not auth.can_view_user_votes(request.user, user): raise Http404 votes = [] question_votes = Vote.objects.extra( select={ 'title' : 'question.title', 'question_id' : 'question.id', 'answer_id' : 0, 'voted_at' : 'vote.voted_at', 'vote' : 'vote', }, select_params=[user_id], tables=['vote', 'question', 'auth_user'], where=['vote.content_type_id = %s AND vote.user_id = %s AND vote.object_id = question.id '+ 'AND vote.user_id=auth_user.id'], params=[question_type_id, user_id], order_by=['-vote.id'] ).values( 'title', 'question_id', 'answer_id', 'voted_at', 'vote', ) if(len(question_votes) > 0): votes.extend(question_votes) answer_votes = Vote.objects.extra( select={ 'title' : 'question.title', 'question_id' : 'question.id', 'answer_id' : 'answer.id', 'voted_at' : 'vote.voted_at', 'vote' : 'vote', }, select_params=[user_id], tables=['vote', 'answer', 'question', 'auth_user'], where=['vote.content_type_id = %s AND vote.user_id = %s AND vote.object_id = answer.id '+ 'AND answer.question_id = question.id AND vote.user_id=auth_user.id'], params=[answer_type_id, user_id], order_by=['-vote.id'] ).values( 'title', 'question_id', 'answer_id', 'voted_at', 'vote', ) if(len(answer_votes) > 0): votes.extend(answer_votes) votes.sort(lambda x,y: cmp(y['voted_at'], x['voted_at'])) return render_to_response(user_view.template_file,{ "tab_name" : user_view.id, "tab_description" : user_view.tab_description, "page_title" : user_view.page_title, "view_user" : user, "votes" : votes[:user_view.data_size] }, context_instance=RequestContext(request))