diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 93bed4ab3..45c750f66 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -548,17 +548,20 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): bf.context_record.operation.get_reference(), self.index) - def _get_treatments(self, model, rel='upstream'): + def _get_treatments(self, model, rel='upstream', limit=None): treatments, findtreats = [], [] - for findtreat in model.objects.filter( + q = model.objects.filter( find_id=self.pk).order_by( 'treatment_nb', 'treatment__start_date', - 'treatment__end_date').distinct().all(): + 'treatment__end_date') + for findtreat in q.distinct().all(): if findtreat.pk in findtreats: continue findtreats.append(findtreat.pk) q = getattr(findtreat.treatment, rel).distinct().order_by( 'label') + if limit: + q = q[:limit] treatments.append((q.all(), findtreat.treatment)) return treatments @@ -568,15 +571,23 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): return "" return "{} {}".format(self.weight, self.weight_unit or "") - def upstream_treatments(self): + def upstream_treatments(self, limit=None): from archaeological_finds.models_treatments import \ FindUpstreamTreatments - return self._get_treatments(FindUpstreamTreatments, 'upstream') + return self._get_treatments(FindUpstreamTreatments, 'upstream', + limit=limit) - def downstream_treatments(self): + def limited_upstream_treatments(self): + return self.upstream_treatments(15) + + def downstream_treatments(self, limit=None): from archaeological_finds.models_treatments import \ FindDownstreamTreatments - return self._get_treatments(FindDownstreamTreatments, 'downstream') + return self._get_treatments(FindDownstreamTreatments, 'downstream', + limit=limit) + + def limited_downstream_treatments(self): + return self.downstream_treatments(15) def all_treatments(self): return self.upstream_treatments() + self.downstream_treatments() |