prelom/django/cms/models.py

43 lines
1.3 KiB
Python

from django.db import models
from django.urls import reverse
from imagekit.models import ProcessedImageField
from imagekit.processors import ResizeToFill
from martor.models import MartorField
from martor.utils import markdownify
class Page(models.Model):
title = models.CharField(max_length=100, blank=True)
subtitle = models.TextField(blank=True)
content = MartorField(blank=True)
formatted_content = models.TextField(editable=False)
slug = models.SlugField(blank=True, unique=True)
last_modified = models.DateField(auto_now=True)
is_static = models.BooleanField(default=True,
help_text='Ignore this. For sitemap usage only'
)
published = models.BooleanField(default=True)
image = ProcessedImageField(
upload_to='pages',
processors=[ResizeToFill(540, 360)],
format='JPEG',
options={'quality': 100},
help_text="Resized to 540x360.",
blank=True,
null=True
)
def __str__(self):
return self.title
def get_absolute_url(self):
if self.slug:
return reverse('page', args=[self.slug])
else:
return '/'
def save(self, *args, **kwargs):
self.formatted_content = markdownify(self.content)
super().save(*args, **kwargs)