@@ -178,10 +178,13 @@ def _print_perm(
178178 # if not perm_to_print:
179179 # return
180180 print ()
181- plural = (
182- perm_pretty_name if perm_pretty_name .endswith ("s" ) else f"{ perm_pretty_name } s"
183- )
184- print (f"{ plural .upper ()} ({ len (perm_to_print )} )" )
181+ if perm_pretty_name :
182+ plural = (
183+ perm_pretty_name
184+ if perm_pretty_name .endswith ("s" )
185+ else f"{ perm_pretty_name } s"
186+ )
187+ print (f"{ plural .upper ()} ({ len (perm_to_print )} )" )
185188 for perm in perm_to_print :
186189 print (f"- { perm } " )
187190
@@ -269,16 +272,21 @@ def show_perms(supplier_type: SupplierType, app_id: str, org_ods=None) -> None:
269272def add_pointer_type_perms (
270273 supplier_type : SupplierType , app_id : str , org_ods = None , * pointer_types_to_add : str
271274) -> None :
272- # TODO:
273- # confirm before proceeding mode
274- # formatting help for pointer types ?
275- # highlight new additions in proposed pointer types list e.g. [NEW]
275+ """
276+ TODO:
277+ confirm before proceeding mode
278+ formatting help for pointer types ?
279+ validate not adding a duplicate type
280+ add list of all pointer types vs adding access control
281+ highlight new additions in proposed pointer types list e.g. [NEW]
282+ don't create at app level if ODS level present & backwards too? - hmm maybe too fancy
283+ """
276284 if supplier_type .lower () not in SupplierType .list () or not app_id :
277285 print ("Usage: add pointer type permissions for a given organisation or app" )
278- print (" show_perms consumer <app_id> <org_ods> <pointer_types>" )
279- print (" show_perms producer <app_id> <org_ods> <pointer_types>" )
280- print (" show_perms consumer <app_id> <pointer_types>" )
281- print (" show_perms producer <app_id> <pointer_types>" )
286+ print (" add_pointer_type_perms consumer <app_id> <org_ods> <pointer_types>" )
287+ print (" add_pointer_type_perms producer <app_id> <org_ods> <pointer_types>" )
288+ print (" add_pointer_type_perms consumer <app_id> <pointer_types>" )
289+ print (" add_pointer_type_perms producer <app_id> <pointer_types>" )
282290 return
283291
284292 if not pointer_types_to_add :
@@ -292,6 +300,10 @@ def add_pointer_type_perms(
292300 else :
293301 lookup_path = f"{ supplier_type } /{ app_id } .json"
294302
303+ if len (pointer_types_to_add ) == 1 and pointer_types_to_add [0 ] == "all" :
304+ print ("Setting permissions for access to all pointer types." )
305+ pointer_types_to_add = tuple (TYPE_ATTRIBUTES .keys ())
306+
295307 unknown_types = [pt for pt in pointer_types_to_add if pt not in TYPE_ATTRIBUTES ]
296308 if unknown_types :
297309 print (f"Error: Unknown pointer types provided: { ', ' .join (unknown_types )} " )
@@ -305,19 +317,35 @@ def add_pointer_type_perms(
305317
306318 current_perms = json .loads (perms_ugly )
307319 current_pointer_types : list = current_perms .get ("types" , [])
308- if all (
309- new_pointer_type in current_pointer_types
320+
321+ already_added_types = list (
322+ new_pointer_type
310323 for new_pointer_type in pointer_types_to_add
311- ):
312- print (
313- f"No changes needed for { lookup_path } . These pointer types are already assigned."
314- )
324+ if new_pointer_type in current_pointer_types
325+ )
326+ if len (already_added_types ):
327+ print (f"Error: These pointer types are already assigned to { lookup_path } :" )
328+ _print_perm_with_lookup ("" , already_added_types , TYPE_ATTRIBUTES )
329+ print ()
315330 return
316331
317332 proposed_pointer_types = current_pointer_types + list (pointer_types_to_add )
333+ print ()
318334 _print_perm_with_lookup (
319335 "proposed pointer types" , proposed_pointer_types , TYPE_ATTRIBUTES
320336 )
337+
338+ if COMPARE_AND_CONFIRM :
339+ print ()
340+ confirm = (
341+ input ("Do you want to proceed with these changes? (yes/NO): " )
342+ .strip ()
343+ .lower ()
344+ )
345+ if confirm != "yes" :
346+ print ("Operation cancelled at user request." )
347+ return
348+
321349 current_perms ["types" ] = proposed_pointer_types
322350
323351 s3 = _get_s3_client ()
@@ -329,7 +357,7 @@ def add_pointer_type_perms(
329357 )
330358
331359 print ()
332- print (f"Set permissions for lookup_path" )
360+ print (f"Set permissions for { lookup_path } " )
333361
334362 print ()
335363 show_perms (supplier_type , app_id , org_ods )
0 commit comments