diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-11-06 12:05:11 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-11-06 12:06:43 +0100 |
commit | 38feb7f2d40dfd1e05b81314b15c52ccb95fc870 (patch) | |
tree | 02f9abfc37c78c31ed53185d10ac28e24f551918 /archaeological_finds/models_finds.py | |
parent | 17cbbc926a186d517d9683c33b3265b6b4b578f0 (diff) | |
download | Ishtar-38feb7f2d40dfd1e05b81314b15c52ccb95fc870.tar.bz2 Ishtar-38feb7f2d40dfd1e05b81314b15c52ccb95fc870.zip |
Label generation: optimize template evaluation
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 0a32bba69..0260200e9 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -357,15 +357,18 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem, OwnPerms, }) return dct - def get_values(self, prefix='', no_values=False, no_find=False): - values = super(BaseFind, self).get_values(prefix=prefix, - no_values=no_values) + def get_values(self, prefix='', no_values=False, filtr=None, **kwargs): + no_find = kwargs.get("no_find", False) + values = super(BaseFind, self).get_values( + prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) if no_find: return values - values[prefix + "finds"] = [ - find.get_values(no_values=True, no_base_finds=True) - for find in self.find.order_by('pk').all() - ] + if not filtr or prefix + "finds" in filtr: + kwargs["no_base_finds"] = True + values[prefix + "finds"] = [ + find.get_values(no_values=True, filtr=None, **kwargs) + for find in self.find.order_by('pk').all() + ] return values def get_last_find(self): @@ -665,13 +668,14 @@ class FindBasket(Basket, MainItem, ValueGetter): ("view_own_find", u"Can view own Find"), ) - def get_values(self, prefix='', no_values=False): - values = super(FindBasket, self).get_values(prefix=prefix, - no_values=no_values) - values[prefix + "items"] = [ - item.get_values(no_values=True) - for item in self.items.distinct().all() - ] + def get_values(self, prefix='', no_values=False, filtr=None, **kwargs): + values = super(FindBasket, self).get_values( + prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) + if not filtr or prefix + "items" in filtr: + values[prefix + "items"] = [ + item.get_values(no_values=True, filtr=None, **kwargs) + for item in self.items.distinct().all() + ] return values def get_extra_actions(self, request): @@ -1761,13 +1765,17 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem, return return self.base_finds.order_by('-pk').all()[0] - def get_values(self, prefix='', no_values=False, no_base_finds=False): - values = super(Find, self).get_values(prefix=prefix, - no_values=no_values) - if no_base_finds: + def get_values(self, prefix='', no_values=False, filtr=None, **kwargs): + no_base_finds = False + if "no_base_finds" in kwargs: + no_base_finds = kwargs["no_base_finds"] + values = super(Find, self).get_values( + prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) + if no_base_finds or (filtr and prefix + "base_finds" not in filtr): return values + kwargs["no_find"] = True values[prefix + "base_finds"] = [ - base_find.get_values(no_values=True, no_find=True) + base_find.get_values(no_values=True, filtr=None, **kwargs) for base_find in self.base_finds.distinct().order_by('-pk').all() ] return values |