summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
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
commit38feb7f2d40dfd1e05b81314b15c52ccb95fc870 (patch)
tree02f9abfc37c78c31ed53185d10ac28e24f551918 /archaeological_finds/models_finds.py
parent17cbbc926a186d517d9683c33b3265b6b4b578f0 (diff)
downloadIshtar-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.py46
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