Exemple #1
0
    def get_queryset(self):

        content_id = self.request.GET.get("content_id", None)
        site = self.request.GET.get("site")

        try:
            content_object = ContentType.objects.get_for_id(content_id)
        except ContentType.DoesNotExist:
            raise ValueError(
                "Content type with id {} does not exists.".format(content_id))

        model = content_object.model_class()
        if not is_model_supported(model):
            raise ValueError(
                "{} is not available to use, check content_id param".format(
                    model))
        try:
            # If versioning is enabled then get versioning queryset for model
            app_config = apps.get_app_config("djangocms_versioning")
            versionable_item = app_config.cms_extension.versionables_by_grouper[
                model]
            queryset = versionable_item.grouper_choices_queryset()
        except (LookupError, KeyError):
            queryset = get_supported_model_queryset(model)

            if queryset:
                queryset = queryset(site=site)
            else:
                queryset = model.objects.all()

        try:
            pk = int(self.request.GET.get("pk"))
        except (TypeError, ValueError):
            pk = None

        if site:
            if hasattr(model.objects, "on_site"):  # PageContent
                queryset = queryset.filter(node__site=site)
            elif hasattr(model, "site"):
                queryset = queryset.filter(site=site)

        if pk:
            queryset = queryset.filter(pk=pk)
        return queryset
 def test_is_model_available_method_for_cms40(self):
     self.assertTrue(is_model_supported(PollContent))
     self.assertTrue(is_model_supported(Page))
     self.assertFalse(is_model_supported(Placeholder))
 def test_is_model_available_method_for_cms36(self):
     apps.get_app_config("djangocms_url_manager").ready()
     self.assertTrue(is_model_supported(PollContent))
     self.assertTrue(is_model_supported(Page))
     self.assertFalse(is_model_supported(Placeholder))