Update current user detail edit and locale views to CBV.

This commit is contained in:
Roberto Rosario
2015-07-09 02:11:33 -04:00
parent 4a88df8f9a
commit a5b7747619
2 changed files with 28 additions and 58 deletions

View File

@@ -5,7 +5,8 @@ from django.contrib.staticfiles.templatetags.staticfiles import static
from django.views.generic import RedirectView
from .views import (
AboutView, CurrentUserDetailsView, CurrentUserLocaleProfileDetailsView,
AboutView, CurrentUserDetailsView, CurrentUserEditView,
CurrentUserLocaleProfileDetailsView, CurrentUserLocaleProfileEditView,
HomeView, LicenseView, SetupListView, ToolsListView
)
@@ -18,9 +19,9 @@ urlpatterns = patterns(
url(r'^setup/$', SetupListView.as_view(), name='setup_list'),
url(r'^tools/$', ToolsListView.as_view(), name='tools_list'),
url(r'^user/$', CurrentUserDetailsView.as_view(), name='current_user_details'),
url(r'^user/edit/$', 'current_user_edit', name='current_user_edit'),
url(r'^user/edit/$', CurrentUserEditView.as_view(), name='current_user_edit'),
url(r'^user/locale/$', CurrentUserLocaleProfileDetailsView.as_view(), name='current_user_locale_profile_details'),
url(r'^user/locale/edit/$', 'current_user_locale_profile_edit', name='current_user_locale_profile_edit'),
url(r'^user/locale/edit/$', CurrentUserLocaleProfileEditView.as_view(), name='current_user_locale_profile_edit'),
)
urlpatterns += patterns(

View File

@@ -7,7 +7,7 @@ from django.contrib import messages
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
@@ -509,65 +509,34 @@ def multi_object_action_view(request):
)
def current_user_edit(request):
"""
Allow an user to edit his own details
"""
class CurrentUserEditView(SingleObjectEditView):
extra_context = {'title': _('Edit current user details')}
form_class = UserForm
post_action_redirect = reverse_lazy('common:current_user_details')
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('common:current_user_details'))))
if request.method == 'POST':
form = UserForm(instance=request.user, data=request.POST)
if form.is_valid():
if User.objects.filter(email=form.cleaned_data['email']).exclude(pk=request.user.pk).count():
messages.error(request, _('E-mail conflict, another user has that same email.'))
else:
form.save()
messages.success(request, _('Current user\'s details updated.'))
return HttpResponseRedirect(next)
else:
form = UserForm(instance=request.user)
return render_to_response(
'appearance/generic_form.html', {
'form': form,
'next': next,
'title': _('Edit current user details'),
},
context_instance=RequestContext(request))
def get_object(self):
return self.request.user
def current_user_locale_profile_edit(request):
"""
Allow an user to edit his own locale profile
"""
class CurrentUserLocaleProfileEditView(SingleObjectEditView):
extra_context = {'title': _('Edit current user locale profile details')}
form_class = LocaleProfileForm
post_action_redirect = reverse_lazy('common:current_user_locale_profile_details')
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('common:current_user_locale_profile_details'))))
def form_valid(self, form):
form.save()
if request.method == 'POST':
form = LocaleProfileForm(instance=request.user.locale_profile, data=request.POST)
if form.is_valid():
form.save()
timezone.activate(form.cleaned_data['timezone'])
translation.activate(form.cleaned_data['language'])
timezone.activate(form.cleaned_data['timezone'])
translation.activate(form.cleaned_data['language'])
if hasattr(self.request, 'session'):
self.request.session[translation.LANGUAGE_SESSION_KEY] = form.cleaned_data['language']
self.request.session[settings.TIMEZONE_SESSION_KEY] = form.cleaned_data['timezone']
else:
self.request.set_cookie(settings.LANGUAGE_COOKIE_NAME, form.cleaned_data['language'])
self.request.set_cookie(settings.TIMEZONE_COOKIE_NAME, form.cleaned_data['timezone'])
if hasattr(request, 'session'):
request.session[translation.LANGUAGE_SESSION_KEY] = form.cleaned_data['language']
request.session[settings.TIMEZONE_SESSION_KEY] = form.cleaned_data['timezone']
else:
request.set_cookie(settings.LANGUAGE_COOKIE_NAME, form.cleaned_data['language'])
request.set_cookie(settings.TIMEZONE_COOKIE_NAME, form.cleaned_data['timezone'])
return super(CurrentUserLocaleProfileEditView, self).form_valid(form)
messages.success(request, _('Current user\'s locale profile details updated.'))
return HttpResponseRedirect(next)
else:
form = LocaleProfileForm(instance=request.user.locale_profile)
return render_to_response(
'appearance/generic_form.html', {
'form': form,
'next': next,
'title': _('Edit current user locale profile details'),
},
context_instance=RequestContext(request))
def get_object(self):
return self.request.user.locale_profile