← back to Hollywood Body Table Migration

__pycache__/migrate.cpython-314.pyc

40 lines

+
R��j���|�Rt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RI	t^RI
t
R]P9t]PPRR4t]PR,tR]R2tR]R	R
/tRRCRRDR
RERRFRRGRRHRRIRRJ/tRtRKRltRtRt]P0!]!R44t]Uu.uF#pRVR,P749gK!VNK%	upt]
PP;4P=R4tR]R]R./t ^t!^t"^t#]$!]^4EF&wt%t&]&R,t']&R,t(]!](4t)]!R]R ]'R!24;'gR"./t*]*R",Uu/uF<qR#,VR$,3VPR%4;'gR&PW4bK>	upt,.t-])F�wt.t/]/'gK]!].4wt0t1],P]0]134'dK6]'d�]!R']R ]'R!2R(R#]0R$]1R)R*R%]///4t2]2'd(]2PR(4'd]2R(,R,MRt3]3'd#]-PiR]3R+]0R$]1R,]//4]!^,
t!]Pj!R-4K�]-PiRRR+]0R$]1R,]//4]!^,
t!K�	]!](4t6]6](8wdl] R,PiR]'R.]&R.,R/](R0]-/4]'d3]!R1]R ]'R22R3R]'R4]6//4]"^,
t"]Pj!R-4M]"^,
t"M	]#^,
t#]%^2,^8XgEK]7!R5]%R6]8!]4R724EK)	]'dR8MR9t9]PtPwR:]9R;]R224t<]Pz!] ]!]<R<44]7!R=]9R>]8!]4R?]"R@]!RA]#2
4]7!RB]<4R#uupiuupi)LaEMove Hollywood Wallcoverings spec <table> data out of body_html into global.* metafields.
Lossless: backfills any table label whose metafield is absent/empty BEFORE stripping the table.
Reversible: snapshots every original body_html + records created metafields to restore/.
Usage: migrate.py [--apply]   (default = DRY RUN)
Nz--apply�SHOPIFY_STORE_DOMAINz)designer-laboratory-sandbox.myshopify.com�SHOPIFY_ADMIN_TOKENzhttps://z/admin/api/2024-10zX-Shopify-Access-TokenzContent-Typezapplication/json�Width�WeightzFire RatingzSold Perz
Panel Spec�Repeat�Finish�Cleaningc��V\9d\V,#R\P!RRVP44P	R43#)�globalz
[^a-z0-9]+�_)�MAP�re�sub�lower�strip)�labels&�
migrate.py�key_forrs;����|�C��J�&��b�f�f�]�3�u�{�{�}�=�C�C�C�H�I�I�c	��\^4F�p\PPY'd%\P
!V4P
4MR\VR7p\PPV4p\P!V4u#	R# \PPdtpTPR8Xd+\P!^T^,,4Rp?K�\RTPYP!4R,4Rp?R#Rp?i\"d#p\P!^4Rp?EKIRp?ii;i)�N)�data�headers�methodi��HTTP:N��N)�range�urllib�request�Request�json�dumps�encode�HDR�urlopen�load�error�	HTTPError�code�time�sleep�print�read�	Exception)r�url�body�attempt�r�resp�e�exs&&&     r�reqr5s�����8��	$��n�n�$�$�S�D�t�z�z�$�/?�/F�/F�/H�VZ�dg�ou�$�v�A����'�'��*�D�4�9�9�T�?�,B�����|�|�%�%�	A��v�v�s�{�D�J�J�q�'�!�)�}�5�x��&�����F�F�H�T�N�3�D���	$��J�J�q�M�8��	$�s0�BB�E�<5D*�7,D*�*E�7E�8E�Ec��\P!RV4UUu.uF%wrVP4VP43NK'	upp#uuppi)z1<td>\s*([^<]+?)\s*</td>\s*<td>\s*([^<]*?)\s*</td>)r
�findallr)r/�l�vs&  r�
parse_rowsr:%s<��-/�Z�Z�8l�nr�-s�t�-s�c�a�Q�W�W�Y�q�w�w�y�!�-s�t�t��ts�+A
c��\P!RRV\PR7p\P!RRV4P4pV#)z<table[\s\S]*?</table>�)�flagsz\s+$)r
r�Ir)r/�bs& r�strip_tablesr@(s;���f�f�
&�r�$�R�T�T�:�A��f�f�W�R��� � �"�A��Hrz/tmp/hw_all.jsonz<tabler/z
%Y%m%d-%H%M%S�ts�store�products�id�GETz
/products/z/metafields.json�
metafields�	namespace�key�valuer<�POST�	metafield�type�single_line_text_field�ns�valg�?�handle�old_body�created_metafields�PUTz.json�product�	body_htmlz  ...�/z
 processed�APPLY�DRYRUNz:~/Projects/hollywood-body-table-migration/restore/restore-�-�w�[z] products with table: z  body-strips: z  metafields backfilled: z
  no-change: zrestore/undo file:)r
�width)r
�v_prods_weight)r
�fire_rating)r
�unit_of_measure)r
�
panel_spec)r
�repeat)r
�finish)r
�cleaning)N)>�__doc__�osr r
r)�sys�urllib.requestr�urllib.parse�urllib.error�datetime�argvrW�environ�get�STORE�TOK�APIr#rrr5r:r@r%�open�rowsr�targets�utcnow�strftimerA�restore�
created_count�body_changes�skipped�	enumerate�ir1�pidr/�tbl�mfsr�have�createdrrOrN�k�res�mid�appendr*�new_bodyr+�len�mode�path�
expanduser�rf�dump)r1�ms00r�<module>r�s���
M�L�L�L�L��3�8�8����j�j�n�n�+�,W�X���J�J�$�%���u�g�'�(���c�.�1C�D��	�	�X�&A��'��4P�
�%�x�0C�	�
�z�*?�	��J�
�u�
�

�Y�Y�t�&�'�(���:�D�q�H��&�	���(9�9���D�:��������&�&��7��	
�b���z�"�-���
�a�����W�Q��C�A�a�	�$��C�a��i���4��C��E�S�E��C�5�(8�9�:�O�O�|�B�>O�C�LO�P\�L]�	^�L]�q�[�>�!�E�(�
#�Q�U�U�7�^�%9�%9�r�$@�$@�$B�
B�L]�	^�D��G��	��c��H�
�U�^���1��8�8�R��F������F�c�U�*�S�E�1A�B��k�"�U�1�V�<T�U\�]`�a�b�d�C�*-�#�'�'�+�2F�2F��K� ��&�D�C��G�N�N�D��T�"�U�1�U�3�#G�H�-�YZ�JZ�-��J�J�t���N�N�D��d�2�e�A�e�C�@�A�=�RS�CS�=���$�
�H���~��
��"�"�D��X�a��k�*�T�Rf�gn�#o�p������Z��u�E�2�I�t�C��T\�>]�3^�_��!�O�L�T�Z�Z��-��!�O�L���
����t�Q�w���a�S��#�g�,��z�:�;�? �B�W�8���7�7���R�SW�RX�XY�Z\�Y]�]b�c�d���	�	�'�$�r�#�,����$��&�s�7�|�n�O�L�>�Qj�kx�jy�zG�HO�GP�Q�R���2���S	;��
_s�-N4�N4� ,N9�
N9