human
Here's a good function header given the following:
I wrote the below code

    def wrapper(request, *args, **kwargs):
        from . import models
        path = kwargs.pop(u'path', None)
        article_id = kwargs.pop(u'article_id', None)
        urlpath = None
        if (path is not None):
            try:
                urlpath = models.URLPath.get_by_path(path, select_related=True)
            except NoRootURL:
                return redirect(u'wiki:root_create')
            except models.URLPath.DoesNotExist:
                try:
                    pathlist = list(filter((lambda x: (x != u'')), path.split(u'/')))
                    path = u'/'.join(pathlist[:(-1)])
                    parent = models.URLPath.get_by_path(path)
                    return HttpResponseRedirect((reverse(u'wiki:create', kwargs={u'path': parent.path}) + (u'?slug=%s' % pathlist[(-1)].lower())))
                except models.URLPath.DoesNotExist:
                    return HttpResponseNotFound(render_to_string(u'wiki/error.html', context={u'error_type': u'ancestors_missing'}, request=request))
            if urlpath.article:
                article = urlpath.article
            else:
                return_url = reverse(u'wiki:get', kwargs={u'path': urlpath.parent.path})
                urlpath.delete()
                return HttpResponseRedirect(return_url)
        elif article_id:
            articles = models.Article.objects
            article = get_object_or_404(articles, id=article_id)
            try:
                urlpath = models.URLPath.objects.get(articles__article=article)
            except (models.URLPath.DoesNotExist, models.URLPath.MultipleObjectsReturned):
                urlpath = None
        else:
            raise TypeError(u'You    should    specify    either    article_id    or    path')
        if (not deleted_contents):
            if urlpath:
                if urlpath.is_deleted():
                    return redirect(u'wiki:deleted', path=urlpath.path)
            elif (article.current_revision and article.current_revision.deleted):
                return...

What's a good function header?
assistant
#Here's a good function header.

def get_article(func=None, can_read=True, can_write=False, deleted_contents=False, not_locked=False, can_delete=False, can_moderate=False, can_create=False):