Beispiel #1
0
    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