cms.plugins.text.models: 35 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/plugins/text/models.py

Stats: 0 executed, 26 missed, 9 excluded, 28 ignored

  1. from cms.models import CMSPlugin
  2. from cms.plugins.text.utils import (plugin_admin_html_to_tags,
  3. plugin_tags_to_admin_html, plugin_tags_to_id_list, replace_plugin_tags)
  4. from cms.utils.html import clean_html
  5. from django.db import models
  6. from django.utils.html import strip_tags
  7. from django.utils.text import truncate_words
  8. from django.utils.translation import ugettext_lazy as _
  9. _old_tree_cache = {}
  10. class AbstractText(CMSPlugin):
  11. """Abstract Text Plugin Class"""
  12. body = models.TextField(_("body"))
  13. class Meta:
  14. abstract = True
  15. def _set_body_admin(self, text):
  16. self.body = plugin_admin_html_to_tags(text)
  17. def _get_body_admin(self):
  18. return plugin_tags_to_admin_html(self.body)
  19. body_for_admin = property(_get_body_admin, _set_body_admin, None,
  20. """
  21. body attribute, but with transformations
  22. applied to allow editing in the
  23. admin. Read/write.
  24. """)
  25. search_fields = ('body',)
  26. def __unicode__(self):
  27. return u"%s" % (truncate_words(strip_tags(self.body), 3)[:30]+"...")
  28. def clean(self):
  29. self.body = clean_html(self.body, full=False)
  30. def clean_plugins(self):
  31. ids = plugin_tags_to_id_list(self.body)
  32. plugins = CMSPlugin.objects.filter(parent=self)
  33. for plugin in plugins:
  34. if not plugin.pk in ids:
  35. plugin.delete() #delete plugins that are not referenced in the text anymore
  36. def post_copy(self, old_instance, ziplist):
  37. """
  38. Fix references to plugins
  39. """
  40. replace_ids = {}
  41. for new, old in ziplist:
  42. replace_ids[old.pk] = new.pk
  43. self.body = replace_plugin_tags(old_instance.get_plugin_instance()[0].body, replace_ids)
  44. self.save()
  45. class Text(AbstractText):
  46. """
  47. Actual Text Class
  48. """