Esempio n. 1
0
    def test_form_to_generic_document(self):
        class CustomDocumentForm(DocumentForm):
            class Meta:
                document = ComplexObject

        TempDoc = create_temporary_document_class(ComplexObject)

        instance = TempDoc(_primitive_data={"field1": "hello"})
        self.assertEqual(instance.field1, "hello")
        self.assertEqual(instance.dot_notation("field1"), "hello")

        form = CustomDocumentForm(instance=instance, data={"field1": "hello2"})

        self.assertEqual(form.initial["field1"], "hello")
        self.assertTrue(form.is_valid(), str(form.errors))
        instance = form.save()
        self.assertEqual(instance._primitive_data["field1"], "hello2")
        self.assertTrue(isinstance(instance, TempDoc))

        complex_obj = instance.commit_changes()
        ComplexObject.objects.get(pk=complex_obj.pk)

        class CustomDocumentAddressForm(DocumentForm):
            class Meta:
                document = ComplexObject
                dotpath = "main_address"

        data = {
            "street_1": "10533 Mesane Rd",
            "city": "San Diego",
            "postal_code": "92126",
            "country": "US",
            "region": "CA",
        }
        form = CustomDocumentAddressForm(data=data, instance=instance)
        self.assertTrue(form.is_valid(), str(form.errors))
        instance = form.save()
        self.assertEqual(instance._primitive_data["main_address"]["region"], "CA", str(instance._primitive_data))
        self.assertTrue(isinstance(instance, TempDoc))

        complex_obj = instance.commit_changes(instance=complex_obj)
        ComplexObject.objects.get(pk=complex_obj.pk)

        complex_obj.field1 = "hello3"
        complex_obj.save()

        instance.copy_from_instance(complex_obj)

        self.assertEqual(instance.field1, "hello3")
Esempio n. 2
0
 def temp_document(self):
     if not hasattr(self, '_temp_document'):
         self._temp_document = create_temporary_document_class(self.document)
     return self._temp_document
Esempio n. 3
0
 def temp_document(self):
     from dockit.models import create_temporary_document_class
     if not hasattr(self, '_temp_document'):
         self._temp_document = create_temporary_document_class(self.document)
     return self._temp_document
Esempio n. 4
0
 def temp_document(self):
     if not hasattr(self, '_temp_document'):
         self._temp_document = create_temporary_document_class(
             self.document)
     return self._temp_document