From 35a881d9506d93b98b644a6abb8ceadb810b6f59 Mon Sep 17 00:00:00 2001 From: Toby Lorne Date: Thu, 30 Jul 2020 17:24:20 +0100 Subject: [PATCH] broadcast-areas: only load geojson when needed Signed-off-by: Toby Lorne --- notifications_utils/broadcast_areas/__init__.py | 13 +++++++++++-- notifications_utils/broadcast_areas/repo.py | 5 ++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/notifications_utils/broadcast_areas/__init__.py b/notifications_utils/broadcast_areas/__init__.py index 290e6a3f1..93c2b9a80 100644 --- a/notifications_utils/broadcast_areas/__init__.py +++ b/notifications_utils/broadcast_areas/__init__.py @@ -1,3 +1,4 @@ +import geojson import itertools from notifications_utils.serialised_model import SerialisedModelCollection @@ -39,8 +40,8 @@ class BroadcastArea(IdentifiableMixin): self.id = id self.name = name - self.feature = feature - self.simple_feature = simple_feature + self._feature = feature + self._simple_feature = simple_feature for coordinates in self.polygons: if coordinates[0] != coordinates[-1]: @@ -91,6 +92,14 @@ class BroadcastArea(IdentifiableMixin): def simple_unenclosed_polygons(self): return self._unenclosed_polygons(self.simple_feature) + @property + def feature(self): + return geojson.loads(self._feature) + + @property + def simple_feature(self): + return geojson.loads(self._simple_feature) + class BroadcastAreaLibrary(SerialisedModelCollection, IdentifiableMixin, IdFromNameMixin, GetItemByIdMixin): diff --git a/notifications_utils/broadcast_areas/repo.py b/notifications_utils/broadcast_areas/repo.py index fc95bec06..9ac935ca0 100644 --- a/notifications_utils/broadcast_areas/repo.py +++ b/notifications_utils/broadcast_areas/repo.py @@ -1,4 +1,3 @@ -import geojson import os from pathlib import Path import sqlite3 @@ -129,7 +128,7 @@ class BroadcastAreasRepository(object): results = cursor.fetchall() areas = [ - (row[0], row[1], geojson.loads(row[2]), geojson.loads(row[3])) + (row[0], row[1], row[2], row[3]) for row in results ] @@ -145,7 +144,7 @@ class BroadcastAreasRepository(object): results = self.query(q, library_id) areas = [ - (row[0], row[1], geojson.loads(row[2]), geojson.loads(row[3])) + (row[0], row[1], row[2], row[3]) for row in results ]