import datetime from django.contrib.gis.db import models from django.conf import settings from django.contrib.syndication.feeds import Feed from django.contrib.sitemaps import Sitemap from django.template.defaultfilters import truncatewords_html import markdown2 as markdown from tagging.fields import TagField from tagging.models import Tag from photos.models import PhotoGallery from locations.models import Location,Region #from locations.signals import create_location_item def get_upload_path(self, filename): return "images/post-thumbs/heloo/%s/%s" %(datetime.datetime.today().strftime("%Y"), filename) def markdown_processor(md): processed = markdown.markdown(md, safe_mode = False).split('') html = processed[0]+processed[1] lede = processed[0] return html, lede class PostImage(models.Model): title = models.CharField(max_length=100) image = models.ImageField(upload_to="%s%s" %(settings.IMAGES_ROOT, datetime.datetime.today().strftime("%Y"))) def __unicode__(self): return self.title def output_tags(self): return force_unicode('%s' % \ (settings.IMAGES_URL, self.image.url.split('images')[1].split('/',1)[1], self.title)) class Entry(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique_for_date='pub_date') lede = models.TextField(blank=True) body_html = models.TextField(blank=True) body_markdown = models.TextField() dek = models.TextField(null=True,blank=True) pub_date = models.DateTimeField('Date published') tags = TagField() enable_comments = models.BooleanField(default=True) point = models.PointField(null=True) location = models.ForeignKey(Location, null=True) region = models.ForeignKey(Region, null=True) PUB_STATUS = ( (0, 'Draft'), (1, 'Published'), ) status = models.IntegerField(choices=PUB_STATUS, default=0) photo_gallery = models.ForeignKey(PhotoGallery, blank=True, null=True, verbose_name='photo set') thumbnail = models.FileField(upload_to=get_upload_path, null=True,blank=True) class Meta: ordering = ('-pub_date',) get_latest_by = 'pub_date' verbose_name_plural = 'entries' def __unicode__(self): return self.title def get_absolute_url(self): return "/%s/%s/" % (self.pub_date.strftime("%Y/%b/%d").lower(), 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) def get_tags(self): return Tag.objects.get_for_object(self) def comment_period_open(self): return self.enable_comments and datetime.datetime.today() - datetime.timedelta(30) <= self.pub_date def get_thumbnail_url(self): return '%s%s' %(settings.IMAGES_URL, self.thumbnail.url[33:]) def save(self): html,lede = markdown_processor(self.body_markdown) self.body_html = html self.lede = lede self.dek == markdown.markdown(self.dek, safe_mode = False) super(Entry, self).save() class BlogSitemap(Sitemap): changefreq = "never" priority = 1.0 def items(self): return Entry.objects.filter(status=1) def lastmod(self, obj): return obj.pub_date class LatestFull(Feed): title = "Luxagraf: Topographical Writings" link = "/writing/" description = "Latest postings to luxagraf.net" description_template = 'feeds/blog_description.html' def items(self): return Entry.objects.filter(status__exact=1).order_by('-pub_date')[:10] #signals.post_save.connect(create_location_item, sender=Entry)