Skip to content

Commit

Permalink
Merge pull request #65 from kregoslup/all-objects-bug
Browse files Browse the repository at this point in the history
All objects bug - need check if self.field.remote_field.model has `all_objects` attribute
  • Loading branch information
meteozond authored Apr 20, 2017
2 parents d2438e9 + 8566dfb commit 08a6195
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
7 changes: 5 additions & 2 deletions django_permanent/related.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,12 @@ def wrapper(self, **hints):
instance = hints.get('instance')
if instance and isinstance(instance, PermanentModel) and getattr(instance, settings.FIELD):
if django.VERSION < (1, 9, 0):
return self.field.rel.to.all_objects
model = self.field.rel.to
else:
return self.field.remote_field.model.all_objects
model = self.field.remote_field.model
if hasattr(model, 'all_objects'):
return model.all_objects
return model.objects
return func(self, **hints)
return wrapper

Expand Down
10 changes: 10 additions & 0 deletions django_permanent/tests/cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.test import TestCase
from django.utils.timezone import now

from django_permanent.tests.test_app.models import RegularModel, RemovableRegularDepended
from .test_app.models import (
CustomQsPermanent,
M2MFrom,
Expand Down Expand Up @@ -62,6 +63,15 @@ def test_removable_nullable_depended(self):
depended = model.objects.first()
self.assertEqual(depended.dependence, None)

def test_remove_removable_nullable_depended(self):
model = RemovableRegularDepended
test_model = model.objects.create(dependence=RegularModel.objects.create(name='Test'))
test_model.delete()
try:
self.assertIsNotNone(model.deleted_objects.first().dependence)
except AttributeError:
self.fail()

def test_permanent_depended(self):
model = PermanentDepended
depended = model.objects.create(dependence=self.permanent)
Expand Down
9 changes: 9 additions & 0 deletions django_permanent/tests/test_app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ class MyPermanentModel(PermanentModel, BaseTestModel):
pass


class RegularModel(BaseTestModel):
name = models.CharField(max_length=255, blank=True, null=True)
pass


class RemovableRegularDepended(PermanentModel, BaseTestModel):
dependence = models.ForeignKey(RegularModel, on_delete=models.CASCADE)


class RemovableDepended(BaseTestModel):
dependence = models.ForeignKey(MyPermanentModel, on_delete=models.CASCADE)

Expand Down

0 comments on commit 08a6195

Please sign in to comment.