Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Dec 3, 2025

This PR contains the following updates:

Package Change Age Confidence
Django (changelog) ==5.2.9==6.0 age confidence

Release Notes

django/django (Django)

v6.0

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies Third-party library dependencies. label Dec 3, 2025
@renovate renovate bot enabled auto-merge (squash) December 3, 2025 20:03
@codecov
Copy link

codecov bot commented Dec 3, 2025

❌ 37 Tests Failed:

Tests completed Failed Passed Skipped
132 37 95 0
View the top 3 failed test(s) by shortest run time
weblate_web.payments.tests.BackendTest::test_reject
Stack Traces | 0.017s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_reject>

    def test_reject(self) -> None:
        backend = get_backend("reject")(self.payment)
        self.assertIsNone(backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertFalse(backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:272: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb32ebe50>
msg = <email.message.EmailMessage object at 0x7f6fb035cd70>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_pay_recurring_error
Stack Traces | 0.018s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_pay_recurring_error>

    @responses.activate
    def test_pay_recurring_error(self) -> None:
        # Modify backend payment as it has a copy
        self.backend.payment.repeat = Payment.objects.create(
            customer=self.customer,
            amount=100,
            description="Test Item",
            backend=self.backend_name,
        )
        self.backend.payment.save()
        responses.post(
            f"https://demo.api.thepay..../projects/42/payments/{self.backend.payment.repeat.pk}/savedauthorization?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "state": "error",
                "message": "Failed card",
                "parent": {"recurring_payments_available": True},
            },
        )
        self.assertIsNone(self.backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertFalse(self.backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:652: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6faae24e60>
msg = <email.message.EmailMessage object at 0x7f6fa8759810>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_pay_recurring_error_blank_message
Stack Traces | 0.018s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_pay_recurring_error_blank_message>

    @responses.activate
    def test_pay_recurring_error_blank_message(self) -> None:
        # Modify backend payment as it has a copy
        self.backend.payment.repeat = Payment.objects.create(
            customer=self.customer,
            amount=100,
            description="Test Item",
            backend=self.backend_name,
        )
        self.backend.payment.save()
        responses.post(
            f"https://demo.api.thepay..../projects/42/payments/{self.backend.payment.repeat.pk}/savedauthorization?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "state": "error",
                "message": "",
                "parent": {"recurring_payments_available": False},
            },
        )
        self.assertIsNone(self.backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertFalse(self.backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:678: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa86f7070>
msg = <email.message.EmailMessage object at 0x7f6fa875b7f0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_pay_recurring_error_no_message
Stack Traces | 0.018s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_pay_recurring_error_no_message>

    @responses.activate
    def test_pay_recurring_error_no_message(self) -> None:
        # Modify backend payment as it has a copy
        self.backend.payment.repeat = Payment.objects.create(
            customer=self.customer,
            amount=100,
            description="Test Item",
            backend=self.backend_name,
        )
        self.backend.payment.save()
        responses.post(
            f"https://demo.api.thepay..../projects/42/payments/{self.backend.payment.repeat.pk}/savedauthorization?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "state": "error",
            },
        )
        self.assertIsNone(self.backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertFalse(self.backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:704: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb11c0830>
msg = <email.message.EmailMessage object at 0x7f6fa8759810>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_payment_cancelled
Stack Traces | 0.018s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_payment_cancelled>

    @responses.activate
    def test_payment_cancelled(self) -> None:
        thepay_mock_create_payment()
        responses.get(
            f"https://demo.api.thepay..../projects/42/payments/{self.payment.pk}?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "uid": "efd7d8e6-2fa3-3c46-b475-51762331bf56",
                "project_id": 1,
                "order_id": "CZ12131415",
                "state": "error",
                "events": [
                    {
                        "occured_at": "2021-04-20T11:05:49.000000Z",
                        "type": "payment_cancelled",
                    }
                ],
            },
        )
        response = self.backend.initiate(None, "", "")
        self.assertIsNotNone(response)
        self.assertRedirects(
            response,
            "https://gate.thepay.cz/12345/pay",
            fetch_redirect_response=False,
        )
        self.check_payment(Payment.PENDING)
>       self.assertFalse(self.backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:522: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa9b64940>
msg = <email.message.EmailMessage object at 0x7f6fa875aad0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_payment_error
Stack Traces | 0.018s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_payment_error>

    @responses.activate
    def test_payment_error(self) -> None:
        thepay_mock_create_payment()
        responses.get(
            f"https://demo.api.thepay..../projects/42/payments/{self.payment.pk}?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "uid": "efd7d8e6-2fa3-3c46-b475-51762331bf56",
                "project_id": 1,
                "order_id": "CZ12131415",
                "state": "error",
            },
        )
        response = self.backend.initiate(None, "", "")
        self.assertIsNotNone(response)
        self.assertRedirects(
            response,
            "https://gate.thepay.cz/12345/pay",
            fetch_redirect_response=False,
        )
        self.check_payment(Payment.PENDING)
>       self.assertFalse(self.backend.complete(None))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:548: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0eef7d0>
msg = <email.message.EmailMessage object at 0x7f6fa875b890>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_donate_notify_user
Stack Traces | 0.386s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_donate_notify_user>

    def test_expiring_donate_notify_user(self) -> None:
        self.create_donation(years=0, days=7, recurring="")
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1707: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:101: in notify_expiry
    donation.send_notification("payment_missing")
weblate_web/models.py:249: in send_notification
    self.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa808f540>
msg = <email.message.EmailMessage object at 0x7f6faaf92fd0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_recurring_donate_notify_user
Stack Traces | 0.392s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_recurring_donate_notify_user>

    def test_expiring_recurring_donate_notify_user(self) -> None:
        self.create_donation(years=0, days=7)
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1718: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:98: in notify_expiry
    donation.send_notification("payment_upcoming")
weblate_web/models.py:249: in send_notification
    self.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0312570>
msg = <email.message.EmailMessage object at 0x7f6f9cdd2d50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_donate
Stack Traces | 0.393s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_donate>

    def test_expiring_donate(self) -> None:
        self.create_donation(years=0, days=-2, recurring="")
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1691: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:112: in notify_expiry
    send_notification(
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa808e780>
msg = <email.message.EmailMessage object at 0x7f6faaf914f0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_subscription_notify_user
Stack Traces | 0.394s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_subscription_notify_user>

    def test_expiring_subscription_notify_user(self) -> None:
        self.create_service(years=0, days=7, recurring="")
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1743: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:76: in notify_expiry
    subscription.send_notification("payment_missing")
weblate_web/models.py:1080: in send_notification
    self.service.customer.send_notification(notification, subscription=self)
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa9ccf5f0>
msg = <email.message.EmailMessage object at 0x7f6fb5972d50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_recurring_subscription_notify_user
Stack Traces | 0.397s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_recurring_subscription_notify_user>

    def test_expiring_recurring_subscription_notify_user(self) -> None:
        self.create_service(years=0, days=7)
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1752: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:73: in notify_expiry
    subscription.send_notification("payment_upcoming")
weblate_web/models.py:1080: in send_notification
    self.service.customer.send_notification(notification, subscription=self)
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0e9ba10>
msg = <email.message.EmailMessage object at 0x7f6fa9b87430>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_subscription
Stack Traces | 0.4s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_subscription>

    def test_expiring_subscription(self) -> None:
        self.create_service(years=0, days=-2, recurring="")
>       RecurringPaymentsCommand.notify_expiry(force_summary=True)

weblate_web/tests.py:1725: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:112: in notify_expiry
    send_notification(
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0e9a990>
msg = <email.message.EmailMessage object at 0x7f6fb0eaae90>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_pay
Stack Traces | 0.499s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_pay>

    @responses.activate
    def test_pay(self) -> None:
        thepay_mock_create_payment()
        thepay_mock_payment(self.payment.pk)
        response = self.backend.initiate(None, "", "")
        self.assertIsNotNone(response)
        self.assertRedirects(
            response,
            "https://gate.thepay.cz/12345/pay",
            fetch_redirect_response=False,
        )
        self.check_payment(Payment.PENDING)
>       self.assertTrue(self.backend.complete(None))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:467: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb30ba250>
msg = <email.message.EmailMessage object at 0x7f6fa84467b0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_pending
Stack Traces | 0.5s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_pending>

    def test_pending(self) -> None:
        backend = get_backend("pending")(self.payment)
        self.assertIsNotNone(backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertTrue(backend.complete(None))
                        ^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:281: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb64b5040>
msg = <email.message.EmailMessage object at 0x7f6fb0e9bac0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.ThePay2Test::test_pay_recurring
Stack Traces | 0.5s run time
self = <weblate_web.payments.tests.ThePay2Test testMethod=test_pay_recurring>

    @responses.activate
    def test_pay_recurring(self) -> None:
        # Modify backend payment as it has a copy
        self.backend.payment.repeat = Payment.objects.create(
            customer=self.customer,
            amount=100,
            description="Test Item",
            backend=self.backend_name,
        )
        self.backend.payment.save()
        responses.post(
            f"https://demo.api.thepay..../projects/42/payments/{self.backend.payment.repeat.pk}/savedauthorization?merchant_id=00000000-0000-0000-0000-000000000000",
            json={
                "state": "paid",
                "parent": {"recurring_payments_available": True},
            },
        )
        self.assertIsNone(self.backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertTrue(self.backend.complete(None))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:627: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6faae255e0>
msg = <email.message.EmailMessage object at 0x7f6fa9bd2f30>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentsTest::test_reject
Stack Traces | 0.553s run time
self = <weblate_web.tests.PaymentsTest testMethod=test_reject>

    @override_settings(PAYMENT_DEBUG=True)
    def test_reject(self) -> None:
        payment, url, _dummy = self.prepare_payment()
>       response = self.client.post(url, {"method": "reject"})
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1020: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:361: in complete
    self.failure()
weblate_web/payments/backends.py:461: in failure
    self.send_notification("payment_failed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb1056db0>
msg = <email.message.EmailMessage object at 0x7f6fb035dd10>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_proforma
Stack Traces | 0.566s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_proforma>

    @responses.activate
    @override_settings(
        FIO_TOKEN="test-token",  # noqa: S106
    )
    def test_proforma(self) -> None:
        mock_vies()
        cnb_mock_rates()
        backend = get_backend("fio-bank")(self.payment)
>       self.assertIsNotNone(backend.initiate(None, "", "/complete/"))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:306: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:334: in initiate
    result = self.perform(request, back_url, complete_url)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:535: in perform
    self.send_notification("payment_pending")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6f9cd93df0>
msg = <email.message.EmailMessage object at 0x7f6fb0efadf0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_invoice_vs
Stack Traces | 0.593s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_invoice_vs>

    @responses.activate
    @override_settings(
        FIO_TOKEN="test-token",  # noqa: S106
    )
    def test_invoice_vs(self) -> None:
        # Czech bank notation
>       self.test_invoice_bank(format_string="VS{}/SS/KS")

weblate_web/payments/tests.py:390: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../site-packages/responses/__init__.py:232: in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../django/test/utils.py:458: in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/tests.py:370: in test_invoice_bank
    FioBank.fetch_payments()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../django/utils/decorators.py:48: in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../views/decorators/debug.py:75: in sensitive_variables_wrapper
    return func(*func_args, **func_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:648: in fetch_payments
    backend.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6f9cfc15b0>
msg = <email.message.EmailMessage object at 0x7f6fa86f4ad0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_invoice_in_text
Stack Traces | 0.6s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_invoice_in_text>

    @responses.activate
    @override_settings(
        FIO_TOKEN="test-token",  # noqa: S106
    )
    def test_invoice_in_text(self) -> None:
        # Czech bank notation
>       self.test_invoice_bank(format_string="PROFORMA{}PAYMENT")

weblate_web/payments/tests.py:398: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../site-packages/responses/__init__.py:232: in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../django/test/utils.py:458: in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/tests.py:370: in test_invoice_bank
    FioBank.fetch_payments()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../django/utils/decorators.py:48: in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../views/decorators/debug.py:75: in sensitive_variables_wrapper
    return func(*func_args, **func_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:648: in fetch_payments
    backend.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0337c50>
msg = <email.message.EmailMessage object at 0x7f6fa9c989e0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11......................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_invoice_bank
Stack Traces | 0.629s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_invoice_bank>
format_string = '{}'

    @responses.activate
    @override_settings(
        FIO_TOKEN="test-token",  # noqa: S106
    )
    def test_invoice_bank(self, format_string="{}") -> None:
        mock_vies()
        cnb_mock_rates()
        customer = Customer.objects.create(**CUSTOMER)
        invoice = Invoice.objects.create(
            customer=customer,
            kind=InvoiceKind.INVOICE,
            category=InvoiceCategory.HOSTING,
            vat_rate=21,
        )
        invoice.invoiceitem_set.create(
            description="Test item",
            unit_price=100,
        )
        invoice.generate_files()
    
        responses.add(responses.GET, FIO_API, body=json.dumps(FIO_TRASACTIONS))
        FioBank.fetch_payments()
        self.assertFalse(invoice.paid_payment_set.exists())
        self.assertEqual(len(mail.outbox), 0)
    
        received = deepcopy(FIO_TRASACTIONS)
        transaction = received["accountStatement"]["transactionList"]["transaction"]  # type: ignore[index]
        payment_message = format_string.format(invoice.number)
        transaction[0]["column16"]["value"] = payment_message
        transaction[1]["column16"]["value"] = payment_message
        transaction[1]["column1"]["value"] = int(invoice.total_amount)
        responses.replace(responses.GET, FIO_API, body=json.dumps(received))
>       FioBank.fetch_payments()

weblate_web/payments/tests.py:370: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../django/utils/decorators.py:48: in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../views/decorators/debug.py:75: in sensitive_variables_wrapper
    return func(*func_args, **func_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:648: in fetch_payments
    backend.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb3232fd0>
msg = <email.message.EmailMessage object at 0x7f6faaee6b10>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_pay
Stack Traces | 0.672s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_pay>

    def test_pay(self) -> None:
        backend = get_backend("pay")(self.payment)
        self.assertIsNone(backend.initiate(None, "", ""))
        self.check_payment(Payment.PENDING)
>       self.assertTrue(backend.complete(None))
                        ^^^^^^^^^^^^^^^^^^^^^^

weblate_web/payments/tests.py:263: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6faae86450>
msg = <email.message.EmailMessage object at 0x7f6fb6615e50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_fosdem_donation
Stack Traces | 0.699s run time
self = <weblate_web.tests.PaymentTest testMethod=test_fosdem_donation>

    @override_settings(**THEPAY2_MOCK_SETTINGS)
    @responses.activate
    def test_fosdem_donation(self) -> None:
        thepay_mock_create_payment()
    
        response = self.client.get("/fosdem/donate/", follow=True)
        self.assertContains(response, "Please provide your billing")
        payment = Payment.objects.all().get()
        self.assertEqual(payment.amount, 30)
        self.assertEqual(payment.state, Payment.NEW)
        customer_url = reverse("payment-customer", kwargs={"pk": payment.uuid})
        payment_url = reverse("payment", kwargs={"pk": payment.uuid})
        self.assertRedirects(response, customer_url)
        response = self.client.post(customer_url, TEST_CUSTOMER, follow=True)
        self.assertContains(response, "Please choose payment method")
        response = self.client.post(payment_url, {"method": "thepay2-card"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response.url.startswith("https://gate.thepay.cz/"))  # type: ignore[attr-defined]
    
        payment.refresh_from_db()
        self.assertEqual(payment.state, Payment.PENDING)
    
        # Perform the payment
        thepay_mock_payment(payment.pk)
    
        # Back to our web
>       response = self.client.get(payment.get_complete_url())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1389: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../django/test/client.py:1124: in get
    response = super().get(
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../django/test/client.py:475: in get
    return self.generic(
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:587: in dispatch
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:313: in send_notification
    ContentFile(email.message().as_bytes()),
                ^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6f9cdcc310>
msg = <email.message.EmailMessage object at 0x7f6fb03f3c50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.payments.tests.BackendTest::test_invoice_url
Stack Traces | 0.748s run time
self = <weblate_web.payments.tests.BackendTest testMethod=test_invoice_url>

    @responses.activate
    @override_settings(
        FIO_TOKEN="test-token",  # noqa: S106
    )
    def test_invoice_url(self) -> None:
        mock_vies()
        cnb_mock_rates()
        customer = Customer.objects.create(**CUSTOMER)
        invoice = Invoice.objects.create(
            customer=customer,
            kind=InvoiceKind.INVOICE,
            category=InvoiceCategory.HOSTING,
            vat_rate=21,
        )
        invoice.invoiceitem_set.create(
            description="Test item",
            unit_price=100,
        )
        invoice.generate_files()
    
        url = cast("str", invoice.get_payment_url())
        self.assertIsNotNone(url)
    
        # Trigger payment what creates an empty payment object
        self.client.get(url, follow=True)
    
        received = deepcopy(FIO_TRASACTIONS)
        transaction = received["accountStatement"]["transactionList"]["transaction"]  # type: ignore[index]
        transaction[0]["column16"]["value"] = invoice.number
        transaction[1]["column16"]["value"] = invoice.number
        transaction[1]["column1"]["value"] = int(invoice.total_amount)
        responses.add(responses.GET, FIO_API, body=json.dumps(received))
>       FioBank.fetch_payments()

weblate_web/payments/tests.py:432: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../django/utils/decorators.py:48: in _wrapper
    return bound_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../views/decorators/debug.py:75: in sensitive_variables_wrapper
    return func(*func_args, **func_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:648: in fetch_payments
    backend.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0ee0d60>
msg = <email.message.EmailMessage object at 0x7f6fa89b6d50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_recurring_donate
Stack Traces | 0.843s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_recurring_donate>

    def test_expiring_recurring_donate(self) -> None:
        self.create_donation(years=0, days=-2)
        RecurringPaymentsCommand.notify_expiry(force_summary=True)
        self.assert_notifications()
>       RecurringPaymentsCommand.handle_donations()

weblate_web/tests.py:1700: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:214: in handle_donations
    cls.peform_payment(
.../management/commands/recurring_payments.py:166: in peform_payment
    repeated.trigger_recurring()
weblate_web/payments/models.py:590: in trigger_recurring
    backend.complete(None)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa808f3e0>
msg = <email.message.EmailMessage object at 0x7f6faae81590>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_recurring
Stack Traces | 0.846s run time
self = <weblate_web.tests.PaymentTest testMethod=test_recurring>

    @responses.activate
    @override_settings(PAYMENT_DEBUG=True)
    def test_recurring(self) -> None:
        donation = self.create_donation(years=0)
        payment = cast("Payment", donation.payment_obj)
        self.assertIsNotNone(payment)
        # No recurring payments for now
        self.assertEqual(payment.payment_set.count(), 0)
    
        # Trigger payment and process it
>       call_command("recurring_payments")

weblate_web/tests.py:1348: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/management/__init__.py:195: in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/management/base.py:460: in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../management/commands/recurring_payments.py:44: in handle
    self.handle_donations()
.../management/commands/recurring_payments.py:214: in handle_donations
    cls.peform_payment(
.../management/commands/recurring_payments.py:166: in peform_payment
    repeated.trigger_recurring()
weblate_web/payments/models.py:590: in trigger_recurring
    backend.complete(None)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb146b540>
msg = <email.message.EmailMessage object at 0x7f6fb035ed50>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ExpiryTest::test_expiring_recurring_subscription
Stack Traces | 0.869s run time
self = <weblate_web.tests.ExpiryTest testMethod=test_expiring_recurring_subscription>

    def test_expiring_recurring_subscription(self) -> None:
        self.create_service(years=0, days=-2)
        RecurringPaymentsCommand.notify_expiry(force_summary=True)
        self.assert_notifications()
>       RecurringPaymentsCommand.handle_subscriptions()

weblate_web/tests.py:1736: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../management/commands/recurring_payments.py:192: in handle_subscriptions
    cls.peform_payment(
.../management/commands/recurring_payments.py:166: in peform_payment
    repeated.trigger_recurring()
weblate_web/payments/models.py:590: in trigger_recurring
    backend.complete(None)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0302830>
msg = <email.message.EmailMessage object at 0x7f6fa8595810>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11............/x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentsTest::test_pending
Stack Traces | 1.07s run time
self = <weblate_web.tests.PaymentsTest testMethod=test_pending>

    @override_settings(PAYMENT_DEBUG=True)
    def test_pending(self) -> None:
        payment, url, _dummy = self.prepare_payment()
        response = self.client.post(url, {"method": "pending"})
        complete_url = reverse("payment-complete", kwargs={"pk": payment.pk})
        self.assertRedirects(
            response,
            f"https://cihar.com/?url=http://localhost:1234{complete_url}",
            fetch_redirect_response=False,
        )
        self.check_payment(payment, Payment.PENDING)
>       response = self.client.get(complete_url)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1043: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1124: in get
    response = super().get(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:475: in get
    return self.generic(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:587: in dispatch
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb13aeba0>
msg = <email.message.EmailMessage object at 0x7f6fb07e1b30>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentsTest::test_pay
Stack Traces | 1.19s run time
self = <weblate_web.tests.PaymentsTest testMethod=test_pay>

    @override_settings(PAYMENT_DEBUG=True)
    def test_pay(self) -> None:
        payment, url, _dummy = self.prepare_payment()
>       response = self.client.post(url, {"method": "pay"})
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:984: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb31aa5d0>
msg = <email.message.EmailMessage object at 0x7f6fa8510550>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_donation_workflow_card
Stack Traces | 1.43s run time
self = <weblate_web.tests.PaymentTest testMethod=test_donation_workflow_card>
reward = 0

    @override_settings(**THEPAY2_MOCK_SETTINGS)
    @responses.activate
    def test_donation_workflow_card(self, reward=0) -> None:  # noqa: PLR0915
        self.login()
        thepay_mock_create_payment()
        response = self.client.post(
            ".../en/donate/new/",
            {"recurring": "y", "amount": 1000, "reward": reward},
            follow=True,
        )
        self.assertContains(response, "Please provide your billing")
        payment = Payment.objects.all().get()
        self.assertEqual(payment.amount, 1000)
        self.assertEqual(payment.state, Payment.NEW)
        customer_url = reverse("payment-customer", kwargs={"pk": payment.uuid})
        payment_url = reverse("payment", kwargs={"pk": payment.uuid})
        self.assertRedirects(response, customer_url)
        response = self.client.post(customer_url, TEST_CUSTOMER, follow=True)
        self.assertContains(response, "Please choose payment method")
        response = self.client.post(payment_url, {"method": "thepay2-card"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response.url.startswith("https://gate.thepay.cz/"))  # type: ignore[attr-defined]
    
        payment.refresh_from_db()
        self.assertEqual(payment.state, Payment.PENDING)
    
        # Perform the payment
        thepay_mock_payment(payment.pk)
    
        # Back to our web
>       response = self.client.get(payment.get_complete_url(), follow=True)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1212: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1124: in get
    response = super().get(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:475: in get
    return self.generic(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:587: in dispatch
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6f9cdcccb0>
msg = <email.message.EmailMessage object at 0x7f6f9cc97930>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_service_workflow_card
Stack Traces | 1.44s run time
self = <weblate_web.tests.PaymentTest testMethod=test_service_workflow_card>

    @override_settings(**THEPAY2_MOCK_SETTINGS)
    @responses.activate
    def test_service_workflow_card(self) -> None:  # noqa: PLR0915
        self.login()
        thepay_mock_create_payment()
        Package.objects.create(name="community", verbose="Community support", price=0)
        Package.objects.create(name="extended", verbose="Extended support", price=42)
        response = self.client.get(".../en/subscription/new/?plan=extended", follow=True)
        self.assertContains(response, "Please provide your billing")
        payment = Payment.objects.all().get()
        self.assertEqual(payment.state, Payment.NEW)
        customer_url = reverse("payment-customer", kwargs={"pk": payment.uuid})
        payment_url = reverse("payment", kwargs={"pk": payment.uuid})
        self.assertRedirects(response, customer_url)
        response = self.client.post(customer_url, TEST_CUSTOMER, follow=True)
        self.assertContains(response, "Please choose payment method")
        response = self.client.post(payment_url, {"method": "thepay2-card"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response.url.startswith("https://gate.thepay.cz/"))  # type: ignore[attr-defined]
    
        payment.refresh_from_db()
        self.assertEqual(payment.state, Payment.PENDING)
    
        # Perform the payment
        thepay_mock_payment(payment.pk)
    
        # Back to our web
>       response = self.client.get(payment.get_complete_url(), follow=True)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1093: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1124: in get
    response = super().get(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:475: in get
    return self.generic(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:587: in dispatch
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0312570>
msg = <email.message.EmailMessage object at 0x7f6faaf5fcf0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.invoices.tests.InvoiceTestCase::test_pay_link
Stack Traces | 1.48s run time
self = <weblate_web.invoices.tests.InvoiceTestCase testMethod=test_pay_link>

    @override_settings(PAYMENT_DEBUG=True)
    def test_pay_link(self) -> None:
        invoice = self.create_invoice_package()
        self.validate_invoice(invoice)
        url = cast("str", invoice.get_payment_url())
        self.assertIsNotNone(url)
    
        # Unauthenticated should redirect to login
        response = self.client.get(url, follow=True)
        self.assertContains(response, "Payment Summary")
        # Unauthenticated user should see note about terms
        self.assertContains(response, "By performing the payment, you accept our")
        self.assertNotContains(response, "Billing information")
        self.assertEqual(invoice.draft_payment_set.count(), 1)
    
        # Repeated access should reuse existing payment
        self.login()
        response = self.client.get(url, follow=True)
        self.assertContains(response, "Payment Summary")
        # Logged-in user should not see this
        self.assertNotContains(response, "By performing the payment, you accept our")
        self.assertNotContains(response, "Billing information")
        self.assertEqual(invoice.draft_payment_set.count(), 1)
    
        # Pay
        payment = invoice.draft_payment_set.get()
        payment_url = payment.get_payment_url()
>       self.client.post(payment_url, {"method": "pay"})

weblate_web/invoices/tests.py:251: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:313: in send_notification
    ContentFile(email.message().as_bytes()),
                ^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb59df620>
msg = <email.message.EmailMessage object at 0x7f6fb59dfb60>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11..................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ServiceTest::test_hosted_pay
Stack Traces | 1.58s run time
self = <weblate_web.tests.ServiceTest testMethod=test_hosted_pay>

    @responses.activate
    def test_hosted_pay(self) -> None:
        mock_vies()
        cnb_mock_rates()
        with override("en"):
            self.login()
            service = self.create_service(
                years=0, days=3, recurring="", package="test:test-1-m"
            )
            hosted = service.hosted_subscriptions
            self.assertEqual(
                hosted[0].expires.date(),
                timezone.now().date() + timedelta(days=3),
            )
    
            response = self.client.post(
                reverse("subscription-pay", kwargs={"pk": service.pk}),
                follow=True,
            )
            payment_url = response.redirect_chain[0][0].split("localhost:1234")[-1]
            payment_edit_url = response.redirect_chain[1][0]
            self.assertTrue(payment_url.startswith("/en/payment/"))
            response = self.client.post(payment_edit_url, TEST_CUSTOMER, follow=True)
            self.assertRedirects(response, payment_url)
>           response = self.client.post(payment_url, {"method": "pay"}, follow=True)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1788: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fa808d4f0>
msg = <email.message.EmailMessage object at 0x7f6fb184b110>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_donation_workflow_bank
Stack Traces | 1.58s run time
self = <weblate_web.tests.PaymentTest testMethod=test_donation_workflow_bank>

    def test_donation_workflow_bank(self) -> None:
        self.login()
        response = self.client.post(
            ".../en/donate/new/",
            {"recurring": "y", "amount": 10, "reward": 0},
            follow=True,
        )
        self.assertContains(response, "Please provide your billing")
        payment = Payment.objects.all().get()
        self.assertEqual(payment.state, Payment.NEW)
        customer_url = reverse("payment-customer", kwargs={"pk": payment.uuid})
        payment_url = reverse("payment", kwargs={"pk": payment.uuid})
        self.assertRedirects(response, customer_url)
        response = self.client.post(customer_url, TEST_CUSTOMER, follow=True)
        self.assertContains(response, "Please choose payment method")
>       response = self.client.post(payment_url, {"method": "fio-bank"}, follow=True)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1294: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:460: in form_valid
    result = backend.initiate(
weblate_web/payments/backends.py:334: in initiate
    result = self.perform(request, back_url, complete_url)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/backends.py:535: in perform
    self.send_notification("payment_pending")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb0e9a2b0>
msg = <email.message.EmailMessage object at 0x7f6fa8503570>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ServiceTest::test_hosted_pay_yearly
Stack Traces | 1.59s run time
self = <weblate_web.tests.ServiceTest testMethod=test_hosted_pay_yearly>

    @responses.activate
    def test_hosted_pay_yearly(self) -> None:
        mock_vies()
        cnb_mock_rates()
        with override("en"):
            self.login()
            service = self.create_service(
                years=0, days=3, recurring="", package="test:test-1-m"
            )
            response = self.client.post(
                reverse("subscription-pay", kwargs={"pk": service.pk}),
                {"switch_yearly": 1},
                follow=True,
            )
            payment_url = response.redirect_chain[0][0].split("localhost:1234")[-1]
            payment_edit_url = response.redirect_chain[1][0]
            self.assertTrue(payment_url.startswith("/en/payment/"))
            response = self.client.post(payment_edit_url, TEST_CUSTOMER, follow=True)
            self.assertRedirects(response, payment_url)
>           response = self.client.post(payment_url, {"method": "pay"}, follow=True)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1821: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6f9cdcd5a0>
msg = <email.message.EmailMessage object at 0x7f6f9cc945f0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ServiceTest::test_decicated_new
Stack Traces | 1.62s run time
self = <weblate_web.tests.ServiceTest testMethod=test_decicated_new>

    @override_settings(ZAMMAD_TOKEN="test")  # noqa: S106
    @responses.activate
    def test_decicated_new(self) -> None:
        mock_vies()
        cnb_mock_rates()
        self.create_packages()
        responses.add(
            responses.POST,
            "https://care.weblate..../api/v1/tickets",
            json={
                "id": 19,
                "group_id": 2,
                "priority_id": 2,
                "state_id": 1,
                "organization_id": None,
                "number": "22019",
                "title": "Help me!",
                "owner_id": 1,
                "customer_id": 10,
                "note": None,
                "first_response_at": None,
                "first_response_escalation_at": None,
                "first_response_in_min": None,
                "first_response_diff_in_min": None,
                "close_at": None,
                "close_escalation_at": None,
                "close_in_min": None,
                "close_diff_in_min": None,
                "update_escalation_at": None,
                "update_in_min": None,
                "update_diff_in_min": None,
                "last_contact_at": None,
                "last_contact_agent_at": None,
                "last_contact_customer_at": None,
                "last_owner_update_at": None,
                "create_article_type_id": 10,
                "create_article_sender_id": 1,
                "article_count": 1,
                "escalation_at": None,
                "pending_time": None,
                "type": None,
                "time_unit": None,
                "preferences": {},
                "updated_by_id": 3,
                "created_by_id": 3,
                "created_at": "2021-11-08T14:17:41.913Z",
                "updated_at": "2021-11-08T14:17:41.994Z",
                "article_ids": [30],
                "ticket_time_accounting_ids": [],
            },
        )
    
        with override("en"):
            self.login()
            response = self.client.get(
                reverse("subscription-new"),
                {"plan": "test:test-1"},
                follow=True,
            )
            payment_url = response.redirect_chain[0][0].split("localhost:1234")[-1]
            payment_edit_url = response.redirect_chain[1][0]
            self.assertTrue(payment_url.startswith("/en/payment/"))
            response = self.client.post(payment_edit_url, TEST_CUSTOMER, follow=True)
            self.assertRedirects(response, payment_url)
>           response = self.client.post(payment_url, {"method": "pay"}, follow=True)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1899: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb146b070>
msg = <email.message.EmailMessage object at 0x7f6fa9bbc230>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.PaymentTest::test_donation_workflow_card_reward
Stack Traces | 1.65s run time
self = <weblate_web.tests.PaymentTest testMethod=test_donation_workflow_card_reward>

    def test_donation_workflow_card_reward(self) -> None:
>       self.test_donation_workflow_card(2)

weblate_web/tests.py:1180: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/utils.py:458: in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../site-packages/responses/__init__.py:232: in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/tests.py:1212: in test_donation_workflow_card
    response = self.client.get(payment.get_complete_url(), follow=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1124: in get
    response = super().get(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:475: in get
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:587: in dispatch
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb015b960>
msg = <email.message.EmailMessage object at 0x7f6fb035d6d0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError
weblate_web.tests.ServiceTest::test_hosted_upgrade
Stack Traces | 1.78s run time
self = <weblate_web.tests.ServiceTest testMethod=test_hosted_upgrade>

    @responses.activate
    def test_hosted_upgrade(self) -> None:
        mock_vies()
        cnb_mock_rates()
        with override("en"):
            self.login()
            service = self.create_service(
                years=0, days=3, recurring="", package="test:test-1"
            )
            suggestions = service.get_suggestions()
            self.assertEqual(len(suggestions), 1)
            self.assertEqual(suggestions[0][0], "test:test-2")
            params: dict[str, str | int] = {
                "plan": "test:test-2",
                "service": service.pk,
            }
            response = self.client.get(reverse("subscription-new"), params, follow=True)
            payment_url = response.redirect_chain[0][0].split("localhost:1234")[-1]
            payment_edit_url = response.redirect_chain[1][0]
            self.assertTrue(payment_url.startswith("/en/payment/"))
            response = self.client.post(payment_edit_url, TEST_CUSTOMER, follow=True)
            self.assertRedirects(response, payment_url)
>           response = self.client.post(payment_url, {"method": "pay"}, follow=True)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

weblate_web/tests.py:1925: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1153: in post
    response = super().post(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:499: in post
    return self.generic(
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:671: in generic
    return self.request(**r)
           ^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:1087: in request
    self.check_exception(response)
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../django/test/client.py:802: in check_exception
    raise exc_value
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/exception.py:55: in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/handlers/base.py:198: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:106: in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:431: in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/base.py:145: in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../views/generic/edit.py:151: in post
    return self.form_valid(form)
           ^^^^^^^^^^^^^^^^^^^^^
weblate_web/views.py:474: in form_valid
    backend.complete(self.request)
weblate_web/payments/backends.py:359: in complete
    self.success()
weblate_web/payments/backends.py:455: in success
    self.send_notification("payment_completed")
weblate_web/payments/backends.py:438: in send_notification
    self.payment.customer.send_notification(
weblate_web/payments/models.py:294: in send_notification
    email = send_notification(notification, recipients, invoice=invoice, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
weblate_web/payments/utils.py:110: in send_notification
    email.send()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:358: in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../mail/backends/locmem.py:30: in send_messages
    message.message()
.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:318: in message
    self._add_attachments(msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <django.core.mail.message.EmailMultiAlternatives object at 0x7f6fb1056db0>
msg = <email.message.EmailMessage object at 0x7f6f9cf3d4f0>

    def _add_attachments(self, msg):
        if self.attachments:
            if hasattr(self, "mixed_subtype"):
                # RemovedInDjango70Warning.
>               raise AttributeError(
                    "EmailMessage no longer supports the"
                    " undocumented `mixed_subtype` attribute"
                )
E               AttributeError: EmailMessage no longer supports the undocumented `mixed_subtype` attribute

.../hostedtoolcache/Python/3.13.11........................................../x64/lib/python3.13.../core/mail/message.py:440: AttributeError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@renovate renovate bot force-pushed the renovate/django-6.x branch 23 times, most recently from 4a2e620 to a11cf9d Compare December 11, 2025 20:14
@renovate renovate bot force-pushed the renovate/django-6.x branch 4 times, most recently from a04bce1 to 5303c83 Compare December 12, 2025 22:42
@renovate renovate bot force-pushed the renovate/django-6.x branch 14 times, most recently from a966068 to 8692232 Compare December 24, 2025 07:04
@renovate renovate bot force-pushed the renovate/django-6.x branch 10 times, most recently from 0fe449a to 226750f Compare January 2, 2026 21:06
@renovate renovate bot force-pushed the renovate/django-6.x branch 4 times, most recently from b4d7d3d to dd651a4 Compare January 5, 2026 08:37
@renovate renovate bot force-pushed the renovate/django-6.x branch from dd651a4 to c5ed0b2 Compare January 5, 2026 15:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Third-party library dependencies.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant