forked from ungleich-public/dynamicweb
clone cms with menus, make menus standalone app
This commit is contained in:
parent
1ece5ce7c7
commit
afb096b7a3
1153 changed files with 318897 additions and 37 deletions
64
cms/models/aliaspluginmodel.py
Normal file
64
cms/models/aliaspluginmodel.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from cms.models import CMSPlugin, Placeholder
|
||||
|
||||
|
||||
class AliasPluginModel(CMSPlugin):
|
||||
"""
|
||||
AliasPlugin is deprecated,
|
||||
and it will be removed;
|
||||
please use the package djangocms-alias instead
|
||||
"""
|
||||
cmsplugin_ptr = models.OneToOneField(
|
||||
CMSPlugin,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='cms_aliasplugin',
|
||||
parent_link=True,
|
||||
)
|
||||
plugin = models.ForeignKey(
|
||||
CMSPlugin,
|
||||
on_delete=models.CASCADE,
|
||||
editable=False,
|
||||
related_name='alias_reference',
|
||||
null=True,
|
||||
)
|
||||
alias_placeholder = models.ForeignKey(
|
||||
Placeholder,
|
||||
on_delete=models.CASCADE,
|
||||
editable=False,
|
||||
related_name='alias_placeholder',
|
||||
null=True,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
app_label = 'cms'
|
||||
|
||||
def __str__(self):
|
||||
if self.plugin_id:
|
||||
return f"({force_str(self.plugin.get_plugin_name())}) {self.plugin.get_plugin_instance()[0]}"
|
||||
else:
|
||||
return force_str(self.alias_placeholder.get_label())
|
||||
|
||||
def get_aliased_placeholder_id(self):
|
||||
if self.plugin_id:
|
||||
placeholder_id = self.plugin.placeholder_id
|
||||
else:
|
||||
placeholder_id = self.alias_placeholder_id
|
||||
return placeholder_id
|
||||
|
||||
def is_recursive(self):
|
||||
placeholder_id = self.get_aliased_placeholder_id()
|
||||
|
||||
if not placeholder_id:
|
||||
return False
|
||||
|
||||
plugins = AliasPluginModel.objects.filter(
|
||||
plugin_type='AliasPlugin',
|
||||
placeholder_id=placeholder_id,
|
||||
)
|
||||
plugins = plugins.filter(
|
||||
Q(plugin=self) | Q(plugin__placeholder=self.placeholder_id) | Q(alias_placeholder=self.placeholder_id)
|
||||
)
|
||||
return plugins.exists()
|
||||
Loading…
Add table
Add a link
Reference in a new issue