Source code for ls.joyous.utils.mixins

# ------------------------------------------------------------------------------
# Useful Mixins
# ------------------------------------------------------------------------------
from django.contrib.contenttypes.models import ContentType


# ------------------------------------------------------------------------------
[docs]class ProxyPageMixin: """ Adding this mixin allows inheritance without needing a new table. The proxy model has its own content type which allows it to be selected as a separate page type in the Wagtail admin interface. No change is made to the manager, but peers() will return a queryset of others of the same type. See also https://github.com/wagtail/wagtail/pull/1736 """ class Meta: proxy = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._initContentType() def _initContentType(self): if getattr(self, 'id', object()) is None: self.content_type = self._getContentType()
[docs] @classmethod def peers(cls): """Return others of the same type""" return cls.objects.filter(content_type=cls._getContentType())
@classmethod def _getContentType(cls): return ContentType.objects.get_for_model(cls, for_concrete_model=False)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------