Source code for django_website.Managers.MapMinerManager

from geojson import Polygon, FeatureCollection
from typing import List

#from django_website.Primitives import *
from django_website.MapMiners import *

[docs]class MapMinerManager(object): __instance__ = None def __init__(self): self._MapMiners = {} for mapMinerClass in MapMiner._subclasses: self.registerMapMiner(mapMinerClass) def __new__(cls): if MapMinerManager.__instance__ is None: MapMinerManager.__instance__ = object.__new__(cls) return MapMinerManager.__instance__
[docs] def registerMapMiner(self, mapMiner: MapMiner): if not mapMiner.mapMinerId in self._MapMiners: self._MapMiners[mapMiner.mapMinerId] = mapMiner pass
[docs] def getAvailableMapMinersAndQueries(self): return [{'id': mapMinerId, 'name': self._MapMiners[mapMinerId].mapMinerName, 'features': [{'name': featureId, 'id': featureId} for featureId in self._MapMiners[mapMinerId].getAvailableQueries()]} for mapMinerId in self._MapMiners]
[docs] def requestQueryToMapMiner(self, mapMinerId: str, query: str, region: FeatureCollection) -> List[FeatureCollection]: """Delegate the requested query call to the selected MapMiner""" ret = self._MapMiners[mapMinerId].doQuery(query, region) return ret