diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 27 |
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 |