models: Set a timezone on the MutedTopic.date_muted default.

Fixes warnings like this:

/srv/zulip-py3-venv/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField MutedTopic.date_muted received a naive datetime (2020-01-01 00:00:00) while time zone support is active.
 warnings.warn("DateTimeField %s received a naive datetime (%s)"

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2020-06-03 18:32:59 -07:00 committed by Tim Abbott
parent 1f565a9f41
commit 8d20d1e632
4 changed files with 9 additions and 9 deletions

View File

@ -14,6 +14,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='mutedtopic',
name='date_muted',
field=models.DateTimeField(default=datetime.datetime(2020, 1, 1, 0, 0)),
field=models.DateTimeField(default=datetime.datetime(2020, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)),
),
]

View File

@ -1491,7 +1491,7 @@ class MutedTopic(models.Model):
# The default value for date_muted is a few weeks before tracking
# of when topics were muted was first introduced. It's designed
# to be obviously incorrect so that users can tell it's backfilled data.
date_muted = models.DateTimeField(default=datetime.datetime(2020, 1, 1, 0, 0, 0, 0))
date_muted = models.DateTimeField(default=datetime.datetime(2020, 1, 1, 0, 0, tzinfo=datetime.timezone.utc))
class Meta:
unique_together = ('user_profile', 'stream', 'topic_name')

View File

@ -257,8 +257,8 @@ class TestDigestEmailMessages(ZulipTestCase):
@mock.patch('zerver.lib.digest.timezone_now')
@override_settings(SEND_DIGEST_EMAILS=True)
def test_new_stream_link(self, mock_django_timezone: mock.MagicMock) -> None:
cutoff = datetime.datetime(year=2017, month=11, day=1)
mock_django_timezone.return_value = datetime.datetime(year=2017, month=11, day=5)
cutoff = datetime.datetime(year=2017, month=11, day=1, tzinfo=datetime.timezone.utc)
mock_django_timezone.return_value = datetime.datetime(year=2017, month=11, day=5, tzinfo=datetime.timezone.utc)
cordelia = self.example_user('cordelia')
stream_id = create_stream_if_needed(cordelia.realm, 'New stream')[0].id
new_stream = gather_new_streams(cordelia, cutoff)[1]

View File

@ -1,5 +1,5 @@
from django.utils.timezone import now as timezone_now
from datetime import timedelta, datetime
from datetime import timedelta, datetime, timezone
from typing import Any, Dict
from unittest import mock
@ -70,10 +70,10 @@ class MutedTopicsTests(ZulipTestCase):
{'stream_id': stream.id, 'topic': 'Verona3', 'op': 'add'},
]
mock_date_muted = datetime.timestamp(datetime(2020, 1, 1))
mock_date_muted = datetime(2020, 1, 1, tzinfo=timezone.utc).timestamp()
for data in payloads:
with mock.patch('zerver.views.muting.timezone_now',
return_value=datetime(2020, 1, 1)):
return_value=datetime(2020, 1, 1, tzinfo=timezone.utc)):
result = self.api_patch(user, url, data)
self.assert_json_success(result)
@ -100,7 +100,7 @@ class MutedTopicsTests(ZulipTestCase):
{'stream': stream.name, 'topic': 'vERONA3', 'op': 'remove'},
{'stream_id': stream.id, 'topic': 'vEroNA3', 'op': 'remove'},
]
mock_date_muted = datetime.timestamp(datetime(2020, 1, 1))
mock_date_muted = datetime(2020, 1, 1, tzinfo=timezone.utc).timestamp()
for data in payloads:
add_topic_mute(
@ -108,7 +108,7 @@ class MutedTopicsTests(ZulipTestCase):
stream_id=stream.id,
recipient_id=recipient.id,
topic_name='Verona3',
date_muted=datetime(2020, 1, 1),
date_muted=datetime(2020, 1, 1, tzinfo=timezone.utc),
)
self.assertIn([stream.name, 'Verona3', mock_date_muted], get_topic_mutes(user))