43 lines
1.3 KiB
Python
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)
|