diff --git a/src/backend/core/api/client/viewsets.py b/src/backend/core/api/client/viewsets.py index 3626f7e..fa2f4a6 100644 --- a/src/backend/core/api/client/viewsets.py +++ b/src/backend/core/api/client/viewsets.py @@ -7,6 +7,7 @@ from functools import reduce from django.conf import settings from django.db.models import OuterRef, Q, Subquery, Value from django.db.models.functions import Coalesce +from django.utils import timezone from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page @@ -605,7 +606,7 @@ class StatView(views.APIView): context = { "total_users": models.User.objects.count(), "mau": models.User.objects.filter( - last_login__gte=datetime.datetime.now() - datetime.timedelta(30) + last_login__gte=timezone.now() - datetime.timedelta(30) ).count(), "teams": models.Team.objects.count(), "domains": domains_models.MailDomain.objects.count(), diff --git a/src/backend/core/factories.py b/src/backend/core/factories.py index d92f37a..90fa14c 100644 --- a/src/backend/core/factories.py +++ b/src/backend/core/factories.py @@ -240,7 +240,7 @@ class TeamWebhookFactory(factory.django.DjangoModelFactory): model = models.TeamWebhook team = factory.SubFactory(TeamFactory) - url = factory.Sequence(lambda n: f"https://example.com/Groups/{n!s}") + url = factory.Sequence(lambda n: f"https://nosuchdomain.xyz/Groups/{n!s}") class InvitationFactory(factory.django.DjangoModelFactory): diff --git a/src/backend/mailbox_manager/admin.py b/src/backend/mailbox_manager/admin.py index 45cd4cc..1c42350 100644 --- a/src/backend/mailbox_manager/admin.py +++ b/src/backend/mailbox_manager/admin.py @@ -1,7 +1,7 @@ """Admin classes and registrations for People's mailbox manager app.""" from django.contrib import admin, messages -from django.utils.html import format_html +from django.utils.html import format_html_join, mark_safe from django.utils.translation import gettext_lazy as _ from requests import exceptions @@ -9,6 +9,9 @@ from requests import exceptions from mailbox_manager import enums, models from mailbox_manager.utils.dimail import DimailAPIClient +# Prevent Ruff complaining about mark_safe below +# ruff: noqa: S308 + @admin.action(description=_("Synchronise from dimail")) def sync_mailboxes_from_dimail(modeladmin, request, queryset): # pylint: disable=unused-argument @@ -79,10 +82,16 @@ def fetch_domain_status_from_dimail(modeladmin, request, queryset): # pylint: d if domains_updated else _("No domain updated."), ] - messages.success(request, format_html("
".join(map(str, msg_success)))) + messages.success( + request, + format_html_join(mark_safe("
"), "{}", ([str(m)] for m in msg_success)), + ) if msg_error: msg_error.insert(0, _("Check domain failed for:")) - messages.error(request, format_html("
".join(map(str, msg_error)))) + messages.error( + request, + format_html_join(mark_safe("
"), "{}", ([str(m)] for m in msg_error)), + ) if excluded_domains: messages.warning( request, diff --git a/src/backend/mailbox_manager/management/commands/setup_dimail_db.py b/src/backend/mailbox_manager/management/commands/setup_dimail_db.py index 3118c22..40d4bce 100644 --- a/src/backend/mailbox_manager/management/commands/setup_dimail_db.py +++ b/src/backend/mailbox_manager/management/commands/setup_dimail_db.py @@ -48,7 +48,7 @@ class Command(BaseCommand): # protected behind admin rights but dimail allows to create a first user # when database is empty self.create_user( - auth=(None, None), + auth=("", ""), name=admin["username"], password=admin["password"], perms=[], diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index de20cc8..ec78b17 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -140,6 +140,12 @@ python_files = [ "test_*.py", "tests.py", ] +filterwarnings = [ + # This one can be removed when upgrading to Django 6.0 + 'ignore:The FORMS_URLFIELD_ASSUME_HTTPS transitional setting is deprecated.', + # This one can be removed after upgrading DRF to 3.16 + "ignore:Converter 'drf_format_suffix'" +] [tool.coverage.run] branch = true