Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.views.generic import FormView, RedirectView
- from django.views.generic.edit import UpdateView
- from django.core.urlresolvers import reverse_lazy
- from django.utils.translation import ugettext as _
- from django.views.generic.base import TemplateView
- from django.contrib.messages.views import SuccessMessageMixin
- from django.contrib.auth import views as auth_views
- from django.contrib import auth, messages
- from django.core.urlresolvers import reverse_lazy
- from .forms import RegistrationForm, LoginForm
- from .mixins import LoginRequiredMixin, AnonymousRequiredMixin
- from .models import AppUser
- class RegistrationView(AnonymousRequiredMixin, SuccessMessageMixin, FormView):
- """View for registering new users"""
- template_name = 'accounts/registration.jinja'
- form_class = RegistrationForm
- success_url = reverse_lazy('login')
- success_message = _(
- "Your registration info was sent to administration, "
- "you will be able to login after approvement.")
- authenticated_redirect_url = reverse_lazy('profile')
- def get_form_kwargs(self):
- """Initial form."""
- kwargs = super(RegistrationView, self).get_form_kwargs()
- kwargs['request'] = self.request
- return kwargs
- def form_invalid(self, form, **kwargs):
- """Open the registration form again to correct errors."""
- context = self.get_context_data(**kwargs)
- context['form'] = form
- return self.render_to_response(context)
- def form_valid(self, form):
- """Create new user."""
- response = super(RegistrationView, self).form_valid(form)
- form.save()
- return response
- class LoginView(AnonymousRequiredMixin, FormView):
- """Display the login page."""
- template_name = 'accounts/login.jinja'
- form_class = LoginForm
- success_url = reverse_lazy('profile')
- def form_invalid(self, form):
- """The authorization form is not valid."""
- response = super(LoginView, self).form_invalid(form)
- messages.error(self.request, _('Please, check your login/password.'))
- return response
- def form_valid(self, form):
- """The authorization form is valid - authorize this user."""
- # Authenticate user.
- user = auth.authenticate(username=form.cleaned_data['username'],
- password=form.cleaned_data['password'])
- # If the user exists - logged.
- if user is not None and user.is_active:
- auth.login(self.request, user)
- response = super(LoginView, self).form_valid(form)
- return response
- class LogoutView(LoginRequiredMixin, RedirectView):
- """..."""
- permanent = False
- query_string = True
- def get_redirect_url(self, *args, **kwargs):
- """Run logout and get redirect url."""
- # Logout.
- auth.logout(self.request)
- # Generate redirect url.
- next = reverse('home')
- if self.request.method == 'GET':
- _next = self.request.GET.get('next', None)
- next = _next if _next else next
- return next
- class ProfileView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
- """User profile view"""
- model = AppUser
- template_name = 'accounts/profile.jinja'
- success_url = reverse_lazy('profile')
- success_message = _('Profile successfully updated.')
- fields = ['username', 'email', ]
- def get_object(self):
- return self.request.user
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement