view gpp/podcast/models.py @ 145:71cb4208dc98

Tweak to #30, admin dashboard. Because of a bug in Django (9568), my dashboard appears on the login page. To get around this, pass in the user to the templatetag, so it can do a 'if user.is_staff' check. Also tweaked the HTML and CSS to show non-zero pending items in red. Shortened the pending item titles for readability.
author Brian Neal <bgneal@gmail.com>
date Wed, 09 Dec 2009 00:03:10 +0000
parents 1ed461fd2030
children 76ad86454ce9
line wrap: on
line source
"""Models for the podcast application."""

from django.db import models

EXPLICIT_CHOICES = (
      ('yes', 'Yes'),
      ('no', 'No'),
      ('clean', 'Clean'),
   )


class Channel(models.Model):
   """Model to represent the Channel properties"""

   title = models.CharField(max_length=255)
   link = models.URLField(verify_exists=False)
   language = models.CharField(max_length=16)
   copyright = models.CharField(max_length=255)
   subtitle = models.CharField(max_length=255)
   author = models.CharField(max_length=64)
   description = models.CharField(max_length=255)
   owner_name = models.CharField(max_length=64)
   owner_email = models.EmailField()
   image = models.ImageField(upload_to='podcast')
   category = models.CharField(max_length=64)
   explicit = models.CharField(max_length=8, choices=EXPLICIT_CHOICES)
   keywords = models.CharField(max_length=255)

   def __unicode__(self):
      return self.title


class Item(models.Model):
   """Model to represent a channel item"""
   channel = models.ForeignKey(Channel)
   title = models.CharField(max_length=255)
   author = models.CharField(max_length=255)
   subtitle = models.CharField(max_length=255)
   summary = models.TextField()
   enclosure_url = models.URLField(verify_exists=False)
   alt_enclosure_url = models.URLField(verify_exists=False, blank=True)
   enclosure_length = models.IntegerField()
   enclosure_type = models.CharField(max_length=32)
   guid = models.CharField(max_length=255)
   pubdate = models.DateTimeField()
   duration = models.CharField(max_length=16)
   keywords = models.CharField(max_length=255)
   explicit = models.CharField(max_length=8, choices=EXPLICIT_CHOICES)

   @models.permalink
   def get_absolute_url(self):
      return ('podcast.views.detail', [str(self.id)])

   def __unicode__(self):
      return self.title

   class Meta:
      ordering = ('-pubdate', )