Add natural key support to the models of the checkouts app.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-06 14:54:55 -04:00
parent 7994803e8f
commit 3937696774
2 changed files with 31 additions and 0 deletions

View File

@@ -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)

View File

@@ -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']