Add an exception for missing configuration sections
This commit is contained in:
parent
5ecae9d585
commit
b9c9189ca7
|
@ -46,11 +46,15 @@ class Config(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if isinstance(config_path, str):
|
# First check if it's file like. If it is, pyyaml can load it.
|
||||||
|
# I'm checking type instead of catching excpetions to keep the
|
||||||
|
# exception handling simple
|
||||||
|
if hasattr(config_path, 'read'):
|
||||||
|
config = yaml.safe_load(config_path)
|
||||||
|
else:
|
||||||
|
# If it isn't, it's a path. We have to open it first.
|
||||||
with open(config_path, 'rb') as config_file:
|
with open(config_path, 'rb') as config_file:
|
||||||
config = yaml.safe_load(config_file)
|
config = yaml.safe_load(config_file)
|
||||||
else:
|
|
||||||
config = yaml.safe_load(config_path)
|
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
raise exceptions.ConfigNotFoundError('Couldn\'t read config at {config_path}'.format(
|
raise exceptions.ConfigNotFoundError('Couldn\'t read config at {config_path}'.format(
|
||||||
config_path=str(config_path),
|
config_path=str(config_path),
|
||||||
|
@ -72,7 +76,8 @@ class Config(object):
|
||||||
self._has_loaded = True
|
self._has_loaded = True
|
||||||
|
|
||||||
def printer(self):
|
def printer(self):
|
||||||
""" Returns a printer that was defined in the config, or None.
|
""" Returns a printer that was defined in the config, or throws an
|
||||||
|
exception.
|
||||||
|
|
||||||
This method loads the default config if one hasn't beeen already loaded.
|
This method loads the default config if one hasn't beeen already loaded.
|
||||||
|
|
||||||
|
@ -80,6 +85,9 @@ class Config(object):
|
||||||
if not self._has_loaded:
|
if not self._has_loaded:
|
||||||
self.load()
|
self.load()
|
||||||
|
|
||||||
|
if not self._printer_name:
|
||||||
|
raise exceptions.ConfigSectionMissingError('printer')
|
||||||
|
|
||||||
if not self._printer:
|
if not self._printer:
|
||||||
# We could catch init errors and make them a ConfigSyntaxError,
|
# We could catch init errors and make them a ConfigSyntaxError,
|
||||||
# but I'll just let them pass
|
# but I'll just let them pass
|
||||||
|
|
|
@ -15,6 +15,7 @@ Result/Exit codes:
|
||||||
- `100` = Set variable out of range :py:exc:`~escpos.exceptions.SetVariableError`
|
- `100` = Set variable out of range :py:exc:`~escpos.exceptions.SetVariableError`
|
||||||
- `200` = Configuration not found :py:exc:`~escpos.exceptions.ConfigNotFoundError`
|
- `200` = Configuration not found :py:exc:`~escpos.exceptions.ConfigNotFoundError`
|
||||||
- `210` = Configuration syntax error :py:exc:`~escpos.exceptions.ConfigSyntaxError`
|
- `210` = Configuration syntax error :py:exc:`~escpos.exceptions.ConfigSyntaxError`
|
||||||
|
- `220` = Configuration section not found :py:exc:`~escpos.exceptions.ConfigSectionMissingError`
|
||||||
|
|
||||||
:author: `Manuel F Martinez <manpaz@bashlinux.com>`_ and others
|
:author: `Manuel F Martinez <manpaz@bashlinux.com>`_ and others
|
||||||
:organization: Bashlinux and `python-escpos <https://github.com/python-escpos>`_
|
:organization: Bashlinux and `python-escpos <https://github.com/python-escpos>`_
|
||||||
|
@ -211,7 +212,7 @@ class ConfigNotFoundError(Error):
|
||||||
class ConfigSyntaxError(Error):
|
class ConfigSyntaxError(Error):
|
||||||
""" The configuration file is invalid
|
""" The configuration file is invalid
|
||||||
|
|
||||||
The syntax is incorrect or there is a section missing
|
The syntax is incorrect
|
||||||
Ths returncode for this exception is `210`.
|
Ths returncode for this exception is `210`.
|
||||||
"""
|
"""
|
||||||
def __init__(self, msg=""):
|
def __init__(self, msg=""):
|
||||||
|
@ -221,3 +222,17 @@ class ConfigSyntaxError(Error):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Configuration syntax is invalid ({msg})".format(msg=self.msg)
|
return "Configuration syntax is invalid ({msg})".format(msg=self.msg)
|
||||||
|
|
||||||
|
class ConfigSectionMissingError(Error):
|
||||||
|
""" The configuration file is missing a section
|
||||||
|
|
||||||
|
The part of the config asked for doesn't exist in the loaded configuration
|
||||||
|
Ths returncode for this exception is `220`.
|
||||||
|
"""
|
||||||
|
def __init__(self, msg=""):
|
||||||
|
Error.__init__(self, msg)
|
||||||
|
self.msg = msg
|
||||||
|
self.resultcode = 220
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "Configuration section is missing ({msg})".format(msg=self.msg)
|
||||||
|
|
Loading…
Reference in New Issue