lastModifier and last modifiedDate pseudo-attributes
Last update: 16.07.2025Modify a record
import GRANTA_MIScriptingToolkit as gdl
import datetime
session = gdl.GRANTA_MISession("http://my.server.name/mi_servicelayer/", autoLogon=True, receiveTimeout=5000)
db_key = "MI_Training"
table_name = "Tensile Test Data"
import_service = session.dataImportService
browse_service = session.browseService
export_service = session.dataExportService
partial_table_ref = gdl.PartialTableReference(tableName=table_name)
modfied_record_guid = "4269f1bc-df6b-4a6d-870c-ef931728f37b"
modified_record_ref = gdl.RecordReference(DBKey=db_key, recordGUID=modfied_record_guid)
attribute_project_notes = "Project Notes"
attribute_val = f"Project was updated: {datetime.datetime.now()}"
attribute_ref = gdl.AttributeReference(
name=attribute_project_notes,
DBKey=db_key,
partialTableReference=partial_table_ref,
)
import_attribute_val = gdl.ImportAttributeValue(
longTextDataValue=gdl.LongTextDataType(value=attribute_val),
attributeReference=attribute_ref,
)
update_record = gdl.ImportRecord(
recordName=None,
importRecordMode="Update",
importAttributeValues=[import_attribute_val],
existingRecord=modified_record_ref,
)
update_request = gdl.SetRecordAttributesRequest(importRecords=[update_record])
updated_records = import_service.SetRecordAttributes(update_request).recordsImported
updated_record_ref = updated_records[0].recordReference
updated_record_name = updated_records[0].longName
print(f'Updated record "{updated_record_name}"')
Previous cell output:
Updated record "MTS-615723"
Now let's retrieve the record creator, createdDate, lastModifier and modifiedDate
pseudo_creator = gdl.AttributeReference(
pseudoAttribute=gdl.AttributeReference.MIPseudoAttributeReference.creator,
DBKey=db_key,
partialTableReference=partial_table_ref,
)
pseudo_created_date = gdl.AttributeReference(
pseudoAttribute=gdl.AttributeReference.MIPseudoAttributeReference.createdDate,
DBKey=db_key,
partialTableReference=partial_table_ref,
)
pseudo_last_modifier = gdl.AttributeReference(
pseudoAttribute=gdl.AttributeReference.MIPseudoAttributeReference.lastModifier,
DBKey=db_key,
partialTableReference=partial_table_ref,
)
pseudo_modified_date = gdl.AttributeReference(
pseudoAttribute=gdl.AttributeReference.MIPseudoAttributeReference.modifiedDate,
DBKey=db_key,
partialTableReference=partial_table_ref,
)
attribute_refs = [pseudo_creator, pseudo_created_date, pseudo_last_modifier, pseudo_modified_date]
export_request = gdl.GetRecordAttributesByRefRequest(
recordReferences=[modified_record_ref],
attributeReferences=attribute_refs,
)
exported_data = export_service.GetRecordAttributesByRef(export_request).recordData
for record in exported_data:
creator = [a.shortTextDataType.value for a in record.attributeValues if a.attributeName == "[creator]"][0]
created_date = [a.dateTimeDataType.value for a in record.attributeValues if a.attributeName == "[createdDate]"][0]
modifier = [a.shortTextDataType.value for a in record.attributeValues if a.attributeName == "[lastModifier]"][0]
modified_date = [a.dateTimeDataType.value for a in record.attributeValues if a.attributeName == "[modifiedDate]"][0]
print(f'"{creator}" imported the record on {created_date}')
print(f'The record was last modified on {modified_date} by "{modifier}"')
Previous cell output:
"Ansys Granta 1" imported the record on 2023-09-20T12:11:05.873
The record was last modified on 2025-05-12T16:21:14.687 by "ANSYS\mi-sw-admin"