コード例 #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)
コード例 #2
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))
コード例 #3
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))