from django import forms from django.contrib.gis.db import models from django.utils import timezone from django.conf import settings from django.urls import reverse from locations.models import Location from locations.models import CheckIn from utils.util import markdown_to_html, render_images class Note(models.Model): title = models.CharField(max_length=250, null=True, blank=True) slug = models.SlugField(unique_for_date='pub_date', blank=True) pub_date = models.DateTimeField(default=timezone.now) body_html = models.TextField(blank=True) body_markdown = models.TextField('Note') def __str__(self): return self.title def get_absolute_url(self): return reverse("notes:detail", kwargs={"year": self.pub_date.year, "month": self.pub_date.strftime("%m"), "slug": self.slug}) @property def region(self): return self.location.state.country.lux_region @property def longitude(self): '''Get the site's longitude.''' return round(self.point.x, 2) @property def latitude(self): '''Get the site's latitude.''' return round(self.point.y, 2) @property def get_previous_published(self): return self.get_previous_by_pub_date() @property def get_next_published(self): return self.get_next_by_pub_date() def save(self, *args, **kwargs): md = render_images(self.body_markdown) self.body_html = markdown_to_html(md) super(Note, self).save()