"""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']