diff options
Diffstat (limited to 'app/planner/models.py')
-rw-r--r-- | app/planner/models.py | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/app/planner/models.py b/app/planner/models.py index df162c7..b9d06cf 100644 --- a/app/planner/models.py +++ b/app/planner/models.py @@ -15,7 +15,7 @@ from django.contrib.sitemaps import Sitemap from django import forms from django.template.defaultfilters import slugify -from locations.models import Location +from locations.models import Location, State from utils.util import render_images, render_products, parse_video, markdown_to_html, extract_main_image @@ -107,3 +107,41 @@ class Camp(models.Model): self.slug = slugify(self.name) self.notes_html = markdown_to_html(self.notes) super(Camp, self).save(*args, **kwargs) + + +class CampIdea(models.Model): + name = models.CharField(max_length=200) + slug = models.SlugField(blank=True, null=True) + point = models.PointField(null=True, blank=True) + notes = models.TextField(null=True, blank=True) + notes_html = models.TextField(null=True, blank=True) + state = models.CharField(max_length=40) + date_added = models.DateField(auto_now_add=True) + + class Meta: + ordering = ('date_added',) + get_latest_by = 'date_added' + + def __str__(self): + return self.name + + def save(self, *args, **kwargs): + created = self.pk is None + if created: + self.state = State.objects.filter(geometry__contains=self.point).get().name + if not self.slug: + self.slug = slugify(self.name) + self.notes_html = markdown_to_html(self.notes) + super(CampIdea, self).save(*args, **kwargs) + + @property + def longitude(self): + '''Get the site's longitude.''' + if self.point: + return self.point.x + + @property + def latitude(self): + '''Get the site's latitude.''' + if self.point: + return self.point.y |