gremmie@1: """
gremmie@1: Models for the smiley application.
gremmie@1: """
gremmie@1: from django.db import models
gremmie@1: 
gremmie@1: 
gremmie@1: class SmileyManager(models.Manager):
gremmie@1:     smiley_map = None
gremmie@1:     smilies = None
gremmie@1: 
gremmie@1:     def get_smiley_map(self):
gremmie@1:         if self.smiley_map is None:
gremmie@1:             smilies = self.all()
gremmie@1:             self.smiley_map = {}
gremmie@1:             for s in smilies:
gremmie@1:                 self.smiley_map[s.code] = s.html()
gremmie@1:         return self.smiley_map
gremmie@1: 
gremmie@1:     def get_smilies(self):
gremmie@1:         if self.smilies is None:
gremmie@1:             self.smilies = self.all()
gremmie@1:         return self.smilies
gremmie@1: 
gremmie@1:     def clear_cache(self):
gremmie@1:         self.smiley_map = None
gremmie@1:         self.smileis = None
gremmie@1: 
gremmie@1: 
gremmie@1: class Smiley(models.Model):
gremmie@1:     image = models.ImageField(upload_to='smiley/images/')
gremmie@1:     title = models.CharField(max_length=32)
gremmie@1:     code = models.CharField(max_length=32)
gremmie@1: 
gremmie@1:     objects = SmileyManager()
gremmie@1: 
gremmie@1:     class Meta:
gremmie@1:         verbose_name_plural = 'Smilies'
gremmie@1:         ordering = ('title', )
gremmie@1: 
gremmie@1:     def __unicode__(self):
gremmie@1:         return self.title
gremmie@1: 
gremmie@1:     def get_absolute_url(self):
gremmie@1:         return self.image.url
gremmie@1: 
gremmie@1:     def html(self):
gremmie@1:         if self.image:
gremmie@1:             return u'<img src="%s" alt="%s" title="%s" />' % \
gremmie@1:                     (self.get_absolute_url(), self.title, self.title)
gremmie@1:         return u''
gremmie@1:     html.allow_tags = True
gremmie@1: