示例#1
0
    def test_pommes(self):
        config = configparser.ConfigParser()
        alarm = Alarm(config)
        alarm.load('test_data/test01-1.json', logger)
        mittel = set((EinsatzMittel('FW', 'KLV', '01', 'DLK23', '1',
                                    'FW KLV01 DLK23 1'),
                      EinsatzMittel('', '', '', '', '', 'FW KLV Gerätewarte'),
                      EinsatzMittel('', '', '', '', '', 'LZ KLV Süd'),
                      EinsatzMittel('', '', '', '', '', 'FW KLV Leiter')))
        self.assertEqual(alarm.einsatzmittel, mittel)
        eh = alarm.einheiten(einheit, lambda x: False, logger, sonder)
        self.assertEqual(eh, 'LZ Kleve, LZ Materborn, LG Reichswalde')
        mittel_txt = alarm.alarmiert()
        self.assertEqual(
            mittel_txt,
            ('LZ KLV Süd, '
             'FW KLV Gerätewarte, FW KLV Leiter, FW KLV01 DLK23 1'))

        alarm2 = Alarm(config)
        alarm2.load('test_data/test01-2.dme', logger)
        alarm.merge(alarm2)

        self.assertEqual(alarm.einsatzmittel, mittel)
        eh = alarm.einheiten(einheit, lambda x: False, logger, sonder)
        self.assertEqual(eh, 'LZ Kleve, LZ Materborn, LG Reichswalde')
        mittel_txt = alarm.alarmiert()
        self.assertEqual(
            mittel_txt,
            ('LZ KLV Süd, '
             'FW KLV Gerätewarte, FW KLV Leiter, FW KLV01 DLK23 1'))

        alarm3 = Alarm(config)
        alarm3.load('test_data/test01-3.xml', logger)
        alarm.merge(alarm3)

        mittel.add(EinsatzMittel('RD', 'KLV', '01', 'RTW', '01', 'KLV RTW 1'))
        mittel.add(EinsatzMittel('', '', '', '', '', 'LZ KLV West'))
        mittel.add(
            EinsatzMittel('FW', 'KLV', '01', 'DLK23', '01', 'KLV 1 DLK23 1'))
        mittel.add(EinsatzMittel('', 'KLV', '01', '', '', 'KLV 1'))
        mittel.add(
            EinsatzMittel('FW', 'KLV', '01', 'LEITER', '01', 'KLV Leiter'))
        self.assertEqual(alarm.einsatzmittel, mittel)
        eh = alarm.einheiten(einheit, lambda x: False, logger, sonder)
        self.assertEqual(eh, ('LZ Kleve, LZ Materborn, LZ Rindern,'
                              ' LG Reichswalde, LG Donsbrüggen'))
        mittel_txt = alarm.alarmiert()
        self.assertEqual(
            mittel_txt,
            ('LZ KLV Süd, LZ KLV West, '
             'FW KLV Gerätewarte, FW KLV Leiter, FW KLV01 DLK23 1, KLV 1, '
             'KLV 1 DLK23 1, KLV Leiter, KLV RTW 1'))
示例#2
0
    def start(self):
        self.cycleTimer.stop()

        path = self.config.get("db", "path", fallback=None)
        if not path:
            return

        paths = [os.path.join(path, entry) for entry in os.listdir(path)]
        paths = [path for path in paths if \
                (path.endswith('.dme') or \
                path.endswith('.xml') or \
                path.endswith('.json')) and \
                os.path.isfile(path)]
        paths = sorted(paths, reverse=True)

        self.alarms = []
        index = 0
        while index < self.historySize and len(paths) > 0:
            path = paths[0]
            paths = paths[1:]

            alarm = Alarm(self.config)
            try:
                alarm.load(path)
            except Exception as e:
                self.logger.error('History failed to load %s: %s', path, e)
                continue

            if alarm.fallbackStr:
                # ignore incomplete or invalid alarms in history
                continue

            if len(self.alarms) and self.alarms[-1].matches(alarm):
                self.alarms[-1].merge(alarm)
            else:
                self.alarms.append(alarm)
                index += 1

        local_tz = get_localzone()
        now = local_tz.localize(datetime.datetime.now())

        index = 0
        for alarm in self.alarms:
            dateStr = alarm.datetime.strftime('%A, %d. %B, %H:%M')
            delta = alarm.datetime - now
            dateStr += ' (' + babel.dates.format_timedelta(
                delta, add_direction=True) + ')'
            image = alarm.imageBase()
            if image:
                image += '.svg'
                pixmap = pixmapFromSvg(os.path.join(self.imageDir, image), 40)
            else:
                pixmap = QPixmap()
            self.symbolLabels[index].setPixmap(pixmap)
            title = alarm.title()
            if not title:
                title = alarm.fallbackStr
            self.titleLabels[index].setText(title)
            desc = dateStr
            loc = alarm.location()
            if loc:
                desc += '\n' + loc
            self.descLabels[index].setText(desc)
            index += 1

        self.index = 0
        if len(self.alarms):
            alarm = self.alarms[self.index]
            self.targetMap.setTarget(alarm.lat, alarm.lon, ([], ))
            self.cycleTimer.start()
            self.updateStyles()
        else:
            self.finished.emit()
示例#3
0
paths = [path for path in paths if \
        (path.endswith('.dme') or \
        path.endswith('.xml') or \
        path.endswith('.json')) and \
        os.path.isfile(path)]
paths = sorted(paths, reverse=True)

alarms = []
index = 0
while len(paths) > 0:
    path = paths[0]
    paths = paths[1:]

    alarm = Alarm(config)
    try:
        alarm.load(path)
    except Exception as e:
        logger('Failed to load %s: %s', path, e)
        continue

    if alarm.fallbackStr:
        # ignore incomplete or invalid alarms in history
        continue

    if len(alarms) and alarms[-1].matches(alarm):
        alarms[-1].merge(alarm)
    else:
        alarms.append(alarm)
        index += 1

for alarm in alarms: