def setUp(self): self.moderation = ModerationManager() self.moderation.register(ModelWithSlugField) self.filter_moderated_objects = ModelWithSlugField.objects.\ filter_moderated_objects def filter_moderated_objects(query_set): from moderation.models import MODERATION_STATUS_PENDING,\ MODERATION_STATUS_REJECTED exclude_pks = [] for obj in query_set: try: if obj.moderated_object.moderation_status\ in [MODERATION_STATUS_PENDING, MODERATION_STATUS_REJECTED]\ and obj.__dict__ == \ obj.moderated_object.changed_object.__dict__: exclude_pks.append(object.pk) except ObjectDoesNotExist: pass return query_set.exclude(pk__in=exclude_pks) setattr(ModelWithSlugField.objects, 'filter_moderated_objects', filter_moderated_objects)
class AutoModerateTestCase(SettingsTestCase): fixtures = ['test_users.json', 'test_moderation.json'] test_settings = 'moderation.tests.settings.generic' def setUp(self): import moderation self.moderation = ModerationManager() class UserProfileModerator(GenericModerator): auto_approve_for_superusers = True auto_approve_for_staff = True auto_reject_for_groups = ['banned'] self.moderation.register(UserProfile, UserProfileModerator) self.user = User.objects.get(username='******') self.profile = UserProfile.objects.get(user__username='******') def tearDown(self): teardown_moderation() def test_auto_approve_helper_status_approved(self): self.profile.description = 'New description' self.profile.save() status = automoderate(self.profile, self.user) self.assertEqual(status, MODERATION_STATUS_APPROVED) profile = UserProfile.objects.get(user__username='******') self.assertEqual(profile.description, 'New description') def test_auto_approve_helper_status_rejected(self): group = Group(name='banned') group.save() self.user.groups.add(group) self.user.save() self.profile.description = 'New description' self.profile.save() status = automoderate(self.profile, self.user) profile = UserProfile.objects.get(user__username='******') self.assertEqual(status, MODERATION_STATUS_REJECTED) self.assertEqual(profile.description, u'Old description') def test_model_not_registered_with_moderation(self): obj = ModelWithSlugField2(slug='test') obj.save() self.assertRaises(RegistrationError, automoderate, obj, self.user)
def setUp(self): self.moderation = ModerationManager() class UserProfileModerator(GenericModerator): auto_approve_for_superusers = True auto_approve_for_staff = True auto_reject_for_groups = ['banned'] self.moderation.register(UserProfile, UserProfileModerator) self.user = User.objects.get(username='******') self.profile = UserProfile.objects.get(user__username='******')
class AutoModerateTestCase(SettingsTestCase): fixtures = ['test_users.json', 'test_moderation.json'] test_settings = 'moderation.tests.settings.generic' def setUp(self): self.moderation = ModerationManager() class UserProfileModerator(GenericModerator): auto_approve_for_superusers = True auto_approve_for_staff = True auto_reject_for_groups = ['banned'] self.moderation.register(UserProfile, UserProfileModerator) self.user = User.objects.get(username='******') self.profile = UserProfile.objects.get(user__username='******') def tearDown(self): teardown_moderation() def test_auto_approve_helper_status_approved(self): self.profile.description = 'New description' self.profile.save() status = automoderate(self.profile, self.user) self.assertEqual(status, MODERATION_STATUS_APPROVED) profile = UserProfile.objects.get(user__username='******') self.assertEqual(profile.description, 'New description') def test_auto_approve_helper_status_rejected(self): group = Group(name='banned') group.save() self.user.groups.add(group) self.user.save() self.profile.description = 'New description' self.profile.save() status = automoderate(self.profile, self.user) profile = UserProfile.objects.get(user__username='******') self.assertEqual(status, MODERATION_STATUS_REJECTED) self.assertEqual(profile.description, u'Old description') def test_model_not_registered_with_moderation(self): obj = ModelWithSlugField2(slug='test') obj.save() self.assertRaises(RegistrationError, automoderate, obj, self.user)
def setUp(self): self.moderation = ModerationManager() self.moderation.register(ModelWithSlugField) self.filter_moderated_objects\ = ModelWithSlugField.objects.filter_moderated_objects def filter_moderated_objects(query_set): from moderation.models import MODERATION_STATUS_PENDING,\ MODERATION_STATUS_REJECTED exclude_pks = [] for obj in query_set: try: if obj.moderated_object.moderation_status \ in [MODERATION_STATUS_PENDING, MODERATION_STATUS_REJECTED] \ and obj.__dict__\ == obj.moderated_object.changed_object.__dict__: exclude_pks.append(object.pk) except ObjectDoesNotExist: pass return query_set.exclude(pk__in=exclude_pks) setattr(ModelWithSlugField.objects, 'filter_moderated_objects', filter_moderated_objects)
def setUp(self): self.moderation = ModerationManager() class ModelWithMultipleManagersModerator(GenericModerator): manager_names = ['objects', 'men', 'women'] setup_moderation([(ModelWithMultipleManagers, ModelWithMultipleManagersModerator)])
class IntegrityErrorRegressionTestCase(TestCase): def setUp(self): self.moderation = ModerationManager() self.moderation.register(ModelWithSlugField) self.filter_moderated_objects = ModelWithSlugField.objects.\ filter_moderated_objects def filter_moderated_objects(query_set): from moderation.models import MODERATION_STATUS_PENDING,\ MODERATION_STATUS_REJECTED exclude_pks = [] for obj in query_set: try: if obj.moderated_object.moderation_status\ in [MODERATION_STATUS_PENDING, MODERATION_STATUS_REJECTED]\ and obj.__dict__ == \ obj.moderated_object.changed_object.__dict__: exclude_pks.append(object.pk) except ObjectDoesNotExist: pass return query_set.exclude(pk__in=exclude_pks) setattr(ModelWithSlugField.objects, 'filter_moderated_objects', filter_moderated_objects) def tearDown(self): self.moderation.unregister(ModelWithSlugField) def test_old_version_of_filter_moderated_objects_method(self): m1 = ModelWithSlugField(slug='test') m1.save() m2 = ModelWithSlugField(slug='test') if hasattr(transaction, 'atomic'): with transaction.atomic(): self.assertRaises(IntegrityError, m2.save) else: self.assertRaises(IntegrityError, m2.save) self.assertEqual(ModeratedObject.objects.all().count(), 1)
def test_moderation_manager(self): moderation = ModerationManager() self.assertEqual(moderation._registered_models, {})
class Moderator: notify_user = False """ import inspect from django.utils.six import with_metaclass from django.db.models import base from moderation.register import ModerationManager from moderation.moderator import GenericModerator from moderation.utils import clear_builtins from moderation.utils import django_14 moderation = ModerationManager() class ModeratedModelBase(type): """ Metaclass for the ``ModeratedModel`` type -- automatically registers ``ModeratedModel's`` -- resolves subclass ``Moderator`` into a instance of ``GenericModerator`` """ def _resolve_moderator(cls): """ ``ModeratedModel`` that defines the class Moderator will have that class resolved into
def _ensure_obj(self): if _ModerationProxy._moderation is None: from moderation.register import ModerationManager _ModerationProxy._moderation = ModerationManager()