annotate gpp/oembed/models.py @ 505:a5d11471d031

Refactor the logic in the rate limiter decorator. Check to see if the request was ajax, as the ajax view always returns 200. Have to decode the JSON response to see if an error occurred or not.
author Brian Neal <bgneal@gmail.com>
date Sat, 03 Dec 2011 19:13:38 +0000
parents 8fd4984d5c3b
children 368d731af479
rev   line source
bgneal@285 1 """
bgneal@285 2 Models for the oembed application.
bgneal@285 3 """
bgneal@285 4 import datetime
bgneal@285 5
bgneal@285 6 from django.db import models
bgneal@285 7
bgneal@285 8
bgneal@285 9 class Provider(models.Model):
bgneal@285 10 """
bgneal@285 11 This model described an oEmbed provider.
bgneal@285 12 """
bgneal@285 13 JSON, XML = range(2)
bgneal@285 14 FORMAT_CHOICES = (
bgneal@285 15 (JSON, "json"),
bgneal@285 16 (XML, "xml"),
bgneal@285 17 )
bgneal@285 18
bgneal@285 19 name = models.CharField(max_length=128)
bgneal@285 20 api_endpoint = models.URLField(max_length=255, verify_exists=False,
bgneal@285 21 verbose_name='API endpoint')
bgneal@285 22 url_regex = models.CharField(max_length=255, verbose_name='URL regex')
bgneal@285 23 format = models.IntegerField(choices=FORMAT_CHOICES)
bgneal@285 24
bgneal@285 25 def __unicode__(self):
bgneal@285 26 return self.name
bgneal@285 27
bgneal@285 28
bgneal@285 29 class Oembed(models.Model):
bgneal@285 30 """
bgneal@285 31 This model represents stored embedded content retrieved from an oEmbed
bgneal@285 32 provider.
bgneal@285 33 """
bgneal@285 34 PHOTO, VIDEO, LINK, RICH = range(4)
bgneal@285 35 MEDIA_TYPE_CHOICES = (
bgneal@285 36 (PHOTO, "photo"),
bgneal@285 37 (VIDEO, "video"),
bgneal@285 38 (LINK, "link"),
bgneal@285 39 (RICH, "rich"),
bgneal@285 40 )
bgneal@285 41
bgneal@285 42 url = models.URLField(max_length=255, verify_exists=False, db_index=True)
bgneal@285 43 type = models.IntegerField(choices=MEDIA_TYPE_CHOICES)
bgneal@285 44 title = models.CharField(max_length=255, blank=True, default='')
bgneal@285 45 width = models.IntegerField()
bgneal@285 46 height = models.IntegerField()
bgneal@285 47 html = models.TextField()
bgneal@285 48 date_added = models.DateTimeField()
bgneal@285 49
bgneal@285 50 def __unicode__(self):
bgneal@285 51 return self.title or self.url
bgneal@285 52
bgneal@285 53 def save(self, *args, **kwargs):
bgneal@285 54 if not self.pk:
bgneal@285 55 self.date_added = datetime.datetime.now()
bgneal@285 56
bgneal@285 57 super(Oembed, self).save(*args, **kwargs)
bgneal@285 58