Source code for django_website.Managers.ImageProviderManager

from geojson import Polygon, FeatureCollection
from typing import List

from django_website.ImageProviders.ImageProvider import ImageProvider
from geojson import FeatureCollection
from typing import List
from django_website.Primitives.GeoImage import GeoImage
from django_website.LogGenerator import write_to_log

[docs]class ImageProviderManager(object): """Mediator class instantiated as a singleton responsible for managing all the image platforms adaptors implemented""" __instance = None def __init__(self): write_to_log('ImageProviderManager.__init__') self._ImageProviders = {} for imageProviderClass in ImageProvider._subclasses: self.registerImageProvider(imageProviderClass) def __new__(cls): if ImageProviderManager.__instance is None: ImageProviderManager.__instance = object.__new__(cls) return ImageProviderManager.__instance
[docs] def registerImageProvider(self, provider: ImageProvider): if not provider.imageProviderId in self._ImageProviders: self._ImageProviders[provider.imageProviderId] = provider pass
@property def ImageProviders(self): return self._ImageProviders
[docs] def getAvailableImageProviders(self): return [{'name': self._ImageProviders[imageProviderId].imageProviderName, 'id': imageProviderId} for imageProviderId in self._ImageProviders]
[docs] def getImageForFeatureCollection(self, imageProviderId, featureCollection: FeatureCollection)->List[GeoImage]: return self._ImageProviders[imageProviderId].getImageForFeatureCollection(featureCollection)