views: reimplement form_valid() in Validation view (#23303)

We do not want the same behaviour as UserEditCoreView, event if information did not change
This commit is contained in:
Benjamin Dauvergne 2018-06-14 16:41:25 +02:00
parent 8a9082c95b
commit 98386538e2
2 changed files with 25 additions and 12 deletions

View File

@ -608,11 +608,12 @@ class AppConfig(django.apps.AppConfig):
def cut_event_manager_remove_role_member(self, user, role, member, **kwargs):
self.log_modification(user, member, u'retire le rôle %s' % role)
def cut_event_manager_cut_validate(self, user, instance, **kwargs):
def cut_event_manager_cut_validate(self, user, instance, context, partner, **kwargs):
if instance.attributes.validated:
msg = u'modification du profil cœur'
else:
msg = u'validation du compte'
msg += u', contexte "%s" venant de %s' % (context, partner)
self.log_modification(user, instance, msg)
def cut_event_manager_view_user(self, user, instance, **kwargs):

View File

@ -101,17 +101,18 @@ class UserEditCoreView(UserEditView):
field.required = True
return form
def form_valid(self, form):
def form_valid(self, form, context='office', partner=''):
response = super(UserEditCoreView, self).form_valid(form)
if form.has_changed():
already_validated = form.instance.attributes.validated
already_validated = form.instance.attributes.validated
if form.has_changed() or not already_validated:
form.instance.attributes.validated = True
form.instance.attributes.validation_context = 'office'
form.instance.attributes.validation_context = context
form.instance.attributes.validation_date = now().date()
if self.request.user.ou:
form.instance.attributes.validation_partner = self.request.user.ou.slug
if not partner and self.request.user.ou:
partner = self.request.user.ou.slug
form.instance.attributes.validation_partner = partner
hooks.call_hooks('event', user=self.request.user, name='manager-cut-validate',
instance=form.instance, form=form, context='office')
instance=form.instance, form=form, context=context, partner=partner)
if already_validated:
msg = u'Les données cœur ont été modifiées.'
else:
@ -216,8 +217,9 @@ class Validation(UserEditCoreView):
if 'refuse' in request.POST:
reason = request.POST.get('reason')
if not reason:
messages.error(request, u'Vous devez préciser une raison pour le refus')
messages.error(request, u'Vous devez préciser une raison pour le refus.')
return HttpResponseRedirect('')
messages.info(request, u'Demande traitée.')
self.validation_request.reason = reason
self.validation_request.status = models.ValidationRequest.STATUS_REFUSED
self.validation_request.validated = now()
@ -241,13 +243,23 @@ class Validation(UserEditCoreView):
kwargs={'pk': validation_request.pk})
def form_valid(self, form):
super(Validation, self).form_valid(form)
partner = ''
if hasattr(self.validation_request.origin, 'ou') and self.validation_request.origin.ou:
partner = self.validation_request.origin.ou.slug
if not partner and self.request.user.ou:
partner = self.request.user.ou.slug
super(UserEditCoreView, self).form_valid(form)
form.instance.attributes.validated = True
form.instance.attributes.validation_context = 'online'
form.instance.attributes.validation_date = now().date()
form.instance.attributes.validation_partner = partner
hooks.call_hooks('event', user=self.request.user, name='manager-cut-validate',
instance=form.instance, form=form, context='office', partner=partner)
self.validation_request.status = models.ValidationRequest.STATUS_ACCEPTED
self.validation_request.validated = now()
self.validation_request.validated_by = self.request.user
self.validation_request.save()
if hasattr(self.validation_request.origin, 'ou') and self.validation_request.origin.ou:
form.instance.attributes.validation_partner = self.validation_request.origin.ou.slug
messages.info(self.request, u'Demande traitée.')
return self.next_request(self.request)
validation = Validation.as_view()