Пример #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 time_series(
        self, series=None, dt_start=None, dt_end=None, with_comments=False):
        """
        Return dictionary of timeseries.

        Low level fewsnorm stuff.

        Keys are (location, parameter), value is timeseries object.

        1) which series
        2) retrieve events (with comments) for each series

        Note: with_comments does nothing anymore, comments are always
        returned. The option is still there for compatibility.
        """
        if not series:
            series = self.series()
        source = self.fews_norm_source
        events = Event.time_series(source, series, dt_start, dt_end)
        return events