diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py
index c5a90ac7f3..cda30b0a27 100644
--- a/InvenTree/InvenTree/settings.py
+++ b/InvenTree/InvenTree/settings.py
@@ -92,6 +92,12 @@ DEBUG = _is_true(get_setting(
CONFIG.get('debug', True)
))
+# Determine if we are running in "demo mode"
+DEMO_MODE = _is_true(get_setting(
+ 'INVENTREE_DEMO',
+ CONFIG.get('demo', False)
+))
+
DOCKER = _is_true(get_setting(
'INVENTREE_DOCKER',
False
@@ -234,7 +240,10 @@ STATIC_COLOR_THEMES_DIR = os.path.join(STATIC_ROOT, 'css', 'color-themes')
MEDIA_URL = '/media/'
if DEBUG:
- logger.info("InvenTree running in DEBUG mode")
+ logger.info("InvenTree running with DEBUG enabled")
+
+if DEMO_MODE:
+ logger.warning("InvenTree running in DEMO mode")
logger.debug(f"MEDIA_ROOT: '{MEDIA_ROOT}'")
logger.debug(f"STATIC_ROOT: '{STATIC_ROOT}'")
diff --git a/InvenTree/InvenTree/utils.py b/InvenTree/InvenTree/utils.py
deleted file mode 100644
index dc28da81a0..0000000000
--- a/InvenTree/InvenTree/utils.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from rest_framework.views import exception_handler
-
-
-def api_exception_handler(exc, context):
- response = exception_handler(exc, context)
-
- # Now add the HTTP status code to the response.
- if response is not None:
-
- data = {'error': response.data}
- response.data = data
-
- return response
diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py
index 42c66cf78e..e31fb9e398 100644
--- a/InvenTree/part/templatetags/inventree_extras.py
+++ b/InvenTree/part/templatetags/inventree_extras.py
@@ -90,6 +90,13 @@ def inventree_in_debug_mode(*args, **kwargs):
return djangosettings.DEBUG
+@register.simple_tag()
+def inventree_demo_mode(*args, **kwargs):
+ """ Return True if the server is running in DEMO mode """
+
+ return djangosettings.DEMO_MODE
+
+
@register.simple_tag()
def inventree_docker_mode(*args, **kwargs):
""" Return True if the server is running as a Docker image """
diff --git a/InvenTree/templates/InvenTree/settings/user.html b/InvenTree/templates/InvenTree/settings/user.html
index 2b2637330c..d22c89954f 100644
--- a/InvenTree/templates/InvenTree/settings/user.html
+++ b/InvenTree/templates/InvenTree/settings/user.html
@@ -12,12 +12,15 @@
{% endblock %}
{% block actions %}
+{% inventree_demo_mode as demo %}
+{% if not demo %}
{% trans "Edit" %}
{% trans "Set Password" %}
+{% endif %}
{% endblock %}
{% block content %}
diff --git a/InvenTree/templates/account/login.html b/InvenTree/templates/account/login.html
index fbe48224b4..6e62560bfa 100644
--- a/InvenTree/templates/account/login.html
+++ b/InvenTree/templates/account/login.html
@@ -1,5 +1,6 @@
{% extends "account/base.html" %}
+{% load inventree_extras %}
{% load i18n account socialaccount crispy_forms_tags inventree_extras %}
{% block head_title %}{% trans "Sign In" %}{% endblock %}
@@ -10,6 +11,7 @@
{% settings_value 'LOGIN_ENABLE_PWD_FORGOT' as enable_pwd_forgot %}
{% settings_value 'LOGIN_ENABLE_SSO' as enable_sso %}
{% mail_configured as mail_conf %}
+{% inventree_demo_mode as demo %}
{% trans "Sign In" %}
@@ -36,9 +38,16 @@ for a account and sign in below:{% endblocktrans %}
{% trans "Sign In" %}
- {% if mail_conf and enable_pwd_forgot %}
+ {% if mail_conf and enable_pwd_forgot and not demo %}
{% trans "Forgot Password?" %}
{% endif %}
+ {% if demo %}
+
+
+
+ {% endif %}
{% if enable_sso %}
diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html
index 6dc0d7d78a..262a749bfa 100644
--- a/InvenTree/templates/base.html
+++ b/InvenTree/templates/base.html
@@ -86,25 +86,20 @@
-
- {% if server_restart_required %}
-
+
+ {% block alerts %}
+
+
+ {% if server_restart_required %}
{% trans "Server Restart Required" %}
- {% trans "A configuration option has been changed which requires a server restart" %}.
-
- {% trans "Contact your system administrator for further information" %}
+ {% trans "A configuration option has been changed which requires a server restart" %}. {% trans "Contact your system administrator for further information" %}
-
- {% endif %}
-
- {% block alerts %}
-
-
+ {% endif %}
{% endblock %}
diff --git a/InvenTree/templates/navbar.html b/InvenTree/templates/navbar.html
index eeb049d320..c339d7b4e1 100644
--- a/InvenTree/templates/navbar.html
+++ b/InvenTree/templates/navbar.html
@@ -4,6 +4,7 @@
{% settings_value 'BARCODE_ENABLE' as barcodes %}
{% settings_value 'STICKY_HEADER' user=request.user as sticky %}
+{% inventree_demo_mode as demo %}
@@ -58,6 +59,9 @@
{% endif %}
+ {% if demo %}
+ {% include "navbar_demo.html" %}
+ {% endif %}
{% include "search_form.html" %}
{% if barcodes %}
@@ -78,7 +82,7 @@