diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-20 18:25:32 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-20 18:25:32 +0200 |
commit | 847532c9a353a50dc97917275bfa55f7df2308d4 (patch) | |
tree | e97fc00f6b890370c1352ba7c2285d5822812581 | |
parent | 9a9ee1dff9ccf737601072593f51ee5f6765f61a (diff) | |
download | Ishtar-847532c9a353a50dc97917275bfa55f7df2308d4.tar.bz2 Ishtar-847532c9a353a50dc97917275bfa55f7df2308d4.zip |
Finds: "material_types_recommendations" string for templates - manage hierarchy
-rw-r--r-- | archaeological_finds/models_finds.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index f91269456..c292cd368 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -2135,11 +2135,20 @@ class Find( Return comma separated string of recommendations from material """ recommendations = set() - for recommendation in self.material_types.exclude( - recommendation__isnull=True).exclude( - recommendation="").values_list("recommendation", flat=True - ): - recommendations.add(recommendation) + for level in range(5): + excludes = [ + ("parent__" * level + "recommendation__isnull", True), + ("parent__" * level + "recommendation", ""), + ] + q = self.material_types + if level: + q = q.exclude(**{("parent__" * level)[:-2] + "_id": None}) + for k, v in excludes: + q = q.exclude(**{k: v}) + + for recommendation in q.values_list( + "parent__" * level + "recommendation", flat=True): + recommendations.add(recommendation) return ", ".join(sorted(recommendations)) def get_values(self, prefix="", no_values=False, filtr=None, **kwargs): |