コード例 #1
0
 def test_formfield_issues_no_queries(self):
     trait_type = Trait._meta.get_field('trait_type')
     with self.assertNumQueries(0):
         formfield = trait_type.formfield()
     self.assertSetEqual(set(formfield.queryset), {
         get_content_type(Trait),
         get_content_type(AcknowledgedTrait),
     })
コード例 #2
0
 def test_formfield_issues_no_queries(self):
     trait_type = Trait._meta.get_field('trait_type')
     with self.assertNumQueries(0):
         formfield = trait_type.formfield()
     self.assertSetEqual(set(formfield.queryset), {
         get_content_type(Trait),
         get_content_type(AcknowledgedTrait),
     })
コード例 #3
0
 def test_invalid_type(self):
     trait = Trait.objects.create()
     snake_type = get_content_type(Snake)
     trait.mammal_type = snake_type
     trait.snake_type = snake_type
     with self.assertRaisesMessage(
             ValidationError,
             'Specified content type is not of a subclass of Mammal.'):
         trait.full_clean()
コード例 #4
0
    def test_field_deconstruction(self):
        test_apps = Apps()

        class Foo(PolymorphicModel):
            foo = PolymorphicTypeField('self', on_delete=models.CASCADE)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        class Bar(models.Model):
            foo = PolymorphicTypeField('Foo', on_delete=models.CASCADE)
            foo_null = PolymorphicTypeField(Foo,
                                            on_delete=models.CASCADE,
                                            null=True)
            foo_default = PolymorphicTypeField(
                Foo,
                on_delete=models.CASCADE,
                default=get_content_type(Foo).pk)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        def django_version_agnostic(deconstruction):
            # As of Django 1.9+ on_delete is a required parameter and
            # doesn't default to models.CASCADE anymore.
            if django.VERSION >= (1, 9):
                deconstruction['on_delete'] = models.CASCADE
            return deconstruction

        self.assertDeconstructionEqual(
            Foo._meta.get_field('foo'),
            ('foo', 'polymodels.fields.PolymorphicTypeField', [],
             django_version_agnostic({
                 'polymorphic_type': 'polymodels.Foo',
             })))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo'),
            ('foo', 'polymodels.fields.PolymorphicTypeField', [],
             django_version_agnostic({
                 'polymorphic_type': 'polymodels.Foo',
             })))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo_null'),
            ('foo_null', 'polymodels.fields.PolymorphicTypeField', [],
             django_version_agnostic({
                 'polymorphic_type': 'polymodels.Foo',
                 'null': True,
             })))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo_default'),
            ('foo_default', 'polymodels.fields.PolymorphicTypeField', [],
             django_version_agnostic({
                 'polymorphic_type': 'polymodels.Foo',
                 'default': get_content_type(Foo).pk,
             })))
コード例 #5
0
 def test_invalid_type(self):
     trait = Trait.objects.create()
     snake_type = get_content_type(Snake)
     trait.mammal_type = snake_type
     trait.snake_type = snake_type
     with self.assertRaisesMessage(
         ValidationError, 'Specified content type is not of a subclass of Mammal.'
     ):
         trait.full_clean()
コード例 #6
0
        class Bar(models.Model):
            foo = PolymorphicTypeField('Foo', on_delete=models.CASCADE)
            foo_null = PolymorphicTypeField(Foo,
                                            on_delete=models.CASCADE,
                                            null=True)
            foo_default = PolymorphicTypeField(
                Foo,
                on_delete=models.CASCADE,
                default=get_content_type(Foo).pk)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'
