diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-11 11:28:40 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-11 11:28:40 +0200 | 
| commit | 9985406e7fd5d7561a79f5e9eeee36d007d66d76 (patch) | |
| tree | 11edfe5030983edca12d2a46d189e72eda5027db /archaeological_finds/models.py | |
| parent | c75b9f076f8893a50713e75cffde1b757c320ebe (diff) | |
| parent | cc12bf5d9c20591d321f4461d2795a58fac07d1c (diff) | |
| download | Ishtar-9985406e7fd5d7561a79f5e9eeee36d007d66d76.tar.bz2 Ishtar-9985406e7fd5d7561a79f5e9eeee36d007d66d76.zip | |
Merge branch 'master' into v0.9
Diffstat (limited to 'archaeological_finds/models.py')
| -rw-r--r-- | archaeological_finds/models.py | 31 | 
1 files changed, 27 insertions, 4 deletions
| diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index 15ed32120..5811ded6e 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -23,9 +23,11 @@ from django.conf import settings  from django.contrib.gis.db import models  from django.core.urlresolvers import reverse  from django.db.models import Max, Q -from django.db.models.signals import m2m_changed +from django.db.models.signals import m2m_changed, post_save  from django.utils.translation import ugettext_lazy as _, ugettext +from ishtar_common.utils import cached_label_changed +  from ishtar_common.models import GeneralType, ImageModel, BaseHistorizedItem, \      ShortMenuItem, LightHistorizedItem, HistoricalRecords, OwnPerms, Source, \      Person, Basket, get_external_id @@ -275,6 +277,7 @@ class FindBasket(Basket):  class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):      CHECK_DICT = dict(CHECK_CHOICES)      SHOW_URL = 'show-find' +    SLUG = 'find'      TABLE_COLS = ['label', 'material_types', 'datings.period',                    'base_finds.context_record.parcel.town',                    'base_finds.context_record.operation.year', @@ -374,6 +377,7 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):                                    default=datetime.date.today)      estimated_value = models.FloatField(_(u"Estimated value"), blank=True,                                          null=True) +    cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)      history = HistoricalRecords()      BASKET_MODEL = FindBasket      IMAGE_PREFIX = 'finds/' @@ -388,13 +392,18 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):              ("change_own_find", ugettext(u"Can change own Find")),              ("delete_own_find", ugettext(u"Can delete own Find")),          ) +        ordering = ('cached_label',)      @property      def short_class_name(self):          return _(u"FIND")      def __unicode__(self): -        return self.label +        lbl = settings.JOINT.join([ +            getattr(self, attr) +            for attr in ('administrative_index', 'label') +            if getattr(self, attr)]) +        return lbl      @property      def short_label(self): @@ -441,8 +450,8 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):      @property      def administrative_index(self):          bf = self.get_first_base_find() -        if not bf: -            return +        if not bf or not bf.context_record or not bf.context_record.operation: +            return ""          return "{}-{}".format(              bf.context_record.operation.get_reference(),              self.index) @@ -564,6 +573,17 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):                ishtaruser.person) |\              Q(history_creator=user) +    @classmethod +    def get_owns(cls, user, menu_filtr=None): +        replace_query = {} +        if menu_filtr: +            replace_query = {'base_finds__context_record': menu_filtr} +        owns = super(Find, cls).get_owns(user, replace_query=replace_query) +        return sorted(owns, key=lambda x: x.cached_label) + +    def _generate_cached_label(self): +        return unicode(self) +      def save(self, *args, **kwargs):          super(Find, self).save(*args, **kwargs) @@ -624,6 +644,9 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):              #        idx and idx['material_index__max'] + 1 or 1 +post_save.connect(cached_label_changed, sender=Find) + +  def base_find_find_changed(sender, **kwargs):      obj = kwargs.get('instance', None)      if not obj: | 
