bgneal@285: """ bgneal@285: Models for the oembed application. bgneal@285: """ bgneal@285: import datetime bgneal@285: bgneal@285: from django.db import models bgneal@285: bgneal@285: bgneal@285: class Provider(models.Model): bgneal@285: """ bgneal@285: This model described an oEmbed provider. bgneal@285: """ bgneal@285: JSON, XML = range(2) bgneal@285: FORMAT_CHOICES = ( bgneal@285: (JSON, "json"), bgneal@285: (XML, "xml"), bgneal@285: ) bgneal@285: bgneal@285: name = models.CharField(max_length=128) bgneal@572: api_endpoint = models.URLField(max_length=255, verbose_name='API endpoint') bgneal@285: url_regex = models.CharField(max_length=255, verbose_name='URL regex') bgneal@285: format = models.IntegerField(choices=FORMAT_CHOICES) bgneal@285: bgneal@285: def __unicode__(self): bgneal@285: return self.name bgneal@285: bgneal@285: bgneal@285: class Oembed(models.Model): bgneal@285: """ bgneal@285: This model represents stored embedded content retrieved from an oEmbed bgneal@285: provider. bgneal@285: """ bgneal@285: PHOTO, VIDEO, LINK, RICH = range(4) bgneal@285: MEDIA_TYPE_CHOICES = ( bgneal@285: (PHOTO, "photo"), bgneal@285: (VIDEO, "video"), bgneal@285: (LINK, "link"), bgneal@285: (RICH, "rich"), bgneal@285: ) bgneal@1154: ALLOWED_TYPES = set(choice[1] for choice in MEDIA_TYPE_CHOICES) bgneal@1154: MEDIA_TYPE_REVERSE = {choice[1]: choice[0] for choice in MEDIA_TYPE_CHOICES} bgneal@285: bgneal@572: url = models.URLField(max_length=255, db_index=True) bgneal@285: type = models.IntegerField(choices=MEDIA_TYPE_CHOICES) bgneal@285: title = models.CharField(max_length=255, blank=True, default='') bgneal@285: width = models.IntegerField() bgneal@285: height = models.IntegerField() bgneal@285: html = models.TextField() bgneal@285: date_added = models.DateTimeField() bgneal@285: bgneal@285: def __unicode__(self): bgneal@911: desc = self.title if self.title else self.url bgneal@911: return u"".format(self.pk, desc) bgneal@285: bgneal@285: def save(self, *args, **kwargs): bgneal@285: if not self.pk: bgneal@285: self.date_added = datetime.datetime.now() bgneal@285: bgneal@285: super(Oembed, self).save(*args, **kwargs) bgneal@285: