comparison weather_server/locations.py @ 26:7def5611895b

Add support for an index page displaying all locations. This seems as good a time as any to declare 0.1.0.
author Paul Fisher <paul@pfish.zone>
date Sun, 10 Nov 2019 23:46:51 -0500
parents 20c8ec56e447
children 9bc3687e1e5e
comparison
equal deleted inserted replaced
25:a4147ecb18b3 26:7def5611895b
18 """Raised when a location can't be loaded.""" 18 """Raised when a location can't be loaded."""
19 19
20 20
21 class Location: 21 class Location:
22 22
23 def __init__(self, root: pathlib.Path): 23 def __init__(self, root: pathlib.Path, key: str):
24 parser = configparser.ConfigParser(interpolation=None) 24 parser = configparser.ConfigParser(interpolation=None)
25 self.root = root 25 self.root = root
26 self.key = key
26 config_file = root / CONFIG_FILE 27 config_file = root / CONFIG_FILE
27 try: 28 try:
28 with open(config_file, 'r') as infile: 29 with open(config_file, 'r') as infile:
29 parser.read_file(infile) 30 parser.read_file(infile)
30 self.name = parser.get( 31 self.name = parser.get(
79 def get(self, name: str) -> Location: 80 def get(self, name: str) -> Location:
80 self._maybe_reload() 81 self._maybe_reload()
81 locs, _ = self.info 82 locs, _ = self.info
82 return locs[name] 83 return locs[name]
83 84
85 def locations(self) -> t.Dict[str, Location]:
86 return self.info[0]
87
84 def _maybe_reload(self) -> None: 88 def _maybe_reload(self) -> None:
85 new_mtime = self.root.stat().st_mtime_ns 89 new_mtime = self.root.stat().st_mtime_ns
86 _, old_mtime = self.info 90 _, old_mtime = self.info
87 if old_mtime == new_mtime: 91 if old_mtime == new_mtime:
88 return 92 return
89 locations = {} 93 locations = {}
90 for child in self.root.iterdir(): 94 for child in self.root.iterdir():
91 try: 95 try:
92 locations[child.name] = Location(child) 96 locations[child.name] = Location(child, child.name)
93 except ConfigError: 97 except ConfigError:
94 pass # It's OK. Skip this. 98 pass # It's OK. Skip this.
95 self.info = locations, new_mtime 99 self.info = locations, new_mtime