← back to Designerwallcoverings
fix(dwpw-grs-migrate): --grs comma-list, drop blank metafields, per-row skip-on-error
35ba74f57b04067628cf0d0dd7bfe9198ef6ac92 · 2026-09-08 13:59:41 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6KGNY395sd4PKXbEzXbgV
Files touched
M scripts/dwpw-grs-migrate.py
Diff
commit 35ba74f57b04067628cf0d0dd7bfe9198ef6ac92
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Sep 8 13:59:41 2026 -0700
fix(dwpw-grs-migrate): --grs comma-list, drop blank metafields, per-row skip-on-error
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6KGNY395sd4PKXbEzXbgV
---
scripts/dwpw-grs-migrate.py | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/scripts/dwpw-grs-migrate.py b/scripts/dwpw-grs-migrate.py
index 33f3bd9..ca90424 100644
--- a/scripts/dwpw-grs-migrate.py
+++ b/scripts/dwpw-grs-migrate.py
@@ -387,7 +387,9 @@ def update_grs(row, existing, image_ok, res):
return pid, handle
def _set_metafields(pid, row):
- mfs = metafields_for(row)
+ # Drop any metafield whose value is blank — Shopify rejects blank values
+ # (e.g. sheet rows with an empty Pattern -> blank pattern_name).
+ mfs = [m for m in metafields_for(row) if str(m.get("value", "")).strip() != ""]
for m in mfs:
m["ownerId"] = pid
q = '''mutation($mf:[MetafieldsSetInput!]!){ metafieldsSet(metafields:$mf){
@@ -612,7 +614,15 @@ def main():
tot = {"create": 0, "update": 0, "publish": 0, "twin": 0, "archive": 0, "redirect": 0,
"skip": 0, "no_image_draft": 0}
for row in rows:
- r = process(row, args.apply)
+ try:
+ r = process(row, args.apply)
+ except Exception as e:
+ print(" {:<10} ROW_ERROR {}".format(row.get("grs", "?"), str(e)[:90]))
+ results.append({"grs": row.get("grs", "?"), "ensure": "error",
+ "result": "ROW_ERROR", "skip": "ROW_ERROR: " + str(e)[:120],
+ "dwpw_twins": [], "dwpw_twin_found": False})
+ tot["skip"] += 1
+ continue
results.append(r)
if r["ensure"] == "create": tot["create"] += 1
else: tot["update"] += 1
← d46e031 fix(dwpw-grs-migrate): image verify accepts ATTACHED media,
·
back to Designerwallcoverings
·
docs(dwpw-grs-migrate): track 9 image-pending SKUs (DWPW dup 68a9edf →