'Checks the ``-orig_data`` against the ``_data`` to determine what
changes to the data are present.
Returns a dictionary containing the keys ``adds``, ``changes`` &
``deletes``, containing the updated data.'

def _determine_alterations(self):

    alterations = {'adds': {}, 'changes': {}, 'deletes': []}
    orig_keys = set(self._orig_data.keys())
    data_keys = set(self._data.keys())
    for key in orig_keys.intersection(data_keys):
        if (self._data[key] != self._orig_data[key]):
            if self._is_storable(self._data[key]):
                alterations['changes'][key] = self._data[key]
            else:
                alterations['deletes'].append(key)
    for key in data_keys.difference(orig_keys):
        if self._is_storable(self._data[key]):
            alterations['adds'][key] = self._data[key]
    for key in orig_keys.difference(data_keys):
        alterations['deletes'].append(key)
    return alterations
