changeset 769:cd3343abca9d

For issue #66, member search function should use GET method.
author Brian Neal <bgneal@gmail.com>
date Wed, 22 Jan 2014 20:07:39 -0600 (2014-01-23)
parents 1b1a12abde3b
children 317015e5a372
files bio/tests/test_views.py bio/views.py sg101/templates/bio/member_search.html
diffstat 3 files changed, 32 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/bio/tests/test_views.py	Tue Jan 21 19:42:09 2014 -0600
+++ b/bio/tests/test_views.py	Wed Jan 22 20:07:39 2014 -0600
@@ -38,7 +38,7 @@
         Test a valid username.
         """
 
-        response = self.client.post(reverse('bio-member_search'),
+        response = self.client.get(reverse('bio-member_search'),
                             {'username': self.USERNAME},
                             follow=True)
 
@@ -56,7 +56,7 @@
         Test a invalid username.
         """
 
-        response = self.client.post(reverse('bio-member_search'),
+        response = self.client.get(reverse('bio-member_search'),
                             {'username': self.USERNAME + '!'})
 
         self.assertEqual(response.status_code, 200)
@@ -68,7 +68,7 @@
         """
 
         try:
-            response = self.client.post(reverse('bio-member_search'),
+            response = self.client.get(reverse('bio-member_search'),
                                 {'username': self.USERNAME + ' '},
                                 follow=True)
         except NoReverseMatch:
--- a/bio/views.py	Tue Jan 21 19:42:09 2014 -0600
+++ b/bio/views.py	Wed Jan 22 20:07:39 2014 -0600
@@ -2,18 +2,15 @@
 Views for the bio application.
 
 """
-from django.shortcuts import render_to_response
+from django.shortcuts import render, redirect
 from django.shortcuts import get_object_or_404
-from django.template import RequestContext
 from django.contrib import messages
 from django.contrib.auth.models import User
 from django.http import HttpResponse
 from django.http import HttpResponseBadRequest
-from django.http import HttpResponseRedirect
 from django.http import HttpResponseServerError
 from django.http import Http404
 from django.core.paginator import InvalidPage
-from django.core.urlresolvers import reverse
 from django.contrib.auth.decorators import login_required
 from django.views.decorators.http import require_POST
 
@@ -64,12 +61,11 @@
     for user in the_page.object_list:
         user.user_profile = user_profiles[user.id]
 
-    return render_to_response('bio/members.html', {
+    return render(request, 'bio/members.html', {
         'page': the_page,
         'type': type,
         'num_members': num_members,
-        },
-        context_instance = RequestContext(request))
+        })
 
 #######################################################################
 
@@ -79,14 +75,13 @@
     badge_collection = BadgeOwnership.objects.filter(
             profile=profile).select_related("badge")
 
-    return render_to_response('bio/view_profile.html', {
+    return render(request, 'bio/view_profile.html', {
         'subject': request.user,
         'profile': profile,
         'hide_email': False,
         'this_is_me': True,
         'badge_collection': badge_collection,
-        },
-        context_instance = RequestContext(request))
+        })
 
 #######################################################################
 
@@ -95,7 +90,7 @@
 
     user = get_object_or_404(User, username=username)
     if user == request.user:
-        return HttpResponseRedirect(reverse('bio-me'))
+        return redirect('bio-me')
 
     profile = user.get_profile()
     hide_email = profile.hide_email
@@ -103,14 +98,13 @@
     badge_collection = BadgeOwnership.objects.filter(
             profile=profile).select_related("badge")
 
-    return render_to_response('bio/view_profile.html', {
+    return render(request, 'bio/view_profile.html', {
         'subject': user,
         'profile': profile,
         'hide_email': hide_email,
         'this_is_me': False,
         'badge_collection': badge_collection,
-        },
-        context_instance = RequestContext(request))
+        })
 
 #######################################################################
 
@@ -118,7 +112,7 @@
 def edit_profile(request):
     if request.method == 'POST':
         if request.POST.get('submit_button', 'Cancel') == 'Cancel':
-            return HttpResponseRedirect(reverse('bio-me'))
+            return redirect('bio-me')
         profile = request.user.get_profile()
         user_form = EditUserForm(request.POST, instance=request.user)
         profile_form = EditUserProfileForm(request.POST, instance=profile)
@@ -127,17 +121,16 @@
             profile = profile_form.save(commit=False)
             profile.user = request.user
             profile.save()
-            return HttpResponseRedirect(reverse('bio-me'))
+            return redirect('bio-me')
     else:
         profile = request.user.get_profile()
         user_form = EditUserForm(instance=request.user)
         profile_form = EditUserProfileForm(instance=profile)
 
-    return render_to_response('bio/edit_profile.html', {
+    return render(request, 'bio/edit_profile.html', {
         'user_form': user_form,
         'profile_form': profile_form,
-         },
-        context_instance = RequestContext(request))
+         })
 
 #######################################################################
 
@@ -157,21 +150,20 @@
                 name, avatar = form.save()
             except IOError:
                 messages.error(request, 'A file error occurred.')
-                return HttpResponseRedirect(reverse('bio-me'))
+                return redirect('bio-me')
 
             if avatar is not None:
                 profile.avatar.save(name, avatar, save=False)
             profile.save()
 
             messages.success(request, 'Avatar updated')
-            return HttpResponseRedirect(reverse('bio-me'))
+            return redirect('bio-me')
     else:
         form = UploadAvatarForm()
 
-    return render_to_response('bio/avatar.html', {
+    return render(request, 'bio/avatar.html', {
         'form': form,
-         },
-        context_instance = RequestContext(request))
+         })
 
 #######################################################################
 
@@ -195,8 +187,8 @@
 
 A user has flagged a profile for review.
 """)
-    return HttpResponse('The profile was flagged. A moderator will review the' \
-        ' profile shortly. Thanks for helping to improve the content on this ' \
+    return HttpResponse('The profile was flagged. A moderator will review the'
+        ' profile shortly. Thanks for helping to improve the content on this '
         'site.')
 
 #######################################################################
@@ -230,7 +222,7 @@
                 profile = form.save(commit=False)
                 profile.user = request.user
                 profile.save()
-                return HttpResponseRedirect(request.path)
+                return redirect(request.path)
 
         # Delete forms
         elif new_data.get('delete-sn-form') or new_data.get('delete-im-form') or new_data.get('delete-w-form'):
@@ -249,7 +241,7 @@
             if update_occurred:
                 notify_profile_content_update(request.user.get_profile())
 
-            return HttpResponseRedirect(request.path)
+            return redirect(request.path)
 
         # WTF?
         else:
@@ -261,28 +253,20 @@
         im_form = InstantMessengerForm(auto_id=im_id)
         w_form = WebsiteForm()
 
-    return render_to_response('bio/edit_elsewhere.html', {
+    return render(request, 'bio/edit_elsewhere.html', {
         'sn_form': sn_form,
         'im_form': im_form,
         'w_form': w_form,
-        },
-        context_instance=RequestContext(request))
+        })
 
 #######################################################################
 
 @login_required
 def member_search(request):
-    if request.method == "POST":
-        form = SearchUsersForm(request.POST)
-        if form.is_valid():
-            username = form.cleaned_data['username']
-            return HttpResponseRedirect(reverse("bio-view_profile",
-                kwargs={'username': username}))
-    else:
-        form = SearchUsersForm()
+    data = request.GET if request.GET else None
+    form = SearchUsersForm(data)
+    if form.is_valid():
+        username = form.cleaned_data['username']
+        return redirect('bio-view_profile', username=username)
 
-    return render_to_response('bio/member_search.html', {
-        'form': form,
-        },
-        context_instance=RequestContext(request))
-
+    return render(request, 'bio/member_search.html', {'form': form})
--- a/sg101/templates/bio/member_search.html	Tue Jan 21 19:42:09 2014 -0600
+++ b/sg101/templates/bio/member_search.html	Wed Jan 22 20:07:39 2014 -0600
@@ -6,7 +6,7 @@
 {% block content %}
 <h2>Member Search</h2>
 <p>Looking for a member? Start typing a username in the form below.</p>
-<form action="." method="post">{% csrf_token %}
+<form action="." method="get">
 <fieldset>
 <legend>Member Search</legend>
    {{ form.as_p }}