-
-
Notifications
You must be signed in to change notification settings - Fork 946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
App/Container is failing to start with v2024.10 #11895
Labels
bug
Something isn't working
Comments
As a hacky workaround I replaced the # Generated by Django 5.0.9 on 2024-10-02 11:35
import django.db.models.deletion
from django.apps.registry import Apps
from django.db import migrations, models, connection
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
def migrate_invalidation_flow_default(apps: Apps, schema_editor: BaseDatabaseSchemaEditor):
from authentik.flows.models import FlowDesignation, FlowAuthenticationRequirement
db_alias = schema_editor.connection.alias
Flow = apps.get_model("authentik_flows", "Flow")
Provider = apps.get_model("authentik_core", "Provider")
# So this flow is managed via a blueprint, bue we're in a migration so we don't want to rely on that
# since the blueprint is just an empty flow we can just create it here
# and let it be managed by the blueprint later
flow, _ = Flow.objects.using(db_alias).update_or_create(
slug="default-provider-invalidation-flow",
defaults={
"name": "Logged out of application",
"title": "You've logged out of %(app)s.",
"authentication": FlowAuthenticationRequirement.NONE,
"designation": FlowDesignation.INVALIDATION,
},
)
Provider.objects.using(db_alias).filter(invalidation_flow=None).update(invalidation_flow=flow)
def add_invalidation_flow_column(apps, schema_editor):
with connection.cursor() as cursor:
cursor.execute("""
SELECT column_name
FROM information_schema.columns
WHERE table_name='authentik_core_provider' AND column_name='invalidation_flow_id';
""")
if not cursor.fetchone():
migrations.AddField(
model_name="provider",
name="invalidation_flow",
field=models.ForeignKey(
default=None,
help_text="Flow used ending the session from a provider.",
null=True,
on_delete=django.db.models.deletion.SET_DEFAULT,
related_name="provider_invalidation",
to="authentik_flows.flow",
),
).database_forwards(apps, schema_editor)
class Migration(migrations.Migration):
dependencies = [
("authentik_core", "0039_source_group_matching_mode_alter_group_name_and_more"),
("authentik_flows", "0027_auto_20231028_1424"),
]
operations = [
migrations.RunPython(add_invalidation_flow_column),
migrations.RunPython(migrate_invalidation_flow_default),
] This allowed me to run the migrations once. On next startup the migration will not be retried again. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
The app is failing to start.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
App/Container starts successfully without any errors.
Logs
I'm getting the following errors:
Error 1
Error 2
column "invalidation_flow_id" of relation "authentik_core_provider" already exists
Version and Deployment (please complete the following information):
The text was updated successfully, but these errors were encountered: