22from datetime import datetime , timedelta
33from typing import Any
44
5- from crum import get_current_user
65from django .db import transaction
76from django .http .request import QueryDict
87from django .utils import timezone
98
10- from dojo .authorization .models import (
11- Product_Member ,
12- Product_Type_Member ,
13- Role ,
14- )
159from dojo .models import (
1610 Engagement ,
1711 Product ,
@@ -233,20 +227,14 @@ def get_or_create_product_type(
233227 ) -> Product_Type :
234228 """
235229 Fetches a product type by name if one already exists. If not,
236- a new product type will be created with the current user being
237- added as product type member
230+ a new product type will be created. RBAC ownership of the new row
231+ is bootstrapped by Pro's post_save signal on Product_Type.
238232 """
239233 # Look for an existing object
240234 if product_type := self .get_target_product_type_if_exists (product_type_name = product_type_name ):
241235 return product_type
242236 with transaction .atomic ():
243- product_type , created = Product_Type .objects .select_for_update ().get_or_create (name = product_type_name )
244- if created :
245- Product_Type_Member .objects .create (
246- user = get_current_user (),
247- product_type = product_type ,
248- role = Role .objects .get (is_owner = True ),
249- )
237+ product_type , _created = Product_Type .objects .select_for_update ().get_or_create (name = product_type_name )
250238 return product_type
251239
252240 def get_or_create_product (
@@ -259,8 +247,8 @@ def get_or_create_product(
259247 ) -> Product :
260248 """
261249 Fetches a product by name if it exists. When `auto_create_context` is
262- enabled the product will be created with the current user being added
263- as product member
250+ enabled the product will be created. RBAC ownership of the new row is
251+ bootstrapped by Pro's post_save signal on Product.
264252 """
265253 # try to find the product (within the provided product_type)
266254 if product := self .get_target_product_if_exists (product_name , product_type_name ):
@@ -273,13 +261,7 @@ def get_or_create_product(
273261 product_type = self .get_or_create_product_type (product_type_name = product_type_name )
274262 # Create the product
275263 with transaction .atomic ():
276- product , created = Product .objects .select_for_update ().get_or_create (name = product_name , prod_type = product_type , description = product_name )
277- if created :
278- Product_Member .objects .create (
279- user = get_current_user (),
280- product = product ,
281- role = Role .objects .get (is_owner = True ),
282- )
264+ product , _created = Product .objects .select_for_update ().get_or_create (name = product_name , prod_type = product_type , description = product_name )
283265
284266 return product
285267
0 commit comments