Note about cached_as extra keys

This commit is contained in:
Saria Hajjar 2020-02-19 12:56:06 +00:00
parent e4a8570d6b
commit 45c09c7e6e

View File

@ -399,8 +399,10 @@ class PowerPort(CableTermination, ComponentModel):
else: else:
outlets = PowerOutlet.objects.filter(power_port=self) outlets = PowerOutlet.objects.filter(power_port=self)
# The outlets are used as extra to invalidate the cache when an outlet's leg is changed
@cached_as(self, extra=outlets) @cached_as(self, extra=outlets)
def _stats(): def _stats():
# Power ports drawing power from the local outlets
return PowerPort.objects.filter( return PowerPort.objects.filter(
pk__in=outlets.values_list('downstream_powerports', flat=True), pk__in=outlets.values_list('downstream_powerports', flat=True),
).aggregate( ).aggregate(
@ -408,7 +410,6 @@ class PowerPort(CableTermination, ComponentModel):
Sum('maximum_draw'), Sum('maximum_draw'),
) )
# Power ports drawing power from the local outlets
stats = _stats() stats = _stats()
return outlets.count(), stats.get('allocated_draw__sum') or 0, stats.get('maximum_draw__sum') or 0 return outlets.count(), stats.get('allocated_draw__sum') or 0, stats.get('maximum_draw__sum') or 0