cms.models.titlemodels: 57 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/cms/models/titlemodels.py

Stats: 0 executed, 49 missed, 8 excluded, 24 ignored

  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from cms.models.managers import TitleManager
  5. from cms.models.pagemodel import Page
  6. from cms.utils.helpers import reversion_register
  7. from cms.utils import timezone
  8. class Title(models.Model):
  9. language = models.CharField(_("language"), max_length=15, db_index=True)
  10. title = models.CharField(_("title"), max_length=255)
  11. menu_title = models.CharField(_("title"), max_length=255, blank=True, null=True, help_text=_("overwrite the title in the menu"))
  12. slug = models.SlugField(_("slug"), max_length=255, db_index=True, unique=False)
  13. path = models.CharField(_("Path"), max_length=255, db_index=True)
  14. has_url_overwrite = models.BooleanField(_("has url overwrite"), default=False, db_index=True, editable=False)
  15. application_urls = models.CharField(_('application'), max_length=200, blank=True, null=True, db_index=True)
  16. redirect = models.CharField(_("redirect"), max_length=255, blank=True, null=True)
  17. meta_description = models.TextField(_("description"), max_length=255, blank=True, null=True)
  18. meta_keywords = models.CharField(_("keywords"), max_length=255, blank=True, null=True)
  19. page_title = models.CharField(_("title"), max_length=255, blank=True, null=True, help_text=_("overwrite the title (html title tag)"))
  20. page = models.ForeignKey(Page, verbose_name=_("page"), related_name="title_set")
  21. creation_date = models.DateTimeField(_("creation date"), editable=False, default=timezone.now)
  22. objects = TitleManager()
  23. class Meta:
  24. unique_together = (('language', 'page'),)
  25. app_label = 'cms'
  26. def __unicode__(self):
  27. return "%s (%s)" % (self.title, self.slug)
  28. def save(self, *args, **kwargs):
  29. # Update the path attribute before saving
  30. self.update_path()
  31. super(Title, self).save(*args, **kwargs)
  32. def update_path(self):
  33. # Build path from parent page's path and slug
  34. current_path = self.path
  35. parent_page = self.page.parent
  36. slug = u'%s' % self.slug
  37. if not self.has_url_overwrite:
  38. self.path = u'%s' % slug
  39. if parent_page:
  40. parent_title = Title.objects.get_title(parent_page, language=self.language, language_fallback=True)
  41. if parent_title:
  42. self.path = u'%s/%s' % (parent_title.path, slug)
  43. @property
  44. def overwrite_url(self):
  45. """Return overrwriten url, or None
  46. """
  47. if self.has_url_overwrite:
  48. return self.path
  49. return None
  50. class EmptyTitle(object):
  51. """Empty title object, can be returned from Page.get_title_obj() if required
  52. title object doesn't exists.
  53. """
  54. title = ""
  55. slug = ""
  56. path = ""
  57. meta_description = ""
  58. meta_keywords = ""
  59. redirect = ""
  60. has_url_overwite = False
  61. application_urls = ""
  62. menu_title = ""
  63. page_title = ""
  64. @property
  65. def overwrite_url(self):
  66. return None
  67. reversion_register(Title)