def calc_and_store_sluice_error_timeseries( self, start_date_calc, end_date_calc, timestep, name=None, parameter=None): """ Calculate, store and return waterbalance timeseries for sluice error. """ if name is None: name = 'sluice_error' if parameter is None: parameter, _ = Parameter.objects.get_or_create( name='sluitfout', unit='m') ts = self.calc_sluice_error_timeseries( start_date_calc, end_date_calc)[0] # Is actually quite fast. if timestep == WaterbalanceTimeserie.TIMESTEP_DAY: ts_dict = dict(ts.events()) elif timestep == WaterbalanceTimeserie.TIMESTEP_MONTH: ts_dict = dict(ts.monthly_events()) else: logger.error("Timestep %d is not supported yet." % timestep) return None result_timeseries = WaterbalanceTimeserie.create( name=name, parameter=parameter, timeseries=ts_dict, configuration=self.configuration, timestep=timestep, hint_datetime_start=start_date_calc, hint_datetime_end=end_date_calc) return result_timeseries
def test_waterbalance_timeserie_create(self): """ Creates local waterbalance timeserie. """ parameter = Parameter(name='test parameter', unit='nvt') parameter.save() c = None # WaterbalanceConf.objects.all()[0] timestep = WaterbalanceTimeserie.TIMESTEP_DAY ts = { datetime.datetime(2011, 1, 1): 1.414, datetime.datetime(2011, 2, 1): 2.25, datetime.datetime(2011, 3, 1): 2.71, } wb_ts = WaterbalanceTimeserie.create( name='jacktest', parameter=parameter, timeseries=ts, configuration=c, timestep=timestep) ts = wb_ts.get_timeseries() events = ts.timeseries_events.all() self.assertEquals(events[0].time, datetime.datetime(2011, 1, 1)) self.assertEquals(events[0].value, 1.414) # Does it work? Float.. self.assertEquals(events[1].time, datetime.datetime(2011, 2, 1)) self.assertEquals(events[1].value, 2.25) # Does it work? Float.. self.assertEquals(events[2].time, datetime.datetime(2011, 3, 1)) self.assertEquals(events[2].value, 2.71) # Does it work? Float..