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)