def post(self, request, requestion): user_form = EmailForm(instance=requestion.profile.user, data=request.POST) profile_form = ProfileChangeForm(instance=requestion.profile, data=request.POST) if user_form.is_valid() and profile_form.is_valid(): if user_form.has_changed() or profile_form.has_changed(): message = u'Изменения в профиле сохранены.' user = user_form.save(commit=False) profile = profile_form.save() if 'email' in user_form.changed_data and user.email: # отправляем сообщени на e-mail с сылкой для подтверждения temp_password = User.objects.make_random_password() user.set_password(temp_password) user.save() # перед отправкой нужно сохранить e-mail verification_key_object = VerificationKey.objects.create_key(user) verification_key_object.send_email_change(password=temp_password) message += u" На адрес электронной почты выслано письмо для подтверждения." else: user.save() context_dict = {'changed_data': user_form.changed_data + profile_form.changed_data, 'profile': profile, 'user': user} Logger.objects.create_for_action(CHANGE_PROFILE_BY_OPERATOR, context_dict=context_dict, extra={'user': request.user, 'obj': profile}) messages.info(request, message) else: messages.info(request, u'Профиль не был изменен') return HttpResponseRedirect(reverse('operator_requestion_info', kwargs={'requestion_id': requestion.id})) else: return self.render_to_response({'user_form': user_form, 'profile_form': profile_form, 'requestion': requestion})
def post(self, request, profile): form = ProfileChangeForm(instance=profile, data=request.POST) if form.is_valid(): if form.has_changed: profile = form.save() # write logs context_dict = {"changed_data": form.changed_data, "profile": profile} Logger.objects.create_for_action(CHANGE_PROFILE, context_dict=context_dict, extra={'user': request.user, 'obj': profile}) messages.success(request, u'Изменения в профиле сохранены') else: messages.warning(request, u'Профиль не был изменен') return HttpResponseRedirect(reverse('account_frontpage')) else: return self.render_to_response({'form': form})