diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-13 17:15:06 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-13 17:15:06 +0100 |
commit | 316fe3103e7ffeb448886b5d92be3ef73f7e30be (patch) | |
tree | aafda29084b953738dba9a962b773e90da29d152 /archaeological_finds/models_finds.py | |
parent | 8d1b5498ed4ac74509676792702ecf01e07783c9 (diff) | |
download | Ishtar-316fe3103e7ffeb448886b5d92be3ef73f7e30be.tar.bz2 Ishtar-316fe3103e7ffeb448886b5d92be3ef73f7e30be.zip |
Sheet find: limit to 15 related finds in treatment tables
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() |