'Returns True if user has permission
to change all models attached to this placeholder.'

def has_change_permission(self, user):

    from cms.utils.permissions import get_model_permission_codename
    if user.is_superuser:
        return True
    attached_models = self._get_attached_models()
    if (not attached_models):
        return False
    attached_objects = self._get_attached_objects()
    for obj in attached_objects:
        try:
            perm = obj.has_placeholder_change_permission(user)
        except AttributeError:
            model = type(obj)
            change_perm = get_model_permission_codename(model, 'change')
            perm = user.has_perm(change_perm)
        if (not perm):
            return False
    return True
