diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index 6b76c7d41b..99dc255dac 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -267,7 +267,7 @@ def WrapWithQuotes(text, quote='"'): return text -def MakeBarcode(object_name, object_pk, object_data, **kwargs): +def MakeBarcode(object_name, object_pk, object_data={}, **kwargs): """ Generate a string for a barcode. Adds some global InvenTree parameters. Args: @@ -280,7 +280,7 @@ def MakeBarcode(object_name, object_pk, object_data, **kwargs): json string of the supplied data plus some other data """ - brief = kwargs.get('brief', False) + brief = kwargs.get('brief', True) data = {} diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index 6630c0b0af..96f32e7f57 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -1,4 +1,6 @@ +import json + from django.test import TestCase import django.core.exceptions as django_exceptions from django.core.exceptions import ValidationError @@ -134,7 +136,7 @@ class TestIncrement(TestCase): class TestMakeBarcode(TestCase): """ Tests for barcode string creation """ - def test_barcode(self): + def test_barcode_extended(self): bc = helpers.MakeBarcode( "part", @@ -142,13 +144,30 @@ class TestMakeBarcode(TestCase): { "id": 3, "url": "www.google.com", - } + }, + brief=False ) self.assertIn('part', bc) self.assertIn('tool', bc) self.assertIn('"tool": "InvenTree"', bc) + data = json.loads(bc) + + self.assertEqual(data['part']['id'], 3) + self.assertEqual(data['part']['url'], 'www.google.com') + + def test_barcode_brief(self): + + bc = helpers.MakeBarcode( + "stockitem", + 7, + ) + + data = json.loads(bc) + self.assertEqual(len(data), 1) + self.assertEqual(data['stockitem'], 7) + class TestDownloadFile(TestCase): diff --git a/InvenTree/barcode/barcode.py b/InvenTree/barcode/barcode.py index 3837fef599..004182e0be 100644 --- a/InvenTree/barcode/barcode.py +++ b/InvenTree/barcode/barcode.py @@ -25,6 +25,8 @@ def hash_barcode(barcode_data): TODO: Work out a way around this! """ + barcode_data = str(barcode_data).strip() + printable_chars = filter(lambda x: x in string.printable, barcode_data) barcode_data = ''.join(list(printable_chars)) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 4c08911122..030d7faf4e 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -100,7 +100,7 @@ class PartTest(TestCase): self.assertEqual(r.available_stock, 0) def test_barcode(self): - barcode = self.r1.format_barcode() + barcode = self.r1.format_barcode(brief=False) self.assertIn('InvenTree', barcode) self.assertIn(self.r1.name, barcode) diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py index 1461fe8e1a..55fbdef826 100644 --- a/InvenTree/stock/tests.py +++ b/InvenTree/stock/tests.py @@ -122,7 +122,7 @@ class StockTest(TestCase): self.assertEqual(self.home.get_absolute_url(), '/stock/location/1/') def test_barcode(self): - barcode = self.office.format_barcode() + barcode = self.office.format_barcode(brief=False) self.assertIn('"name": "Office"', barcode)