diff --git a/resources/trackers/kitsu.py b/resources/trackers/kitsu.py index 581bb2c..48b5287 100644 --- a/resources/trackers/kitsu.py +++ b/resources/trackers/kitsu.py @@ -415,27 +415,28 @@ class Kitsu(Tracker): def update_data(self, entity, custom_data={}, name=None, description=None, frames=None, clear=False): if isinstance(entity, dict): entity_id = entity['id'] + existing_data = entity.get('data') or {} else: entity_id = self.get_id(entity) - entity = gazu.client.fetch_one('entities', entity_id) + existing_data = None + payload = {} if name: - entity['name'] = name + payload['name'] = name if description: - entity['description'] = description + payload['description'] = description if frames: - entity['nb_frames'] = frames + payload['nb_frames'] = frames - if clear or not entity['data']: - entity['data'] = custom_data - else: - entity['data'].update(custom_data) + if custom_data or clear: + if clear: + payload['data'] = dict(custom_data) + else: + if existing_data is None: + existing_data = gazu.client.fetch_one('entities', entity_id).get('data') or {} + payload['data'] = {**existing_data, **custom_data} - #print('######UPDATE DATA') - #pprint(entity) - entity_data = gazu.client.put(f"data/entities/{entity_id}", entity) - #print() - #pprint(entity) + entity_data = gazu.client.put(f"data/entities/{entity_id}", payload) return entity_data['data']