add Entra device identity to computers and Azure/Thor import sources

PC records now carry Entra/Azure device identity so imported machines keep a durable link back to their directory object instead of matching on hostname alone. Adds azuredeviceid, azureobjectid, and azuredevicecategory to the Computer model with matching migrations, surfaces them read-only in PCDetail as an Entra Device Info card, and lets PCForm edit the device id directly. The computers plugin registers a machineassetnumber import hook that reconciles PC-to-machine links during bulk import and warns on unresolved or conflicting relationships.

Adds importsources adapters that normalize Azure device-group and Thor PC inventory exports into canonical ShopDB CSVs via hostname alignment, exposes register_import_hook and RowWarning on the shopdb.api contract surface (contract 0.21.0), and refreshes the Import Site Assets page with clearer source instructions. Includes reconcile_locations maintenance script and coverage for the new import paths.
This commit is contained in:
benjamin.baker
2026-08-25 16:46:00 -04:00
parent f4d8868463
commit bdef21da50
21 changed files with 2064 additions and 86 deletions

View File

@@ -582,6 +582,9 @@ def create_computer():
vendorid=data.get('vendorid'),
modelnumberid=data.get('modelnumberid'),
loggedinuser=data.get('loggedinuser'),
azuredeviceid=data.get('azuredeviceid'),
azureobjectid=data.get('azureobjectid'),
azuredevicecategory=data.get('azuredevicecategory'),
lastreporteddate=data.get('lastreporteddate'),
lastboottime=data.get('lastboottime')
)
@@ -686,8 +689,9 @@ def update_computer(computer_id: int):
# Update computer fields
computer_fields = ['computertypeid', 'hostname', 'osid', 'vendorid',
'modelnumberid', 'loggedinuser', 'lastreporteddate',
'lastboottime']
'modelnumberid', 'loggedinuser', 'azuredeviceid',
'azureobjectid', 'azuredevicecategory',
'lastreporteddate', 'lastboottime']
for key in computer_fields:
if key in data:
old_val = getattr(comp, key)