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)
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)
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)
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))
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)