Advertisement
Guest User

Untitled

a guest
Oct 11th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1. from django.utils import translation
  2. user_language = 'fr'
  3. translation.activate(user_language)
  4. request.session[translation.LANGUAGE_SESSION_KEY] = user_language
  5.  
  6. MIDDLEWARE = [
  7. 'django.middleware.security.SecurityMiddleware',
  8. 'django.contrib.sessions.middleware.SessionMiddleware',
  9. 'django.middleware.locale.LocaleMiddleware',
  10. 'django.middleware.common.CommonMiddleware',
  11. 'django.middleware.csrf.CsrfViewMiddleware',
  12. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  13. 'django.contrib.messages.middleware.MessageMiddleware',
  14. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  15. ]
  16.  
  17.  
  18. # Authentication
  19. ## Not sure if these two are necessary, but one of the many tutorials I've been looking at suggested I do them.
  20.  
  21. LOGIN_REDIRECT_URL = '/' # It means home view
  22. LOGIN_URL = 'login'
  23.  
  24. # Internationalization
  25. # https://docs.djangoproject.com/en/1.10/topics/i18n/
  26.  
  27. LANGUAGE_CODE = 'en-AU'
  28.  
  29. TIME_ZONE = 'UTC'
  30.  
  31. USE_I18N = True
  32.  
  33. USE_L10N = True
  34.  
  35. USE_TZ = True
  36.  
  37. LANGUAGES = (
  38. ('en', _('English')),
  39. ('de', _('German')),
  40. )
  41.  
  42. <div class="nav navbar-nav pull-md-right">
  43. {% if user.is_authenticated %}
  44. {# Translators: Welcome message, of the form "Welcome, [user's first name] [user's surname]!" #}
  45. <span class="nav-item nav-link text-muted">{% blocktrans with first_name=user.first_name last_name=user.last_name %}Welcome, {{ first_name }} {{ last_name }}!{% endblocktrans %}</span>
  46. <a class="nav-item nav-link" href="{% url 'logout' %}">{% trans "Sign out" %}</a>
  47. {% else %}
  48. <a class="nav-item nav-link" href="#">{% trans "Register" %}</a>
  49. <a class="nav-item nav-link" href="{% url 'login' %}">{% trans "Sign in" %}</a>
  50. {% endif %}
  51. </div>
  52.  
  53. {% extends 'appname/base.html' %}
  54. {% load staticfiles %}
  55. {% load i18n %}
  56.  
  57. {% block title_block %}{% trans "Sign in" %}{% endblock %}
  58.  
  59. {% block header_block %}
  60. <link href="{% static 'css/login.css' %}" rel="stylesheet">
  61. {% endblock %}
  62.  
  63.  
  64. {% block body_block %}
  65. <div class="container">
  66. {% if form.errors %}
  67. <div class="form-signin alert-danger">
  68. <!-- Display this message even for an inactive account. -->
  69. {% trans "Your login details were invalid. Please try again." %}
  70. </div>
  71. {% endif %}
  72. {% if next %}
  73. <div class="form-signin alert-danger">
  74. {% if user.is_authenticated %}
  75. {% trans "Your account doesn't have access to this page. To proceed, please login with an account that has access." %}
  76. {% else %}
  77. {% trans "Please log in to see this page." %}
  78. {% endif %}
  79. </div>
  80. {% endif %}
  81. <form class="form-signin" method="post" action="{% url 'login' %}">
  82. {% csrf_token %}
  83. <h2 class="form-signin-heading">{% trans "Please sign in" %}</h2>
  84. {{ form.username.label_tag}}
  85. {{ form.username }}
  86. {{ form.password.label_tag}}
  87. {{ form.password }}
  88. <div class="checkbox">
  89. <!-- Not yet implemented. Probably stick this into the form as well. -->
  90. <label>
  91. <input type="checkbox" value="remember-me"> {% trans "Remember me" %}
  92. </label>
  93. </div>
  94. <div class="">
  95. Forgot login
  96. </div>
  97. <button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Sign in" %}</button>
  98. <input type="hidden" name="next" value="{{ next }}" />
  99. </form>
  100. </div>
  101. {% endblock %}
  102.  
  103. from django.shortcuts import render
  104. from django.http import HttpResponse
  105. from django.http import HttpResponseRedirect
  106. from django.contrib.auth import authenticate, login
  107. from django.contrib.auth.models import User
  108. from django.utils import translation
  109. from django.utils.translation import LANGUAGE_SESSION_KEY
  110. from django import forms
  111. from appname.forms import LoginForm
  112.  
  113. def index(request):
  114. # Hack. I'm sure this is not the right thing to do.
  115. user_language = request.session.get(LANGUAGE_SESSION_KEY)
  116. translation.activate(user_language)
  117.  
  118. # Do stuff
  119.  
  120. return render(request, 'appname/index.html', context=context_dict)
  121.  
  122.  
  123. def login_user(request):
  124. user_language = request.session.get(LANGUAGE_SESSION_KEY)
  125. translation.activate(user_language)
  126.  
  127. if request.method == "POST":
  128. form = LoginForm(request, data=request.POST)
  129. username = request.POST['username']
  130. password = request.POST['password']
  131. if form.is_valid():
  132. fw_username = form.cleaned_data['username']
  133. fw_password = form.cleaned_data['password']
  134. user = authenticate(username=fw_username, password=fw_password)
  135. if user is not None and user.is_active:
  136. login(request, user)
  137. user_language = user.extended.language_code.language_code
  138. translation.activate(user_language)
  139. request.session[LANGUAGE_SESSION_KEY] = user_language
  140. return HttpResponseRedirect('/')
  141. else:
  142. form = LoginForm() # Display unbound form
  143.  
  144. return render(request, 'appname/login.html', { 'form': form })
  145.  
  146.  
  147. def us(request):
  148. # Hack. I'm sure this is not the right thing to do.
  149. user_language_code = request.session.get(LANGUAGE_SESSION_KEY)
  150. translation.activate(user_language_code)
  151.  
  152. return render(request, 'appname/us.html')
  153.  
  154. from django.conf.urls import url, include
  155. from django.conf.urls.static import static
  156. from django.conf import settings
  157. from django.contrib import admin
  158. from django.contrib.auth import views as auth_views
  159. from appname import views
  160. from appname.forms import LoginForm
  161.  
  162. urlpatterns = [
  163. url(r'^$', views.index, name='index'),
  164. url(r'^appname/', include('appname.urls')), # Any URLs starting with appname are to be handled by the mindatot app
  165. # url(r'^login/$', auth_views.login, {'template_name': 'appname/login.html', 'authentication_form': LoginForm}, name='login'),
  166. url(r'^login/$', views.login_user, name='login'),
  167. url(r'^logout/$', auth_views.logout, {'next_page': 'login'}, name='logout'),
  168. url(r'^admin/', admin.site.urls),
  169. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  170.  
  171. from django.contrib.auth.forms import AuthenticationForm
  172. from django import forms
  173. from django.utils import translation
  174. from django.utils.translation import ugettext as _
  175.  
  176. # If you don't do this you cannot use Bootstrap CSS
  177. class LoginForm(AuthenticationForm):
  178. # I'm confused. How do I translate this one?
  179. #user_language = session.get(LANGUAGE_SESSION_KEY)
  180. #translation.activate(user_language)
  181.  
  182. username = forms.CharField(label=_("Username"), max_length=30, widget=forms.TextInput(attrs={'class': 'form-control', 'name': 'username'}))
  183. password = forms.CharField(label=_("Password"), max_length=30, widget=forms.PasswordInput(attrs={'class': 'form-control', 'name': 'password'}))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement