LIL-183. Add user edit view

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 396c334330
commit c4cea788d3
  1. 36
      apps/user/views.py

@ -1,9 +1,14 @@
from django.shortcuts import render from django.contrib.auth import login
from django.shortcuts import render, reverse
from django.views.generic import DetailView, UpdateView from django.views.generic import DetailView, UpdateView
from django.contrib import messages
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.hashers import check_password, make_password
from apps.course.models import Course from apps.course.models import Course
from .forms import UserEditForm
User = get_user_model() User = get_user_model()
@ -13,7 +18,9 @@ class UserView(DetailView):
def get_context_data(self, object): def get_context_data(self, object):
context = super().get_context_data() context = super().get_context_data()
context['published'] = Course.objects.filter(author=self.object, status=Course.PUBLISHED) context['published'] = Course.objects.filter(
author=self.object, status=Course.PUBLISHED
)
context['paid'] = Course.objects.none() context['paid'] = Course.objects.none()
return context return context
@ -21,6 +28,25 @@ class UserView(DetailView):
class UserEditView(UpdateView): class UserEditView(UpdateView):
model = User model = User
template_name = 'user/profile-settings.html' template_name = 'user/profile-settings.html'
fields = ( form_class = UserEditForm
'first_name',
) def post(self, request, *args, **kwargs):
# it's magic *-*-*-*-*
self.object = self.get_object()
if not request.POST._mutable:
request.POST._mutable = True
old_password = request.POST.pop('old_password')[0]
new_password1 = request.POST.pop('new_password1')[0]
new_password2 = request.POST.pop('new_password2')[0]
if old_password:
if request.user.check_password(old_password) and new_password1 == new_password2:
request.user.set_password(new_password1)
request.user.save()
login(request, request.user)
else:
messages.error(request, 'Неверный пароль.')
messages.info(request, 'Данные сохранены.')
return super().post(request, *args, **kwargs)
def get_success_url(self):
return reverse('user-edit', args=[self.object.id])

Loading…
Cancel
Save