annotate oembed/models.py @ 887:9a15f7c27526

Actually save model object upon change. This commit was tested on the comments model. Additional logging added. Added check for Markdown image references. Added TODOs after observing behavior on comments.
author Brian Neal <bgneal@gmail.com>
date Tue, 03 Feb 2015 21:09:44 -0600
parents ee87ea74d46b
children d3f6e9cb1f39
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@572 20 api_endpoint = models.URLField(max_length=255, verbose_name='API endpoint')
bgneal@285 21 url_regex = models.CharField(max_length=255, verbose_name='URL regex')
bgneal@285 22 format = models.IntegerField(choices=FORMAT_CHOICES)
bgneal@285 23
bgneal@285 24 def __unicode__(self):
bgneal@285 25 return self.name
bgneal@285 26
bgneal@285 27
bgneal@285 28 class Oembed(models.Model):
bgneal@285 29 """
bgneal@285 30 This model represents stored embedded content retrieved from an oEmbed
bgneal@285 31 provider.
bgneal@285 32 """
bgneal@285 33 PHOTO, VIDEO, LINK, RICH = range(4)
bgneal@285 34 MEDIA_TYPE_CHOICES = (
bgneal@285 35 (PHOTO, "photo"),
bgneal@285 36 (VIDEO, "video"),
bgneal@285 37 (LINK, "link"),
bgneal@285 38 (RICH, "rich"),
bgneal@285 39 )
bgneal@285 40
bgneal@572 41 url = models.URLField(max_length=255, db_index=True)
bgneal@285 42 type = models.IntegerField(choices=MEDIA_TYPE_CHOICES)
bgneal@285 43 title = models.CharField(max_length=255, blank=True, default='')
bgneal@285 44 width = models.IntegerField()
bgneal@285 45 height = models.IntegerField()
bgneal@285 46 html = models.TextField()
bgneal@285 47 date_added = models.DateTimeField()
bgneal@285 48
bgneal@285 49 def __unicode__(self):
bgneal@285 50 return self.title or self.url
bgneal@285 51
bgneal@285 52 def save(self, *args, **kwargs):
bgneal@285 53 if not self.pk:
bgneal@285 54 self.date_added = datetime.datetime.now()
bgneal@285 55
bgneal@285 56 super(Oembed, self).save(*args, **kwargs)
bgneal@285 57