Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

abstract_models.py 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """
  2. Abstract models for product images
  3. """
  4. from django.db import models
  5. from django.utils.translation import ugettext as _
  6. from django.conf import settings
  7. try:
  8. FOLDER = settings.OSCAR_IMAGE_FOLDER
  9. except AttributeError:
  10. FOLDER = 'images/products/%Y/%m/'
  11. class AbstractImage(models.Model):
  12. u"""An image of a product"""
  13. product = models.ForeignKey('product.Item', related_name='images')
  14. original = models.ImageField(upload_to=FOLDER)
  15. caption = models.CharField(_("Caption"), max_length=200, blank=True, null=True)
  16. # Use display_order to determine which is the "primary" image
  17. display_order = models.PositiveIntegerField(default=0, help_text="""An image with a display order of
  18. zero will be the primary image for a product""")
  19. date_created = models.DateTimeField(auto_now_add=True)
  20. class Meta:
  21. abstract = True
  22. unique_together = ("product", "display_order")
  23. ordering = ["display_order"]
  24. def __unicode__(self):
  25. return u"Image of '%s'" % self.product
  26. def is_primary(self):
  27. u"""Return bool if image display order is 0"""
  28. return self.display_order == 0
  29. def resized_image_url(self, width=None, height=None, **kwargs):
  30. return self.original.url
  31. def fullsize_url(self):
  32. u"""
  33. Returns the URL path for this image. This is intended
  34. to be overridden in subclasses that want to serve
  35. images in a specific way.
  36. """
  37. return self.resized_image_url()
  38. def thumbnail_url(self):
  39. return self.resized_image_url()