예제 #1
0
 def cached_time_series(identifier, start, end):
     """
     Cached time series
     """
     def time_series_key(identifier, start, end):
         return str(hash(('ts::%s::%s:%s' % (
             str(identifier), start, end)).replace(' ', '_')))
     cache_key = time_series_key(identifier, start, end)
     ts = cache.get(cache_key)
     if ts is None:
         # Actually fetching time series
         source_name = identifier['fews_norm_source_slug']
         source = FewsNormSource.objects.get(slug=source_name)
         params = {}
         if 'geo_ident' in identifier:
             params['location'] = identifier['geo_ident']
         if 'par_ident' in identifier:
             params['parameter'] = identifier['par_ident']
         if 'mod_ident' in identifier:
             params['moduleinstance'] = identifier['mod_ident']
         if 'stp_ident' in identifier:
             params['timestep'] = identifier['stp_ident']
         if 'qua_ident' in identifier and identifier['qua_ident']:
             params['qualifierset'] = identifier['qua_ident']
         series = Series.from_raw(
             schema_prefix=source.database_schema_name,
             params=params).using(source.database_name)
         ts = Event.time_series(source, series, start, end)
         cache.set(cache_key, ts)
     return ts
예제 #2
0
    def series(self):
        """Return Series corresponding with this object"""
        params = self.series_params()

        source = self.fews_norm_source
        series = Series.from_raw(
            schema_prefix=source.database_schema_name,
            params=params).using(source.database_name)

        return series