diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py
index a9500a5d206e56db7ce231fb2d0b2101f19f461c..299856da61c628cfae1fce91f1c1a3319c4d8af4 100644
--- a/aleksis/core/mixins.py
+++ b/aleksis/core/mixins.py
@@ -345,11 +345,11 @@ class SuccessMessageMixin(ModelFormMixin):
         return super().form_valid(form)
 
 
-class AdvancedCreateView(CreateView, SuccessMessageMixin):
+class AdvancedCreateView(SuccessMessageMixin, CreateView):
     pass
 
 
-class AdvancedEditView(UpdateView, SuccessMessageMixin):
+class AdvancedEditView(SuccessMessageMixin, UpdateView):
     pass
 
 
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index 35878269058c159e6609c222c16509773b940466..c99820e5123f1a2d114c41533a9ee9a6628827d3 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -227,9 +227,9 @@ class Person(ExtensibleModel):
     def age_at(self, today):
         if self.date_of_birth:
             years = today.year - self.date_of_birth.year
-            if (self.date_of_birth.month > today.month
-                or (self.date_of_birth.month == today.month
-                    and self.date_of_birth.day > today.day)):
+            if self.date_of_birth.month > today.month or (
+                self.date_of_birth.month == today.month and self.date_of_birth.day > today.day
+            ):
                 years -= 1
             return years
 
@@ -389,14 +389,14 @@ class Group(SchoolTermRelatedExtensibleModel):
         """ Get stats about a given group """
         stats = {}
 
-        stats['members'] = len(self.members.all())
+        stats["members"] = len(self.members.all())
 
         ages = [person.age for person in self.members.filter(date_of_birth__isnull=False)]
 
         if ages:
-            stats['age_avg'] = sum(ages) / len(ages)
-            stats['age_range_min'] = min(ages)
-            stats['age_range_max'] = max(ages)
+            stats["age_avg"] = sum(ages) / len(ages)
+            stats["age_range_min"] = min(ages)
+            stats["age_range_max"] = max(ages)
 
         return stats
 
diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index 5a1cdbcb23778f2f0e1789f29eac4758545af893..cd92f28e4a3ef71bcb6220711db196452641d3cc 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -414,6 +414,9 @@ DBBACKUP_COMPRESS_MEDIA = _settings.get("backup.media.compress", True)
 DBBACKUP_ENCRYPT_MEDIA = _settings.get("backup.media.encrypt", DBBACKUP_GPG_RECIPIENT is not None)
 DBBACKUP_CLEANUP_DB = _settings.get("backup.database.clean", True)
 DBBACKUP_CLEANUP_MEDIA = _settings.get("backup.media.clean", True)
+DBBACKUP_CONNECTOR_MAPPING = {
+    "django_prometheus.db.backends.postgresql": "dbbackup.db.postgresql.PgDumpConnector",
+}
 
 IMPERSONATE = {"USE_HTTP_REFERER": True, "REQUIRE_SUPERUSER": True, "ALLOW_SUPERUSER": True}
 
diff --git a/tox.ini b/tox.ini
index eca63a758a5f6a20b1cd11887330817fec7908d7..98fce3af53aa48d1eac2e28454c26e7b74c23f72 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
 [tox]
 skipsdist = True
 skip_missing_interpreters = true
-envlist = py37,py38
+envlist = py37,py38,py39
 
 [testenv]
 whitelist_externals = poetry
@@ -22,8 +22,8 @@ setenv =
 
 [testenv:lint]
 commands =
-    - poetry run black --check --diff aleksis/
-    - poetry run isort -c --diff --stdout aleksis/
+    poetry run black --check --diff aleksis/
+    poetry run isort -c --diff --stdout aleksis/
     poetry run flake8 {posargs} aleksis/
 
 [testenv:security]
@@ -49,9 +49,8 @@ exclude = migrations,tests
 ignore = BLK100,E203,E231,W503,D100,D101,D102,D103,D104,D105,D106,D107,RST215,RST214,F821,F841,S106,T100,T101,DJ05
 
 [isort]
+profile = black
 line_length = 100
-multi_line_output = 3
-include_trailing_comma = 1
 default_section = THIRDPARTY
 known_first_party = aleksis
 known_django = django