Merge pull request #2951 from SchrodingersGat/barcode-webcam-setting

Adds global setting to enable or disable webcam support for barcodes
This commit is contained in:
Oliver 2022-05-09 21:29:07 +10:00 committed by GitHub
commit a590efe0e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 3 deletions

View File

@ -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')

View File

@ -91,11 +91,23 @@ 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 = 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(n, n_visible)
class PartTest(TestCase):

View File

@ -13,6 +13,7 @@
<table class='table table-striped table-condensed'>
<tbody>
{% 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" %}
</tbody>
</table>

View File

@ -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) => {