Skip to content

Commit e27db71

Browse files
committed
Remove use of django.utils.timezone.utc
This is an alias for the stdlib's datetime.timezone.utc, which has been deprecated as of 4.1.
1 parent f7b610d commit e27db71

File tree

8 files changed

+29
-24
lines changed

8 files changed

+29
-24
lines changed

jobserver/github.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
2-
from datetime import datetime, timezone
2+
from datetime import datetime
3+
from datetime.timezone import utc
34

45
import requests
56
from environs import Env
@@ -354,7 +355,7 @@ def get_repos_with_dates(self, org):
354355
for repo in results:
355356
created_at = datetime.strptime(
356357
repo["createdAt"], "%Y-%m-%dT%H:%M:%SZ"
357-
).replace(tzinfo=timezone.utc)
358+
).replace(tzinfo=utc)
358359

359360
topics = []
360361
if repo["repositoryTopics"]["nodes"]:

jobserver/signing.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import hashlib
2-
from datetime import datetime, timezone
2+
from datetime import datetime
3+
from datetime.timezone import utc
34

45
import itsdangerous
56
from pydantic import BaseModel, Field, ValidationError, root_validator, validator
@@ -82,7 +83,7 @@ def check_url(cls, url):
8283
@validator("expiry")
8384
def check_expiry(cls, expiry):
8485
"""Enforce the token has not expired."""
85-
if datetime.now(timezone.utc) > expiry:
86+
if datetime.now(utc) > expiry:
8687
raise ValueError(f"token expired on {expiry.isoformat()}")
8788
return expiry
8889

tests/factories/applications.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from datetime.timezone import utc
2+
13
import factory
24
import factory.fuzzy
3-
from django.utils import timezone
45

