def has_permission(permittee, target_obj_or_class, perm_name):
    if isinstance(permittee, str):
        permittee = get_permittee_from_threadlocals(permittee)
        
    return ExpedientPermission.objects.get_missing_for_target(
        permittee, [perm_name], target_obj_or_class) == None
Constructs the form for a given `step`. If no `step` is defined, the
dataset/ETHPy150Open fp7-ofelia/ocf/expedient/src/python/expedient/common/permissions/shortcuts.py/has_permission--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/lib/django-1.5/django/contrib/formtools/wizard/views.py/WizardView.get_form