def form_valid(self, form): user = self.request.user validation = Validation.objects.filter(pk=self.kwargs["pk"]).last() if not validation: raise PermissionDenied if validation.validator != user: raise PermissionDenied if validation.status != "PENDING_V": raise PermissionDenied # get database representation and validated version db_object = validation.content versioned = db_object.load_version(sha=validation.version) self.success_url = versioned.get_absolute_url( version=validation.version) is_update = db_object.sha_public try: published = publish_content( db_object, versioned, is_major_update=form.cleaned_data["is_major"]) except FailureDuringPublication as e: messages.error(self.request, e.message) else: save_validation_state( db_object, is_update, published, validation, versioned, source=db_object.source, is_major=form.cleaned_data["is_major"], user=self.request.user, request=self.request, comment=form.cleaned_data["text"], ) notify_update(db_object, is_update, form.cleaned_data["is_major"]) messages.success(self.request, _("Le contenu a bien été validé.")) signals.validation_management.send( sender=self.__class__, content=validation.content, performer=self.request.user, version=validation.version, action="accept", ) self.success_url = published.get_absolute_url_online() return super().form_valid(form)
def handle(self, *args, content: PublishableContent, is_major=False, **options): content.current_validation = Validation.objects.filter(content=content, status='PENDING_V').first() versioned = content.load_version(sha=content.current_validation.version) is_update = content.sha_public try: published = publish_content(content, versioned, is_major_update=is_major) except FailureDuringPublication as e: self.stdout.write('Publication failed') logging.getLogger(__name__).exception('Failure during publication', exc_info=e) else: save_validation_state(content, is_update, published, content.current_validation, versioned, options.get('source', ''), is_major, user=content.current_validation.validator, comment=_("Géré depuis la commande d'administration")) notify_update(content, is_update, is_major) self.stdout.write(_('La contenu a été validé'))
def form_valid(self, form): user = self.request.user validation = Validation.objects.filter(pk=self.kwargs['pk']).last() if not validation: raise PermissionDenied if validation.validator != user: raise PermissionDenied if validation.status != 'PENDING_V': raise PermissionDenied # get database representation and validated version db_object = validation.content versioned = db_object.load_version(sha=validation.version) self.success_url = versioned.get_absolute_url( version=validation.version) is_update = db_object.sha_public try: published = publish_content( db_object, versioned, is_major_update=form.cleaned_data['is_major']) except FailureDuringPublication as e: messages.error(self.request, e.message) else: save_validation_state(db_object, is_update, published, validation, versioned, source=db_object.source, is_major=form.cleaned_data['is_major'], user=self.request.user, request=self.request, comment=form.cleaned_data['text']) notify_update(db_object, is_update, form.cleaned_data['is_major']) messages.success(self.request, _('Le contenu a bien été validé.')) self.success_url = published.get_absolute_url_online() return super(AcceptValidation, self).form_valid(form)