Esempio n. 1
0
 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)
Esempio n. 2
0
 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()
Esempio n. 3
0
 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)))
Esempio n. 4
0
 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))
Esempio n. 5
0
 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 = "******",
     )
Esempio n. 6
0
 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.
Esempio n. 7
0
 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))
Esempio n. 8
0
 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="******", )
Esempio n. 9
0
 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()
Esempio n. 10
0
 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)
Esempio n. 11
0
 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)))
Esempio n. 12
0
 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.
Esempio n. 13
0
    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()