diff options
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r-- | archaeological_finds/models_treatments.py | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index a826d2a4a..e0fb8683c 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -108,6 +108,7 @@ class Treatment(BaseHistorizedItem, ImageModel, OwnPerms): container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True) target_is_basket = models.BooleanField(_(u"Target a basket"), default=False) + cached_label = models.TextField(_(u"Cached name"), null=True, blank=True) history = HistoricalRecords() class Meta: @@ -128,6 +129,12 @@ class Treatment(BaseHistorizedItem, ImageModel, OwnPerms): lbl += u" %s %s" % (_(u"by"), unicode(self.person)) return lbl + def _generate_cached_label(self): + items = [unicode(getattr(self, k)) + for k in ['year', 'index', 'other_reference', 'label'] if + getattr(self, k)] + return settings.JOINT.join(items) + def treatment_types_lbl(self): """ Treatment types label @@ -185,6 +192,8 @@ class Treatment(BaseHistorizedItem, ImageModel, OwnPerms): return "-".join([str(slugify(getattr(self, attr))) for attr in ('year', 'index', 'label')]) +post_save.connect(cached_label_changed, sender=Treatment) + def pre_delete_treatment(sender, **kwargs): treatment = kwargs.get('instance') @@ -428,12 +437,32 @@ post_save.connect(cached_label_changed, sender=TreatmentFile) class TreatmentSource(Source): + treatment = models.ForeignKey( + Treatment, verbose_name=_(u"Treatment"), related_name="source") + BOOL_FIELDS = ['duplicate'] + TABLE_COLS = ['treatment__cached_label'] + Source.TABLE_COLS + SHOW_URL = 'show-treatmentsource' + class Meta: verbose_name = _(u"Treatment documentation") verbose_name_plural = _(u"Treament documentations") - treatment = models.ForeignKey( - Treatment, verbose_name=_(u"Treatment"), related_name="source") @property def owner(self): return self.treatment + + +class TreatmentFileSource(Source): + treatment_file = models.ForeignKey( + TreatmentFile, verbose_name=_(u"Treatment file"), related_name="source") + BOOL_FIELDS = ['duplicate'] + TABLE_COLS = ['treatment_file__cached_label'] + Source.TABLE_COLS + SHOW_URL = 'show-treatmentfilesource' + + class Meta: + verbose_name = _(u"Treatment file documentation") + verbose_name_plural = _(u"Treament file documentations") + + @property + def owner(self): + return self.treatment_file |