def alter_data(self, observations): observations = copy.deepcopy(observations) existing_obsids = utils.get_all_obsids() for observation in observations: observation[u'obsid'] = observation[u'sublocation'].split(u'.')[0] obsids = [list(x) for x in sorted(set([(observation[u'obsid'], observation[u'obsid']) for observation in observations]))] obsids.reverse() obsids.append([u'old_obsid', u'new_obsid']) obsids.reverse() answer = utils.filter_nonexisting_values_and_ask(obsids, u'new_obsid', existing_values=existing_obsids, try_capitalize=False) if answer == u'cancel': return Cancel() if answer is not None: if isinstance(answer, (list, tuple)): if len(answer) > 1: obsid_rename_dict = dict([(old_obsid_new_obsid[0], old_obsid_new_obsid[1]) for old_obsid_new_obsid in answer[1:]]) #Filter and rename obsids [observation.update({u'obsid': obsid_rename_dict.get(observation[u'obsid'], None)}) for observation in observations] observations = [observation for observation in observations if all([observation[u'obsid'] is not None, observation[u'obsid']])] if len(observations) == 0: utils.MessagebarAndLog.warning(bar_msg=u'No observations imported, see log message panel', log_msg=u'No observations returned from obsid verification.' + u'Were all skipped?') return Cancel() return observations