Files @ 8e6ea8ad71bf
Branch filter:

Location: website/www/conservancy/apps/blog/

Applications directory from SFLC website; About to adapt it for Conservancy website to run on its own
from django.db import models
from django.conf import settings
from sflc.apps.staff.models import Person
from datetime import datetime, timedelta

class EntryTag(models.Model):
    """Tagging for blog entries"""

    label = models.CharField(max_length=100)
    slug = models.SlugField()

    class Meta:
        db_table = 'techblog_entrytag' # legacy

    def __unicode__(self):
        return self.label

    def get_absolute_url(self):
        return u"/blog/?tag=%s" % self.slug

class Entry(models.Model):
    """Blog entry"""

    headline = models.CharField(max_length=200)
    slug = models.SlugField(unique_for_date='pub_date')
    summary = models.TextField(help_text="Use raw HTML.  Unlike in the press release model, this summary is not included at the beginning of the body when the entry is displayed.")
    body = models.TextField(help_text="Use raw HTML.  Include the full body of the post.")
    pub_date = models.DateTimeField()
    author = models.ForeignKey(Person)
    tags = models.ManyToManyField(EntryTag, null=True, blank=True)

    date_created = models.DateTimeField(auto_now_add=True)
    date_last_modified = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'techblog_entries' # legacy
        verbose_name_plural = 'entries'
        ordering = ('-pub_date',)
        get_latest_by = 'pub_date'

    def __unicode__(self):
        return self.headline

    def get_absolute_url(self):
        return (u"/blog/%s/%s/"
                % (self.pub_date.strftime("%Y/%b/%d").lower(),

    def is_recent(self):
        return self.pub_date > ( - timedelta(days=14))
        # question: does do a syscall each time is it called?

    # Ping google blogs and technorati.  Taken from
    def save(self):
        if settings.SFLC_DEVEL or True: # "or True" means it is disabled always
            super(Entry, self).save()

        blog_name = 'Software Freedom Law Center Blog'
        blog_url =  ''
        post_url = (''
                    + self.get_absolute_url())

        import xmlrpclib

        # Ping Technorati
        j = xmlrpclib.Server('')
        reply =, blog_url)

        # Ping Google Blog Search
        j = xmlrpclib.Server('')
        reply =, blog_url, post_url)

        # Call any superclass's method
        super(Entry, self).save()