1
0
Fork 0

Add cache on transmiters rating

environments/stage/deployments/191
Alfredos-Panagiotis Damkalis 2018-08-31 20:57:13 +03:00
parent 64d98cae9a
commit e4f92aad2e
2 changed files with 56 additions and 21 deletions

View File

@ -381,39 +381,72 @@ class Transmitter(models.Model):
@property
def good_count(self):
data = Observation.objects.filter(transmitter=self)
return data.filter(vetted_status='good').count()
data = cache.get('tr-{0}-suc-count'.format(self.uuid))
if data is None:
obs = Observation.objects.filter(transmitter=self)
data = obs.filter(vetted_status='good').count()
cache.set('tr-{0}-suc-count'.format(self.uuid), data)
return data
return data
@property
def bad_count(self):
data = Observation.objects.filter(transmitter=self)
return data.filter(vetted_status='bad').count()
data = cache.get('tr-{0}-bad-count'.format(self.uuid))
if data is None:
obs = Observation.objects.filter(transmitter=self)
data = obs.filter(vetted_status='bad').count()
cache.set('tr-{0}-bad-count'.format(self.uuid), data)
return data
return data
@property
def unknown_count(self):
data = Observation.objects.filter(transmitter=self)
return data.filter(vetted_status='unknown').count()
data = cache.get('tr-{0}-unk-count'.format(self.uuid))
if data is None:
obs = Observation.objects.filter(transmitter=self)
data = obs.filter(vetted_status='unknown').count()
cache.set('tr-{0}-unk-count'.format(self.uuid), data)
return data
return data
@property
def success_rate(self):
try:
return int(100 * (float(self.good_count) / float(self.data_count)))
except (ZeroDivisionError, TypeError):
return 0
rate = cache.get('tr-{0}-suc-rate'.format(self.uuid))
if rate is None:
try:
rate = int(100 * (float(self.good_count) / float(self.data_count)))
cache.set('tr-{0}-suc-rate'.format(self.uuid), rate)
return rate
except (ZeroDivisionError, TypeError):
cache.set('tr-{0}-suc-rate'.format(self.uuid), 0)
return 0
return rate
@property
def bad_rate(self):
try:
return int(100 * (float(self.bad_count) / float(self.data_count)))
except (ZeroDivisionError, TypeError):
return 0
rate = cache.get('tr-{0}-bad-rate'.format(self.uuid))
if rate is None:
try:
rate = int(100 * (float(self.bad_count) / float(self.data_count)))
cache.set('tr-{0}-bad-rate'.format(self.uuid), rate)
return rate
except (ZeroDivisionError, TypeError):
cache.set('tr-{0}-bad-rate'.format(self.uuid), 0)
return 0
return rate
@property
def unknown_rate(self):
try:
return int(100 * (float(self.unknown_count) / float(self.data_count)))
except (ZeroDivisionError, TypeError):
return 0
rate = cache.get('tr-{0}-unk-rate'.format(self.uuid))
if rate is None:
try:
rate = int(100 * (float(self.unknown_count) / float(self.data_count)))
cache.set('tr-{0}-unk-rate'.format(self.uuid), rate)
return rate
except (ZeroDivisionError, TypeError):
cache.set('tr-{0}-unk-rate'.format(self.uuid), 0)
return 0
return rate
def __unicode__(self):
return self.description

View File

@ -67,9 +67,10 @@
disabled data-hide-disabled="true" name="transmitter" autocomplete="off">
<option id="no-transmitter" value="" disabled selected>No transmitter available</option>
{% for transmitter in transmitters %}
{% with success_rate=transmitter.success_rate bad_rate=transmitter.bad_rate unknown_rate=transmitter.unknown_rate %}
<option data-satellite="{{ transmitter.satellite.norad_cat_id }}"
value="{{ transmitter.uuid }}"
data-success-rate="{{ transmitter.success_rate }}"
data-success-rate="{{ success_rate }}"
data-content='<div class="transmitter-option">
<div class="transmitter-description">
{{ transmitter.description }} - {{ transmitter.downlink_low|frq }} - {{ transmitter.mode|default:"" }}
@ -77,8 +78,8 @@
<div class="progress">
<div class="progress-bar progress-bar-success transmitter-good"
data-toggle="tooltip" data-placement="bottom"
title=" {{ transmitter.success_rate }}% ({{ transmitter.good_count }}) Good"
style="width: {{ transmitter.success_rate }}%"></div>
title=" {{ success_rate }}% ({{ transmitter.good_count }}) Good"
style="width: {{ success_rate }}%"></div>
<div class="progress-bar progress-bar-warning transmitter-unknown"
data-toggle="tooltip" data-placement="bottom"
title=" {{ transmitter.unknown_rate }}% ({{ transmitter.unknown_count }}) Unknown"
@ -91,6 +92,7 @@
</div>'>
{{ transmitter.description }} - {{ transmitter.downlink_low|frq }} - {{ transmitter.mode|default:"" }}
</option>
{% endwith %}
{% endfor %}
</select>
{% for satellite in satellites %}