@@ -2680,6 +2680,45 @@ def test_product_portfolio_product_manage_packages_grid_view_permissions(self):
26802680 response = self .client .get (manage_url )
26812681 self .assertEqual (200 , response .status_code )
26822682
2683+ def test_product_portfolio_product_manage_packages_grid_fields_permissions (self ):
2684+ add_perms (self .basic_user , ["change_productpackage" ])
2685+ assign_perm ("view_product" , self .basic_user , self .product1 )
2686+ assign_perm ("change_product" , self .basic_user , self .product1 )
2687+ self .client .login (username = self .basic_user .username , password = "secret" )
2688+
2689+ make_product_package (self .product1 )
2690+ manage_url = self .product1 .get_manage_packages_url ()
2691+ response = self .client .get (manage_url )
2692+
2693+ self .assertEqual (200 , response .status_code )
2694+ expected = (
2695+ '<select name="form-0-review_status" class="select form-select" disabled'
2696+ ' aria-describedby="id_form-0-review_status_helptext" id="id_form-0-review_status">'
2697+ ' <option value="" selected>---------</option>'
2698+ "</select>"
2699+ )
2700+ self .assertContains (response , expected , html = True )
2701+ form = response .context ["formset" ].forms [0 ]
2702+ self .assertIn ("review_status" , form .fields )
2703+ self .assertTrue (form .fields ["review_status" ].disabled )
2704+
2705+ data = {
2706+ "form-TOTAL_FORMS" : 1 ,
2707+ "form-INITIAL_FORMS" : 0 ,
2708+ "form-MIN_NUM_FORMS" : 0 ,
2709+ "form-MAX_NUM_FORMS" : 1000 ,
2710+ "form-0-product" : self .product1 .pk ,
2711+ "form-0-package" : self .package1 .pk ,
2712+ "form-0-object_display" : str (self .package1 ),
2713+ "form-0-review_status" : "PROTECTED FIELD" ,
2714+ "form-0-notes" : "Some notes" ,
2715+ }
2716+ response = self .client .post (manage_url , data , follow = True )
2717+ self .assertContains (response , "Product changes saved." )
2718+ self .assertRedirects (response , manage_url )
2719+ pp2 = ProductPackage .objects .get (product = self .product1 , package = self .package1 .pk )
2720+ self .assertIsNone (pp2 .review_status )
2721+
26832722 def test_product_portfolio_product_manage_packages_grid_view_delete (self ):
26842723 self .client .login (username = self .basic_user .username , password = "secret" )
26852724
0 commit comments