mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 03:56:43 +00:00
Add 'settings.js' which provides all settings (global and user) as a dynamic javascript file
- Minimal database hits required
This commit is contained in:
parent
915756eacf
commit
27ec65a002
@ -96,6 +96,7 @@ settings_urls = [
|
|||||||
# These javascript files are served "dynamically" - i.e. rendered on demand
|
# These javascript files are served "dynamically" - i.e. rendered on demand
|
||||||
dynamic_javascript_urls = [
|
dynamic_javascript_urls = [
|
||||||
url(r'^inventree.js', DynamicJsView.as_view(template_name='js/dynamic/inventree.js'), name='inventree.js'),
|
url(r'^inventree.js', DynamicJsView.as_view(template_name='js/dynamic/inventree.js'), name='inventree.js'),
|
||||||
|
url(r'^settings.js', DynamicJsView.as_view(template_name='js/dynamic/settings.js'), name='settings.js'),
|
||||||
]
|
]
|
||||||
|
|
||||||
# These javascript files are pased through the Django translation layer
|
# These javascript files are pased through the Django translation layer
|
||||||
|
@ -38,6 +38,45 @@ class BaseInvenTreeSetting(models.Model):
|
|||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def allValues(cls, user=None):
|
||||||
|
"""
|
||||||
|
Return a dict of "all" defined global settings.
|
||||||
|
|
||||||
|
This performs a single database lookup,
|
||||||
|
and then any settings which are not *in* the database
|
||||||
|
are assigned their default values
|
||||||
|
"""
|
||||||
|
|
||||||
|
keys = set()
|
||||||
|
settings = []
|
||||||
|
|
||||||
|
results = cls.objects.all()
|
||||||
|
|
||||||
|
if user is not None:
|
||||||
|
results = results.filter(user=user)
|
||||||
|
|
||||||
|
# Query the database
|
||||||
|
for setting in results:
|
||||||
|
settings.append({
|
||||||
|
"key": setting.key.upper(),
|
||||||
|
"value": setting.value
|
||||||
|
})
|
||||||
|
|
||||||
|
keys.add(setting.key.upper())
|
||||||
|
|
||||||
|
# Specify any "default" values which are not in the database
|
||||||
|
for key in cls.GLOBAL_SETTINGS.keys():
|
||||||
|
|
||||||
|
if key.upper() not in keys:
|
||||||
|
|
||||||
|
settings.append({
|
||||||
|
"key": key.upper(),
|
||||||
|
"value": cls.get_setting_default(key)
|
||||||
|
})
|
||||||
|
|
||||||
|
return settings
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_setting_name(cls, key):
|
def get_setting_name(cls, key):
|
||||||
"""
|
"""
|
||||||
@ -739,7 +778,6 @@ class InvenTreeSetting(BaseInvenTreeSetting):
|
|||||||
help_text=_('Settings key (must be unique - case insensitive'),
|
help_text=_('Settings key (must be unique - case insensitive'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class InvenTreeUserSetting(BaseInvenTreeSetting):
|
class InvenTreeUserSetting(BaseInvenTreeSetting):
|
||||||
"""
|
"""
|
||||||
An InvenTreeSetting object with a usercontext
|
An InvenTreeSetting object with a usercontext
|
||||||
|
@ -207,6 +207,24 @@ def settings_value(key, *args, **kwargs):
|
|||||||
return InvenTreeSetting.get_setting(key)
|
return InvenTreeSetting.get_setting(key)
|
||||||
|
|
||||||
|
|
||||||
|
@register.simple_tag()
|
||||||
|
def user_settings(user, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Return all USER settings as a key:value dict
|
||||||
|
"""
|
||||||
|
|
||||||
|
return InvenTreeUserSetting.allValues(user=user)
|
||||||
|
|
||||||
|
|
||||||
|
@register.simple_tag()
|
||||||
|
def global_settings(*args, **kwargs):
|
||||||
|
"""
|
||||||
|
Return all GLOBAL InvenTree settings as a key:value dict
|
||||||
|
"""
|
||||||
|
|
||||||
|
return InvenTreeSetting.allValues()
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag()
|
@register.simple_tag()
|
||||||
def get_color_theme_css(username):
|
def get_color_theme_css(username):
|
||||||
try:
|
try:
|
||||||
|
@ -145,8 +145,11 @@
|
|||||||
<script type='text/javascript' src="{% static 'script/inventree/notification.js' %}"></script>
|
<script type='text/javascript' src="{% static 'script/inventree/notification.js' %}"></script>
|
||||||
<script type='text/javascript' src="{% static 'script/inventree/sidenav.js' %}"></script>
|
<script type='text/javascript' src="{% static 'script/inventree/sidenav.js' %}"></script>
|
||||||
|
|
||||||
<!-- translated -->
|
<!-- dynamic javascript templates -->
|
||||||
<script type='text/javascript' src="{% i18n_static 'inventree.js' %}"></script>
|
<script type='text/javascript' src="{% url 'inventree.js' %}"></script>
|
||||||
|
<script type='text/javascript' src="{% url 'settings.js' %}"></script>
|
||||||
|
|
||||||
|
<!-- translated javascript templates-->
|
||||||
<script type='text/javascript' src="{% i18n_static 'api.js' %}"></script>
|
<script type='text/javascript' src="{% i18n_static 'api.js' %}"></script>
|
||||||
<script type='text/javascript' src="{% i18n_static 'attachment.js' %}"></script>
|
<script type='text/javascript' src="{% i18n_static 'attachment.js' %}"></script>
|
||||||
<script type='text/javascript' src="{% i18n_static 'barcode.js' %}"></script>
|
<script type='text/javascript' src="{% i18n_static 'barcode.js' %}"></script>
|
||||||
|
17
InvenTree/templates/js/dynamic/settings.js
Normal file
17
InvenTree/templates/js/dynamic/settings.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{% load inventree_extras %}
|
||||||
|
// InvenTree settings
|
||||||
|
|
||||||
|
{% user_settings request.user as USER_SETTINGS %}
|
||||||
|
{% global_settings as GLOBAL_SETTINGS %}
|
||||||
|
|
||||||
|
var user_settings = {
|
||||||
|
{% for setting in USER_SETTINGS %}
|
||||||
|
{{ setting.key }}: {{ setting.value }},
|
||||||
|
{% endfor %}
|
||||||
|
};
|
||||||
|
|
||||||
|
var global_settings = {
|
||||||
|
{% for setting in GLOBAL_SETTINGS %}
|
||||||
|
{{ setting.key }}: {{ setting.value }},
|
||||||
|
{% endfor %}
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user