Site Sections: Satchmo Main | Wiki | Demo Store |

Changeset 905

Show
Ignore:
Timestamp:
11/28/2007 12:42:11 AM (2 years ago)
Author:
bkroeze
Message:

adding ordering and category images to categories

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • satchmo/trunk/satchmo/product/models.py

    r897 r905  
    4848    description = models.TextField(_("Description"), blank=True, 
    4949        help_text="Optional") 
     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) 
    5071 
    5172    def translated_description(self, language_code=None): 
     
    130151    class Admin: 
    131152        list_display = ('name', '_parents_repr') 
    132         ordering = ['parent', 'name'] 
    133  
    134     class Meta: 
    135         ordering = ['parent', 'name'] 
     153        ordering = ['parent', 'ordering', 'name'] 
     154 
     155    class Meta: 
     156        ordering = ['parent', 'ordering', 'name'] 
    136157        verbose_name = _("Category") 
    137158        verbose_name_plural = _("Categories") 
     
    156177    def __unicode__(self): 
    157178        return u"CategoryTranslation: [%s] (ver #%i) %s Name: %s" % (self.languagecode, self.version, self.category, self.name) 
     179 
     180class 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 
     221class 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) 
    158239 
    159240class OptionGroup(models.Model):