diff options
Diffstat (limited to 'app/notes/models.py')
-rw-r--r-- | app/notes/models.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/notes/models.py b/app/notes/models.py new file mode 100644 index 0000000..76670f5 --- /dev/null +++ b/app/notes/models.py @@ -0,0 +1,48 @@ +import datetime + +from django.db import models +from django.urls import reverse +from django.utils import timezone +from django.utils.html import format_html, format_html_join + +from taggit.managers import TaggableManager +from utils.util import markdown_to_html + + +#class LuxProject(models.Model): + +class LuxNote(models.Model): + title = models.CharField(max_length=200) + url = models.CharField(max_length=400, blank=True, null=True) + description = models.TextField(blank=True, null=True) + body_markdown = models.TextField(null=True, blank=True) + body_html = models.TextField(blank=True) + date_created = models.DateTimeField(auto_now=True) + #project = models.ForeignKey(LuxProject, on_delete=models.SET_NULL, null=True, blank=True) + tags = TaggableManager(blank=True) + + class Meta: + ordering = ('-date_created',) + get_latest_by = 'date_created' + + def __str__(self): + return self.title + + def admin_link(self): + return format_html('<a href="%s">Visit Site</a>' % (self.url)) + admin_link.short_description = 'Link' + + def save(self, *args, **kwargs): + if self.body_markdown: + self.body_html = markdown_to_html(self.body_markdown) + super(LuxNote, self).save(*args, **kwargs) + + def admin_tags(self): + return format_html_join( + '\n', "<a href='/admin/links/link?tag={}'>{}</a>,", + ((tag.slug, tag.name) for tag in self.tags.all()) + ) + admin_tags.short_description = 'Tags' + + def get_absolute_url(self, *args, **kwargs): + return reverse('notes:note-edit', kwargs={"pk": self.pk}) |