| | 50 | ordering = models.IntegerField(_("Ordering"), default=0, help_text=_("Override alphabetical order in category display")) |
|---|
| | 51 | |
|---|
| | 52 | def _get_mainImage(self): |
|---|
| | 53 | img = False |
|---|
| | 54 | if self.images.count() > 0: |
|---|
| | 55 | img = self.images.order_by('sort')[0] |
|---|
| | 56 | else: |
|---|
| | 57 | if self.parent_id: |
|---|
| | 58 | img = self.parent.main_image |
|---|
| | 59 | |
|---|
| | 60 | if not img: |
|---|
| | 61 | #This should be a "Image Not Found" placeholder image |
|---|
| | 62 | try: |
|---|
| | 63 | img = CategoryImage.objects.filter(cagegory__isnull=True).order_by('sort')[0] |
|---|
| | 64 | except IndexError: |
|---|
| | 65 | import sys |
|---|
| | 66 | print >>sys.stderr, 'Warning: default category image not found - try syncdb' |
|---|
| | 67 | |
|---|
| | 68 | return img |
|---|
| | 69 | |
|---|
| | 70 | main_image = property(_get_mainImage) |
|---|
| | 179 | |
|---|
| | 180 | class CategoryImage(models.Model): |
|---|
| | 181 | """ |
|---|
| | 182 | A picture of an item. Can have many pictures associated with an item. |
|---|
| | 183 | Thumbnails are automatically created. |
|---|
| | 184 | """ |
|---|
| | 185 | category = models.ForeignKey(Category, null=True, blank=True, |
|---|
| | 186 | related_name="images", |
|---|
| | 187 | edit_inline=models.TABULAR, num_in_admin=3) |
|---|
| | 188 | picture = ImageWithThumbnailField(verbose_name=_('Picture'), upload_to=upload_dir(), |
|---|
| | 189 | name_field="_filename") #Media root is automatically prepended |
|---|
| | 190 | caption = models.CharField(_("Optional caption"), max_length=100, |
|---|
| | 191 | null=True, blank=True) |
|---|
| | 192 | sort = models.IntegerField(_("Sort Order"), core=True) |
|---|
| | 193 | |
|---|
| | 194 | def translated_caption(self, language_code=None): |
|---|
| | 195 | return lookup_translation(self, 'caption', language_code) |
|---|
| | 196 | |
|---|
| | 197 | def _get_filename(self): |
|---|
| | 198 | if self.category: |
|---|
| | 199 | return '%s-%s' % (self.category.slug, self.id) |
|---|
| | 200 | else: |
|---|
| | 201 | return 'default' |
|---|
| | 202 | _filename = property(_get_filename) |
|---|
| | 203 | |
|---|
| | 204 | def __unicode__(self): |
|---|
| | 205 | if self.category: |
|---|
| | 206 | return u"Image of Category %s" % self.category.slug |
|---|
| | 207 | elif self.caption: |
|---|
| | 208 | return u"Image with caption \"%s\"" % self.caption |
|---|
| | 209 | else: |
|---|
| | 210 | return u"%s" % self.picture |
|---|
| | 211 | |
|---|
| | 212 | class Meta: |
|---|
| | 213 | ordering = ['sort'] |
|---|
| | 214 | unique_together = (('category', 'sort'),) |
|---|
| | 215 | verbose_name = _("Category Image") |
|---|
| | 216 | verbose_name_plural = _("Category Images") |
|---|
| | 217 | |
|---|
| | 218 | class Admin: |
|---|
| | 219 | pass |
|---|
| | 220 | |
|---|
| | 221 | class CategoryImageTranslation(models.Model): |
|---|
| | 222 | """A specific language translation for a `CategoryImage`. This is intended for all descriptions which are not the |
|---|
| | 223 | default settings.LANGUAGE. |
|---|
| | 224 | """ |
|---|
| | 225 | categoryimage = models.ForeignKey(CategoryImage, edit_inline=models.STACKED, related_name="translations", num_in_admin=1) |
|---|
| | 226 | languagecode = models.CharField(_('language'), maxlength=10, choices=settings.LANGUAGES) |
|---|
| | 227 | caption = models.CharField(_("Translated Caption"), max_length=255, core=True) |
|---|
| | 228 | version = models.IntegerField(_('version'), default=1) |
|---|
| | 229 | active = models.BooleanField(_('active'), default=True) |
|---|
| | 230 | |
|---|
| | 231 | class Meta: |
|---|
| | 232 | verbose_name = _('Category Image Translation') |
|---|
| | 233 | verbose_name_plural = _('Category Image Translations') |
|---|
| | 234 | ordering = ('categoryimage', 'caption','languagecode') |
|---|
| | 235 | unique_together = ('categoryimage', 'languagecode', 'version') |
|---|
| | 236 | |
|---|
| | 237 | def __unicode__(self): |
|---|
| | 238 | return u"CategoryImageTranslation: [%s] (ver #%i) %s Name: %s" % (self.languagecode, self.version, self.categoryimage, self.name) |
|---|