@@ -648,56 +648,55 @@ def tab_imports(self):
648648 }
649649
650650 def get_context_data (self , ** kwargs ):
651+ product = self .object
651652 user = self .request .user
652653 dataspace = user .dataspace
653654
654655 # This behavior does not works well in the context of getting informed about
655656 # tasks completion on the Product.
656657 if user .is_authenticated :
657- self . object .mark_all_notifications_as_read (user )
658+ product .mark_all_notifications_as_read (user )
658659
659660 context = super ().get_context_data (** kwargs )
660-
661- context ["has_change_codebaseresource_permission" ] = user .has_perm (
662- "product_portfolio.change_codebaseresource"
663- )
664-
665661 context ["filter_productcomponent" ] = self .filter_productcomponent
666662 context ["filter_productpackage" ] = self .filter_productpackage
667663 # The reference data label and help does not make sense in the Product context
668664 context ["is_reference_data" ] = None
669665
670- perms = guardian_get_perms (user , self . object )
666+ perms = guardian_get_perms (user , product )
671667 context ["has_change_permission" ] = "change_product" in perms
672668 context ["has_delete_permission" ] = "delete_product" in perms
673669
674- context ["has_edit_productpackage" ] = all (
675- [
676- user .has_perm ("product_portfolio.change_productpackage" ),
677- context ["has_change_permission" ],
678- ]
679- )
680- context ["has_delete_productpackage" ] = user .has_perm (
681- "product_portfolio.delete_productpackage"
682- )
683-
684- context ["has_add_productcomponent" ] = all (
685- [
686- user .has_perm ("product_portfolio.add_productcomponent" ),
687- context ["has_change_permission" ],
688- ]
689- )
690- context ["has_edit_productcomponent" ] = all (
691- [
692- user .has_perm ("product_portfolio.change_productcomponent" ),
693- context ["has_change_permission" ],
694- ]
695- )
696- context ["has_delete_productcomponent" ] = user .has_perm (
697- "product_portfolio.delete_productcomponent"
698- )
670+ if not product .is_locked :
671+ context ["has_edit_productpackage" ] = all (
672+ [
673+ user .has_perm ("product_portfolio.change_productpackage" ),
674+ context ["has_change_permission" ],
675+ ]
676+ )
677+ context ["has_delete_productpackage" ] = user .has_perm (
678+ "product_portfolio.delete_productpackage"
679+ )
680+ context ["has_add_productcomponent" ] = all (
681+ [
682+ user .has_perm ("product_portfolio.add_productcomponent" ),
683+ context ["has_change_permission" ],
684+ ]
685+ )
686+ context ["has_edit_productcomponent" ] = all (
687+ [
688+ user .has_perm ("product_portfolio.change_productcomponent" ),
689+ context ["has_change_permission" ],
690+ ]
691+ )
692+ context ["has_delete_productcomponent" ] = user .has_perm (
693+ "product_portfolio.delete_productcomponent"
694+ )
695+ context ["has_change_codebaseresource_permission" ] = user .has_perm (
696+ "product_portfolio.change_codebaseresource"
697+ )
699698
700- if context [ "has_edit_productpackage" ] or context [ "has_edit_productcomponent" ] :
699+ if context . get ( "has_edit_productpackage" ) or context . get ( "has_edit_productcomponent" ) :
701700 all_licenses = License .objects .scope (dataspace ).filter (is_active = True )
702701 add_client_data (self .request , license_data = all_licenses .data_for_expression_builder ())
703702
@@ -741,12 +740,13 @@ class ProductTabInventoryView(
741740 def get_context_data (self , ** kwargs ):
742741 context = super ().get_context_data (** kwargs )
743742
743+ product = self .object
744744 user = self .request .user
745745 dataspace = user .dataspace
746- context ["inventory_count" ] = self . object .productinventoryitem_set .count ()
746+ context ["inventory_count" ] = product .productinventoryitem_set .count ()
747747
748748 license_qs = License .objects .select_related ("usage_policy" )
749- declared_dependencies_qs = ProductDependency .objects .product (self . object )
749+ declared_dependencies_qs = ProductDependency .objects .product (product )
750750 package_qs = (
751751 Package .objects .select_related (
752752 "dataspace" ,
@@ -762,7 +762,7 @@ def get_context_data(self, **kwargs):
762762 ).with_vulnerability_count ()
763763
764764 productpackage_qs = (
765- self . object .productpackages .select_related (
765+ product .productpackages .select_related (
766766 "review_status" ,
767767 "purpose" ,
768768 )
@@ -783,13 +783,13 @@ def get_context_data(self, **kwargs):
783783 filter_productpackage = ProductPackageFilterSet (
784784 self .request .GET ,
785785 queryset = productpackage_qs ,
786- dataspace = self . object .dataspace ,
786+ dataspace = product .dataspace ,
787787 prefix = self .tab_id ,
788788 anchor = "#inventory" ,
789789 )
790790
791791 productcomponent_qs = (
792- self . object .productcomponents .select_related (
792+ product .productcomponents .select_related (
793793 "review_status" ,
794794 "purpose" ,
795795 )
@@ -811,7 +811,7 @@ def get_context_data(self, **kwargs):
811811 filter_productcomponent = ProductComponentFilterSet (
812812 self .request .GET ,
813813 queryset = productcomponent_qs ,
814- dataspace = self . object .dataspace ,
814+ dataspace = product .dataspace ,
815815 prefix = self .tab_id ,
816816 anchor = "#inventory" ,
817817 )
@@ -878,26 +878,27 @@ def get_context_data(self, **kwargs):
878878 }
879879 )
880880
881- perms = guardian_get_perms (user , self .object )
882- has_product_change_permission = "change_product" in perms
883- context ["has_edit_productcomponent" ] = all (
884- [
885- has_product_change_permission ,
886- user .has_perm ("product_portfolio.change_productcomponent" ),
887- ]
888- )
889- context ["has_edit_productpackage" ] = all (
890- [
891- has_product_change_permission ,
892- user .has_perm ("product_portfolio.change_productpackage" ),
893- ]
894- )
895- context ["has_delete_productpackage" ] = user .has_perm (
896- "product_portfolio.delete_productpackage"
897- )
898- context ["has_delete_productcomponent" ] = user .has_perm (
899- "product_portfolio.delete_productcomponent"
900- )
881+ if not product .is_locked :
882+ perms = guardian_get_perms (user , product )
883+ has_product_change_permission = "change_product" in perms
884+ context ["has_edit_productcomponent" ] = all (
885+ [
886+ has_product_change_permission ,
887+ user .has_perm ("product_portfolio.change_productcomponent" ),
888+ ]
889+ )
890+ context ["has_edit_productpackage" ] = all (
891+ [
892+ has_product_change_permission ,
893+ user .has_perm ("product_portfolio.change_productpackage" ),
894+ ]
895+ )
896+ context ["has_delete_productpackage" ] = user .has_perm (
897+ "product_portfolio.delete_productpackage"
898+ )
899+ context ["has_delete_productcomponent" ] = user .has_perm (
900+ "product_portfolio.delete_productcomponent"
901+ )
901902
902903 if page_obj :
903904 previous_url , next_url = self .get_previous_next (page_obj )
0 commit comments