From 3b98e66dc8047acfc6cfc547153a970c1d7c4890 Mon Sep 17 00:00:00 2001 From: Alfredos-Panagiotis Damkalis Date: Mon, 13 Jun 2022 15:29:27 +0300 Subject: [PATCH] Remove export data functionality for frequency violators Signed-off-by: Alfredos-Panagiotis Damkalis --- db/base/models.py | 32 +++++++++++++++++++++++++++++--- db/base/views.py | 5 +++++ db/templates/base/satellite.html | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/db/base/models.py b/db/base/models.py index 8ed8ab1..767e4ae 100644 --- a/db/base/models.py +++ b/db/base/models.py @@ -376,11 +376,37 @@ class Satellite(models.Model): :returns: bool """ - bad_transmitter_count = 0 + violation = cache.get("violator_" + self.satellite_identifier.sat_id) + + if violation is not None: + return violation['status'] + + result = False + for transmitter in Transmitter.objects.filter(satellite=self.id).exclude(status='invalid'): if transmitter.bad_transmitter: - bad_transmitter_count += 1 - return bad_transmitter_count > 0 + result = True + break + cache.set( + "violator_" + str(self.satellite_entry.norad_cat_id), { + 'status': result, + 'id': str(self.id) + }, None + ) + cache.set( + "violator_" + self.satellite_identifier.sat_id, { + 'status': result, + 'id': str(self.id) + }, None + ) + for merged_satellite in self.associated_with.all(): + cache.set( + "violator_" + merged_satellite.satellite_identifier.sat_id, { + 'status': result, + 'id': str(self.id) + }, None + ) + return result class TransmitterEntry(models.Model): diff --git a/db/base/views.py b/db/base/views.py index 4669c08..824a22f 100644 --- a/db/base/views.py +++ b/db/base/views.py @@ -265,6 +265,11 @@ def transmitter_suggestion_handler(request): transmitter = get_object_or_404(TransmitterSuggestion, pk=request.POST['pk']) if request.user.has_perm('base.approve_transmittersuggestion'): if 'approve' in request.POST: + # Force re-checking of bad transmitters be removing permanent cache + cache.delete("violator_" + str(transmitter.satellite.satellite_entry.norad_cat_id)) + cache.delete("violator_" + transmitter.satellite.satellite_identifier.sat_id) + for merged_satellite in transmitter.satellite.associated_with.all(): + cache.delete("violator_" + merged_satellite.satellite_identifier.sat_id) transmitter.approved = True messages.success(request, ('Transmitter approved.')) elif 'reject' in request.POST: diff --git a/db/templates/base/satellite.html b/db/templates/base/satellite.html index 1100daf..c8e7c88 100644 --- a/db/templates/base/satellite.html +++ b/db/templates/base/satellite.html @@ -528,7 +528,7 @@ {% endfor %} - {% if satellite.telemetry_data_count > 0 and request.user.is_authenticated %} + {% if satellite.telemetry_data_count > 0 and request.user.is_authenticated and not satellite.has_bad_transmitter %}