def test_changes_display_dict_time(self): timestamp = datetime.datetime(2017, 1, 10, 15, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() self.assertTrue(dtm.history.latest().changes_display_dict["time"][1] == \ dateformat.format(time, settings.TIME_FORMAT), msg=("The time should be formatted according to Django's settings for" " TIME_FORMAT unless USE_L10N is True.")) time = datetime.time(6, 0) dtm.time = time dtm.save() self.assertTrue(dtm.history.latest().changes_display_dict["time"][1] == \ dateformat.format(time, settings.TIME_FORMAT), msg=("The time should be formatted according to Django's settings for" " TIME_FORMAT unless USE_L10N is True.")) # Change USE_L10N = True with self.settings(USE_L10N=True, LANGUAGE_CODE='en-GB'): self.assertTrue(dtm.history.latest().changes_display_dict["time"][1] == \ formats.localize(time), msg=("The time should be formatted according to Django's settings for" " USE_L10N is True with a different LANGUAGE_CODE."))
def test_model_with_different_timezone(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel( label="DateTimeField model", timestamp=timestamp, date=date, time=time, naive_dt=self.now, ) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to same datetime in another timezone timestamp = datetime.datetime(2017, 1, 10, 13, 0, tzinfo=self.utc_plus_one) dtm.timestamp = timestamp dtm.save() # Nothing should have changed self.assertTrue(dtm.history.count() == 1, msg="There is one log entry")
def test_model_with_different_time_and_timezone(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to another datetime and another timezone timestamp = datetime.datetime(2017, 1, 10, 14, 0, tzinfo=self.utc_plus_one) dtm.timestamp = timestamp dtm.save() # The time should have changed. self.assertTrue(dtm.history.count() == 2, msg="There are two log entries")
def test_update_naive_dt(self): timestamp = datetime.datetime(2017, 1, 10, 15, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() # Change with naive field doesnt raise error dtm.naive_dt = timezone.make_naive(timezone.now(), timezone=timezone.utc) dtm.save()
def test_changes_display_dict_datetime(self): timestamp = datetime.datetime(2017, 1, 10, 15, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() localized_timestamp = timestamp.astimezone(gettz(settings.TIME_ZONE)) self.assertTrue(dtm.history.latest().changes_display_dict["timestamp"][1] == \ dateformat.format(localized_timestamp, settings.DATETIME_FORMAT), msg=("The datetime should be formatted according to Django's settings for" " DATETIME_FORMAT")) timestamp = timezone.now() dtm.timestamp = timestamp dtm.save() localized_timestamp = timestamp.astimezone(gettz(settings.TIME_ZONE)) self.assertTrue(dtm.history.latest().changes_display_dict["timestamp"][1] == \ dateformat.format(localized_timestamp, settings.DATETIME_FORMAT), msg=("The datetime should be formatted according to Django's settings for" " DATETIME_FORMAT")) # Change USE_L10N = True with self.settings(USE_L10N=True, LANGUAGE_CODE='en-GB'): self.assertTrue(dtm.history.latest().changes_display_dict["timestamp"][1] == \ formats.localize(localized_timestamp), msg=("The datetime should be formatted according to Django's settings for" " USE_L10N is True with a different LANGUAGE_CODE."))
def test_model_with_same_time(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to same datetime and timezone timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) dtm.timestamp = timestamp dtm.date = datetime.date(2017, 1, 10) dtm.time = datetime.time(12, 0) dtm.save() # Nothing should have changed self.assertTrue(dtm.history.count() == 1, msg="There is one log entry")
def test_model_with_same_time(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to same datetime and timezone timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) dtm.timestamp = timestamp dtm.date = datetime.date(2017, 1, 10) dtm.time = datetime.time(12, 0) dtm.save() # Nothing should have changed self.assertTrue(dtm.history.count() == 1, msg="There is one log entry")
def test_model_with_different_time(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to another datetime in the same timezone timestamp = datetime.datetime(2017, 1, 10, 13, 0, tzinfo=timezone.utc) dtm.timestamp = timestamp dtm.save() # The time should have changed. self.assertTrue(dtm.history.count() == 2, msg="There are two log entries")
def test_changes_display_dict_datetime(self): timestamp = datetime.datetime(2017, 1, 10, 15, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel( label="DateTimeField model", timestamp=timestamp, date=date, time=time, naive_dt=self.now, ) dtm.save() localized_timestamp = timestamp.astimezone(gettz(settings.TIME_ZONE)) self.assertTrue( dtm.history.latest().changes_display_dict["timestamp"][1] == dateformat.format(localized_timestamp, settings.DATETIME_FORMAT), msg= ("The datetime should be formatted according to Django's settings for" " DATETIME_FORMAT"), ) timestamp = timezone.now() dtm.timestamp = timestamp dtm.save() localized_timestamp = timestamp.astimezone(gettz(settings.TIME_ZONE)) self.assertTrue( dtm.history.latest().changes_display_dict["timestamp"][1] == dateformat.format(localized_timestamp, settings.DATETIME_FORMAT), msg= ("The datetime should be formatted according to Django's settings for" " DATETIME_FORMAT"), ) # Change USE_L10N = True with self.settings(USE_L10N=True, LANGUAGE_CODE="en-GB"): self.assertTrue( dtm.history.latest().changes_display_dict["timestamp"][1] == formats.localize(localized_timestamp), msg= ("The datetime should be formatted according to Django's settings for" " USE_L10N is True with a different LANGUAGE_CODE."), )
def test_model_with_different_time(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel(label='DateTimeField model', timestamp=timestamp, date=date, time=time, naive_dt=self.now) dtm.save() self.assertTrue(self.mock_save.call_count == 1, msg="There is one log entry") # Change timestamp to another datetime in the same timezone time = datetime.time(6, 0) dtm.time = time dtm.save() # The time should have changed. self.assertTrue(self.mock_save.call_count == 2, msg="There are two log entries")
def test_model_with_different_date(self): timestamp = datetime.datetime(2017, 1, 10, 12, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel( label="DateTimeField model", timestamp=timestamp, date=date, time=time, naive_dt=self.now, ) dtm.save() self.assertTrue(dtm.history.count() == 1, msg="There is one log entry") # Change timestamp to another datetime in the same timezone date = datetime.datetime(2017, 1, 11) dtm.date = date dtm.save() # The time should have changed. self.assertTrue(dtm.history.count() == 2, msg="There are two log entries")
def test_changes_display_dict_date(self): timestamp = datetime.datetime(2017, 1, 10, 15, 0, tzinfo=timezone.utc) date = datetime.date(2017, 1, 10) time = datetime.time(12, 0) dtm = DateTimeFieldModel( label="DateTimeField model", timestamp=timestamp, date=date, time=time, naive_dt=self.now, ) dtm.save() self.assertEqual( dtm.history.latest().changes_display_dict["date"][1], dateformat.format(date, settings.DATE_FORMAT), msg= ("The date should be formatted according to Django's settings for" " DATE_FORMAT unless USE_L10N is True."), ) date = datetime.date(2017, 1, 11) dtm.date = date dtm.save() self.assertEqual( dtm.history.latest().changes_display_dict["date"][1], dateformat.format(date, settings.DATE_FORMAT), msg= ("The date should be formatted according to Django's settings for" " DATE_FORMAT unless USE_L10N is True."), ) # Change USE_L10N = True with self.settings(USE_L10N=True, LANGUAGE_CODE="en-GB"): self.assertEqual( dtm.history.latest().changes_display_dict["date"][1], formats.localize(date), msg= ("The date should be formatted according to Django's settings for" " USE_L10N is True with a different LANGUAGE_CODE."), )