forked from ungleich-public/dynamicweb
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from functools import cached_property
|
|
|
|
from django.db import models
|
|
|
|
from cms.models import CMSPlugin
|
|
from cms.models.fields import PlaceholderRelationField
|
|
from cms.utils.placeholder import get_placeholder_from_slot
|
|
|
|
|
|
class PlaceholderReference(CMSPlugin):
|
|
cmsplugin_ptr = models.OneToOneField(
|
|
CMSPlugin,
|
|
on_delete=models.CASCADE,
|
|
related_name='cms_placeholderreference',
|
|
parent_link=True,
|
|
)
|
|
name = models.CharField(max_length=255)
|
|
placeholders = PlaceholderRelationField()
|
|
|
|
@cached_property
|
|
def placeholder_ref(self):
|
|
placeholder = get_placeholder_from_slot(self.placeholders, "clipboard")
|
|
placeholder.source = self
|
|
return placeholder
|
|
|
|
class Meta:
|
|
app_label = 'cms'
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def move_to(self, placeholder, language):
|
|
for plugin in self.placeholder_ref.get_plugins():
|
|
plugin.placeholder = placeholder
|
|
plugin.language = language
|
|
plugin.save()
|
|
|
|
def move_from(self, placeholder, language):
|
|
for plugin in placeholder.get_plugins():
|
|
plugin.placeholder = self.placeholder_ref
|
|
plugin.language = language
|
|
plugin.save()
|