def testEagerRegistration(self): # Register the model and test. register(ReversionTestModel3, eager_signals=[pre_delete]) self.assertTrue(is_registered(ReversionTestModel3)) self.assertRaises( RegistrationError, lambda: register(ReversionTestModel3, eager_signals=[pre_delete])) self.assertTrue(ReversionTestModel3 in get_registered_models()) self.assertTrue( isinstance(get_adapter(ReversionTestModel3), VersionAdapter)) self.assertEqual( [], default_revision_manager._signals[ReversionTestModel3]) self.assertEqual( [pre_delete], default_revision_manager._eager_signals[ReversionTestModel3]) # Unregister the model and text. unregister(ReversionTestModel3) self.assertFalse(is_registered(ReversionTestModel3)) self.assertRaises(RegistrationError, lambda: unregister(ReversionTestModel3)) self.assertTrue(ReversionTestModel3 not in get_registered_models()) self.assertRaises(RegistrationError, lambda: isinstance(get_adapter(ReversionTestModel3))) self.assertFalse( ReversionTestModel3 in default_revision_manager._signals) self.assertFalse( ReversionTestModel3 in default_revision_manager._eager_signals)
def testInlineAdmin(self): self.assertTrue(is_registered(InlineTestParentModel)) # make sure model is following the child FK self.assertTrue('children' in get_adapter(InlineTestParentModel).follow) self.createInlineObjects() # unregister model unregister(InlineTestParentModel) self.assertFalse(is_registered(InlineTestParentModel)) # re-register without following register(InlineTestParentModel) self.assertTrue(is_registered(InlineTestParentModel)) # make sure model is NOT following the child FK self.assertFalse('children' in get_adapter(InlineTestParentModel).follow) self.createInlineObjects()
def check_deregistration(self, test_model): # Unregister the model and text. unregister(test_model) self.assertFalse(is_registered(test_model)) self.assertRaises(RegistrationError, lambda: unregister(test_model)) self.assertTrue(test_model not in get_registered_models()) self.assertRaises(RegistrationError, lambda: isinstance(get_adapter(test_model)))
def check_registration(self, test_model): # Register the model and test. register(test_model) self.assertTrue(is_registered(test_model)) self.assertRaises(RegistrationError, lambda: register(test_model)) self.assertTrue(test_model in get_registered_models()) self.assertTrue(isinstance(get_adapter(test_model), VersionAdapter))
def setUp(self): # Unregister all registered models. self.initial_registered_models = [] for registered_model in get_registered_models(): self.initial_registered_models.append((registered_model, get_adapter(registered_model).__class__)) unregister(registered_model) # Register the test models. register(ReversionTestModel1) register(ReversionTestModel2) register(ReversionTestModel3, eager_signals=[pre_delete]) # Create some test data. self.test11 = ReversionTestModel1.objects.create( name = "model1 instance1 version1", ) self.test12 = ReversionTestModel1.objects.create( name = "model1 instance2 version1", ) self.test21 = ReversionTestModel2.objects.create( name = "model2 instance1 version1", ) self.test22 = ReversionTestModel2.objects.create( name = "model2 instance2 version1", ) self.test31 = ReversionTestModel3.objects.create( name = "model3 instance1 version1", ) self.test32 = ReversionTestModel3.objects.create( name = "model3 instance2 version1", ) self.user = User.objects.create( username = "******", )
def testInlineAdmin(self): self.assertTrue(is_registered(InlineTestParentModel)) # make sure model is following the child FK self.assertTrue( 'children' in get_adapter(InlineTestParentModel).follow) parent_pk = self.createInlineObjects() # Check that the current version includes the inlines. versions = list( get_for_object_reference(InlineTestParentModel, parent_pk)) response = self.client.get( reverse("admin:test_reversion_inlinetestparentmodel_revision", args=(parent_pk, versions[0].pk))) self.assertContains(response, "parent version2") # Check parent model. self.assertContains( response, "non-generic child version 1") # Check inline child model. self.assertContains( response, "generic child version 1") # Check inline generic child model. # Check that the first version does not include the inlines. response = self.client.get( reverse("admin:test_reversion_inlinetestparentmodel_revision", args=(parent_pk, versions[1].pk))) self.assertContains(response, "parent version1") # Check parent model. self.assertNotContains( response, "non-generic child version 1") # Check inline child model. self.assertNotContains( response, "generic child version 1") # Check inline generic child model.
def setUp(self): # Unregister all registered models. self.initial_registered_models = [] for registered_model in get_registered_models(): self.initial_registered_models.append( (registered_model, get_adapter(registered_model).__class__)) unregister(registered_model) # Register the test models. register(ReversionTestModel1) register(ReversionTestModel2) register(ReversionTestModel3, eager_signals=[pre_delete]) # Create some test data. self.test11 = ReversionTestModel1.objects.create( name="model1 instance1 version1", ) self.test12 = ReversionTestModel1.objects.create( name="model1 instance2 version1", ) self.test21 = ReversionTestModel2.objects.create( name="model2 instance1 version1", ) self.test22 = ReversionTestModel2.objects.create( name="model2 instance2 version1", ) self.test31 = ReversionTestModel3.objects.create( name="model3 instance1 version1", ) self.test32 = ReversionTestModel3.objects.create( name="model3 instance2 version1", ) self.user = User.objects.create(username="******", )
def testInlineAdmin(self): self.assertTrue(is_registered(InlineTestParentModel)) # make sure model is following the child FK self.assertTrue( 'children' in get_adapter(InlineTestParentModel).follow) self.createInlineObjects() # unregister model unregister(InlineTestParentModel) self.assertFalse(is_registered(InlineTestParentModel)) # re-register without following register(InlineTestParentModel) self.assertTrue(is_registered(InlineTestParentModel)) # make sure model is NOT following the child FK self.assertFalse( 'children' in get_adapter(InlineTestParentModel).follow) self.createInlineObjects()
def testEagerRegistration(self): # Register the model and test. register(ReversionTestModel3, eager_signals=[pre_delete]) self.assertTrue(is_registered(ReversionTestModel3)) self.assertRaises(RegistrationError, lambda: register(ReversionTestModel3, eager_signals=[pre_delete])) self.assertTrue(ReversionTestModel3 in get_registered_models()) self.assertTrue(isinstance(get_adapter(ReversionTestModel3), VersionAdapter)) self.assertEqual([], default_revision_manager._signals[ReversionTestModel3]) self.assertEqual([pre_delete], default_revision_manager._eager_signals[ReversionTestModel3]) # Unregister the model and text. unregister(ReversionTestModel3) self.assertFalse(is_registered(ReversionTestModel3)) self.assertRaises(RegistrationError, lambda: unregister(ReversionTestModel3)) self.assertTrue(ReversionTestModel3 not in get_registered_models()) self.assertRaises(RegistrationError, lambda: isinstance(get_adapter(ReversionTestModel3))) self.assertFalse(ReversionTestModel3 in default_revision_manager._signals) self.assertFalse(ReversionTestModel3 in default_revision_manager._eager_signals)
def testInlineProxyAdmin(self): self.assertTrue(is_registered(InlineTestParentModelProxy)) # make sure model is following the child FK self.assertTrue('children' in get_adapter(InlineTestParentModelProxy).follow) parent_pk = self.createInlineProxyObjects() # Check that the current version includes the inlines. versions = list(get_for_object_reference(InlineTestParentModelProxy, parent_pk)) response = self.client.get(reverse("admin:test_reversion_inlinetestparentmodelproxy_revision", args=(parent_pk, versions[0].pk))) self.assertContains(response, "parent version2") # Check parent model. self.assertContains(response, "non-generic child version 1") # Check inline child model. # Check that the first version does not include the inlines. response = self.client.get(reverse("admin:test_reversion_inlinetestparentmodelproxy_revision", args=(parent_pk, versions[1].pk))) self.assertContains(response, "parent version1") # Check parent model. self.assertNotContains(response, "non-generic child version 1") # Check inline child model.
def _perform_version_update(version, update_data): from reversion import revisions local_obj = version._object_version.object for field, value in update_data.items(): setattr(local_obj, field, value) if hasattr(revisions, '_get_options'): version_options = revisions._get_options( get_reversion_version_model(version)) version_format = version_options.format version_fields = version_options.fields else: version_adapter = revisions.get_adapter( get_reversion_version_model(version)) version_format = version_adapter.get_serialization_format() version_fields = list(version_adapter.get_fields_to_serialize()) version.serialized_data = serializers.serialize(version_format, (local_obj, ), fields=version_fields) version.save()