'Returns ``True`` if given ``user_obj`` has ``perm`` for ``obj``. If no
``obj`` is given, ``False`` is returned.
.. note::
Remember, that if user is not *active*, all checks would return
``False``.
Main difference between Django\'s ``ModelBackend`` is that we can pass
``obj`` instance here and ``perm`` doesn\'t have to contain
``app_label`` as it can be retrieved from given ``obj``.
**Inactive user support**
If user is authenticated but inactive at the same time, all checks
always returns ``False``.'

def has_perm(self, user_obj, perm, obj=None):

    (support, user_obj) = check_support(user_obj, obj)
    if (not support):
        return False
    if (u'.' in perm):
        (app_label, perm) = perm.split(u'.')
        if (app_label != obj._meta.app_label):
            ctype = get_content_type(obj)
            if (app_label != ctype.app_label):
                raise WrongAppError((u"Passed    perm    has    app    label    of    '%s'    while    given    obj    has    app    label    '%s'    and    given    objcontent_type    has    app    label    '%s'" % (app_label, obj._meta.app_label, ctype.app_label)))
    check = ObjectPermissionChecker(user_obj)
    return check.has_perm(perm, obj)
