annotate gpp/smiley/models.py @ 45:a5b4c5ce0658

Breaking down and controlling all media files, including javascript libraries.
author Brian Neal <bgneal@gmail.com>
date Fri, 19 Jun 2009 03:16:03 +0000
parents 8eb9b8d014a2
children 3ae999b0c53b
rev   line source
gremmie@1 1 """
gremmie@1 2 Models for the smiley application.
gremmie@1 3 """
gremmie@1 4 from django.db import models
gremmie@1 5
gremmie@1 6
gremmie@1 7 class SmileyManager(models.Manager):
gremmie@1 8 smiley_map = None
gremmie@1 9 smilies = None
gremmie@1 10
gremmie@1 11 def get_smiley_map(self):
gremmie@1 12 if self.smiley_map is None:
gremmie@1 13 smilies = self.all()
gremmie@1 14 self.smiley_map = {}
gremmie@1 15 for s in smilies:
gremmie@1 16 self.smiley_map[s.code] = s.html()
gremmie@1 17 return self.smiley_map
gremmie@1 18
gremmie@1 19 def get_smilies(self):
gremmie@1 20 if self.smilies is None:
gremmie@1 21 self.smilies = self.all()
gremmie@1 22 return self.smilies
gremmie@1 23
gremmie@1 24 def clear_cache(self):
gremmie@1 25 self.smiley_map = None
bgneal@17 26 self.smilies = None
gremmie@1 27
gremmie@1 28
gremmie@1 29 class Smiley(models.Model):
gremmie@1 30 image = models.ImageField(upload_to='smiley/images/')
gremmie@1 31 title = models.CharField(max_length=32)
gremmie@1 32 code = models.CharField(max_length=32)
gremmie@1 33
gremmie@1 34 objects = SmileyManager()
gremmie@1 35
gremmie@1 36 class Meta:
gremmie@1 37 verbose_name_plural = 'Smilies'
gremmie@1 38 ordering = ('title', )
gremmie@1 39
gremmie@1 40 def __unicode__(self):
gremmie@1 41 return self.title
gremmie@1 42
gremmie@1 43 def get_absolute_url(self):
gremmie@1 44 return self.image.url
gremmie@1 45
gremmie@1 46 def html(self):
gremmie@1 47 if self.image:
gremmie@1 48 return u'<img src="%s" alt="%s" title="%s" />' % \
gremmie@1 49 (self.get_absolute_url(), self.title, self.title)
gremmie@1 50 return u''
gremmie@1 51 html.allow_tags = True
gremmie@1 52