From 12ffda4760f8b09101708e7a861773ee57960f1e Mon Sep 17 00:00:00 2001 From: Finn-Thorben Sell Date: Thu, 24 Mar 2022 11:05:20 +0100 Subject: [PATCH] add support for adding reference links to values Now Value classes accept a 'help_reference' keyword which will get printed when a ValueRetrievalError or ValueProcessingError occurs --- configurations/errors.py | 3 +++ configurations/values.py | 3 ++- test_project/test_project/settings.py | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/configurations/errors.py b/configurations/errors.py index 9804896..7128317 100644 --- a/configurations/errors.py +++ b/configurations/errors.py @@ -19,6 +19,9 @@ def extract_explanation_lines_from_value(value_instance: 'Value') -> List[str]: if value_instance.help_text is not None: result.append(f"Help: {value_instance.help_text}") + if value_instance.help_reference is not None: + result.append(f"Reference: {value_instance.help_reference}") + if value_instance.destination_name is not None: result.append(f"{value_instance.destination_name} is taken from the environment variable " f"{value_instance.full_environ_name} as a {type(value_instance).__name__}") diff --git a/configurations/values.py b/configurations/values.py index a0ddce6..b44f809 100644 --- a/configurations/values.py +++ b/configurations/values.py @@ -59,7 +59,7 @@ class Value: def __init__(self, default=None, environ=True, environ_name=None, environ_prefix='DJANGO', environ_required=False, help_text=None, - *args, **kwargs): + help_reference=None, *args, **kwargs): if isinstance(default, Value) and default.default is not None: self.default = copy.copy(default.default) else: @@ -72,6 +72,7 @@ class Value: self.environ_required = environ_required self.destination_name = None self.help_text = help_text + self.help_reference = help_reference def __str__(self): return str(self.value) diff --git a/test_project/test_project/settings.py b/test_project/test_project/settings.py index 0cf7a74..efa32ab 100644 --- a/test_project/test_project/settings.py +++ b/test_project/test_project/settings.py @@ -4,7 +4,8 @@ from configurations import Configuration, values class Base(Configuration): # Django settings for test_project project. - DEBUG = values.BooleanValue(True, environ=True, help_text="Enables or disables django debug mode") + DEBUG = values.BooleanValue(True, environ=True, help_text="Enables or disables django debug mode", + help_reference="https://docs.djangoproject.com/en/dev/ref/settings/#debug") ADMINS = ( # ('Your Name', 'your_email@example.com'),