'Validate that frag_prefs is a list of dicts containing expected keys
\'timestamp\' and \'exclude\'. Convert timestamp values to Timestamp
instances and validate that exclude values are valid fragment indexes.
:param frag_prefs: data to validate, should be a list of dicts.
:raise DiskFileError: if the frag_prefs data is invalid.
:return: a list of dicts with converted and validated values.'

def _validate_frag_prefs(self, frag_prefs):

    if (frag_prefs is None):
        return None
    try:
        return [{'timestamp': Timestamp(pref['timestamp']), 'exclude': [self.manager.validate_fragment_index(fi) for fi in pref['exclude']]} for pref in frag_prefs]
    except ValueError as e:
        raise DiskFileError(('Bad    timestamp    in    frag_prefs:    %r:    %s' % (frag_prefs, e)))
    except DiskFileError as e:
        raise DiskFileError(('Bad    fragment    index    in    frag_prefs:    %r:    %s' % (frag_prefs, e)))
    except (KeyError, TypeError) as e:
        raise DiskFileError(('Bad    frag_prefs:    %r:    %s' % (frag_prefs, e)))
