Skip to content

Metadata

Jean-Sébastien Sevestre edited this page Oct 29, 2019 · 3 revisions

Metadata

Metadata kind

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

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" }
  }
]

Metadata Sorting

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
Clone this wiki locally