dynamicweb/cms/test_utils/project/placeholderapp/models.py

106 lines
3.3 KiB
Python

from functools import cached_property
from django.db import models
from django.urls import reverse
from cms.models import ContentAdminManager
from cms.models.fields import PlaceholderRelationField
from cms.utils import get_language_from_request
from cms.utils.placeholder import get_placeholder_from_slot
from cms.utils.urlutils import admin_reverse
def dynamic_placeholder_1(instance):
return instance.char_1
def dynamic_placeholder_2(instance):
return instance.char_2
class Example1(models.Model):
char_1 = models.CharField('char_1', max_length=255)
char_2 = models.CharField('char_2', max_length=255)
char_3 = models.CharField('char_3', max_length=255)
char_4 = models.CharField('char_4', max_length=255)
date_field = models.DateField(null=True)
placeholders = PlaceholderRelationField()
publish = models.BooleanField(default=True)
decimal_field = models.DecimalField(
max_digits=5, decimal_places=1,
blank=True, null=True,)
admin_manager = ContentAdminManager()
objects = models.Manager()
static_admin_url = ''
@cached_property
def placeholder(self):
return get_placeholder_from_slot(self.placeholders, "placeholder")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def callable_item(self, request):
return self.char_1
def __str__(self):
return self.char_1
def get_absolute_url(self):
return reverse("example_detail", args=(self.pk,))
def set_static_url(self, request):
language = get_language_from_request(request)
if self.pk:
self.static_admin_url = admin_reverse('placeholderapp_example1_edit_field', args=(self.pk, language))
return self.pk
def dynamic_url(self, request):
language = get_language_from_request(request)
return admin_reverse('placeholderapp_example1_edit_field', args=(self.pk, language))
class TwoPlaceholderExample(models.Model):
char_1 = models.CharField('char_1', max_length=255)
char_2 = models.CharField('char_2', max_length=255)
char_3 = models.CharField('char_3', max_length=255)
char_4 = models.CharField('char_4', max_length=255)
placeholders = PlaceholderRelationField()
@cached_property
def placeholder_1(self):
return get_placeholder_from_slot(self.placeholders, "placeholder_1")
@cached_property
def placeholder_2(self):
return get_placeholder_from_slot(self.placeholders, "placeholder_2")
class DynamicPlaceholderSlotExample(models.Model):
char_1 = models.CharField('char_1', max_length=255)
char_2 = models.CharField('char_2', max_length=255)
placeholders = PlaceholderRelationField()
@cached_property
def placeholder_1(self):
return get_placeholder_from_slot(self.placeholders, dynamic_placeholder_1(self))
@cached_property
def placeholder_2(self):
return get_placeholder_from_slot(self.placeholders, dynamic_placeholder_2(self))
class CharPksExample(models.Model):
char_1 = models.CharField('char_1', max_length=255)
slug = models.SlugField('char_1', max_length=255, primary_key=True)
@cached_property
def placeholder_1(self):
return get_placeholder_from_slot(self.placeholders, "placeholder_1")
def __str__(self):
return f"{self.char_1} - {self.pk}"