root: fix migrations missing using db_alias

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
Marc 'risson' Schmitt
2024-07-08 18:26:28 +02:00
parent 5c8a9abb33
commit 151529a929
5 changed files with 19 additions and 15 deletions

View File

@ -7,12 +7,13 @@ from django.db.backends.base.schema import BaseDatabaseSchemaEditor
def backport_is_backchannel(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): def backport_is_backchannel(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
db_alias = schema_editor.connection.alias
from authentik.providers.ldap.models import LDAPProvider from authentik.providers.ldap.models import LDAPProvider
from authentik.providers.scim.models import SCIMProvider from authentik.providers.scim.models import SCIMProvider
for model in [LDAPProvider, SCIMProvider]: for model in [LDAPProvider, SCIMProvider]:
try: try:
for obj in model.objects.only("is_backchannel"): for obj in model.objects.using(db_alias).only("is_backchannel"):
obj.is_backchannel = True obj.is_backchannel = True
obj.save() obj.save()
except (DatabaseError, InternalError, ProgrammingError): except (DatabaseError, InternalError, ProgrammingError):

View File

@ -21,7 +21,7 @@ def set_oobe_flow_authentication(apps: Apps, schema_editor: BaseDatabaseSchemaEd
pass pass
if users.exists(): if users.exists():
Flow.objects.filter(slug="initial-setup").update(authentication="require_superuser") Flow.objects.using(db_alias).filter(slug="initial-setup").update(authentication="require_superuser")
class Migration(migrations.Migration): class Migration(migrations.Migration):

View File

@ -13,16 +13,17 @@ import authentik.outposts.models
def fix_missing_token_identifier(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): def fix_missing_token_identifier(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
db_alias = schema_editor.connection.alias
User = apps.get_model("authentik_core", "User") User = apps.get_model("authentik_core", "User")
Token = apps.get_model("authentik_core", "Token") Token = apps.get_model("authentik_core", "Token")
from authentik.outposts.models import Outpost from authentik.outposts.models import Outpost
for outpost in Outpost.objects.using(schema_editor.connection.alias).all().only("pk"): for outpost in Outpost.objects.using(db_alias).all().only("pk"):
user_identifier = outpost.user_identifier user_identifier = outpost.user_identifier
users = User.objects.filter(username=user_identifier) users = User.objects.using(db_alias).filter(username=user_identifier)
if not users.exists(): if not users.exists():
continue continue
tokens = Token.objects.filter(user=users.first()) tokens = Token.objects.using(db_alias).filter(user=users.first())
for token in tokens: for token in tokens:
if token.identifier != outpost.token_identifier: if token.identifier != outpost.token_identifier:
token.identifier = outpost.token_identifier token.identifier = outpost.token_identifier
@ -37,8 +38,8 @@ def migrate_to_service_connection(apps: Apps, schema_editor: BaseDatabaseSchemaE
"authentik_outposts", "KubernetesServiceConnection" "authentik_outposts", "KubernetesServiceConnection"
) )
docker = DockerServiceConnection.objects.filter(local=True).first() docker = DockerServiceConnection.objects.using(db_alias).filter(local=True).first()
k8s = KubernetesServiceConnection.objects.filter(local=True).first() k8s = KubernetesServiceConnection.objects.using(db_alias).filter(local=True).first()
try: try:
for outpost in Outpost.objects.using(db_alias).all().exclude(deployment_type="custom"): for outpost in Outpost.objects.using(db_alias).all().exclude(deployment_type="custom"):
@ -54,21 +55,21 @@ def migrate_to_service_connection(apps: Apps, schema_editor: BaseDatabaseSchemaE
def remove_pb_prefix_users(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): def remove_pb_prefix_users(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
alias = schema_editor.connection.alias db_alias = schema_editor.connection.alias
User = apps.get_model("authentik_core", "User") User = apps.get_model("authentik_core", "User")
Outpost = apps.get_model("authentik_outposts", "Outpost") Outpost = apps.get_model("authentik_outposts", "Outpost")
for outpost in Outpost.objects.using(alias).all(): for outpost in Outpost.objects.using(db_alias).all():
matching = User.objects.using(alias).filter(username=f"pb-outpost-{outpost.uuid.hex}") matching = User.objects.using(db_alias).filter(username=f"pb-outpost-{outpost.uuid.hex}")
if matching.exists(): if matching.exists():
matching.delete() matching.delete()
def update_config_prefix(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): def update_config_prefix(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
alias = schema_editor.connection.alias db_alias = schema_editor.connection.alias
Outpost = apps.get_model("authentik_outposts", "Outpost") Outpost = apps.get_model("authentik_outposts", "Outpost")
for outpost in Outpost.objects.using(alias).all(): for outpost in Outpost.objects.using(db_alias).all():
config = outpost._config config = outpost._config
for key in list(config): for key in list(config):
if "passbook" in key: if "passbook" in key:

View File

@ -10,6 +10,8 @@ from authentik.sources.saml.processors import constants
def update_algorithms(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): def update_algorithms(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
db_alias = schema_editor.connection.alias
SAMLSource = apps.get_model("authentik_sources_saml", "SAMLSource") SAMLSource = apps.get_model("authentik_sources_saml", "SAMLSource")
signature_translation_map = { signature_translation_map = {
"rsa-sha1": constants.RSA_SHA1, "rsa-sha1": constants.RSA_SHA1,
@ -22,7 +24,7 @@ def update_algorithms(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
"sha256": constants.SHA256, "sha256": constants.SHA256,
} }
for source in SAMLSource.objects.all(): for source in SAMLSource.objects.using(db_alias).all():
source.signature_algorithm = signature_translation_map.get( source.signature_algorithm = signature_translation_map.get(
source.signature_algorithm, constants.RSA_SHA256 source.signature_algorithm, constants.RSA_SHA256
) )

View File

@ -13,8 +13,8 @@ def assign_sources(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
IdentificationStage = apps.get_model("authentik_stages_identification", "identificationstage") IdentificationStage = apps.get_model("authentik_stages_identification", "identificationstage")
Source = apps.get_model("authentik_core", "source") Source = apps.get_model("authentik_core", "source")
sources = Source.objects.all() sources = Source.objects.using(db_alias).all()
for stage in IdentificationStage.objects.all().using(db_alias): for stage in IdentificationStage.objects.using(db_alias).all():
stage.sources.set(sources) stage.sources.set(sources)
stage.save() stage.save()