Exemple #1
0
        def fun_call(request, pk, newsitem_pk=None):
            newsindex = get_object_or_404(
                Page.objects.specific().type(NewsIndexMixin), pk=pk)
            NewsItem = newsindex.get_newsitem_model()
            user = get_user(request)

            policy = CollectionOwnershipPermissionPolicy(model=NewsItem,
                                                         auth_model=NewsItem)

            if perm == 'add':
                return function(request=request,
                                newsindex=newsindex,
                                NewsItem=NewsItem,
                                user=user,
                                policy=policy)

            newsitem = get_object_or_404(NewsItem,
                                         newsindex=newsindex,
                                         pk=newsitem_pk)
            if perm == 'change':
                newsitem = newsitem.get_latest_revision_as_newsitem()

            if not policy.user_has_permission_for_instance(
                    user, perm, newsitem):
                raise PermissionDenied()

            return function(request=request,
                            newsindex=newsindex,
                            user=user,
                            NewsItem=NewsItem,
                            newsitem=newsitem,
                            policy=policy)