Skip to content

Commit

Permalink
Remove use of deprecated datetime.utcnow() function
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed May 25, 2024
1 parent e9663bb commit 3216125
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
9 changes: 7 additions & 2 deletions src/flask_moment/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import datetime
from datetime import datetime, timezone
from packaging.version import parse as version_parse
from markupsafe import Markup
from flask import current_app
Expand Down Expand Up @@ -45,6 +45,11 @@
document.addEventListener("DOMContentLoaded", flask_moment_render_all);'''


def _naive_now():
"""Return a naive datetime object set to current UTC time."""
return datetime.now(timezone.utc).replace(tzinfo=None)


class moment(object):
"""Create a moment object.
Expand Down Expand Up @@ -172,7 +177,7 @@ def lang(language):

def __init__(self, timestamp=None, local=False):
if timestamp is None:
timestamp = datetime.utcnow()
timestamp = _naive_now()
self.timestamp = timestamp
self.local = local

Expand Down
30 changes: 15 additions & 15 deletions tests/test_flask_moment.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,16 @@ def test_include_moment_with_default(self):
assert default_moment_version + '/moment-with-locales.min.js' in ts
assert 'moment.defaultFormat = "foo";' in ts

@mock.patch('flask_moment.datetime')
def test_moment_default(self, dt):
dt.utcnow.return_value = 'foo'
@mock.patch('flask_moment._naive_now')
def test_moment_default(self, now):
now.return_value = 'foo'
m = self.moment()
assert m.timestamp == 'foo'
assert m.local is False

@mock.patch('flask_moment.datetime')
def test_moment_local_true(self, dt):
dt.utcnow.return_value = 'foo'
@mock.patch('flask_moment._naive_now')
def test_moment_local_true(self, now):
now.return_value = 'foo'
m = self.moment(local=True)
assert m.timestamp == 'foo'
assert m.local is True
Expand Down Expand Up @@ -108,16 +108,16 @@ def test__moment_iso8601_passed(self):
assert m.timestamp == ts
assert m.local is False

@mock.patch('flask_moment.datetime')
def test__timestamp_as_iso_8601_default(self, dt):
dt.utcnow.return_value = datetime(2017, 1, 15, 22, 1, 21, 101361)
@mock.patch('flask_moment._naive_now')
def test__timestamp_as_iso_8601_default(self, now):
now.return_value = datetime(2017, 1, 15, 22, 1, 21, 101361)
m = self.moment()
ts = m._timestamp_as_iso_8601(timestamp=m.timestamp)
assert ts == '2017-01-15T22:01:21Z'

@mock.patch('flask_moment.datetime')
def test__timestamp_as_iso_8601_local_true(self, dt):
dt.utcnow.return_value = datetime(2017, 1, 15, 22, 1, 21, 101361)
@mock.patch('flask_moment._naive_now')
def test__timestamp_as_iso_8601_local_true(self, now):
now.return_value = datetime(2017, 1, 15, 22, 1, 21, 101361)
m = self.moment(local=True)
ts = m._timestamp_as_iso_8601(timestamp=m.timestamp)
assert ts == '2017-01-15T22:01:21'
Expand Down Expand Up @@ -248,10 +248,10 @@ def test_diff_hours(self):
assert rts.find(m._timestamp_as_iso_8601(
timestamp=m.timestamp)) > 0

@mock.patch('flask_moment.datetime')
def test_create_default_no_timestamp(self, dt):
@mock.patch('flask_moment._naive_now')
def test_create_default_no_timestamp(self, now):
ts = datetime(2017, 1, 15, 22, 1, 21, 101361)
dt.utcnow.return_value = ts
now.return_value = ts
moment = Moment()
moment.init_app(self.app)
assert moment.create().timestamp == ts
Expand Down

0 comments on commit 3216125

Please sign in to comment.