changeset ea7d0b1b4c7a in modules/web_shop_shopify:default
details:
https://hg.tryton.org/modules/web_shop_shopify?cmd=changeset&node=ea7d0b1b4c7a
description:
Do not delete metafields not managed
issue11019
review364431002
diffstat:
CHANGELOG | 1 +
tests/scenario_web_shop_shopify.rst | 6 ++++++
web.py | 11 +++++++++--
3 files changed, 16 insertions(+), 2 deletions(-)
diffs (50 lines):
diff -r ec753b21f9b3 -r ea7d0b1b4c7a CHANGELOG
--- a/CHANGELOG Sat Dec 18 16:34:37 2021 +0100
+++ b/CHANGELOG Tue Dec 21 23:20:50 2021 +0100
@@ -1,3 +1,4 @@
+* Define the metafields managed by Tryton
* Add support for Python 3.10
* Remove support for Python 3.6
diff -r ec753b21f9b3 -r ea7d0b1b4c7a tests/scenario_web_shop_shopify.rst
--- a/tests/scenario_web_shop_shopify.rst Sat Dec 18 16:34:37 2021 +0100
+++ b/tests/scenario_web_shop_shopify.rst Tue Dec 21 23:20:50 2021 +0100
@@ -70,6 +70,12 @@
>>> 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')
diff -r ec753b21f9b3 -r ea7d0b1b4c7a web.py
--- a/web.py Sat Dec 18 16:34:37 2021 +0100
+++ b/web.py Tue Dec 21 23:20:50 2021 +0100
@@ -115,13 +115,20 @@
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)