summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2021-05-16 16:19:58 +0300
committerGitHub <noreply@github.com>2021-05-16 16:19:58 +0300
commit186030f51f65f9341e5cc0f37a06978fda0252c1 (patch)
tree6618237fba4d4b6fd8aa012a38466ca23bb074a8
parent945110f78a02ddba21c150057bd4fb33759b225e (diff)
Group alarms by areas and bump to v1.1.0 (#10)
* Group alarms by areas * Remove Unknown label
-rw-r--r--alarmpy/alarmpy.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/alarmpy/alarmpy.py b/alarmpy/alarmpy.py
index 3d81559..90122b7 100644
--- a/alarmpy/alarmpy.py
+++ b/alarmpy/alarmpy.py
@@ -2,6 +2,7 @@ import click
import json
import requests
+from collections import defaultdict
from datetime import datetime
from pathlib import Path
from time import sleep, time
@@ -103,10 +104,10 @@ class Alarm:
self.last_routine_output = now
self.current_alarms = []
- def output_leading_timestamp(self):
+ def output_leading_timestamp(self, nl=False):
now = datetime.now()
ts = now.strftime("%Y-%m-%d %H:%M:%S")
- click.secho(f"{ts} ", nl=False)
+ click.secho(f"{ts} ", nl=nl)
def output_error(self, err):
if not self.quiet:
@@ -119,12 +120,29 @@ class Alarm:
click.secho("No active alarms", fg="green")
def output_alarms(self, cities, alarm_id):
- self.output_leading_timestamp()
- cities_str = self.localize_cities(cities)
- click.secho(f"{cities_str} ", fg="red", nl=not self.alarm_id)
+ areas = self.group_areas_and_localize(cities)
+ multiple_areas = len(areas) > 1
+ self.output_leading_timestamp(nl=multiple_areas)
+ for area, cities in areas.items():
+ cities_str = ", ".join(cities)
+ leading_tab = "\t" if multiple_areas else ""
+ click.secho(f"{leading_tab}{area} ", fg="red", bold=True, nl=False)
+ click.secho(f"\t{cities_str} ", fg="red")
if self.alarm_id:
click.secho(f"({alarm_id})")
+ def group_areas_and_localize(self, cities):
+ res = defaultdict(list)
+ for city in cities:
+ try:
+ area = self.labels[city][f"areaname_{self.language}"]
+ label = self.labels[city][f"label_{self.language}"]
+ except KeyError:
+ area = ""
+ label = city
+ res[area].append(label)
+ return res
+
def localize_cities(self, cities):
localized_cities = [
self.labels.get(city, {}).get(f"label_{self.language}", city)