diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index 69d701def0..f44542656f 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -27,8 +27,7 @@ class APITests(APITestCase): def setUp(self): # Create a user (but do not log in!) - User = get_user_model() - User.objects.create_user(self.username, 'user@email.com', self.password) + get_user_model().objects.create_user(self.username, 'user@email.com', self.password) def basicAuth(self): # Use basic authentication diff --git a/InvenTree/InvenTree/test_views.py b/InvenTree/InvenTree/test_views.py index 171dcbb05f..4f7dddfde4 100644 --- a/InvenTree/InvenTree/test_views.py +++ b/InvenTree/InvenTree/test_views.py @@ -16,8 +16,7 @@ class ViewTests(TestCase): def setUp(self): # Create a user - User = get_user_model() - User.objects.create_user(self.username, 'user@email.com', self.password) + get_user_model().objects.create_user(self.username, 'user@email.com', self.password) self.client.login(username=self.username, password=self.password) diff --git a/InvenTree/barcode/tests.py b/InvenTree/barcode/tests.py index 4b7356aead..5f178d923c 100644 --- a/InvenTree/barcode/tests.py +++ b/InvenTree/barcode/tests.py @@ -24,8 +24,8 @@ class BarcodeAPITest(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + user.objects.create_user('testuser', 'test@testing.com', 'password') self.client.login(username='testuser', password='password') diff --git a/InvenTree/build/test_build.py b/InvenTree/build/test_build.py index b560a4f9c9..1b7886c018 100644 --- a/InvenTree/build/test_build.py +++ b/InvenTree/build/test_build.py @@ -267,17 +267,17 @@ class BuildTest(TestCase): # New stock items should have been created! self.assertEqual(StockItem.objects.count(), 4) - A = StockItem.objects.get(pk=self.stock_1_1.pk) + a = StockItem.objects.get(pk=self.stock_1_1.pk) # This stock item has been depleted! with self.assertRaises(StockItem.DoesNotExist): StockItem.objects.get(pk=self.stock_1_2.pk) - C = StockItem.objects.get(pk=self.stock_2_1.pk) + c = StockItem.objects.get(pk=self.stock_2_1.pk) # Stock should have been subtracted from the original items - self.assertEqual(A.quantity, 900) - self.assertEqual(C.quantity, 4500) + self.assertEqual(a.quantity, 900) + self.assertEqual(c.quantity, 4500) # And 10 new stock items created for the build output outputs = StockItem.objects.filter(build=self.build) diff --git a/InvenTree/build/tests.py b/InvenTree/build/tests.py index f01aaa83c9..cb1881e507 100644 --- a/InvenTree/build/tests.py +++ b/InvenTree/build/tests.py @@ -28,10 +28,10 @@ class BuildTestSimple(TestCase): def setUp(self): # Create a user for auth - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + user.objects.create_user('testuser', 'test@testing.com', 'password') - self.user = User.objects.get(username='testuser') + self.user = user.objects.get(username='testuser') g = Group.objects.create(name='builders') self.user.groups.add(g) @@ -109,11 +109,11 @@ class TestBuildAPI(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - user = User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + self.user = user.objects.create_user('testuser', 'test@testing.com', 'password') g = Group.objects.create(name='builders') - user.groups.add(g) + self.user.groups.add(g) for rule in g.rule_sets.all(): if rule.name == 'build': @@ -185,11 +185,11 @@ class TestBuildViews(TestCase): super().setUp() # Create a user - User = get_user_model() - user = User.objects.create_user('username', 'user@email.com', 'password') + user = get_user_model() + self.user = user.objects.create_user('username', 'user@email.com', 'password') g = Group.objects.create(name='builders') - user.groups.add(g) + self.user.groups.add(g) for rule in g.rule_sets.all(): if rule.name == 'build': diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index 26a3f36aa2..4666a0a5a6 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -18,9 +18,9 @@ class SettingsTest(TestCase): def setUp(self): - User = get_user_model() + user = get_user_model() - self.user = User.objects.create_user('username', 'user@email.com', 'password') + self.user = user.objects.create_user('username', 'user@email.com', 'password') self.user.is_staff = True self.user.save() diff --git a/InvenTree/company/test_api.py b/InvenTree/company/test_api.py index 643608542d..f466a4a223 100644 --- a/InvenTree/company/test_api.py +++ b/InvenTree/company/test_api.py @@ -15,8 +15,8 @@ class CompanyTest(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - self.user = User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + self.user = user.objects.create_user('testuser', 'test@testing.com', 'password') perms = [ 'view_company', diff --git a/InvenTree/company/test_views.py b/InvenTree/company/test_views.py index a68a740d33..951d9d759b 100644 --- a/InvenTree/company/test_views.py +++ b/InvenTree/company/test_views.py @@ -27,8 +27,9 @@ class CompanyViewTestBase(TestCase): super().setUp() # Create a user - User = get_user_model() - self.user = User.objects.create_user( + user = get_user_model() + + self.user = user.objects.create_user( username='username', email='user@email.com', password='password' diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index 3a0c48a809..46c6f19277 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -23,8 +23,7 @@ class OrderTest(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') + get_user_model().objects.create_user('testuser', 'test@testing.com', 'password') self.client.login(username='testuser', password='password') def doGet(self, url, options=''): diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index d40fc4156b..5eb350575e 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -120,12 +120,12 @@ class SalesOrderTest(TestCase): # There should now be 4 stock items self.assertEqual(StockItem.objects.count(), 4) - Sa = StockItem.objects.get(pk=self.Sa.pk) - Sb = StockItem.objects.get(pk=self.Sb.pk) + sa = StockItem.objects.get(pk=self.Sa.pk) + sb = StockItem.objects.get(pk=self.Sb.pk) # 25 units subtracted from each of the original items - self.assertEqual(Sa.quantity, 75) - self.assertEqual(Sb.quantity, 175) + self.assertEqual(sa.quantity, 75) + self.assertEqual(sb.quantity, 175) # And 2 items created which are associated with the order outputs = StockItem.objects.filter(sales_order=self.order) @@ -134,8 +134,8 @@ class SalesOrderTest(TestCase): for item in outputs.all(): self.assertEqual(item.quantity, 25) - self.assertEqual(Sa.sales_order, None) - self.assertEqual(Sb.sales_order, None) + self.assertEqual(sa.sales_order, None) + self.assertEqual(sb.sales_order, None) # And no allocations self.assertEqual(SalesOrderAllocation.objects.count(), 0) diff --git a/InvenTree/order/test_views.py b/InvenTree/order/test_views.py index 5c4e2dd405..2f014e751f 100644 --- a/InvenTree/order/test_views.py +++ b/InvenTree/order/test_views.py @@ -32,8 +32,7 @@ class OrderViewTestCase(TestCase): super().setUp() # Create a user - User = get_user_model() - user = User.objects.create_user('username', 'user@email.com', 'password') + user = get_user_model().objects.create_user('username', 'user@email.com', 'password') # Ensure that the user has the correct permissions! g = Group.objects.create(name='orders') diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 131936b8bd..e31512e1d8 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -29,8 +29,9 @@ class PartAPITest(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - self.user = User.objects.create_user( + user = get_user_model() + + self.user = user.objects.create_user( username='testuser', email='test@testing.com', password='password' @@ -269,8 +270,9 @@ class PartAPIAggregationTest(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + + user.objects.create_user('testuser', 'test@testing.com', 'password') self.client.login(username='testuser', password='password') diff --git a/InvenTree/part/test_category.py b/InvenTree/part/test_category.py index 7fa38d7dcf..b3aa7f1202 100644 --- a/InvenTree/part/test_category.py +++ b/InvenTree/part/test_category.py @@ -165,14 +165,14 @@ class CategoryTest(TestCase): self.assert_equal(p.get_default_location().pathstring, 'Office/Drawer_1') # Any part under electronics should default to 'Home' - R1 = Part.objects.get(name='R_2K2_0805') - self.assertIsNone(R1.default_location) - self.assertEqual(R1.get_default_location().name, 'Home') + r1 = Part.objects.get(name='R_2K2_0805') + self.assertIsNone(r1.default_location) + self.assertEqual(r1.get_default_location().name, 'Home') # But one part has a default_location set - R2 = Part.objects.get(name='R_4K7_0603') - self.assertEqual(R2.get_default_location().name, 'Bathroom') + r2 = Part.objects.get(name='R_4K7_0603') + self.assertEqual(r2.get_default_location().name, 'Bathroom') # And one part should have no default location at all - W = Part.objects.get(name='Widget') - self.assertIsNone(W.get_default_location()) + w = Part.objects.get(name='Widget') + self.assertIsNone(w.get_default_location()) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 677b159762..c02be211b5 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -54,10 +54,10 @@ class PartTest(TestCase): ] def setUp(self): - self.R1 = Part.objects.get(name='R_2K2_0805') - self.R2 = Part.objects.get(name='R_4K7_0603') + self.r1 = Part.objects.get(name='R_2K2_0805') + self.r2 = Part.objects.get(name='R_4K7_0603') - self.C1 = Part.objects.get(name='C_22N_0805') + self.c1 = Part.objects.get(name='C_22N_0805') Part.objects.rebuild() @@ -78,18 +78,18 @@ class PartTest(TestCase): self.assertEqual(str(p), "BOB | Bob | A2 - Can we build it?") def test_metadata(self): - self.assertEqual(self.R1.name, 'R_2K2_0805') - self.assertEqual(self.R1.get_absolute_url(), '/part/3/') + self.assertEqual(self.r1.name, 'R_2K2_0805') + self.assertEqual(self.r1.get_absolute_url(), '/part/3/') def test_category(self): - self.assertEqual(str(self.C1.category), 'Electronics/Capacitors - Capacitors') + self.assertEqual(str(self.c1.category), 'Electronics/Capacitors - Capacitors') orphan = Part.objects.get(name='Orphan') self.assertIsNone(orphan.category) self.assertEqual(orphan.category_path, '') def test_rename_img(self): - img = rename_part_image(self.R1, 'hello.png') + img = rename_part_image(self.r1, 'hello.png') self.assertEqual(img, os.path.join('part_images', 'hello.png')) def test_stock(self): @@ -100,12 +100,12 @@ class PartTest(TestCase): self.assertEqual(r.available_stock, 0) def test_barcode(self): - barcode = self.R1.format_barcode() + barcode = self.r1.format_barcode() self.assertIn('InvenTree', barcode) - self.assertIn(self.R1.name, barcode) + self.assertIn(self.r1.name, barcode) def test_copy(self): - self.R2.deep_copy(self.R1, image=True, bom=True) + self.r2.deep_copy(self.r1, image=True, bom=True) def test_match_names(self): @@ -181,9 +181,9 @@ class PartSettingsTest(TestCase): def setUp(self): # Create a user for auth - User = get_user_model() + user = get_user_model() - self.user = User.objects.create_user( + self.user = user.objects.create_user( username='testuser', email='test@testing.com', password='password', diff --git a/InvenTree/part/test_views.py b/InvenTree/part/test_views.py index 2a36dd9012..13349aae15 100644 --- a/InvenTree/part/test_views.py +++ b/InvenTree/part/test_views.py @@ -23,8 +23,9 @@ class PartViewTestCase(TestCase): super().setUp() # Create a user - User = get_user_model() - self.user = User.objects.create_user( + user = get_user_model() + + self.user = user.objects.create_user( username='username', email='user@email.com', password='password' diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index dc16fb52a6..b74ac200f7 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -617,10 +617,10 @@ class StockList(generics.ListCreateAPIView): queryset = queryset.exclude(quantity__lte=0) # Filter by internal part number - IPN = params.get('IPN', None) + ipn = params.get('IPN', None) - if IPN is not None: - queryset = queryset.filter(part__IPN=IPN) + if ipn is not None: + queryset = queryset.filter(part__IPN=ipn) # Does the client wish to filter by the Part ID? part_id = params.get('part', None) diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 9e31774946..01b7b27cc4 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -621,12 +621,12 @@ class StockItem(MPTTModel): return self.installedItemCount() > 0 @transaction.atomic - def installStockItem(self, otherItem, quantity, user, notes): + def installStockItem(self, other_item, quantity, user, notes): """ Install another stock item into this stock item. Args - otherItem: The stock item to install into this stock item + other_item: The stock item to install into this stock item quantity: The quantity of stock to install user: The user performing the operation notes: Any notes associated with the operation @@ -637,10 +637,10 @@ class StockItem(MPTTModel): return False # If the quantity is less than the stock item, split the stock! - stock_item = otherItem.splitStock(quantity, None, user) + stock_item = other_item.splitStock(quantity, None, user) if stock_item is None: - stock_item = otherItem + stock_item = other_item # Assign the other stock item into this one stock_item.belongs_to = self diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index 45a1669535..a34e895ed8 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -22,8 +22,9 @@ class StockAPITestCase(APITestCase): def setUp(self): # Create a user for auth - User = get_user_model() - self.user = User.objects.create_user('testuser', 'test@testing.com', 'password') + user = get_user_model() + + self.user = user.objects.create_user('testuser', 'test@testing.com', 'password') # Add the necessary permissions to the user perms = [ diff --git a/InvenTree/stock/test_views.py b/InvenTree/stock/test_views.py index 2245aff17d..1f55d74eec 100644 --- a/InvenTree/stock/test_views.py +++ b/InvenTree/stock/test_views.py @@ -23,8 +23,9 @@ class StockViewTestCase(TestCase): super().setUp() # Create a user - User = get_user_model() - self.user = User.objects.create_user( + user = get_user_model() + + self.user = user.objects.create_user( username='username', email='user@email.com', password='password' diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py index 1bd4feb02f..3d309c0360 100644 --- a/InvenTree/stock/tests.py +++ b/InvenTree/stock/tests.py @@ -38,12 +38,12 @@ class StockTest(TestCase): self.drawer3 = StockLocation.objects.get(name='Drawer_3') # Create a user - User = get_user_model() - User.objects.create_user('username', 'user@email.com', 'password') + user = get_user_model() + user.objects.create_user('username', 'user@email.com', 'password') self.client.login(username='username', password='password') - self.user = User.objects.get(username='username') + self.user = user.objects.get(username='username') # Ensure the MPTT objects are correctly rebuild Part.objects.rebuild() @@ -221,21 +221,21 @@ class StockTest(TestCase): def test_split_stock(self): # Split the 1234 x 2K2 resistors in Drawer_1 - N = StockItem.objects.filter(part=3).count() + n = StockItem.objects.filter(part=3).count() stock = StockItem.objects.get(id=1234) stock.splitStock(1000, None, self.user) self.assertEqual(stock.quantity, 234) # There should be a new stock item too! - self.assertEqual(StockItem.objects.filter(part=3).count(), N + 1) + self.assertEqual(StockItem.objects.filter(part=3).count(), n + 1) # Try to split a negative quantity stock.splitStock(-10, None, self.user) - self.assertEqual(StockItem.objects.filter(part=3).count(), N + 1) + self.assertEqual(StockItem.objects.filter(part=3).count(), n + 1) stock.splitStock(stock.quantity, None, self.user) - self.assertEqual(StockItem.objects.filter(part=3).count(), N + 1) + self.assertEqual(StockItem.objects.filter(part=3).count(), n + 1) def test_stocktake(self): # Perform stocktake diff --git a/requirements.txt b/requirements.txt index 5de97d3be5..76610600a6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ django-import-export==2.0.0 # Data import / export for admin interface django-cleanup==4.0.0 # Manage deletion of old / unused uploaded files django-qr-code==1.2.0 # Generate QR codes flake8==3.8.3 # PEP checking +pep8-naming==0.11.1 # PEP naming convention extension coverage==5.3 # Unit test coverage coveralls==2.1.2 # Coveralls linking (for Travis) rapidfuzz==0.7.6 # Fuzzy string matching diff --git a/setup.cfg b/setup.cfg index ca36d114b6..6e2a44f055 100644 --- a/setup.cfg +++ b/setup.cfg @@ -7,5 +7,8 @@ ignore = E501, E722, # - C901 - function is too complex C901, + # - N802 - function name should be lowercase (In the future, we should conform to this!) + N802, + N812, exclude = .git,__pycache__,*/migrations/*,*/lib/*,*/bin/*,*/media/*,*/static/*,*ci_*.py* max-complexity = 20