'Checks if a block\'s group access settings do not make sense.
By nonsensical access settings, we mean a component\'s access
settings which contradict its parent\'s access in that they
restrict access to the component to a group that already
will not be able to see that content.
Note:  This contradiction can occur when a component
restricts access to the same partition but a different group
than its parent, or when there is a parent access
restriction but the component attempts to allow access to
all learners.
Returns:
bool: True if the block\'s access settings contradict its
parent\'s access settings.'

def _has_nonsensical_access_settings(self):

    parent = self.get_parent()
    if (not parent):
        return False
    parent_group_access = parent.group_access
    component_group_access = self.group_access
    for (user_partition_id, parent_group_ids) in parent_group_access.iteritems():
        component_group_ids = component_group_access.get(user_partition_id)
        if component_group_ids:
            return (parent_group_ids and (not set(component_group_ids).issubset(set(parent_group_ids))))
        else:
            return (not component_group_access)
    else:
        return False
