예제 #1
0
    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)
예제 #2
0
 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é'))
예제 #3
0
    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)