Confirm support for Django 4.1

Replaces deprecated `django.utils.timezone.utc` with
`datetime.timezone.utc` (available since Python 3.2).
This commit is contained in:
Tim Schilling
2022-08-24 15:24:27 -05:00
committed by GitHub
parent 6b3775a8e9
commit a4f50c4340
25 changed files with 80 additions and 89 deletions

View File

@@ -1,10 +1,9 @@
import json
from datetime import datetime
from datetime import datetime, timezone
import hashlib
import hmac
from django.utils.crypto import constant_time_compare
from django.utils.timezone import utc
from .base import AnymailBaseWebhookView
from ..exceptions import AnymailConfigurationError, AnymailWebhookValidationFailure, AnymailInvalidAddress
@@ -115,7 +114,7 @@ class MailgunTrackingWebhookView(MailgunBaseWebhookView):
recipient = event_data.get('recipient')
try:
timestamp = datetime.fromtimestamp(float(event_data['timestamp']), tz=utc)
timestamp = datetime.fromtimestamp(float(event_data['timestamp']), tz=timezone.utc)
except KeyError:
timestamp = None
@@ -213,7 +212,8 @@ class MailgunTrackingWebhookView(MailgunBaseWebhookView):
"to Anymail's Mailgun *tracking* webhook URL.")
event_type = self.legacy_event_types.get(esp_event.getfirst('event'), EventType.UNKNOWN)
timestamp = datetime.fromtimestamp(int(esp_event['timestamp']), tz=utc) # use *last* value of timestamp
timestamp = datetime.fromtimestamp(
int(esp_event['timestamp']), tz=timezone.utc) # use *last* value of timestamp
# Message-Id is not documented for every event, but seems to always be included.
# (It's sometimes spelled as 'message-id', lowercase, and missing the <angle-brackets>.)
message_id = esp_event.getfirst('Message-Id', None) or esp_event.getfirst('message-id', None)
@@ -381,7 +381,7 @@ class MailgunInboundWebhookView(MailgunBaseWebhookView):
return AnymailInboundEvent(
event_type=EventType.INBOUND,
timestamp=datetime.fromtimestamp(int(request.POST['timestamp']), tz=utc),
timestamp=datetime.fromtimestamp(int(request.POST['timestamp']), tz=timezone.utc),
event_id=request.POST.get('token', None),
esp_event=esp_event,
message=message,

View File

@@ -1,7 +1,6 @@
import json
from datetime import datetime
from datetime import datetime, timezone
from django.utils.timezone import utc
from .base import AnymailBaseWebhookView
from ..inbound import AnymailInboundMessage
@@ -68,7 +67,7 @@ class MailjetTrackingWebhookView(AnymailBaseWebhookView):
event_type = EventType.DEFERRED
try:
timestamp = datetime.fromtimestamp(esp_event['time'], tz=utc)
timestamp = datetime.fromtimestamp(esp_event['time'], tz=timezone.utc)
except (KeyError, ValueError):
timestamp = None

View File

@@ -1,11 +1,10 @@
import json
from datetime import datetime
from datetime import datetime, timezone
import hashlib
import hmac
from base64 import b64encode
from django.utils.crypto import constant_time_compare
from django.utils.timezone import utc
from .base import AnymailBaseWebhookView, AnymailCoreWebhookView
from ..exceptions import AnymailWebhookValidationFailure
@@ -109,7 +108,7 @@ class MandrillCombinedWebhookView(MandrillSignatureMixin, AnymailBaseWebhookView
event_type = self.event_types.get(esp_type, EventType.UNKNOWN)
try:
timestamp = datetime.fromtimestamp(esp_event['ts'], tz=utc)
timestamp = datetime.fromtimestamp(esp_event['ts'], tz=timezone.utc)
except (KeyError, ValueError):
timestamp = None
@@ -170,7 +169,7 @@ class MandrillCombinedWebhookView(MandrillSignatureMixin, AnymailBaseWebhookView
message.spam_score = esp_event['msg'].get('spam_report', {}).get('score', None)
try:
timestamp = datetime.fromtimestamp(esp_event['ts'], tz=utc)
timestamp = datetime.fromtimestamp(esp_event['ts'], tz=timezone.utc)
except (KeyError, ValueError):
timestamp = None

View File

@@ -1,11 +1,9 @@
import binascii
import json
from base64 import b64decode
from datetime import datetime
from datetime import datetime, timezone
from django.utils.timezone import utc
from .base import AnymailBaseWebhookView
from ..exceptions import (
AnymailInvalidAddress,
@@ -94,7 +92,7 @@ class PostalTrackingWebhookView(PostalBaseWebhookView):
raw_timestamp = esp_event.get("timestamp")
timestamp = (
datetime.fromtimestamp(int(raw_timestamp), tz=utc)
datetime.fromtimestamp(int(raw_timestamp), tz=timezone.utc)
if raw_timestamp
else None
)

View File

@@ -1,9 +1,8 @@
import json
from datetime import datetime
from datetime import datetime, timezone
from email.parser import BytesParser
from email.policy import default as default_policy
from django.utils.timezone import utc
from .base import AnymailBaseWebhookView
from ..inbound import AnymailInboundMessage
@@ -47,7 +46,7 @@ class SendGridTrackingWebhookView(AnymailBaseWebhookView):
def esp_to_anymail_event(self, esp_event):
event_type = self.event_types.get(esp_event['event'], EventType.UNKNOWN)
try:
timestamp = datetime.fromtimestamp(esp_event['timestamp'], tz=utc)
timestamp = datetime.fromtimestamp(esp_event['timestamp'], tz=timezone.utc)
except (KeyError, ValueError):
timestamp = None

View File

@@ -1,7 +1,5 @@
import json
from datetime import datetime
from django.utils.timezone import utc
from datetime import datetime, timezone
from .base import AnymailBaseWebhookView
from ..signals import AnymailTrackingEvent, EventType, RejectReason, tracking
@@ -45,7 +43,7 @@ class SendinBlueTrackingWebhookView(AnymailBaseWebhookView):
# SendinBlue supplies "ts", "ts_event" and "date" fields, which seem to be based on the
# timezone set in the account preferences (and possibly with inconsistent DST adjustment).
# "ts_epoch" is the only field that seems to be consistently UTC; it's in milliseconds
timestamp = datetime.fromtimestamp(esp_event["ts_epoch"] / 1000.0, tz=utc)
timestamp = datetime.fromtimestamp(esp_event["ts_epoch"] / 1000.0, tz=timezone.utc)
except (KeyError, ValueError):
timestamp = None

View File

@@ -1,8 +1,6 @@
import json
from base64 import b64decode
from datetime import datetime
from django.utils.timezone import utc
from datetime import datetime, timezone
from .base import AnymailBaseWebhookView
from ..exceptions import AnymailConfigurationError
@@ -128,7 +126,7 @@ class SparkPostTrackingWebhookView(SparkPostBaseWebhookView):
event_type = self.event_types.get(event['type'], EventType.UNKNOWN)
try:
timestamp = datetime.fromtimestamp(int(event['timestamp']), tz=utc)
timestamp = datetime.fromtimestamp(int(event['timestamp']), tz=timezone.utc)
except (KeyError, TypeError, ValueError):
timestamp = None