hero_slider.models: 21 total statements, 100.0% covered

Generated: Thu 2013-04-18 14:15 SGT

Source file: /Users/martin/Repos/django-hero-slider/hero_slider/models.py

Stats: 14 executed, 0 missed, 7 excluded, 47 ignored

  1. """Models for the ``hero_slider`` app."""
  2. from django.contrib.contenttypes import generic
  3. from django.contrib.contenttypes.models import ContentType
  4. from django.db import models
  5. from django.utils.translation import get_language
  6. from django.utils.translation import ugettext_lazy as _
  7. from simple_translation.utils import get_preferred_translation_from_lang
  8. from filer.fields.file import FilerFileField
  9. class SliderItem(models.Model):
  10. """
  11. Resembles an item that should be shown on the front page in a slider.
  12. For translateable fields see the ``SliderItemTitle`` model.
  13. :image: A filer file. This will be the image shown in the slider.
  14. :position: Can be set in order to control the ordering of the slider items.
  15. :content_type: The contenttype of the object this slider item links to.
  16. :object_id: The PK of the object this slider item links to.
  17. """
  18. image = FilerFileField(
  19. verbose_name=_('Image'),
  20. )
  21. position = models.PositiveIntegerField(
  22. verbose_name=_('Position'),
  23. null=True, blank=True,
  24. )
  25. # Generic foreign key
  26. content_type = models.ForeignKey(ContentType)
  27. object_id = models.PositiveIntegerField()
  28. content_object = generic.GenericForeignKey('content_type', 'object_id')
  29. def get_trans(self):
  30. """Returns the translation object for this slider item."""
  31. lang = get_language()
  32. return get_preferred_translation_from_lang(self, lang)
  33. class SliderItemTitle(models.Model):
  34. """
  35. Translateable fields of the ``SliderItem`` model.
  36. :title: The title of this slider item.
  37. :description: A short description of this slider item.
  38. """
  39. title = models.CharField(
  40. max_length=256,
  41. verbose_name=_('Title'),
  42. blank=True,
  43. )
  44. description = models.CharField(
  45. max_length=512,
  46. verbose_name=_('Description'),
  47. blank=True,
  48. )
  49. # Needed by simple-translation
  50. slider_item = models.ForeignKey(SliderItem, verbose_name=_('Slider item'))
  51. language = models.CharField(max_length=2, verbose_name=_('Language'))