2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-15 03:25:42 +00:00

Add setting to allow or prohibit duplicate IPN values

This commit is contained in:
Oliver Walters
2020-11-10 09:03:26 +11:00
parent eead52a5dd
commit a6028f027a
6 changed files with 73 additions and 0 deletions

View File

@ -64,6 +64,13 @@ class InvenTreeSetting(models.Model):
'description': _('Regular expression pattern for matching Part IPN')
},
'PART_ALLOW_DUPLICATE_IPN': {
'name': _('Allow Duplicate IPN'),
'description': _('Allow multiple parts to share the same IPN'),
'default': True,
'validator': bool,
},
'PART_COPY_BOM': {
'name': _('Copy Part BOM Data'),
'description': _('Copy BOM data by default when duplicating a part'),
@ -305,6 +312,10 @@ class InvenTreeSetting(models.Model):
setting = InvenTreeSetting(key=key)
else:
return
# Enforce standard boolean representation
if setting.is_bool():
value = InvenTree.helpers.str2bool(value)
setting.value = str(value)
setting.save()
@ -317,6 +328,10 @@ class InvenTreeSetting(models.Model):
def name(self):
return InvenTreeSetting.get_setting_name(self.key)
@property
def default_value(self):
return InvenTreeSetting.get_default_value(self.key)
@property
def description(self):
return InvenTreeSetting.get_setting_description(self.key)

View File

@ -70,3 +70,13 @@ class SettingsTest(TestCase):
InvenTreeSetting.set_setting(key, value, self.user)
self.assertEqual(value, InvenTreeSetting.get_setting(key))
# Any fields marked as 'boolean' must have a default value specified
setting = InvenTreeSetting.get_setting_object(key)
if setting.is_bool():
if setting.default_value in ['', None]:
raise ValueError(f'Default value for boolean setting {key} not provided')
if setting.default_value not in [True, False]:
raise ValueError(f'Non-boolean default value specified for {key}')