Example #1
0
class TimeseriesInlineAdminFormProcessWithoutFileTestCase(TestCase):
    def setUp(self):
        station = mommy.make(models.Station)
        variable = mommy.make(models.Variable, descr="Temperature")
        self.timeseries = mommy.make(
            models.Timeseries,
            gentity=station,
            variable=variable,
            time_zone__utc_offset=0,
            precision=2,
        )
        self.timeseries.set_data(StringIO("2019-01-01 00:30,25,\n"))
        self.data = {
            "replace_or_append": "REPLACE",
            "gentity": station.id,
            "unit_of_measurement": self.timeseries.unit_of_measurement.id,
            "variable": self.timeseries.variable.id,
            "time_zone": self.timeseries.time_zone.id,
            "precision": 2,
        }
        self.form = TimeseriesInlineAdminForm(data=self.data,
                                              instance=self.timeseries)

    def test_form_is_valid(self):
        self.assertTrue(self.form.is_valid())

    def test_form_saves_and_returns_object(self):
        timeseries = self.form.save()
        self.assertEqual(timeseries.id, self.timeseries.id)
Example #2
0
 def setUp(self):
     station = mommy.make(models.Station)
     self.timeseries = mommy.make(
         models.Timeseries,
         gentity=station,
         time_zone__utc_offset=0,
         variable__descr="irrelevant",
         precision=2,
     )
     self.data = {
         "replace_or_append": "REPLACE",
         "gentity": station.id,
         "unit_of_measurement": self.timeseries.unit_of_measurement.id,
         "variable": self.timeseries.variable.id,
         "time_zone": self.timeseries.time_zone.id,
         "precision": 2,
     }
     self.files = {
         "data":
         SimpleUploadedFile(
             "mytimeseries.csv",
             "Station=Πάπιγκο\n\n2019-04-09 13:36,0,\n".encode("utf-8"),
         )
     }
     try:
         # We check that the file is read without problem even if the locale
         # is set to C (i.e. ascii only)
         saved_locale = getlocale(LC_CTYPE)
         setlocale(LC_CTYPE, "C")
         self.form = TimeseriesInlineAdminForm(data=self.data,
                                               files=self.files,
                                               instance=self.timeseries)
         self.form.save()
     finally:
         setlocale(LC_CTYPE, saved_locale)
Example #3
0
 def setUp(self):
     station = mommy.make(models.Station)
     self.timeseries = mommy.make(
         models.Timeseries,
         gentity=station,
         time_zone__utc_offset=0,
         variable__descr="irrelevant",
         precision=2,
     )
     self.timeseries.set_data(StringIO("2019-01-01 00:30,25,\n"))
     self.data = {
         "replace_or_append": "REPLACE",
         "gentity": station.id,
         "unit_of_measurement": self.timeseries.unit_of_measurement.id,
         "variable": self.timeseries.variable.id,
         "time_zone": self.timeseries.time_zone.id,
         "precision": 2,
     }
     self.files = {
         "data":
         SimpleUploadedFile("mytimeseries.csv",
                            b"2005-12-01 18:35,7,\n2019-04-09 13:36,0,\n")
     }
     self.form = TimeseriesInlineAdminForm(data=self.data,
                                           files=self.files,
                                           instance=self.timeseries)
     self.form.save()
Example #4
0
class TimeseriesInlineAdminFormRefusesToAppendIfNotInOrderTestCase(TestCase):
    def setUp(self):
        station = mommy.make(models.Station)
        self.timeseries = mommy.make(models.Timeseries,
                                     gentity=station,
                                     time_zone__utc_offset=0,
                                     precision=2)
        self.timeseries.set_data(
            StringIO("2005-11-01 18:00,3,\n2019-01-01 00:30,25,\n"))
        self.data = {
            "replace_or_append": "APPEND",
            "gentity": station.id,
            "unit_of_measurement": self.timeseries.unit_of_measurement.id,
            "variable": self.timeseries.variable.id,
            "time_zone": self.timeseries.time_zone.id,
            "precision": 2,
        }
        self.files = {
            "data":
            SimpleUploadedFile("mytimeseries.csv",
                               b"2005-12-01 18:35,7,\n2019-04-09 13:36,0,\n")
        }
        self.form = TimeseriesInlineAdminForm(data=self.data,
                                              files=self.files,
                                              instance=self.timeseries)

    def test_form_is_not_valid(self):
        self.assertFalse(self.form.is_valid())

    def test_form_errors(self):
        self.assertIn(
            "the first record of the time series to append is earlier than the last "
            "record of the existing time series",
            self.form.errors["__all__"][0],
        )
