view gpp/oembed/models.py @ 348:d1b11096595b

Fix #168; when nailing a spammer, clear their profile text fields. Guard against topics and forums that don't exist when deleting posts in the signal handler. Make the forum stats template tag only display the latest active users.
author Brian Neal <bgneal@gmail.com>
date Wed, 02 Mar 2011 02:18:28 +0000
parents 8fd4984d5c3b
children 368d731af479
line wrap: on
line source
"""
Models for the oembed application.
"""
import datetime

from django.db import models


class Provider(models.Model):
    """
    This model described an oEmbed provider.
    """
    JSON, XML = range(2)
    FORMAT_CHOICES = (
        (JSON, "json"),
        (XML, "xml"),
    )

    name = models.CharField(max_length=128)
    api_endpoint = models.URLField(max_length=255, verify_exists=False,
            verbose_name='API endpoint')
    url_regex = models.CharField(max_length=255, verbose_name='URL regex')
    format = models.IntegerField(choices=FORMAT_CHOICES)

    def __unicode__(self):
        return self.name


class Oembed(models.Model):
    """
    This model represents stored embedded content retrieved from an oEmbed
    provider.
    """
    PHOTO, VIDEO, LINK, RICH = range(4)
    MEDIA_TYPE_CHOICES = (
        (PHOTO, "photo"),
        (VIDEO, "video"),
        (LINK, "link"),
        (RICH, "rich"),
    )

    url = models.URLField(max_length=255, verify_exists=False, db_index=True)
    type = models.IntegerField(choices=MEDIA_TYPE_CHOICES)
    title = models.CharField(max_length=255, blank=True, default='')
    width = models.IntegerField()
    height = models.IntegerField()
    html = models.TextField()
    date_added = models.DateTimeField()

    def __unicode__(self):
        return self.title or self.url

    def save(self, *args, **kwargs):
        if not self.pk:
            self.date_added = datetime.datetime.now()

        super(Oembed, self).save(*args, **kwargs)