def form_valid(self, form):
        # get database representation
        db_object = self.object
        is_update = bool(db_object.sha_public)
        if self.object.is_permanently_unpublished():
            raise PermissionDenied
        versioned = self.versioned_object
        self.success_url = versioned.get_absolute_url()
        try:
            published = publish_content(db_object,
                                        versioned,
                                        is_major_update=False)
        except FailureDuringPublication as e:
            messages.error(self.request, e.message)
        else:
            # save in database
            db_object.source = db_object.source
            db_object.sha_validation = None
            db_object.public_version = published
            db_object.save()

            # if only ignore, we remove it from history
            PickListOperation.objects.filter(
                content=db_object,
                operation__in=["NO_PICK", "PICK"]).update(is_effective=False)
            notify_update(db_object, is_update,
                          form.cleaned_data.get("is_major", False))

            messages.success(self.request, _("Le contenu a bien été publié."))
            self.success_url = published.get_absolute_url_online()

        return super().form_valid(form)
Beispiel #2
0
    def form_valid(self, form):
        # get database representation
        db_object = self.object
        is_update = bool(db_object.sha_public)
        if self.object.is_permanently_unpublished():
            raise PermissionDenied
        versioned = self.versioned_object
        self.success_url = versioned.get_absolute_url()
        try:
            published = publish_content(db_object, versioned, is_major_update=False)
        except FailureDuringPublication as e:
            messages.error(self.request, e.message)
        else:
            # save in database

            db_object.source = form.cleaned_data['source']
            db_object.sha_validation = None

            db_object.public_version = published
            db_object.save()
            # if only ignore, we remove it from history
            PickListOperation.objects.filter(content=db_object,
                                             operation__in=['NO_PICK', 'PICK']).update(is_effective=False)
            notify_update(db_object, is_update, form.cleaned_data.get('is_major', False))

            messages.success(self.request, _('Le contenu a bien été publié.'))
            self.success_url = published.get_absolute_url_online()

        return super(PublishOpinion, self).form_valid(form)
Beispiel #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:
            self.save_validation_state(db_object, form, is_update, published, validation, versioned)
            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)
Beispiel #4
0
 def test_only_one_notif_on_major_update(self):
     NewPublicationSubscription.objects.get_or_create_active(self.user1, self.user2)
     content = PublishedContentFactory(author_list=[self.user2])
     notify_update(content, False, True)
     versioned = content.load_version()
     content.sha_draft = versioned.repo_update(introduction='new intro', conclusion='new conclusion',
                                               title=versioned.title)
     content.save(force_slug_update=False)
     publish_content(content, content.load_version(), True)
     notify_update(content, True, True)
     notifs = get_header_notifications(self.user1)['general_notifications']['list']
     self.assertEqual(1, len(notifs), str(notifs))
Beispiel #5
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)
Beispiel #6
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é'))
Beispiel #7
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)