views.py 3.8 KB

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