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

abstract_models.py 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. FOLDER = settings.OSCAR_IMAGE_FOLDER
  8. class AbstractImage(models.Model):
  9. u"""An image of a product"""
  10. product = models.ForeignKey('product.Item', related_name='images')
  11. original = models.ImageField(upload_to=FOLDER)
  12. caption = models.CharField(_("Caption"), max_length=200, blank=True, null=True)
  13. # Use display_order to determine which is the "primary" image
  14. display_order = models.PositiveIntegerField(default=0, help_text="""An image with a display order of
  15. zero will be the primary image for a product""")
  16. date_created = models.DateTimeField(auto_now_add=True)
  17. class Meta:
  18. abstract = True
  19. unique_together = ("product", "display_order")
  20. ordering = ["display_order"]
  21. def __unicode__(self):
  22. return u"Image of '%s'" % self.product
  23. def is_primary(self):
  24. u"""Return bool if image display order is 0"""
  25. return self.display_order == 0
  26. def resized_image_url(self, width=None, height=None, **kwargs):
  27. return self.original.url
  28. def fullsize_url(self):
  29. u"""
  30. Returns the URL path for this image. This is intended
  31. to be overridden in subclasses that want to serve
  32. images in a specific way.
  33. """
  34. return self.resized_image_url()
  35. def thumbnail_url(self):
  36. return self.resized_image_url()