From 037e057c5375cdf5c5f706b79de896af62473885 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 9 May 2022 19:46:11 +1000 Subject: [PATCH 1/3] Adds global setting to enable or disable webcam support for barcode scanning --- InvenTree/common/models.py | 7 +++++++ InvenTree/templates/InvenTree/settings/barcode.html | 1 + InvenTree/templates/js/translated/barcode.js | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 1434bba95e..11157763cb 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -842,6 +842,13 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, }, + 'BARCODE_WEBCAM_SUPPORT': { + 'name': _('Barcode Webcam Support'), + 'description': _('Allow barcode scanning via webcam in browser'), + 'default': True, + 'validator': bool, + }, + 'PART_IPN_REGEX': { 'name': _('IPN Regex'), 'description': _('Regular expression pattern for matching Part IPN') diff --git a/InvenTree/templates/InvenTree/settings/barcode.html b/InvenTree/templates/InvenTree/settings/barcode.html index 8532476b75..ea45455203 100644 --- a/InvenTree/templates/InvenTree/settings/barcode.html +++ b/InvenTree/templates/InvenTree/settings/barcode.html @@ -13,6 +13,7 @@ {% include "InvenTree/settings/setting.html" with key="BARCODE_ENABLE" icon="fa-qrcode" %} + {% include "InvenTree/settings/setting.html" with key="BARCODE_WEBCAM_SUPPORT" icon="fa-video" %}
diff --git a/InvenTree/templates/js/translated/barcode.js b/InvenTree/templates/js/translated/barcode.js index a6305eb1df..d6ce81fa38 100644 --- a/InvenTree/templates/js/translated/barcode.js +++ b/InvenTree/templates/js/translated/barcode.js @@ -70,7 +70,7 @@ function onBarcodeScanClicked(e) { } function onCameraAvailable(hasCamera, options) { - if ( hasCamera == true ) { + if (hasCamera && global_settings.BARCODE_WEBCAM_SUPPORT) { // Camera is only acccessible if page is served over secure connection if ( window.isSecureContext == true ) { qrScanner = new QrScanner(document.getElementById('barcode_scan_video'), (result) => { From b0d2ece263d76622621943aea44b890408fce357 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 9 May 2022 20:11:02 +1000 Subject: [PATCH 2/3] Unit test fixes --- InvenTree/part/test_part.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index b86e0acecc..fe34c6fa0a 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -91,11 +91,18 @@ class TemplateTagTest(TestCase): def test_global_settings(self): result = inventree_extras.global_settings() - self.assertEqual(len(result), 61) + self.assertEqual(len(result), len(InvenTreeSetting.SETTINGS)) def test_visible_global_settings(self): result = inventree_extras.visible_global_settings() - self.assertEqual(len(result), 60) + + n_hidden = 0 + + for val in InvenTreeSetting.SETTINGS.values(): + if val.get('hidden', False): + n_hidden += 1 + + self.assertEqual(len(result), n_hidden) class PartTest(TestCase): From db8396564c543cab47c6d7b10c9d78359166d3bf Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 9 May 2022 20:47:44 +1000 Subject: [PATCH 3/3] Further unit test fixes --- InvenTree/part/test_part.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index fe34c6fa0a..5932c36757 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -96,13 +96,18 @@ class TemplateTagTest(TestCase): def test_visible_global_settings(self): result = inventree_extras.visible_global_settings() + n = len(result) + n_hidden = 0 + n_visible = 0 for val in InvenTreeSetting.SETTINGS.values(): if val.get('hidden', False): n_hidden += 1 + else: + n_visible += 1 - self.assertEqual(len(result), n_hidden) + self.assertEqual(n, n_visible) class PartTest(TestCase):