Advertisement
Guest User

Untitled

a guest
Feb 26th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.44 KB | None | 0 0
  1. from django.views.generic import FormView, RedirectView
  2. from django.views.generic.edit import UpdateView
  3. from django.core.urlresolvers import reverse_lazy
  4. from django.utils.translation import ugettext as _
  5. from django.views.generic.base import TemplateView
  6. from django.contrib.messages.views import SuccessMessageMixin
  7. from django.contrib.auth import views as auth_views
  8. from django.contrib import auth, messages
  9. from django.core.urlresolvers import reverse_lazy
  10.  
  11. from .forms import RegistrationForm, LoginForm
  12. from .mixins import LoginRequiredMixin, AnonymousRequiredMixin
  13. from .models import AppUser
  14.  
  15.  
  16. class RegistrationView(AnonymousRequiredMixin, SuccessMessageMixin, FormView):
  17.     """View for registering new users"""
  18.     template_name = 'accounts/registration.jinja'
  19.     form_class = RegistrationForm
  20.     success_url = reverse_lazy('login')
  21.     success_message = _(
  22.         "Your registration info was sent to administration, "
  23.         "you will be able to login after approvement.")
  24.     authenticated_redirect_url = reverse_lazy('profile')
  25.  
  26.     def get_form_kwargs(self):
  27.         """Initial form."""
  28.         kwargs = super(RegistrationView, self).get_form_kwargs()
  29.         kwargs['request'] = self.request
  30.  
  31.         return kwargs
  32.  
  33.     def form_invalid(self, form, **kwargs):
  34.         """Open the registration form again to correct errors."""
  35.         context = self.get_context_data(**kwargs)
  36.         context['form'] = form
  37.         return self.render_to_response(context)
  38.  
  39.     def form_valid(self, form):
  40.         """Create new user."""
  41.         response = super(RegistrationView, self).form_valid(form)
  42.         form.save()
  43.         return response
  44.  
  45.  
  46. class LoginView(AnonymousRequiredMixin, FormView):
  47.     """Display the login page."""
  48.     template_name = 'accounts/login.jinja'
  49.     form_class = LoginForm
  50.     success_url = reverse_lazy('profile')
  51.  
  52.     def form_invalid(self, form):
  53.         """The authorization form is not valid."""
  54.         response = super(LoginView, self).form_invalid(form)
  55.         messages.error(self.request, _('Please, check your login/password.'))
  56.  
  57.         return response
  58.  
  59.     def form_valid(self, form):
  60.         """The authorization form is valid - authorize this user."""
  61.  
  62.         # Authenticate user.
  63.         user = auth.authenticate(username=form.cleaned_data['username'],
  64.             password=form.cleaned_data['password'])
  65.  
  66.         # If the user exists - logged.
  67.         if user is not None and user.is_active:
  68.             auth.login(self.request, user)
  69.  
  70.         response = super(LoginView, self).form_valid(form)
  71.         return response
  72.  
  73.  
  74. class LogoutView(LoginRequiredMixin, RedirectView):
  75.     """..."""
  76.     permanent = False
  77.     query_string = True
  78.  
  79.     def get_redirect_url(self, *args, **kwargs):
  80.         """Run logout and get redirect url."""
  81.         # Logout.
  82.         auth.logout(self.request)
  83.  
  84.         # Generate redirect url.
  85.         next = reverse('home')
  86.         if self.request.method == 'GET':
  87.             _next = self.request.GET.get('next', None)
  88.             next = _next if _next else next
  89.  
  90.         return next
  91.  
  92.  
  93. class ProfileView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
  94.     """User profile view"""
  95.     model = AppUser
  96.     template_name = 'accounts/profile.jinja'
  97.     success_url = reverse_lazy('profile')
  98.     success_message = _('Profile successfully updated.')
  99.     fields = ['username', 'email', ]
  100.  
  101.     def get_object(self):
  102.         return self.request.user
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement