:return: a list of trumba.Permission objects
             sorted by descending level and ascending uwnetid
             None if error, [] if not exists
    If the response is successful, process the response data
    and load into the return objects
    otherwise raise DataFailureException

def _process_get_perm_resp(url, post_response, campus, calendarid):
    """
    :return: a list of trumba.Permission objects
             sorted by descending level and ascending uwnetid
             None if error, [] if not exists
    If the response is successful, process the response data
    and load into the return objects
    otherwise raise DataFailureException
    """
    request_id = "%s %s CalendarID:%s" % (campus, url, calendarid)
    data = _load_json(request_id, post_response)
    permission_list = []
    if data['d']['Users'] is not None and len(data['d']['Users']) > 0:
        _load_permissions(campus, calendarid,
                          data['d']['Users'],
                          permission_list)
    return sorted(permission_list)