@@ -42,7 +42,7 @@ def __init__(self):
42
42
self .click_value_3rd = ''
43
43
self .click_value_VPN = ''
44
44
self .root = TkinterDnD .Tk ()
45
- self .root .title ("Network Sketcher ver 2.5.1d " )
45
+ self .root .title ("Network Sketcher ver 2.5.1e " )
46
46
self .root .geometry ("510x200+100+100" )
47
47
icon = tk .PhotoImage (file = 'ns_logo.png' )
48
48
self .root .iconphoto (True , icon )
@@ -383,17 +383,15 @@ def click_action_sub1_1(self, click_value,push_array):
383
383
self .inFileTxt_92_2_2 .delete (0 , tkinter .END )
384
384
self .inFileTxt_92_2_2 .insert (tk .END , iDir + ns_def .return_os_slash () + basename_without_ext + '_backup' + '.xlsx' )
385
385
386
- # backup attribute meta. Add at ver 2.5.1c
387
- self .attribute_array = ns_def .convert_master_to_array ('Master_Data' , full_filepath_master , '<<ATTRIBUTE>>' )
388
- #print(self.attribute_array)
389
- self .attribute_tuple = ns_def .convert_array_to_tuple (self .attribute_array )
390
-
391
386
###check Master file open
392
387
ns_def .check_file_open (full_filepath_master )
393
388
394
389
###create backup master file
395
390
ns_def .get_backup_filename (full_filepath_master )
396
391
392
+ # backup attribute meta. Add at ver 2.5.1c
393
+ name_changed_before_attribute_array = ns_def .convert_master_to_array ('Master_Data' , full_filepath_master , '<<ATTRIBUTE>>' )
394
+
397
395
'''Sketch file Sync to Master'''
398
396
### run 92-3 for dev , l1_sketch sync with L1_master file
399
397
self .click_value = '92-3'
@@ -407,12 +405,64 @@ def click_action_sub1_1(self, click_value,push_array):
407
405
self .click_value_2nd = ''
408
406
self .click_value_3rd = ''
409
407
408
+ # add bug fix at ver 2.5.1e
409
+ name_mapping = {old_name : new_name for old_name , new_name in self .updated_name_array }
410
+
411
+ for item in name_changed_before_attribute_array :
412
+ if item [0 ] not in [1 , 2 ]:
413
+ current_name = item [1 ][0 ]
414
+ if current_name in name_mapping :
415
+ item [1 ][0 ] = name_mapping [current_name ]
416
+
417
+ #print(self.attribute_array)
418
+ #print(name_changed_before_attribute_array)
419
+
420
+ # Step 1: Extract relevant data (filter out [0] == 1 or 2)
421
+ self_filtered = [row for row in self .attribute_array if row [0 ] not in (1 , 2 )]
422
+ name_changed_filtered = [row for row in name_changed_before_attribute_array if row [0 ] not in (1 , 2 )]
423
+
424
+ # Extract the device names for comparison
425
+ self_names = {row [1 ][0 ] for row in self_filtered } # Set of device names in self
426
+ name_changed_names = {row [1 ][0 ] for row in name_changed_filtered } # Set of device names in name_changed
427
+
428
+ # Step 2: Remove items from name_changed_before_attribute_array that do not exist in self_attribute_array
429
+ name_changed_filtered = [row for row in name_changed_filtered if row [1 ][0 ] in self_names ]
430
+
431
+ # Step 3: Add items from self_attribute_array that do not exist in name_changed_before_attribute_array
432
+ for row in self_filtered :
433
+ if row [1 ][0 ] not in name_changed_names :
434
+ #name_changed_filtered.append(row)
435
+ modified_row = row .copy ()
436
+ modified_row [1 ].append ('<END>' )
437
+ name_changed_filtered .append (modified_row )
438
+
439
+ # Step 4: Sort by device name ([0][1]) in ascending order
440
+ name_changed_filtered .sort (key = lambda x : x [1 ][0 ])
441
+
442
+ # Step 5: Reassign [0] numbers in ascending order
443
+ for i , row in enumerate (name_changed_filtered , start = 3 ): # Start numbering from 3
444
+ row [0 ] = i
445
+
446
+ # Step 6: Combine with unchanged [0] == 1 and 2 rows
447
+ last_before_attribute_array = [
448
+ row for row in name_changed_before_attribute_array if row [0 ] in (1 , 2 )
449
+ ] + name_changed_filtered
450
+
451
+ # Output the final result
452
+ #print(last_before_attribute_array)
453
+
454
+ last_before_attribute_tuple = ns_def .convert_array_to_tuple (last_before_attribute_array )
410
455
#restore attribute meta. Add at ver 2.5.1c
411
456
offset_row = 0
412
457
offset_column = 0
413
458
worksheet_name = 'Master_Data'
414
459
section_write_to = '<<ATTRIBUTE>>'
415
- ns_def .overwrite_excel_meta (self .attribute_tuple , full_filepath_master , worksheet_name , section_write_to , offset_row , offset_column )
460
+
461
+ before_attribute_array = ns_def .convert_master_to_array ('Master_Data' , full_filepath_master , '<<ATTRIBUTE>>' )
462
+ before_attribute_tuple = ns_def .convert_array_to_tuple (before_attribute_array )
463
+ ns_def .clear_section_sheet ('Master_Data' , full_filepath_master , before_attribute_tuple )
464
+
465
+ ns_def .write_excel_meta (last_before_attribute_tuple , full_filepath_master , worksheet_name , section_write_to , offset_row , offset_column )
416
466
417
467
# remove exist L3/ file
418
468
if os .path .isfile (self .outFileTxt_11_2 .get ().replace ('[MASTER]' , '' )) == True :
0 commit comments