annotate oembed/models.py @ 953:8647a669edb4

Fix excessive cache usage for forum date/times. Issue #84. Hitting the cache 30+ times while browsing the forums to adjust all the dates/times into the user's time zone. Just hit the user's profile and be done with it. It should be loaded.
author Brian Neal <bgneal@gmail.com>
date Tue, 19 May 2015 21:08:45 -0500
parents d3f6e9cb1f39
children 4da4e32b314c
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@911 50 desc = self.title if self.title else self.url
bgneal@911 51 return u"<oembed {}: {}>".format(self.pk, desc)
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