pydoorlock: Config: Only use one config file

Signed-off-by: Ralf Ramsauer <ralf@binary-kitchen.de>
This commit is contained in:
Ralf Ramsauer 2019-06-14 22:02:59 +02:00
parent bdfcf29075
commit a774262a3c
4 changed files with 25 additions and 16 deletions

View File

@ -22,7 +22,7 @@ install:
install doorlockd gpio-wait doorstate $(DESTDIR)/$(PREFIX)/bin/
install doorlockd-passwd $(DESTDIR)/$(PREFIX)/bin/
install -m 0644 doorlockd.default.cfg doorlockd.cfg $(DESTDIR)/$(SYSCONFDIR)
install -m 0644 doorlockd.cfg $(DESTDIR)/$(SYSCONFDIR)
install -m 0644 doorlockd.service doorstate.service $(DESTDIR)/$(SYSCONFDIR)/systemd/system
pip install --upgrade --force-reinstall --root=$(DESTDIR) .

View File

@ -1,5 +1,11 @@
[doorlock]
DEBUG = False
SIMULATE_SERIAL = False
SIMULATE_AUTH = False
RUN_HOOKS = True
SOUNDS = True
# LDAP
# LDAP_URI = ldaps://ldap1.binary.kitchen
# LDAP_BINDDN = cn=%%s,ou=people,dc=binary-kitchen,dc=de

View File

@ -1,11 +0,0 @@
[DEFAULT]
DEBUG = False
SIMULATE_SERIAL = False
SIMULATE_AUTH = False
RUN_HOOKS = True
SOUNDS = True
LOCAL_USER_DB =
LDAP_URI =
LDAP_BINDDN =

View File

@ -1,7 +1,7 @@
"""
Doorlockd -- Binary Kitchen's smart door opener
Copyright (c) Binary Kitchen e.V., 2018
Copyright (c) Binary Kitchen e.V., 2018-2019
Author:
Ralf Ramsauer <ralf@binary-kitchen.de>
@ -16,22 +16,36 @@ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
"""
import functools
from configparser import ConfigParser
from os.path import join
def check_exists(func):
@functools.wraps(func)
def decorator(*args, **kwargs):
config = args[0]
if not config.config.has_option(config.config_topic, args[1]):
return None
return func(*args, **kwargs)
return decorator
class Config:
config_topic = 'doorlock'
def __init__(self, sysconfdir):
self.config = ConfigParser()
self.config.read([join(sysconfdir, 'doorlockd.default.cfg'),
join(sysconfdir, 'doorlockd.cfg')])
self.config.read(join(sysconfdir, 'doorlockd.cfg'))
@check_exists
def boolean(self, key):
return self.config.getboolean(self.config_topic, key)
@check_exists
def str(self, key):
return self.config.get(self.config_topic, key)
@check_exists
def int(self,key):
return self.config.getint(self.config_topic, key)
return self.config.getint(self.config_topic, key)