plugins/granule/datacasting/DatacastingWriter.py (33 lines of code) (raw):
import logging
import os
import os.path
import time
from edge.opensearch.granuledatacastingresponse import GranuleDatacastingResponse
from edge.opensearch.datasetgranulewriter import DatasetGranuleWriter
class DatacastingWriter(DatasetGranuleWriter):
def __init__(self, configFilePath):
super(DatacastingWriter, self).__init__(configFilePath, [['datasetId', 'shortName']])
templatePath = os.path.dirname(configFilePath) + os.sep
templatePath += self._configuration.get('service', 'template')
self.template = self._readTemplate(templatePath)
self.variables['sortBy'] = 'archiveTimeDesc'
self.variables['archiveTime'] = int(round(time.time() * 1000)) - (int(self._configuration.get('solr', 'archivedWithin')) * 3600000)
def _generateOpenSearchResponse(self, solrGranuleResponse, solrDatasetResponse, pretty):
response = GranuleDatacastingResponse(
self._configuration.get('portal', 'datasetUrl'),
self._configuration.get('service', 'linkToGranule'),
int(self._configuration.get('solr', 'archivedWithin'))
)
response.setTemplate(self.template)
return response.generate(solrDatasetResponse, solrGranuleResponse, pretty)
def _onSolrGranuleResponse(self, response):
if response.error:
self._handleException(str(response.error))
else:
self.solrGranuleResponse = response.body
params = {}
if ('datasetId' in self.variables):
params['datasetId'] = self.variables['datasetId']
if ('shortName' in self.variables):
params['shortName'] = self.variables['shortName']
self._getSingleSolrDatasetResponse(params, self._onSolrDatasetResponse)