urls.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from django.contrib.auth import views
  4. from django.contrib.auth.decorators import login_required
  5. from django.contrib.auth.forms import AuthenticationForm
  6. from django.contrib.auth.urls import urlpatterns as auth_urlpatterns
  7. from django.contrib.messages.api import info
  8. from django.http import HttpRequest, HttpResponse
  9. from django.shortcuts import render
  10. from django.template import RequestContext, Template
  11. from django.views.decorators.cache import never_cache
  12. class CustomRequestAuthenticationForm(AuthenticationForm):
  13. def __init__(self, request, *args, **kwargs):
  14. assert isinstance(request, HttpRequest)
  15. super(CustomRequestAuthenticationForm, self).__init__(request, *args, **kwargs)
  16. @never_cache
  17. def remote_user_auth_view(request):
  18. "Dummy view for remote user tests"
  19. t = Template("Username is {{ user }}.")
  20. c = RequestContext(request, {})
  21. return HttpResponse(t.render(c))
  22. def auth_processor_no_attr_access(request):
  23. render(request, 'context_processors/auth_attrs_no_access.html')
  24. # *After* rendering, we check whether the session was accessed
  25. return render(request,
  26. 'context_processors/auth_attrs_test_access.html',
  27. {'session_accessed': request.session.accessed})
  28. def auth_processor_attr_access(request):
  29. render(request, 'context_processors/auth_attrs_access.html')
  30. return render(request,
  31. 'context_processors/auth_attrs_test_access.html',
  32. {'session_accessed': request.session.accessed})
  33. def auth_processor_user(request):
  34. return render(request, 'context_processors/auth_attrs_user.html')
  35. def auth_processor_perms(request):
  36. return render(request, 'context_processors/auth_attrs_perms.html')
  37. def auth_processor_perm_in_perms(request):
  38. return render(request, 'context_processors/auth_attrs_perm_in_perms.html')
  39. def auth_processor_messages(request):
  40. info(request, "Message 1")
  41. return render(request, 'context_processors/auth_attrs_messages.html')
  42. def userpage(request):
  43. pass
  44. def custom_request_auth_login(request):
  45. return views.login(request, authentication_form=CustomRequestAuthenticationForm)
  46. # special urls for auth test cases
  47. urlpatterns = auth_urlpatterns + [
  48. url(r'^logout/custom_query/$', views.logout, dict(redirect_field_name='follow')),
  49. url(r'^logout/next_page/$', views.logout, dict(next_page='/somewhere/')),
  50. url(r'^logout/next_page/named/$', views.logout, dict(next_page='password_reset')),
  51. url(r'^remote_user/$', remote_user_auth_view),
  52. url(r'^password_reset_from_email/$', views.password_reset, dict(from_email='staffmember@example.com')),
  53. url(r'^password_reset/custom_redirect/$', views.password_reset, dict(post_reset_redirect='/custom/')),
  54. url(r'^password_reset/custom_redirect/named/$', views.password_reset, dict(post_reset_redirect='password_reset')),
  55. url(r'^password_reset/html_email_template/$', views.password_reset,
  56. dict(html_email_template_name='registration/html_password_reset_email.html')),
  57. url(r'^reset/custom/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
  58. views.password_reset_confirm,
  59. dict(post_reset_redirect='/custom/')),
  60. url(r'^reset/custom/named/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
  61. views.password_reset_confirm,
  62. dict(post_reset_redirect='password_reset')),
  63. url(r'^password_change/custom/$', views.password_change, dict(post_change_redirect='/custom/')),
  64. url(r'^password_change/custom/named/$', views.password_change, dict(post_change_redirect='password_reset')),
  65. url(r'^admin_password_reset/$', views.password_reset, dict(is_admin_site=True)),
  66. url(r'^login_required/$', login_required(views.password_reset)),
  67. url(r'^login_required_login_url/$', login_required(views.password_reset, login_url='/somewhere/')),
  68. url(r'^auth_processor_no_attr_access/$', auth_processor_no_attr_access),
  69. url(r'^auth_processor_attr_access/$', auth_processor_attr_access),
  70. url(r'^auth_processor_user/$', auth_processor_user),
  71. url(r'^auth_processor_perms/$', auth_processor_perms),
  72. url(r'^auth_processor_perm_in_perms/$', auth_processor_perm_in_perms),
  73. url(r'^auth_processor_messages/$', auth_processor_messages),
  74. url(r'^custom_request_auth_login/$', custom_request_auth_login),
  75. url(r'^userpage/(.+)/$', userpage, name="userpage"),
  76. # This line is only required to render the password reset with is_admin=True
  77. url(r'^admin/', admin.site.urls),
  78. ]