47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""CMS réutilisable : contenus, pages libres et blocs réordonnables."""
|
|
from django.db import models
|
|
|
|
|
|
class SiteContent(models.Model):
|
|
key = models.CharField(max_length=100, primary_key=True)
|
|
value = models.TextField(blank=True)
|
|
modified_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
ordering = ['key']
|
|
|
|
|
|
class SitePage(models.Model):
|
|
slug = models.SlugField(max_length=80, unique=True)
|
|
title = models.CharField(max_length=200)
|
|
description = models.CharField(max_length=500, blank=True)
|
|
nav_label = models.CharField(max_length=100, blank=True)
|
|
position = models.PositiveIntegerField(default=0)
|
|
published = models.BooleanField(default=True)
|
|
show_in_nav = models.BooleanField(default=True)
|
|
|
|
class Meta:
|
|
ordering = ['position', 'pk']
|
|
|
|
|
|
class SiteBlock(models.Model):
|
|
class Kind(models.TextChoices):
|
|
HEADING = 'heading', 'Titre'
|
|
TEXT = 'text', 'Texte'
|
|
IMAGE = 'image', 'Image'
|
|
BUTTON = 'button', 'Bouton'
|
|
|
|
# "home" = accueil ; "presentation", etc. = chemins existants ;
|
|
# les pages libres utilisent leur slug.
|
|
page_slug = models.SlugField(max_length=80, db_index=True)
|
|
kind = models.CharField(max_length=16, choices=Kind.choices, default=Kind.TEXT)
|
|
title = models.CharField(max_length=250, blank=True)
|
|
body = models.TextField(blank=True)
|
|
image = models.CharField(max_length=1200, blank=True)
|
|
url = models.CharField(max_length=1200, blank=True)
|
|
position = models.PositiveIntegerField(default=0)
|
|
published = models.BooleanField(default=True)
|
|
|
|
class Meta:
|
|
ordering = ['position', 'pk']
|