def post_save_handler(self, sender, instance, **kwargs): """ Creates new moderation object if instance is created, If instance exists and is only updated then save instance as content_object of moderated_object """ # check if object was loaded from fixture, bypass moderation if so if kwargs['raw']: return pk = instance.pk moderator = self.get_moderator(sender) if kwargs['created']: old_object = sender._default_manager.get(pk=pk) moderated_obj = ModeratedObject(content_object=old_object) if not moderator.visible_until_rejected: # Hide it by placing in draft state moderated_obj.moderation_state = MODERATION_DRAFT_STATE moderated_obj.save() moderator.inform_moderator(instance) return moderated_obj = ModeratedObject.objects.get_for_instance(instance) if (moderated_obj.moderation_status == MODERATION_STATUS_APPROVED and moderator.bypass_moderation_after_approval): # save new data in moderated object moderated_obj.changed_object = instance moderated_obj.save() return if moderated_obj.has_object_been_changed(instance): copied_instance = self._copy_model_instance(instance) if not moderator.visible_until_rejected: # Save instance with old data from changed_object, undoing # the changes that save() just saved to the database. moderated_obj.changed_object.save_base(raw=True) # Save the new data in moderated_object, so it will be applied # to the real record when the moderator approves the change. moderated_obj.changed_object = copied_instance moderated_obj.moderation_status = MODERATION_STATUS_PENDING moderated_obj.save() moderator.inform_moderator(instance) instance._moderated_object = moderated_obj
def post_save_handler(self, sender, instance, **kwargs): """ Creates new moderation object if instance is created, If instance exists and is only updated then save instance as content_object of moderated_object """ # check if object was loaded from fixture, bypass moderation if so if kwargs['raw']: return pk = instance.pk moderator = self.get_moderator(sender) if kwargs['created']: old_object = sender._default_manager.get(pk=pk) moderated_obj = ModeratedObject(content_object=old_object) if not moderator.visible_until_rejected: # Hide it by placing in draft state moderated_obj.moderation_state = MODERATION_DRAFT_STATE moderated_obj.save() moderator.inform_moderator(instance) return moderated_obj = ModeratedObject.objects.get_for_instance(instance) if (moderated_obj.moderation_status == MODERATION_STATUS_APPROVED and moderator.bypass_moderation_after_approval): # save new data in moderated object moderated_obj.changed_object = instance moderated_obj.save() return if moderated_obj.has_object_been_changed(instance): copied_instance = self._copy_model_instance(instance) if not moderator.visible_until_rejected: # Save instance with old data from changed_object, undoing # the changes that save() just saved to the database. moderated_obj.changed_object.save_base(raw=True) # Save the new data in moderated_object, so it will be applied # to the real record when the moderator approves the change. moderated_obj.changed_object = copied_instance moderated_obj.moderation_status = MODERATION_STATUS_PENDING moderated_obj.save() moderator.inform_moderator(instance) instance._moderated_object = moderated_obj
def post_save_handler(self, sender, instance, **kwargs): """ Creates new moderation object if instance is created, If instance exists and is only updated then save instance as content_object of moderated_object """ #check if object was loaded from fixture, bypass moderation if so if kwargs['raw']: return pk = instance.pk moderator = self.get_moderator(sender) if kwargs['created']: old_object = sender._default_manager.get(pk=pk) moderated_obj = ModeratedObject(content_object=old_object) moderated_obj.save() if instance.author and not moderator.is_auto_approve(instance, instance.author): moderator.inform_moderator(instance) else: moderated_obj \ = ModeratedObject.objects.get_for_instance(instance) if moderated_obj.moderation_status == MODERATION_STATUS_APPROVED\ and moderator.bypass_moderation_after_approval: return if moderated_obj.has_object_been_changed(instance): copied_instance = self._copy_model_instance(instance) if not moderator.visible_until_rejected: # save instance with data from changed_object moderated_obj.changed_object.save_base(raw=True) # save new data in moderated object moderated_obj.changed_object = copied_instance moderated_obj.moderation_status = MODERATION_STATUS_PENDING moderated_obj.moderation_reason = None moderated_obj.save() if moderated_obj.changed_by and not moderator.is_auto_approve(instance, moderated_obj.changed_by): moderator.inform_moderator(instance) instance._moderated_object = moderated_obj
def post_save_handler(self, sender, instance, **kwargs): """ Creates new moderation object if instance is created, If instance exists and is only updated then save instance as content_object of moderated_object """ # check if object was loaded from fixture, bypass moderation if so if kwargs['raw']: return pk = instance.pk moderator = self.get_moderator(sender) if kwargs['created']: old_object = sender._default_manager.get(pk=pk) moderated_obj = ModeratedObject(content_object=old_object) moderated_obj.save() moderator.inform_moderator(instance) else: moderated_obj = ModeratedObject.objects.\ get_for_instance(instance) if moderated_obj.moderation_status == \ MODERATION_STATUS_APPROVED and \ moderator.bypass_moderation_after_approval: return if moderated_obj.has_object_been_changed(instance): copied_instance = self._copy_model_instance(instance) if not moderator.visible_until_rejected: # save instance with data from changed_object moderated_obj.changed_object.save_base(raw=True) # save new data in moderated object moderated_obj.changed_object = copied_instance moderated_obj.moderation_status = MODERATION_STATUS_PENDING moderated_obj.save() moderator.inform_moderator(instance) instance._moderated_object = moderated_obj