-
Notifications
You must be signed in to change notification settings - Fork 8
Metadata
Jean-Sébastien Sevestre edited this page Oct 29, 2019
·
3 revisions
metadata_kind = api.get_call('metadata', 'list', body={
"customerId":"567842713082480",
"emptyParent":"true",
"lang":"fr",
})
print(metadata_kind)
>>> [{
"customer":"5678444713082880",
"multiple":"false",
"isVisibleFront":"false",
"displayInFilter":"false",
"instance":"6660333004128256",
"sortOrder":"22",
"updatedAt":"2019-04-03T14:07:10.672665",
"uid":"6298100337213440",
"heritable":"false",
"familyKey":"6298100337213440", # <- same Id
"id":"6298100337213440", # <- same Id
"createdAt":"2019-04-03T14:07:10.672871",
"name":{
"en":"content",
}
}]
metadata_values = api.get_call('metadata', 'list', body={
"customerId":"567842713082480",
"familyId": "6298100337213440", # <- /!\
"parent": "6298100337213440", # <- /!\
"lang":"fr",
})
print(metadata_values)
>>> [
{
"customer": "5678444713082880",
"multiple": false,
"isVisibleFront": false,
"displayInFilter": false,
"instance": "6660333004128256",
"sortOrder": "0",
"updatedAt": "2019-04-03T14:07:18.363623",
"uid": "5631838787469312",
"id": "5631838787469312",
"heritable": false,
"parent": "6298100337213440", # <- /!\
"familyKey": "6298100337213440", # <- /!\
"createdAt": "2019-04-03T14:07:18.363833",
"name": { "en": "C1" }
},
{
"customer": "5678444713082880",
"multiple": false,
"isVisibleFront": false,
"displayInFilter": false,
"instance": "6660333004128256",
"sortOrder": "1",
"updatedAt": "2019-04-03T14:07:23.464679",
"uid": "5428492134776832",
"id": "5428492134776832",
"heritable": false,
"parent": "6298100337213440",
"familyKey": "6298100337213440",
"createdAt": "2019-04-03T14:07:23.464777",
"name": { "en": "C2" }
}
]
The sortOrder
property store a relative position of the element in the list.
To reorder a list, you have to save each element with in the sortOrder
property the value of the new index (the one in the new list).
The initial list
'element': 'A', sortOrder: -5
'element': 'B', sortOrder: -4
'element': 'C', sortOrder: -3
'element': 'D', sortOrder: -2
'element': 'E', sortOrder: -1
'element': 'F', sortOrder: 1
'element': 'G', sortOrder: 2
Reorder my list
'element': 'G', sortOrder: 2
'element': 'F', sortOrder: 1
'element': 'E', sortOrder: -1
'element': 'D', sortOrder: -2
'element': 'C', sortOrder: -3
'element': 'B', sortOrder: -4
'element': 'A', sortOrder: -5
Update indexes
'element': 'G', sortOrder: 1
'element': 'F', sortOrder: 2
'element': 'E', sortOrder: 3
'element': 'D', sortOrder: 4
'element': 'C', sortOrder: 5
'element': 'B', sortOrder: 6
'element': 'A', sortOrder: 7
save each element, and wait a few seconds (4-5) between 2 saves
Code sample
import time
# Auth
bearer = "xy...z"
api_client = client.ApiClient(token=bearer)
# Get metadata list
metadata_list = api_client.get_call('metadata', 'list', instance=IDS['INSTANCE'], familyId=METADATA_ID, parent=METADATA_ID)
# sort the list by the english name
def key(meta):
return meta['name']['en'].lower()
metadata_list = sorted(metadata_list, key=key)
# recompute new index and save each metadata
for index, metadata in enumerate(metadata_list):
print('saving : ', metadata['name'])
m['sortOrder'] = index
LA.get_call('metadata', 'save', body=metadata)
time.sleep(4) # important to let the server recompute new indexes