X-Git-Url: https://git.p6c8.net/pcdenotes.git/blobdiff_plain/41cbbf03fd231637646702e6445eaf9ebfa2c770..47224b91ae3e01117f734fe9e22067c22e882b88:/notes/models.py?ds=inline diff --git a/notes/models.py b/notes/models.py index a3fe24e..f5ab091 100644 --- a/notes/models.py +++ b/notes/models.py @@ -1,9 +1,14 @@ from django.db import models from django.db.models import Count from django.db.models.functions import ExtractYear, ExtractMonth +from django.db.models.signals import pre_save + +from django.dispatch import receiver from django.contrib.auth.models import User from django.urls import reverse +from datetime import datetime + # Create your models here. NOTE_STATUS = ((0, "Draft"), @@ -40,6 +45,7 @@ class Note(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) + published_at = models.DateTimeField(null=True, editable=False) objects = NoteManager() @@ -56,4 +62,21 @@ class Note(models.Model): return self.status == 0 def is_published(self): - return self.status == 1 \ No newline at end of file + return self.status == 1 + + def publication_date(self): + if self.published_at is None: + return self.created_at + else: + return self.published_at + +@receiver(pre_save, sender=Note) +def note_pre_save(sender, instance, **kwargs): + if instance.pk is None: + if instance.status == 1: + instance.published_at = datetime.now() + else: + old_instance = Note.objects.get(pk=instance.pk) + + if old_instance.status == 0 and instance.status == 1: + instance.published_at = datetime.now() \ No newline at end of file