Display boolean values as checkboxes

This commit is contained in:
Oliver Walters 2020-10-25 21:33:13 +11:00
parent 3a325399c6
commit 432ecc1d96
3 changed files with 71 additions and 15 deletions

View File

@ -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):
"""

View File

@ -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):
"""

View File

@ -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" %}'>