77from typing import NamedTuple
88
99from aiohttp import web
10+ from deepdiff import DeepDiff
1011from models_library .licensed_items import (
1112 LicensedItemDB ,
1213 LicensedItemID ,
@@ -48,18 +49,6 @@ class RegistrationResult(NamedTuple):
4849 message : str | None
4950
5051
51- def _compute_difference (old_data : dict , new_data : dict ):
52- differences = {
53- k : {"old" : old_data [k ], "new" : new_data [k ]}
54- for k in old_data
55- if old_data [k ] != new_data .get (k )
56- }
57- differences .update (
58- {k : {"old" : None , "new" : new_data [k ]} for k in new_data if k not in old_data }
59- )
60- return differences
61-
62-
6352async def register_resource_as_licensed_item (
6453 app : web .Application ,
6554 * ,
@@ -77,6 +66,8 @@ async def register_resource_as_licensed_item(
7766 #
7867 # This approach not only reduces unnecessary error logs but also helps prevent race conditions
7968 # when multiple concurrent calls attempt to register the same resource.
69+
70+ resource_key = f"{ licensed_resource_type } , { licensed_resource_name } "
8071 new_licensed_resource_data = licensed_resource_data .model_dump (
8172 mode = "json" , exclude_unset = True
8273 )
@@ -89,20 +80,21 @@ async def register_resource_as_licensed_item(
8980 )
9081
9182 if licensed_item .licensed_resource_data != new_licensed_resource_data :
92- # differences = _compute_difference(
93- # licensed_item.licensed_resource_data or {},
94- # new_licensed_resource_data,
95- # )
96- differences = "there are differences TMP"
97- msg = f"DIFFERENT_RESOURCE: { licensed_resource_name } , { licensed_resource_type } . Difference:\n { pformat (differences )} "
83+ ddiff = DeepDiff (
84+ licensed_item .licensed_resource_data , new_licensed_resource_data
85+ )
86+ msg = (
87+ f"DIFFERENT_RESOURCE: { resource_key = } found in licensed_item_id={ licensed_item .licensed_item_id } with different data. "
88+ f"Diff:\n \t { pformat (ddiff , indent = 2 , width = 200 )} "
89+ )
9890 return RegistrationResult (
9991 licensed_item , RegistrationState .DIFFERENT_RESOURCE , msg
10092 )
10193
10294 return RegistrationResult (
10395 licensed_item ,
10496 RegistrationState .ALREADY_REGISTERED ,
105- f"ALREADY_REGISTERED: { licensed_resource_name } , { licensed_resource_type } " ,
97+ f"ALREADY_REGISTERED: { resource_key = } found in licensed_item_id= { licensed_item . licensed_item_id } " ,
10698 )
10799
108100 except LicensedItemNotFoundError :
@@ -119,7 +111,7 @@ async def register_resource_as_licensed_item(
119111 return RegistrationResult (
120112 licensed_item ,
121113 RegistrationState .NEWLY_REGISTERED ,
122- f"NEWLY_REGISTERED: { licensed_resource_name } , { licensed_resource_type } " ,
114+ f"NEWLY_REGISTERED: { resource_key = } registered with licensed_item_id= { licensed_item . licensed_item_id } " ,
123115 )
124116
125117
0 commit comments