cms.publisher.options: 28 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/publisher/options.py

Stats: 0 executed, 28 missed, 0 excluded, 29 ignored

  1. # -*- coding: utf-8 -*-
  2. class PublisherOptions(object):
  3. """Option class which instance is accessible on all models which inherit from
  4. publisher over `PublisherModel`._publisher_meta.
  5. Populates all fields which should be excluded when the publish method take
  6. place.
  7. Attribute exclude_fields may inherit fields from parents, if there are some
  8. excluded_fields defined.
  9. PublisherOptions are configurable over class PublisherMeta if preset in
  10. class definition in model. If exclude_fields are defined on model instance,
  11. value of this field will be taken, and inheritance check for exclusions will
  12. be skipped.
  13. """
  14. exclude_fields = []
  15. def __init__(self, name, bases, publisher_meta=None):
  16. """Build publisher meta, and inherit stuff from bases if required
  17. """
  18. if publisher_meta and getattr(publisher_meta, 'exclude_fields', None):
  19. self.exclude_fields = getattr(publisher_meta, 'exclude_fields', [])
  20. return
  21. exclude_fields = set()
  22. all_bases = []
  23. for direct_base in bases:
  24. all_bases.append(direct_base)
  25. for base in direct_base.mro():
  26. if not base in all_bases:
  27. all_bases.append(base)
  28. for base in reversed(all_bases):
  29. #for direct_base in bases:
  30. #for base in reversed(direct_base.mro()):
  31. pmeta = getattr(base, '_publisher_meta', None) or getattr(base, 'PublisherMeta', None)
  32. if not pmeta:
  33. continue
  34. base_exclude_fields = getattr(pmeta, 'exclude_fields', None)
  35. base_exclude_fields_append = getattr(pmeta, 'exclude_fields_append', None)
  36. if base_exclude_fields and base_exclude_fields_append:
  37. raise ValueError, ("Model %s extends defines PublisherMeta, but " +
  38. "both - exclude_fields and exclude_fields_append"
  39. "are defined!") % (name,)
  40. if base_exclude_fields:
  41. exclude_fields = exclude_fields.union(base_exclude_fields)
  42. elif base_exclude_fields_append:
  43. exclude_fields = exclude_fields.union(base_exclude_fields_append)
  44. if publisher_meta and getattr(publisher_meta, 'exclude_fields_append', None):
  45. exclude_fields = exclude_fields.union(publisher_meta.exclude_fields_append)
  46. self.exclude_fields = list(exclude_fields)