/tests/regressiontests/test_client_regress/views.py

https://code.google.com/p/mango-py/ · Python · 102 lines · 79 code · 15 blank · 8 comment · 7 complexity · d5af1e268daeb093ca485280e533abc6 MD5 · raw file

  1. from django.conf import settings
  2. from django.contrib.auth.decorators import login_required
  3. from django.http import HttpResponse, HttpResponseRedirect
  4. from django.core.exceptions import SuspiciousOperation
  5. from django.shortcuts import render_to_response
  6. from django.utils import simplejson
  7. from django.utils.encoding import smart_str
  8. from django.core.serializers.json import DjangoJSONEncoder
  9. from django.test.client import CONTENT_TYPE_RE
  10. from django.template import RequestContext
  11. def no_template_view(request):
  12. "A simple view that expects a GET request, and returns a rendered template"
  13. return HttpResponse("No template used. Sample content: twice once twice. Content ends.")
  14. def staff_only_view(request):
  15. "A view that can only be visited by staff. Non staff members get an exception"
  16. if request.user.is_staff:
  17. return HttpResponse('')
  18. else:
  19. raise SuspiciousOperation()
  20. def get_view(request):
  21. "A simple login protected view"
  22. return HttpResponse("Hello world")
  23. get_view = login_required(get_view)
  24. def request_data(request, template='base.html', data='sausage'):
  25. "A simple view that returns the request data in the context"
  26. return render_to_response(template, {
  27. 'get-foo':request.GET.get('foo',None),
  28. 'get-bar':request.GET.get('bar',None),
  29. 'post-foo':request.POST.get('foo',None),
  30. 'post-bar':request.POST.get('bar',None),
  31. 'request-foo':request.REQUEST.get('foo',None),
  32. 'request-bar':request.REQUEST.get('bar',None),
  33. 'data': data,
  34. })
  35. def view_with_argument(request, name):
  36. """A view that takes a string argument
  37. The purpose of this view is to check that if a space is provided in
  38. the argument, the test framework unescapes the %20 before passing
  39. the value to the view.
  40. """
  41. if name == 'Arthur Dent':
  42. return HttpResponse('Hi, Arthur')
  43. else:
  44. return HttpResponse('Howdy, %s' % name)
  45. def login_protected_redirect_view(request):
  46. "A view that redirects all requests to the GET view"
  47. return HttpResponseRedirect('/test_client_regress/get_view/')
  48. login_protected_redirect_view = login_required(login_protected_redirect_view)
  49. def set_session_view(request):
  50. "A view that sets a session variable"
  51. request.session['session_var'] = 'YES'
  52. return HttpResponse('set_session')
  53. def check_session_view(request):
  54. "A view that reads a session variable"
  55. return HttpResponse(request.session.get('session_var', 'NO'))
  56. def request_methods_view(request):
  57. "A view that responds with the request method"
  58. return HttpResponse('request method: %s' % request.method)
  59. def return_unicode(request):
  60. return render_to_response('unicode.html')
  61. def return_json_file(request):
  62. "A view that parses and returns a JSON string as a file."
  63. match = CONTENT_TYPE_RE.match(request.META['CONTENT_TYPE'])
  64. if match:
  65. charset = match.group(1)
  66. else:
  67. charset = settings.DEFAULT_CHARSET
  68. # This just checks that the uploaded data is JSON
  69. obj_dict = simplejson.loads(request.raw_post_data.decode(charset))
  70. obj_json = simplejson.dumps(obj_dict, encoding=charset,
  71. cls=DjangoJSONEncoder,
  72. ensure_ascii=False)
  73. response = HttpResponse(smart_str(obj_json, encoding=charset), status=200,
  74. mimetype='application/json; charset=' + charset)
  75. response['Content-Disposition'] = 'attachment; filename=testfile.json'
  76. return response
  77. def check_headers(request):
  78. "A view that responds with value of the X-ARG-CHECK header"
  79. return HttpResponse('HTTP_X_ARG_CHECK: %s' % request.META.get('HTTP_X_ARG_CHECK', 'Undefined'))
  80. def raw_post_data(request):
  81. "A view that is requested with GET and accesses request.raw_post_data. Refs #14753."
  82. return HttpResponse(request.raw_post_data)
  83. def request_context_view(request):
  84. # Special attribute that won't be present on a plain HttpRequest
  85. request.special_path = request.path
  86. return render_to_response('request_context.html', context_instance=RequestContext(request, {}))