コード例 #7
0
    def test_field_deconstruction(self):
        test_apps = Apps()

        class Foo(PolymorphicModel):
            foo = PolymorphicTypeField('self', on_delete=models.CASCADE)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        class Bar(models.Model):
            foo = PolymorphicTypeField('Foo', on_delete=models.CASCADE)
            foo_null = PolymorphicTypeField(Foo,
                                            on_delete=models.CASCADE,
                                            null=True)
            foo_default = PolymorphicTypeField(
                Foo,
                on_delete=models.CASCADE,
                default=get_content_type(Foo).pk)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        self.assertDeconstructionEqual(
            Foo._meta.get_field('foo'),
            ('foo', 'polymodels.fields.PolymorphicTypeField', [], {
                'polymorphic_type': 'polymodels.Foo',
                'on_delete': models.CASCADE,
            }))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo'),
            ('foo', 'polymodels.fields.PolymorphicTypeField', [], {
                'polymorphic_type': 'polymodels.Foo',
                'on_delete': models.CASCADE,
            }))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo_null'),
            ('foo_null', 'polymodels.fields.PolymorphicTypeField', [], {
                'polymorphic_type': 'polymodels.Foo',
                'null': True,
                'on_delete': models.CASCADE,
            }))
        self.assertDeconstructionEqual(
            Bar._meta.get_field('foo_default'),
            ('foo_default', 'polymodels.fields.PolymorphicTypeField', [], {
                'polymorphic_type': 'polymodels.Foo',
                'default': get_content_type(Foo).pk,
                'on_delete': models.CASCADE,
            }))
コード例 #8
0
    def test_field_deconstruction(self):
        test_apps = Apps()

        class Foo(PolymorphicModel):
            foo = PolymorphicTypeField('self', on_delete=models.CASCADE)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        class Bar(models.Model):
            foo = PolymorphicTypeField('Foo', on_delete=models.CASCADE)
            foo_null = PolymorphicTypeField(Foo, on_delete=models.CASCADE, null=True)
            foo_default = PolymorphicTypeField(Foo, on_delete=models.CASCADE, default=get_content_type(Foo).pk)

            class Meta:
                apps = test_apps
                app_label = 'polymodels'

        def django_version_agnostic(deconstruction):
            # As of Django 1.9+ on_delete is a required parameter and
            # doesn't default to models.CASCADE anymore.
            if django.VERSION >= (1, 9):
                deconstruction['on_delete'] = models.CASCADE
            return deconstruction

        self.assertDeconstructionEqual(Foo._meta.get_field('foo'), (
            'foo', 'polymodels.fields.PolymorphicTypeField', [], django_version_agnostic({
                'polymorphic_type': 'polymodels.Foo',
            })
        ))
        self.assertDeconstructionEqual(Bar._meta.get_field('foo'), (
            'foo', 'polymodels.fields.PolymorphicTypeField', [], django_version_agnostic({
                'polymorphic_type': 'polymodels.Foo',
            })
        ))
        self.assertDeconstructionEqual(Bar._meta.get_field('foo_null'), (
            'foo_null', 'polymodels.fields.PolymorphicTypeField', [], django_version_agnostic({
                'polymorphic_type': 'polymodels.Foo',
                'null': True,
            })
        ))
        self.assertDeconstructionEqual(Bar._meta.get_field('foo_default'), (
            'foo_default', 'polymodels.fields.PolymorphicTypeField', [], django_version_agnostic({
                'polymorphic_type': 'polymodels.Foo',
                'default': get_content_type(Foo).pk,
            })
        ))
コード例 #9
0
 def test_valid_proxy_subclass(self):
     trait = Trait.objects.create()
     trait.trait_type = get_content_type(AcknowledgedTrait)
     trait.full_clean()
コード例 #10
0
 def test_valid_subclass(self):
     trait = Trait.objects.create()
     trait.snake_type = get_content_type(HugeSnake)
     trait.full_clean()
コード例 #11
0
 def test_retreival(self):
     self.assertEqual(self.reference(), get_content_type(Snake).pk)
コード例 #12
0
ファイル: generic.py プロジェクト: derekdreery/django-mutant
 def get_content_type(self, obj=None, **kwargs):
     if obj:
         return get_content_type(obj.__class__, obj._state.db)
     else:
         return super(ProxyAwareGenericForeignKey, self).get_content_type(obj, **kwargs)
コード例 #13
0
 def test_valid_proxy_subclass(self):
     trait = Trait.objects.create()
     trait.trait_type = get_content_type(AcknowledgedTrait)
     trait.full_clean()
コード例 #14
0
 def test_valid_subclass(self):
     trait = Trait.objects.create()
     trait.snake_type = get_content_type(HugeSnake)
     trait.full_clean()
コード例 #15
0
 def test_retreival(self):
     self.assertEqual(self.reference(), get_content_type(Snake).pk)
コード例 #16
0
ファイル: __init__.py プロジェクト: derekdreery/django-mutant
 def get_content_type(cls):
     return get_content_type(cls)