mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-08-04 20:55:19 +02:00
refactor(models, views, serializers): rename LocationImage and Attachment to ContentImage and ContentAttachment, update related references
This commit is contained in:
parent
1b841f45a0
commit
7f80dad94b
13 changed files with 371 additions and 86 deletions
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 5.2.1 on 2025-07-10 14:40
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0051_rename_activity_types_location_tags_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='Attachment',
|
||||
new_name='ContentAttachment',
|
||||
),
|
||||
migrations.RenameModel(
|
||||
old_name='LocationImage',
|
||||
new_name='ContentImage',
|
||||
),
|
||||
]
|
|
@ -0,0 +1,53 @@
|
|||
# Generated by Django 5.2.1 on 2025-07-10 15:01
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0052_rename_attachment_contentattachment_and_more'),
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='contentattachment',
|
||||
options={'verbose_name': 'Content Attachment', 'verbose_name_plural': 'Content Attachments'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='contentimage',
|
||||
options={'verbose_name': 'Content Image', 'verbose_name_plural': 'Content Images'},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentattachment',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentattachment',
|
||||
name='object_id',
|
||||
field=models.UUIDField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentimage',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='content_images', to='contenttypes.contenttype'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contentimage',
|
||||
name='object_id',
|
||||
field=models.UUIDField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentattachment',
|
||||
index=models.Index(fields=['content_type', 'object_id'], name='adventures__content_e42b72_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='contentimage',
|
||||
index=models.Index(fields=['content_type', 'object_id'], name='adventures__content_aa4984_idx'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,73 @@
|
|||
# Custom migrations to migrate LocationImage and Attachment models to generic ContentImage and ContentAttachment models
|
||||
from django.db import migrations, models
|
||||
from django.utils import timezone
|
||||
|
||||
def migrate_images_and_attachments_forward(apps, schema_editor):
|
||||
"""
|
||||
Migrate existing LocationImage and Attachment records to the new generic ContentImage and ContentAttachment models
|
||||
"""
|
||||
# Get the models
|
||||
ContentImage = apps.get_model('adventures', 'ContentImage')
|
||||
ContentAttachment = apps.get_model('adventures', 'ContentAttachment')
|
||||
|
||||
# Get the ContentType for Location
|
||||
ContentType = apps.get_model('contenttypes', 'ContentType')
|
||||
try:
|
||||
location_ct = ContentType.objects.get(app_label='adventures', model='location')
|
||||
except ContentType.DoesNotExist:
|
||||
return
|
||||
|
||||
# Update existing ContentImages (which were previously LocationImages)
|
||||
ContentImage.objects.filter(content_type__isnull=True).update(
|
||||
content_type=location_ct
|
||||
)
|
||||
|
||||
# Set object_id from location_id for ContentImages
|
||||
for content_image in ContentImage.objects.filter(object_id__isnull=True):
|
||||
if hasattr(content_image, 'location_id') and content_image.location_id:
|
||||
content_image.object_id = content_image.location_id
|
||||
content_image.save()
|
||||
|
||||
# Update existing ContentAttachments (which were previously Attachments)
|
||||
ContentAttachment.objects.filter(content_type__isnull=True).update(
|
||||
content_type=location_ct
|
||||
)
|
||||
|
||||
# Set object_id from location_id for ContentAttachments
|
||||
for content_attachment in ContentAttachment.objects.filter(object_id__isnull=True):
|
||||
if hasattr(content_attachment, 'location_id') and content_attachment.location_id:
|
||||
content_attachment.object_id = content_attachment.location_id
|
||||
content_attachment.save()
|
||||
|
||||
def migrate_images_and_attachments_reverse(apps, schema_editor):
|
||||
"""
|
||||
Reverse migration to restore location_id fields from object_id
|
||||
"""
|
||||
ContentImage = apps.get_model('adventures', 'ContentImage')
|
||||
ContentAttachment = apps.get_model('adventures', 'ContentAttachment')
|
||||
|
||||
# Restore location_id from object_id for ContentImages
|
||||
for content_image in ContentImage.objects.all():
|
||||
if content_image.object_id and hasattr(content_image, 'location_id'):
|
||||
content_image.location_id = content_image.object_id
|
||||
content_image.save()
|
||||
|
||||
# Restore location_id from object_id for ContentAttachments
|
||||
for content_attachment in ContentAttachment.objects.all():
|
||||
if content_attachment.object_id and hasattr(content_attachment, 'location_id'):
|
||||
content_attachment.location_id = content_attachment.object_id
|
||||
content_attachment.save()
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0053_alter_contentattachment_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
migrate_images_and_attachments_forward,
|
||||
migrate_images_and_attachments_reverse,
|
||||
elidable=True
|
||||
)
|
||||
]
|
|
@ -0,0 +1,43 @@
|
|||
# Generated by Django 5.2.1 on 2025-07-10 15:19
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0054_migrate_location_images_generic_relation'),
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='contentattachment',
|
||||
name='location',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='contentimage',
|
||||
name='location',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='contentattachment',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_attachments', to='contenttypes.contenttype'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='contentattachment',
|
||||
name='object_id',
|
||||
field=models.UUIDField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='contentimage',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_images', to='contenttypes.contenttype'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='contentimage',
|
||||
name='object_id',
|
||||
field=models.UUIDField(),
|
||||
),
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue