Exemple #1
0
    def testCanGetForObjectReference(self):
        # Can get version for proxy model
        proxy_versions = get_for_object_reference(ReversionTestModel1Proxy, self.proxy.id)
        self.assertEqual(len(proxy_versions), 2)
        self.assertEqual(proxy_versions[0].field_dict["name"], self.proxy.name)
        self.assertEqual(proxy_versions[1].field_dict["name"], self.concrete.name)

        # Can get the same version for concrete model
        concrete_versions = get_for_object_reference(ReversionTestModel1, self.concrete.id)
        self.assertEqual(list(concrete_versions), list(proxy_versions))
Exemple #2
0
 def testCanGetForObjectReference(self):
     # Test a model with an int pk.
     versions = get_for_object_reference(ReversionTestModel1, self.test11.pk)
     self.assertEqual(len(versions), 2)
     self.assertEqual(versions[0].field_dict["name"], "model1 instance1 version2")
     self.assertEqual(versions[1].field_dict["name"], "model1 instance1 version1")
     # Test a model with a str pk.
     versions = get_for_object_reference(ReversionTestModel2, self.test21.pk)
     self.assertEqual(len(versions), 2)
     self.assertEqual(versions[0].field_dict["name"], "model2 instance1 version2")
     self.assertEqual(versions[1].field_dict["name"], "model2 instance1 version1")
    def testCanGetForObjectReference(self):
        # Can get version for proxy model
        proxy_versions = get_for_object_reference(ReversionTestModel1Proxy,
                                                  self.proxy.id)
        self.assertEqual(len(proxy_versions), 2)
        self.assertEqual(proxy_versions[0].field_dict["name"], self.proxy.name)
        self.assertEqual(proxy_versions[1].field_dict["name"],
                         self.concrete.name)

        # Can get the same version for concrete model
        concrete_versions = get_for_object_reference(ReversionTestModel1,
                                                     self.concrete.id)
        self.assertEqual(list(concrete_versions), list(proxy_versions))
 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 testCanGetForObjectReference(self):
     # Test a model with an int pk.
     versions = get_for_object_reference(ReversionTestModel1,
                                         self.test11.pk)
     self.assertEqual(len(versions), 2)
     self.assertEqual(versions[0].field_dict["name"],
                      "model1 instance1 version2")
     self.assertEqual(versions[1].field_dict["name"],
                      "model1 instance1 version1")
     # Test a model with a str pk.
     versions = get_for_object_reference(ReversionTestModel2,
                                         self.test21.pk)
     self.assertEqual(len(versions), 2)
     self.assertEqual(versions[0].field_dict["name"],
                      "model2 instance1 version2")
     self.assertEqual(versions[1].field_dict["name"],
                      "model2 instance1 version1")
