import datetime from django.contrib.gis.db import models from django.contrib.sitemaps import Sitemap from django.conf import settings import markdown def get_upload_path(self, filename): return "images/project-thumbs/%s/%s" % (datetime.datetime.today().strftime("%Y"), filename) def markdown_processor(md): html = markdown.markdown(md, safe_mode=False).split('') return html class Project(models.Model): title = models.CharField(max_length=200) subtitle = models.CharField(max_length=200, null=True, blank=True) slug = models.SlugField(unique_for_date='pub_date') lede = models.TextField(blank=True) pub_date = models.DateTimeField('Date published') PUB_STATUS = ( (0, 'Draft'), (1, 'Published'), ) status = models.IntegerField(choices=PUB_STATUS, default=0) image = models.FileField(upload_to=get_upload_path, null=True, blank=True) model_name = models.CharField(max_length=200, null=True) @property def longitude(self): '''Get the site's longitude.''' return self.point.x @property def latitude(self): '''Get the site's latitude.''' return self.point.y @property def get_project_image(self): return "%s%s" % (settings.IMAGES_URL, self.image.name[7:]) class Meta: ordering = ('-pub_date',) get_latest_by = 'pub_date' app_label = 'projects' def __str__(self): return self.title def get_absolute_url(self): return "/%s/%s/" % ('projects', self.slug) def get_previous_published(self): return self.get_previous_by_pub_date(status__exact=1) def get_next_published(self): return self.get_next_by_pub_date(status__exact=1) class ProjectSitemap(Sitemap): changefreq = "monthly" priority = 0.5 protocol = "https" def items(self): return Project.objects.filter(status=1) def lastmod(self, obj): return obj.pub_date