Files
2026-05-01 00:08:43 +00:00

48 lines
1.1 KiB
Python

# -*- encoding: utf-8 -*-
import configparser
import io
import os
from dataclasses import dataclass
from functools import partial
@dataclass(frozen=True)
class Canteen:
"""Configured OpenMensa canteen mapping."""
key: str
name: str
street: str
city: str
id: str
chash: str
def _get_config(filename):
config = configparser.ConfigParser()
path = os.path.join(os.path.dirname(__file__), filename)
with io.open(path, encoding='utf-8') as config_file:
config.read_file(config_file)
return config
def _parse_canteen(config, canteen_name):
get = partial(config.get, canteen_name)
return Canteen(key=canteen_name,
name=get('name'),
street=get('street'),
city=get('city'),
id=get('id'),
chash=get('cHash'))
def read_canteen_config():
"""Read the configured canteens from file.
:return: dictionary which maps from canteen short name to :class:`Canteen`.
"""
config = _get_config('canteens.ini')
return {name: _parse_canteen(config, name) for name in config.sections()}