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'%s' % \ gremmie@1: (self.get_absolute_url(), self.title, self.title) gremmie@1: return u'' gremmie@1: html.allow_tags = True gremmie@1: