cms.utils.helpers: 38 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/utils/helpers.py

Stats: 0 executed, 31 missed, 7 excluded, 31 ignored

  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. # modify reversions to match our needs if required...
  4. def reversion_register(model_class, fields=None, follow=(), format="json", exclude_fields=None):
  5. """CMS interface to reversion api - helper function. Registers model for
  6. reversion only if reversion is available.
  7. Auto excludes publisher fields.
  8. """
  9. # reversion's merely recommended, not required
  10. if not 'reversion' in settings.INSTALLED_APPS:
  11. return
  12. from reversion.models import VERSION_CHANGE
  13. if fields and exclude_fields:
  14. raise ValueError("Just one of fields, exclude_fields arguments can be passed.")
  15. opts = model_class._meta
  16. local_fields = opts.local_fields + opts.local_many_to_many
  17. if fields is None:
  18. fields = [field.name for field in local_fields]
  19. exclude_fields = exclude_fields or []
  20. fields = filter(lambda name: not name in exclude_fields, fields)
  21. from cms.utils import reversion_hacks
  22. reversion_hacks.register_draft_only(model_class, fields, follow, format)
  23. def make_revision_with_plugins(obj, user=None, message=None):
  24. from cms.models.pluginmodel import CMSPlugin
  25. # we can safely import reversion - calls here always check for
  26. # reversion in installed_applications first
  27. import reversion
  28. from reversion.models import VERSION_CHANGE
  29. """
  30. Only add to revision if it is a draft.
  31. """
  32. revision_manager = reversion.revision
  33. revision_context = reversion.revision_context_manager
  34. cls = obj.__class__
  35. if cls in revision_manager._registered_models:
  36. placeholder_relation = find_placeholder_relation(obj)
  37. if revision_context.is_active():
  38. # add toplevel object to the revision
  39. adapter = revision_manager.get_adapter(obj.__class__)
  40. revision_context.add_to_context(revision_manager, obj, adapter.get_version_data(obj, VERSION_CHANGE))
  41. # add plugins and subclasses to the revision
  42. filters = {'placeholder__%s' % placeholder_relation: obj}
  43. for plugin in CMSPlugin.objects.filter(**filters):
  44. plugin_instance, admin = plugin.get_plugin_instance()
  45. if plugin_instance:
  46. padapter = revision_manager.get_adapter(plugin_instance.__class__)
  47. revision_context.add_to_context(revision_manager, plugin_instance, padapter.get_version_data(plugin_instance, VERSION_CHANGE))
  48. bpadapter = revision_manager.get_adapter(plugin.__class__)
  49. revision_context.add_to_context(revision_manager, plugin, bpadapter.get_version_data(plugin, VERSION_CHANGE))
  50. def find_placeholder_relation(obj):
  51. return 'page'