Do not delete metafields not managed
issue11019 review364431002
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
* Define the metafields managed by Tryton
|
||||
* Add support for Python 3.10
|
||||
* Remove support for Python 3.6
|
||||
|
||||
|
||||
@@ -70,6 +70,12 @@ Set metafields to product::
|
||||
|
||||
>>> Template.get_shopify_metafields = get_shopify_metafields
|
||||
|
||||
>>> from trytond.modules.web_shop_shopify.web import Shop
|
||||
>>> def managed_metafields(self):
|
||||
... return {'global.test'}
|
||||
|
||||
>>> Shop.managed_metafields = managed_metafields
|
||||
|
||||
Create country::
|
||||
|
||||
>>> belgium = Country(name="Belgium", code='BE')
|
||||
|
||||
@@ -115,13 +115,20 @@ class Shop(metaclass=PoolMeta):
|
||||
and payment_journal.match(pattern)):
|
||||
return payment_journal.journal
|
||||
|
||||
def managed_metafields(self):
|
||||
return set()
|
||||
|
||||
def __sync_metafields(self, resource, metafields):
|
||||
metafields = metafields.copy()
|
||||
managed_metafields = self.managed_metafields()
|
||||
assert metafields.keys() <= managed_metafields
|
||||
for metafield in resource.metafields():
|
||||
key = '.'.join([metafield.namespace, metafield.key])
|
||||
value = metafield.to_dict()
|
||||
if key not in metafields:
|
||||
metafield.destroy()
|
||||
time.sleep(BACKOFF_TIME)
|
||||
if key in managed_metafields:
|
||||
metafield.destroy()
|
||||
time.sleep(BACKOFF_TIME)
|
||||
elif metafields[key] != value:
|
||||
for k, v in metafields.pop(key).items():
|
||||
setattr(metafield, k, v)
|
||||
|
||||
Reference in New Issue
Block a user