mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Display boolean values as checkboxes
This commit is contained in:
parent
3a325399c6
commit
432ecc1d96
@ -191,6 +191,23 @@ class InvenTreeSetting(models.Model):
|
||||
else:
|
||||
return ''
|
||||
|
||||
@classmethod
|
||||
def get_setting_object(cls, key):
|
||||
"""
|
||||
Return an InvenTreeSetting object matching the given key.
|
||||
|
||||
- Key is case-insensitive
|
||||
- Returns None if no match is made
|
||||
"""
|
||||
|
||||
key = str(key).strip().upper()
|
||||
|
||||
try:
|
||||
setting = InvenTreeSetting.objects.filter(key__iexact=key).first()
|
||||
return setting
|
||||
except (InvenTreeSetting.DoesNotExist):
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def get_setting_pk(cls, key):
|
||||
"""
|
||||
@ -199,12 +216,11 @@ class InvenTreeSetting(models.Model):
|
||||
If the setting does not exist, return None
|
||||
"""
|
||||
|
||||
key = str(key).strip().upper()
|
||||
setting = InvenTreeSetting.get_setting_object(cls)
|
||||
|
||||
try:
|
||||
setting = InvenTreeSetting.objects.filter(key__iexact=key).first()
|
||||
if setting:
|
||||
return setting.pk
|
||||
except InvenTreeSetting.DoesNotExist:
|
||||
else:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
@ -218,15 +234,12 @@ class InvenTreeSetting(models.Model):
|
||||
if backup_value is None:
|
||||
backup_value = cls.get_default_value(key)
|
||||
|
||||
try:
|
||||
settings = InvenTreeSetting.objects.filter(key__iexact=key)
|
||||
setting = InvenTreeSetting.get_setting_object(key)
|
||||
|
||||
if len(settings) > 0:
|
||||
return settings[0].value
|
||||
if setting:
|
||||
return setting.value
|
||||
else:
|
||||
return backup_value
|
||||
except InvenTreeSetting.DoesNotExist:
|
||||
return backup_value
|
||||
|
||||
@classmethod
|
||||
def set_setting(cls, key, value, user, create=True):
|
||||
@ -325,6 +338,15 @@ class InvenTreeSetting(models.Model):
|
||||
|
||||
return validator == bool
|
||||
|
||||
def as_bool(self):
|
||||
"""
|
||||
Return the value of this setting converted to a boolean value.
|
||||
|
||||
Warning: Only use on values where is_bool evaluates to true!
|
||||
"""
|
||||
|
||||
return InvenTree.helpers.str2bool(self.value)
|
||||
|
||||
|
||||
class Currency(models.Model):
|
||||
"""
|
||||
|
@ -5,7 +5,8 @@ import os
|
||||
|
||||
from django import template
|
||||
from InvenTree import version, settings
|
||||
from InvenTree.helpers import decimal2string
|
||||
|
||||
import InvenTree.helpers
|
||||
|
||||
from common.models import InvenTreeSetting, ColorTheme
|
||||
|
||||
@ -16,9 +17,15 @@ register = template.Library()
|
||||
def decimal(x, *args, **kwargs):
|
||||
""" Simplified rendering of a decimal number """
|
||||
|
||||
return decimal2string(x)
|
||||
return InvenTree.helpers.decimal2string(x)
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def str2bool(x, *args, **kwargs):
|
||||
""" Convert a string to a boolean value """
|
||||
|
||||
return InvenTree.helpers.str2bool(x)
|
||||
|
||||
@register.simple_tag()
|
||||
def inrange(n, *args, **kwargs):
|
||||
""" Return range(n) for iterating through a numeric quantity """
|
||||
@ -86,6 +93,19 @@ def inventree_docs_url(*args, **kwargs):
|
||||
return "https://inventree.readthedocs.io/"
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def setting_object(key, *args, **kwargs):
|
||||
"""
|
||||
Return a setting object speciifed by the given key
|
||||
(Or return None if the setting does not exist)
|
||||
"""
|
||||
|
||||
setting = InvenTreeSetting.get_setting_object(key)
|
||||
|
||||
print("Setting:", key, setting)
|
||||
|
||||
return setting
|
||||
|
||||
@register.simple_tag()
|
||||
def settings_name(key, *args, **kwargs):
|
||||
"""
|
||||
|
@ -1,10 +1,24 @@
|
||||
{% load inventree_extras %}
|
||||
{% load i18n %}
|
||||
|
||||
{% setting_object key as setting %}
|
||||
<tr>
|
||||
<td><b>{% settings_name key %}</b></td>
|
||||
<td><b>{% settings_value key %}</b>{% settings_units key %}</td>
|
||||
<td>{% settings_description key %}</td>
|
||||
<td>
|
||||
{% if setting.is_bool %}
|
||||
<div>
|
||||
<input fieldname='{{ setting.key }}' class='slidey' type='checkbox' data-offstyle='warning' data-onstyle='success' data-size='small' data-toggle='toggle' disabled autocomplete='off' {% if setting.as_bool %}checked=''{% endif %}>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if setting.value %}
|
||||
<b>{% settings_value key %}</b>{% settings_units key %}</td>
|
||||
{% else %}
|
||||
<i>{% trans "No value set" %}</i>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<td>
|
||||
{% settings_description key %}
|
||||
</td>
|
||||
<td>
|
||||
<div class='btn-group float-right'>
|
||||
<button class='btn btn-default btn-glyph btn-edit-setting' pk='{% settings_pk key %}' setting='{{ key }}' title='{% trans "Edit setting" %}'>
|
||||
|
Loading…
Reference in New Issue
Block a user