Exemple #6
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.
Exemple #7
0
 def testRevisionSavedOnPost(self):
     self.assertEqual(ChildTestAdminModel.objects.count(), 0)
     # Create an instance via the admin.
     response = self.client.post("/admin/test_reversion/childtestadminmodel/add/", {
         "parent_name": "parent instance1 version1",
         "child_name": "child instance1 version1",
         "_continue": 1,
     })
     self.assertEqual(response.status_code, 302)
     obj_pk = resolve(response["Location"].replace("http://testserver", "")).args[0]
     obj = ChildTestAdminModel.objects.get(id=obj_pk)
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 1)
     self.assertEqual(versions[0].field_dict["parent_name"], "parent instance1 version1")
     self.assertEqual(versions[0].field_dict["child_name"], "child instance1 version1")
     # Save a new version.
     response = self.client.post(reverse("admin:test_reversion_childtestadminmodel_change", args=(obj_pk,)), {
         "parent_name": "parent instance1 version2",
         "child_name": "child instance1 version2",
         "_continue": 1,
     })
     self.assertEqual(response.status_code, 302)
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 2)
     self.assertEqual(versions[0].field_dict["parent_name"], "parent instance1 version2")
     self.assertEqual(versions[0].field_dict["child_name"], "child instance1 version2")
     # Check that the versions can be listed.
     response = self.client.get(reverse("admin:test_reversion_childtestadminmodel_history", args=(obj_pk,)))
     self.assertContains(response, "child instance1 version2")
     self.assertContains(response, "child instance1 version1")
     # Check that version data can be loaded.
     response = self.client.get(reverse("admin:test_reversion_childtestadminmodel_revision", args=(obj_pk, versions[1].pk)))
     self.assertContains(response, "parent instance1 version1")
     self.assertContains(response, "child instance1 version1")
     # Check that loading the version data didn't roll it back!
     obj = ChildTestAdminModel.objects.get(pk=obj.pk)
     self.assertEqual(obj.child_name, "child instance1 version2")
     self.assertEqual(obj.parent_name, "parent instance1 version2")
     self.assertEqual(get_for_object(obj).count(), 2)
     # Check that a version can be rolled back.
     response = self.client.post(reverse("admin:test_reversion_childtestadminmodel_revision", args=(obj_pk, versions[1].pk)), {
         "parent_name": "parent instance1 version3",
         "child_name": "child instance1 version3",
     })
     self.assertEqual(response.status_code, 302)
     # Check that the models were rolled back.
     obj = ChildTestAdminModel.objects.get(pk=obj.pk)
     self.assertEqual(obj.child_name, "child instance1 version3")
     self.assertEqual(obj.parent_name, "parent instance1 version3")
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 3)
     self.assertEqual(versions[0].field_dict["child_name"], "child instance1 version3")
     self.assertEqual(versions[0].field_dict["parent_name"], "parent instance1 version3")
     # Check that a deleted version can be viewed in the list.
     obj.delete()
     response = self.client.get("/admin/test_reversion/childtestadminmodel/recover/")
     self.assertContains(response, "child instance1 version3")
     # Check that a delete version can be viewed in detail.
     response = self.client.get(reverse("admin:test_reversion_childtestadminmodel_recover", args=(versions[0].pk,)))
     self.assertContains(response, "parent instance1 version3")
     self.assertContains(response, "child instance1 version3")
     # Check that a deleted version can be recovered.
     response = self.client.post(reverse("admin:test_reversion_childtestadminmodel_recover", args=(versions[0].pk,)), {
         "parent_name": "parent instance1 version4",
         "child_name": "child instance1 version4",
     })
     # Check that the models were rolled back.
     obj = ChildTestAdminModel.objects.get(pk=obj_pk)
     self.assertEqual(obj.child_name, "child instance1 version4")
     self.assertEqual(obj.parent_name, "parent instance1 version4")
     # Check that a version is created.
     versions = get_for_object_reference(ChildTestAdminModel, obj_pk)
     self.assertEqual(versions.count(), 4)
     self.assertEqual(versions[0].field_dict["parent_name"], "parent instance1 version4")
     self.assertEqual(versions[0].field_dict["child_name"], "child instance1 version4")
 def testRevisionSavedOnPost(self):
     self.assertEqual(ChildTestAdminModel.objects.count(), 0)
     # Create an instance via the admin.
     response = self.client.post(
         "/admin/test_reversion/childtestadminmodel/add/", {
             "parent_name": "parent instance1 version1",
             "child_name": "child instance1 version1",
             "_continue": 1,
         })
     self.assertEqual(response.status_code, 302)
     obj_pk = resolve(response["Location"].replace("http://testserver",
                                                   "")).args[0]
     obj = ChildTestAdminModel.objects.get(id=obj_pk)
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 1)
     self.assertEqual(versions[0].field_dict["parent_name"],
                      "parent instance1 version1")
     self.assertEqual(versions[0].field_dict["child_name"],
                      "child instance1 version1")
     # Save a new version.
     response = self.client.post(
         reverse("admin:test_reversion_childtestadminmodel_change",
                 args=(obj_pk, )), {
                     "parent_name": "parent instance1 version2",
                     "child_name": "child instance1 version2",
                     "_continue": 1,
                 })
     self.assertEqual(response.status_code, 302)
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 2)
     self.assertEqual(versions[0].field_dict["parent_name"],
                      "parent instance1 version2")
     self.assertEqual(versions[0].field_dict["child_name"],
                      "child instance1 version2")
     # Check that the versions can be listed.
     response = self.client.get(
         reverse("admin:test_reversion_childtestadminmodel_history",
                 args=(obj_pk, )))
     self.assertContains(response, "child instance1 version2")
     self.assertContains(response, "child instance1 version1")
     # Check that version data can be loaded.
     response = self.client.get(
         reverse("admin:test_reversion_childtestadminmodel_revision",
                 args=(obj_pk, versions[1].pk)))
     self.assertContains(response, "parent instance1 version1")
     self.assertContains(response, "child instance1 version1")
     # Check that loading the version data didn't roll it back!
     obj = ChildTestAdminModel.objects.get(pk=obj.pk)
     self.assertEqual(obj.child_name, "child instance1 version2")
     self.assertEqual(obj.parent_name, "parent instance1 version2")
     self.assertEqual(get_for_object(obj).count(), 2)
     # Check that a version can be rolled back.
     response = self.client.post(
         reverse("admin:test_reversion_childtestadminmodel_revision",
                 args=(obj_pk, versions[1].pk)), {
                     "parent_name": "parent instance1 version3",
                     "child_name": "child instance1 version3",
                 })
     self.assertEqual(response.status_code, 302)
     # Check that the models were rolled back.
     obj = ChildTestAdminModel.objects.get(pk=obj.pk)
     self.assertEqual(obj.child_name, "child instance1 version3")
     self.assertEqual(obj.parent_name, "parent instance1 version3")
     # Check that a version is created.
     versions = get_for_object(obj)
     self.assertEqual(versions.count(), 3)
     self.assertEqual(versions[0].field_dict["child_name"],
                      "child instance1 version3")
     self.assertEqual(versions[0].field_dict["parent_name"],
                      "parent instance1 version3")
     # Check that a deleted version can be viewed in the list.
     obj.delete()
     response = self.client.get(
         "/admin/test_reversion/childtestadminmodel/recover/")
     self.assertContains(response, "child instance1 version3")
     # Check that a delete version can be viewed in detail.
     response = self.client.get(
         reverse("admin:test_reversion_childtestadminmodel_recover",
                 args=(versions[0].pk, )))
     self.assertContains(response, "parent instance1 version3")
     self.assertContains(response, "child instance1 version3")
     # Check that a deleted version can be recovered.
     response = self.client.post(
         reverse("admin:test_reversion_childtestadminmodel_recover",
                 args=(versions[0].pk, )), {
                     "parent_name": "parent instance1 version4",
                     "child_name": "child instance1 version4",
                 })
     # Check that the models were rolled back.
     obj = ChildTestAdminModel.objects.get(pk=obj_pk)
     self.assertEqual(obj.child_name, "child instance1 version4")
     self.assertEqual(obj.parent_name, "parent instance1 version4")
     # Check that a version is created.
     versions = get_for_object_reference(ChildTestAdminModel, obj_pk)
     self.assertEqual(versions.count(), 4)
     self.assertEqual(versions[0].field_dict["parent_name"],
                      "parent instance1 version4")
     self.assertEqual(versions[0].field_dict["child_name"],
                      "child instance1 version4")