views.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from django.contrib.auth import get_user_model
  2. from django.core.exceptions import PermissionDenied
  3. from django.http import Http404, HttpResponse
  4. from rest_framework.decorators import api_view
  5. from misago.users.models import Ban
  6. from .. import errorpages, mail
  7. from ..decorators import require_POST
  8. from ..exceptions import Banned
  9. from ..shortcuts import paginate, paginated_response, validate_slug
  10. from ..views import home_redirect
  11. from .models import Model
  12. from .serializers import MockSerializer
  13. def test_mail_user(request):
  14. User = get_user_model()
  15. test_user = User.objects.all().first()
  16. mail.mail_user(request,
  17. test_user,
  18. "Misago Test Mail",
  19. "misago/emails/base")
  20. return HttpResponse("Mailed user!")
  21. def test_mail_users(request):
  22. User = get_user_model()
  23. mail.mail_users(request,
  24. User.objects.iterator(),
  25. "Misago Test Spam",
  26. "misago/emails/base")
  27. return HttpResponse("Mailed users!")
  28. def test_pagination(request, page=None):
  29. items = range(15)
  30. page = paginate(items, page, 5)
  31. return HttpResponse(",".join([str(x) for x in page.object_list]))
  32. @api_view()
  33. def test_paginated_response(request):
  34. data = range(100)
  35. page = paginate(data, 2, 10)
  36. return paginated_response(page)
  37. @api_view()
  38. def test_paginated_response_data(request):
  39. data = range(100)
  40. page = paginate(data, 2, 10)
  41. return paginated_response(page, data=['a', 'b', 'c', 'd', 'e'])
  42. @api_view()
  43. def test_paginated_response_serializer(request):
  44. data = [0, 1, 2, 3]
  45. page = paginate(data, 0, 10)
  46. return paginated_response(page, serializer=MockSerializer)
  47. @api_view()
  48. def test_paginated_response_data_serializer(request):
  49. data = [0, 1, 2, 3]
  50. page = paginate(data, 0, 10)
  51. return paginated_response(
  52. page,
  53. data=['a', 'b', 'c', 'd'],
  54. serializer=MockSerializer
  55. )
  56. @api_view()
  57. def test_paginated_response_data_extra(request):
  58. data = [0, 1, 2, 3]
  59. page = paginate(data, 0, 10)
  60. return paginated_response(
  61. page,
  62. data=['a', 'b', 'c', 'd'],
  63. extra={
  64. 'next': 'EXTRA',
  65. 'lorem': 'ipsum'
  66. }
  67. )
  68. def validate_slug_view(request, pk, slug):
  69. model = Model(int(pk), 'eric-the-fish')
  70. validate_slug(model, slug)
  71. return HttpResponse("Allright!")
  72. def raise_misago_banned(request):
  73. ban = Ban(user_message="Banned for test!")
  74. raise Banned(ban)
  75. def raise_misago_403(request):
  76. raise PermissionDenied('Misago 403')
  77. def raise_misago_404(request):
  78. raise Http404('Misago 404')
  79. def raise_misago_405(request):
  80. return errorpages.not_allowed(request)
  81. def raise_403(request):
  82. raise PermissionDenied()
  83. def raise_404(request):
  84. raise Http404()
  85. def test_redirect(request):
  86. return home_redirect(request)
  87. @require_POST
  88. def test_require_post(request):
  89. return HttpResponse("Request method: %s" % request.method)
  90. @errorpages.shared_403_exception_handler
  91. def mock_custom_403_error_page(request):
  92. return HttpResponse("Custom 403", status=403)
  93. @errorpages.shared_404_exception_handler
  94. def mock_custom_404_error_page(request):
  95. return HttpResponse("Custom 404", status=404)