mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-23 11:17:02 -04:00
fix created_by field migration to create User properly if none exists
This commit is contained in:
parent
9b1659c72f
commit
afe1307617
1 changed files with 43 additions and 3 deletions
|
@ -7,6 +7,27 @@ from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def updated_created_by_ids(apps, schema_editor):
|
||||||
|
"""Get or create a system user with is_superuser=True to be the default owner for new DB rows"""
|
||||||
|
|
||||||
|
User = apps.get_model("auth", "User")
|
||||||
|
ArchiveResult = apps.get_model("core", "ArchiveResult")
|
||||||
|
Snapshot = apps.get_model("core", "Snapshot")
|
||||||
|
Tag = apps.get_model("core", "Tag")
|
||||||
|
|
||||||
|
# if only one user exists total, return that user
|
||||||
|
if User.objects.filter(is_superuser=True).count() == 1:
|
||||||
|
user_id = User.objects.filter(is_superuser=True).values_list('pk', flat=True)[0]
|
||||||
|
|
||||||
|
# otherwise, create a dedicated "system" user
|
||||||
|
user_id = User.objects.get_or_create(username='system', is_staff=True, is_superuser=True, defaults={'email': '', 'password': ''})[0].pk
|
||||||
|
|
||||||
|
ArchiveResult.objects.all().update(created_by_id=user_id)
|
||||||
|
Snapshot.objects.all().update(created_by_id=user_id)
|
||||||
|
Tag.objects.all().update(created_by_id=user_id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
@ -24,7 +45,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='archiveresult',
|
model_name='archiveresult',
|
||||||
name='created_by',
|
name='created_by',
|
||||||
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
field=models.ForeignKey(null=True, default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='archiveresult',
|
model_name='archiveresult',
|
||||||
|
@ -40,7 +61,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='snapshot',
|
model_name='snapshot',
|
||||||
name='created_by',
|
name='created_by',
|
||||||
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
field=models.ForeignKey(null=True, default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='snapshot',
|
model_name='snapshot',
|
||||||
|
@ -56,7 +77,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='tag',
|
model_name='tag',
|
||||||
name='created_by',
|
name='created_by',
|
||||||
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
field=models.ForeignKey(null=True, default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='tag',
|
model_name='tag',
|
||||||
|
@ -73,4 +94,23 @@ class Migration(migrations.Migration):
|
||||||
name='uuid',
|
name='uuid',
|
||||||
field=models.UUIDField(blank=True, null=True, unique=True),
|
field=models.UUIDField(blank=True, null=True, unique=True),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
|
migrations.RunPython(updated_created_by_ids, reverse_code=migrations.RunPython.noop),
|
||||||
|
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='snapshot',
|
||||||
|
name='created_by',
|
||||||
|
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='archiveresult',
|
||||||
|
name='created_by',
|
||||||
|
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='tag',
|
||||||
|
name='created_by',
|
||||||
|
field=models.ForeignKey(default=abid_utils.models.get_or_create_system_user_pk, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue