def GetDeviceForcely(session,device_code,model_name=None): device=session.query(SBDB_ORM.Device).filter_by(uni_code=device_code).with_lockmode('update').first() if device is None: model=GetDeviceModelByName(session,model_name) if model is None: return None device=SBDB_ORM.Device() device.uni_code=device_code device.device_model_id=model.id obj_dev_model=model for obj_dev_key in obj_dev_model.device_keys: obj_dev_key_code=SBDB_ORM.DeviceKeyCode() obj_dev_key_code.device_key_id=obj_dev_key.id #obj_dev_key_code.key_code=hex(string.atoi(dev_code,16)+obj_dev_key.seq)[2:] obj_dev_key_code.key_code=Util.hex8(string.atoi(device_code,16)+obj_dev_key.seq)[2:] device.device_key_codes.append(obj_dev_key_code) session.add(device) session.commit() return device