56
from applications.models import (
67
Application,
@@ -42,10 +43,10 @@ class Meta:
4243
notes = factory.Sequence(lambda n: f"note {n}")
4344
is_approved = factory.fuzzy.FuzzyChoice([True, False])
4445

45-
last_reviewed_at = factory.Faker("date_time", tzinfo=timezone.utc)
46+
last_reviewed_at = factory.Faker("date_time", tzinfo=utc)
4647

47-
created_at = factory.Faker("date_time", tzinfo=timezone.utc)
48-
updated_at = factory.Faker("date_time", tzinfo=timezone.utc)
48+
created_at = factory.Faker("date_time", tzinfo=utc)
49+
updated_at = factory.Faker("date_time", tzinfo=utc)
4950

5051

5152
class ContactDetailsPageFactory(AbstractPageFactory):
@@ -191,4 +192,4 @@ class Meta:
191192

192193
application = factory.SubFactory("tests.factories.ApplicationFactory")
193194
has_taken_safe_researcher_training = True
194-
training_passed_at = factory.Faker("date_time", tzinfo=timezone.utc)
195+
training_passed_at = factory.Faker("date_time", tzinfo=utc)

tests/factories/jobserver.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from datetime import datetime
2+
from datetime.timezone import utc
23

34
import factory
45
import factory.fuzzy
5-
from django.utils import timezone
66
from social_django.models import UserSocialAuth
77

88
from jobserver.models import (
@@ -49,7 +49,7 @@ class Meta:
4949

5050
identifier = factory.Sequence(lambda n: f"identifier-{n}")
5151

52-
updated_at = factory.fuzzy.FuzzyDateTime(datetime(2020, 1, 1, tzinfo=timezone.utc))
52+
updated_at = factory.fuzzy.FuzzyDateTime(datetime(2020, 1, 1, tzinfo=utc))
5353

5454

5555
class JobRequestFactory(factory.django.DjangoModelFactory):
@@ -111,7 +111,7 @@ class Meta:
111111

112112
backend = factory.SubFactory("tests.factories.BackendFactory")
113113

114-
api_last_seen = factory.Faker("date_time", tzinfo=timezone.utc)
114+
api_last_seen = factory.Faker("date_time", tzinfo=utc)
115115

116116

117117
class UserFactory(factory.django.DjangoModelFactory):

tests/fakes.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import textwrap
22
from datetime import datetime
3+
from datetime.timezone import utc
34

45
from django.utils import timezone
56

@@ -60,7 +61,7 @@ def get_repos_with_dates(self, org):
6061
"name": "predates-job-server",
6162
"url": "https://github.com/opensafely/predates-job-server",
6263
"is_private": True,
63-
"created_at": datetime(2020, 7, 31, tzinfo=timezone.utc),
64+
"created_at": datetime(2020, 7, 31, tzinfo=utc),
6465
"topics": ["github-releases"],
6566
},
6667
{

tests/unit/jobserver/models/test_stats.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
from datetime import datetime
2-
3-
from django.utils import timezone
2+
from datetime.timezone import utc
43

54
from ....factories import BackendFactory, StatsFactory
65

76

87
def test_stats_str_with_last_seen(freezer):
98
backend = BackendFactory(slug="test")
109

11-
last_seen = datetime(2020, 12, 25, 10, 11, 12, tzinfo=timezone.utc)
10+
last_seen = datetime(2020, 12, 25, 10, 11, 12, tzinfo=utc)
1211
stats = StatsFactory(backend=backend, api_last_seen=last_seen, url="/foo")
1312

1413
assert str(stats) == "test | 2020-12-25 10:11:12 | /foo"

tests/unit/jobserver/test_signing.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import secrets
3-
from datetime import datetime, timedelta, timezone
3+
from datetime import datetime, timedelta
4+
from datetime.timezone import utc
45

56
import pytest
67
from pydantic import ValidationError
@@ -26,7 +27,7 @@ def test_token_sign_verify_roundtrip(secret_key):
2627
token1 = signing.AuthToken(
2728
url="https://example.com/url",
2829
user="user",
29-
expiry=datetime.now(timezone.utc) + timedelta(minutes=1),
30+
expiry=datetime.now(utc) + timedelta(minutes=1),
3031
)
3132
token_string = token1.sign(secret_key, "salt")
3233

@@ -39,7 +40,7 @@ def test_token_object_url_invalid():
3940
signing.AuthToken(
4041
url="bad",
4142
user="user",
42-
expiry=datetime.now(timezone.utc) + timedelta(minutes=1),
43+
expiry=datetime.now(utc) + timedelta(minutes=1),
4344
)
4445

4546

@@ -48,15 +49,15 @@ def test_token_object_expired():
4849
signing.AuthToken(
4950
url="https://example.com/url",
5051
user="user",
51-
expiry=datetime.now(timezone.utc) - timedelta(minutes=1),
52+
expiry=datetime.now(utc) - timedelta(minutes=1),
5253
)
5354

5455

5556
def test_token_verify_mismatched_secrets():
5657
payload = dict(
5758
url="https://example.com/url",
5859
user="user",
59-
expiry=datetime.now(timezone.utc) + timedelta(minutes=1),
60+
expiry=datetime.now(utc) + timedelta(minutes=1),
6061
)
6162
token = create_raw_token(payload, "secret1" * 10)
6263

@@ -76,7 +77,7 @@ def test_token_verify_expired(secret_key):
7677
payload = dict(
7778
url="https://example.com/url",
7879
user="user",
79-
expiry=datetime.now(timezone.utc) - timedelta(minutes=1),
80+
expiry=datetime.now(utc) - timedelta(minutes=1),
8081
)
8182
token = create_raw_token(payload, secret_key)
8283
with pytest.raises(signing.AuthToken.Expired):
@@ -87,7 +88,7 @@ def test_token_verify_wrong_all_the_things(secret_key):
8788
payload = dict(
8889
url="bad url",
8990
# missing user
90-
expiry=datetime.now(timezone.utc) - timedelta(minutes=1),
91+
expiry=datetime.now(utc) - timedelta(minutes=1),
9192
)
9293
token = create_raw_token(payload, secret_key)
9394
with pytest.raises(ValidationError) as exc_info:

tests/unit/jobserver/views/test_status.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import functools
22
import time
33
from datetime import datetime, timedelta
4+
from datetime.timezone import utc
45

56
import pytest
67
from django.utils import timezone
@@ -12,7 +13,7 @@
1213
from ....utils import minutes_ago
1314

1415

15-
dt = functools.partial(datetime, tzinfo=timezone.utc)
16+
dt = functools.partial(datetime, tzinfo=utc)
1617

1718

1819
def test_dbavailability_in_db_maintenance(rf):

0 commit comments

Comments
 (0)