Example #5
0
class TimeseriesUploadFileWithUnicodeHeadersTestCase(TestCase):
    def setUp(self):
        station = mommy.make(models.Station)
        self.timeseries = mommy.make(
            models.Timeseries,
            gentity=station,
            time_zone__utc_offset=0,
            variable__descr="irrelevant",
            precision=2,
        )
        self.data = {
            "replace_or_append": "REPLACE",
            "gentity": station.id,
            "unit_of_measurement": self.timeseries.unit_of_measurement.id,
            "variable": self.timeseries.variable.id,
            "time_zone": self.timeseries.time_zone.id,
            "precision": 2,
        }
        self.files = {
            "data":
            SimpleUploadedFile(
                "mytimeseries.csv",
                "Station=Πάπιγκο\n\n2019-04-09 13:36,0,\n".encode("utf-8"),
            )
        }
        try:
            # We check that the file is read without problem even if the locale
            # is set to C (i.e. ascii only)
            saved_locale = getlocale(LC_CTYPE)
            setlocale(LC_CTYPE, "C")
            self.form = TimeseriesInlineAdminForm(data=self.data,
                                                  files=self.files,
                                                  instance=self.timeseries)
            self.form.save()
        finally:
            setlocale(LC_CTYPE, saved_locale)

    def test_form_is_valid(self):
        self.assertTrue(self.form.is_valid())

    def test_data_length(self):
        self.assertEqual(len(self.timeseries.get_data().data), 1)

    def test_first_record(self):
        self.assertEqual(self.timeseries.get_data().data.index[0],
                         dt.datetime(2019, 4, 9, 13, 36))
Example #6
0
class TimeseriesInlineAdminFormAcceptsReplacingTestCase(TestCase):
    def setUp(self):
        station = mommy.make(models.Station)
        self.timeseries = mommy.make(
            models.Timeseries,
            gentity=station,
            time_zone__utc_offset=0,
            variable__descr="irrelevant",
            precision=2,
        )
        self.timeseries.set_data(StringIO("2019-01-01 00:30,25,\n"))
        self.data = {
            "replace_or_append": "REPLACE",
            "gentity": station.id,
            "unit_of_measurement": self.timeseries.unit_of_measurement.id,
            "variable": self.timeseries.variable.id,
            "time_zone": self.timeseries.time_zone.id,
            "precision": 2,
        }
        self.files = {
            "data":
            SimpleUploadedFile("mytimeseries.csv",
                               b"2005-12-01 18:35,7,\n2019-04-09 13:36,0,\n")
        }
        self.form = TimeseriesInlineAdminForm(data=self.data,
                                              files=self.files,
                                              instance=self.timeseries)
        self.form.save()

    def test_form_is_valid(self):
        self.assertTrue(self.form.is_valid())

    def test_data_length(self):
        self.assertEqual(len(self.timeseries.get_data().data), 2)

    def test_first_record(self):
        self.assertEqual(self.timeseries.get_data().data.index[0],
                         dt.datetime(2005, 12, 1, 18, 35))

    def test_second_record(self):
        self.assertEqual(self.timeseries.get_data().data.index[1],
                         dt.datetime(2019, 4, 9, 13, 36))
Example #7
0
 def setUp(self):
     station = mommy.make(models.Station)
     variable = mommy.make(models.Variable, descr="Temperature")
     self.timeseries = mommy.make(
         models.Timeseries,
         gentity=station,
         variable=variable,
         time_zone__utc_offset=0,
         precision=2,
     )
     self.timeseries.set_data(StringIO("2019-01-01 00:30,25,\n"))
     self.data = {
         "replace_or_append": "REPLACE",
         "gentity": station.id,
         "unit_of_measurement": self.timeseries.unit_of_measurement.id,
         "variable": self.timeseries.variable.id,
         "time_zone": self.timeseries.time_zone.id,
         "precision": 2,
     }
     self.form = TimeseriesInlineAdminForm(data=self.data,
                                           instance=self.timeseries)
Example #8
0
 def _create_timeseries_inline_admin_form(self, replace_or_append, file_contents=""):
     self.data = {
         "replace_or_append": replace_or_append,
         "timeseries_group": self.timeseries_group.id,
         "type": models.Timeseries.INITIAL,
     }
     if file_contents:
         self.files = {
             "data": TemporaryUploadedFile(
                 "mytimeseries.csv",
                 "text/plain",
                 size=len(file_contents),
                 charset="utf8",
             )
         }
         self.files["data"].write(file_contents)
         self.files["data"].seek(0)
     else:
         self.files = None
     self.form = TimeseriesInlineAdminForm(
         data=self.data, files=self.files, instance=self.timeseries
     )
Example #9
0
 def _test_with(self, uploaded_file):
     files = {"data": uploaded_file}
     form = TimeseriesInlineAdminForm(data=self.data,
                                      files=files,
                                      instance=self.timeseries)
     self.assertFalse(form.is_valid())