summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 25270e633..b3fba3b1f 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -65,7 +65,7 @@ from django.contrib.gis.db import models
from simple_history.models import HistoricalRecords as BaseHistoricalRecords
from ishtar_common.model_merging import merge_model_objects
-from ishtar_common.utils import get_cache, disable_for_loaddata
+from ishtar_common.utils import get_cache, disable_for_loaddata, create_slug
from ishtar_common.data_importer import Importer, ImportFormater, \
IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, \
TypeFormater, YearFormater, StrToBoolean, FileFormater
@@ -415,6 +415,11 @@ def post_save_cache(sender, **kwargs):
sender.refresh_cache()
+class SlugModelManager(models.Manager):
+ def get_by_natural_key(self, slug):
+ return self.get(slug=slug)
+
+
class TypeManager(models.Manager):
def get_by_natural_key(self, txt_idx):
return self.get(txt_idx=txt_idx)
@@ -1594,10 +1599,13 @@ class DocumentTemplate(models.Model):
CLASSNAMES = (('archaeological_operations.models.AdministrativeAct',
_(u"Administrative Act")),)
name = models.CharField(_(u"Name"), max_length=100)
+ slug = models.SlugField(_(u"Slug"), blank=True, null=True, max_length=100,
+ unique=True)
template = models.FileField(_(u"Template"), upload_to="upload/templates/")
associated_object_name = models.CharField(
_(u"Associated object"), max_length=100, choices=CLASSNAMES)
available = models.BooleanField(_(u"Available"), default=True)
+ objects = SlugModelManager()
class Meta:
verbose_name = _(u"Document template")
@@ -1607,6 +1615,14 @@ class DocumentTemplate(models.Model):
def __unicode__(self):
return self.name
+ def natural_key(self):
+ return (self.slug, )
+
+ def save(self, *args, **kwargs):
+ if not self.slug:
+ self.slug = create_slug(DocumentTemplate, self.name)
+ return super(DocumentTemplate, self).save(*args, **kwargs)
+
@classmethod
def get_tuples(cls, dct={}, empty_first=True):
dct['available'] = True
@@ -1935,8 +1951,8 @@ class ImporterType(models.Model):
"""
name = models.CharField(_(u"Name"), blank=True, null=True,
max_length=100)
- slug = models.SlugField(_(u"Slug"), unique=True, blank=True, null=True,
- max_length=100)
+ slug = models.SlugField(_(u"Slug"), unique=True, max_length=100,
+ blank=True, null=True)
description = models.CharField(_(u"Description"), blank=True, null=True,
max_length=500)
users = models.ManyToManyField('IshtarUser', verbose_name=_(u"Users"),
@@ -2029,6 +2045,11 @@ class ImporterType(models.Model):
newclass = type(name, (Importer,), args)
return newclass
+ def save(self, *args, **kwargs):
+ if not self.slug:
+ self.slug = create_slug(ImporterType, self.name)
+ return super(ImporterType, self).save(*args, **kwargs)
+
def get_associated_model(parent_model, keys):
model = None