Skip to content

Commit 72303eb

Browse files
authored
fix: Migration 0005 used manager not available in migration (#288)
* fix: Migration 0005 used manager not available in migration * fix: get_or_create * fix: Avoid creating content type * fix: default_slot_name access
1 parent 2762012 commit 72303eb

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

djangocms_alias/migrations/0005_dynamic_slot_names.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,34 @@
22

33

44
def migrate_slots(apps, schema_editor, forward=True):
5+
from djangocms_alias.models import AliasContent as AliasContentModelClass
6+
57
AliasContent = apps.get_model("djangocms_alias", "AliasContent")
8+
ContentType = apps.get_model("contenttypes", "ContentType")
9+
Placeholder = apps.get_model("cms", "Placeholder")
10+
11+
default_slot_name = AliasContentModelClass.placeholder_slotname
612

713
db_alias = schema_editor.connection.alias
8-
qs = AliasContent.objects.using(db_alias).prefetch_related("alias").exclude(alias__static_code="")
14+
content_type = ContentType.objects.filter(app_label="djangocms_alias", model="aliascontent").first()
15+
if content_type is None:
16+
return
17+
placeholder_qs = Placeholder.objects.using(db_alias).filter(content_type=content_type)
18+
qs = AliasContent._default_manager.using(db_alias).prefetch_related("alias").exclude(alias__static_code="")
919

1020
with transaction.atomic(using=db_alias):
1121
for alias_content in qs:
12-
slots = list(alias_content.placeholders.all())
22+
slots = list(placeholder_qs.filter(object_id=alias_content.pk))
1323
if len(slots) == 1:
1424
placeholder = slots[0]
1525
# Ensure the placeholder exists with the correct slot name
16-
if forward and placeholder.slot == alias_content.placeholder_slotname:
26+
if forward and placeholder.slot == default_slot_name:
1727
# If migrating forward, we use the static code or the placeholder slot name
18-
placeholder.slot = alias_content.alias.static_code or alias_content.placeholder_slotname
28+
placeholder.slot = alias_content.alias.static_code or default_slot_name
1929
placeholder.save()
20-
elif placeholder.slot != alias_content.placeholder_slotname:
30+
elif placeholder.slot != default_slot_name:
2131
# If migrating backward, we revert to the original placeholder slot name
22-
placeholder.slot = alias_content.placeholder_slotname
32+
placeholder.slot = default_slot_name
2333
placeholder.save()
2434
elif len(slots) > 1:
2535
print(

0 commit comments

Comments
 (0)