diff --git a/mayan/apps/checkouts/managers.py b/mayan/apps/checkouts/managers.py index 6d795729ce..a42fa7ba95 100644 --- a/mayan/apps/checkouts/managers.py +++ b/mayan/apps/checkouts/managers.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals import logging +from django.apps import apps from django.db import models from django.utils.timezone import now @@ -88,6 +89,17 @@ class DocumentCheckoutManager(models.Manager): else: return not checkout_info.block_new_version + def get_by_natural_key(self, document_natural_key): + Document = apps.get_model( + app_label='documents', model_name='Document' + ) + try: + document = Document.objects.get_by_natural_key(document_natural_key) + except Document.DoesNotExist: + raise self.model.DoesNotExist + + return self.get(document__pk=document.pk) + class NewVersionBlockManager(models.Manager): def block(self, document): @@ -98,3 +110,14 @@ class NewVersionBlockManager(models.Manager): def is_blocked(self, document): return self.filter(document=document).exists() + + def get_by_natural_key(self, document_natural_key): + Document = apps.get_model( + app_label='documents', model_name='Document' + ) + try: + document = Document.objects.get_by_natural_key(document_natural_key) + except Document.DoesNotExist: + raise self.model.DoesNotExist + + return self.get(document__pk=document.pk) diff --git a/mayan/apps/checkouts/models.py b/mayan/apps/checkouts/models.py index 2750fdf85f..43a38d8848 100644 --- a/mayan/apps/checkouts/models.py +++ b/mayan/apps/checkouts/models.py @@ -72,6 +72,10 @@ class DocumentCheckout(models.Model): def get_absolute_url(self): return reverse('checkout:checkout_info', args=(self.document.pk,)) + def natural_key(self): + return self.document.natural_key() + natural_key.dependencies = ['documents.Document'] + def save(self, *args, **kwargs): # TODO: enclose in transaction new_checkout = not self.pk @@ -104,3 +108,7 @@ class NewVersionBlock(models.Model): class Meta: verbose_name = _('New version block') verbose_name_plural = _('New version blocks') + + def natural_key(self): + return self.document.natural_key() + natural_key.dependencies = ['documents.Document']