def profile(request, template, username): # The browser replaces '+' in URL's with ' ' but since we never have ' ' in # URL's we can assume everytime we see ' ' it was a '+' that was replaced. # We do this to deal with legacy usernames that have a '+' in them. username = username.replace(' ', '+') user = User.objects.filter(username=username).first() if not user: try: user = get_object_or_404(User, id=username) except ValueError: raise Http404('No Profile matches the given query.') return redirect(reverse('users.profile', args=(user.username, ))) user_profile = get_object_or_404(Profile, user__id=user.id) if not (request.user.has_perm('users.deactivate_users') or user_profile.user.is_active): raise Http404('No Profile matches the given query.') groups = user_profile.user.groups.all() return render( request, template, { 'profile': user_profile, 'groups': groups, 'num_questions': num_questions(user_profile.user), 'num_answers': num_answers(user_profile.user), 'num_solutions': num_solutions(user_profile.user), 'num_documents': user_num_documents(user_profile.user) })
def profile(request, template, username): # The browser replaces '+' in URL's with ' ' but since we never have ' ' in # URL's we can assume everytime we see ' ' it was a '+' that was replaced. # We do this to deal with legacy usernames that have a '+' in them. username = username.replace(' ', '+') user = User.objects.filter(username=username).first() if not user: try: user = get_object_or_404(User, id=username) except ValueError: raise Http404('No Profile matches the given query.') return redirect(reverse('users.profile', args=(user.username,))) user_profile = get_object_or_404(Profile, user__id=user.id) if not (request.user.has_perm('users.deactivate_users') or user_profile.user.is_active): raise Http404('No Profile matches the given query.') groups = user_profile.user.groups.all() return render(request, template, { 'profile': user_profile, 'awards': Award.objects.filter(user=user_profile.user), 'groups': groups, 'num_questions': num_questions(user_profile.user), 'num_answers': num_answers(user_profile.user), 'num_solutions': num_solutions(user_profile.user), 'num_documents': user_num_documents(user_profile.user)})
def test_num_questions(self): """Answers are counted correctly on a user.""" u = user(save=True) eq_(num_questions(u), 0) q1 = question(creator=u, save=True) eq_(num_questions(u), 1) q2 = question(creator=u, save=True) eq_(num_questions(u), 2) q1.delete() eq_(num_questions(u), 1) q2.delete() eq_(num_questions(u), 0)
def profile(request, username): # The browser replaces '+' in URL's with ' ' but since we never have ' ' in # URL's we can assume everytime we see ' ' it was a '+' that was replaced. # We do this to deal with legacy usernames that have a '+' in them. username = username.replace(" ", "+") user = User.objects.filter(username=username).first() if not user: try: user = get_object_or_404(User, id=username) except ValueError: raise Http404("No Profile matches the given query.") return redirect(reverse("users.profile", args=(user.username,))) user_profile = get_object_or_404(Profile, user__id=user.id) if not (request.user.has_perm("users.deactivate_users") or user_profile.user.is_active): raise Http404("No Profile matches the given query.") groups = user_profile.user.groups.all() return render( request, "users/profile.html", { "profile": user_profile, "awards": Award.objects.filter(user=user_profile.user), "groups": groups, "num_questions": num_questions(user_profile.user), "num_answers": num_answers(user_profile.user), "num_solutions": num_solutions(user_profile.user), "num_documents": user_num_documents(user_profile.user), }, )
def test_num_questions(self): """Answers are counted correctly on a user.""" u = UserFactory() eq_(num_questions(u), 0) q1 = QuestionFactory(creator=u) eq_(num_questions(u), 1) q2 = QuestionFactory(creator=u) eq_(num_questions(u), 2) q1.delete() eq_(num_questions(u), 1) q2.delete() eq_(num_questions(u), 0)
def get_question_count(self, profile): return num_questions(profile.user)