From 9eaf51b96a494bf52dbc5f986ceffae82f68170e Mon Sep 17 00:00:00 2001
From: Matthew Andrew <matthew.andrew@stfc.ac.uk>
Date: Fri, 25 Jan 2019 16:20:50 +0000
Subject: [PATCH] Updated identical group check to switch groups Re #23642

---
 .../grouping_tab_widget_model.py                   |  4 ++--
 .../pairing_table_widget_model.py                  |  2 +-
 .../pairing_table_widget_presenter.py              | 14 ++++++++------
 .../pairing_table_group_selector_test.py           |  6 +++---
 4 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_model.py b/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_model.py
index 414625c0876..2dfa33c01e6 100644
--- a/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_model.py
+++ b/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_model.py
@@ -32,11 +32,11 @@ class GroupingTabModel(object):
 
     @property
     def groups(self):
-        return self._data.groups.values()
+        return list(self._data.groups.values())
 
     @property
     def pairs(self):
-        return self._data.pairs.values()
+        return list(self._data.pairs.values())
 
     @property
     def group_names(self):
diff --git a/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_model.py b/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_model.py
index 3214cf2b450..be292a1a420 100644
--- a/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_model.py
+++ b/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_model.py
@@ -10,7 +10,7 @@ class PairingTableModel(object):
 
     @property
     def pairs(self):
-        return self._data.pairs.values()
+        return list(self._data.pairs.values())
 
     @property
     def pair_names(self):
diff --git a/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_presenter.py b/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_presenter.py
index af3abdd7a43..6f559cc9a14 100644
--- a/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_presenter.py
+++ b/scripts/Muon/GUI/Common/pairing_table_widget/pairing_table_widget_presenter.py
@@ -51,16 +51,17 @@ class PairingTablePresenter(object):
         self.guessAlphaNotifier.notify_subscribers([pair_name, group1, group2])
 
     def handle_data_change(self, row, col):
-        changed_item = self._view.get_table_contents()[row][col]
+        table = self._view.get_table_contents()
+        changed_item = table[row][col]
         update_model = True
         if col == 0 and not self.validate_pair_name(changed_item):
             update_model = False
         if col == 1:
             if changed_item == self._view.get_table_item_text(row, 2):
-                update_model = False
+                table[row][2] = self._model.pairs[row].forward_group
         if col == 2:
             if changed_item == self._view.get_table_item_text(row, 1):
-                update_model = False
+                table[row][1] = self._model.pairs[row].backward_group
         if col == 3:
             if not self.validate_alpha(changed_item):
                 update_model = False
@@ -73,13 +74,14 @@ class PairingTablePresenter(object):
                 self._view.pairing_table.blockSignals(False)
 
         if update_model:
-            self.update_model_from_view()
+            self.update_model_from_view(table)
 
         self.update_view_from_model()
         self.notify_data_changed()
 
-    def update_model_from_view(self):
-        table = self._view.get_table_contents()
+    def update_model_from_view(self, table=None):
+        if not table:
+            table = self._view.get_table_contents()
         self._model.clear_pairs()
         for entry in table:
             pair = MuonPair(pair_name=str(entry[0]),
diff --git a/scripts/test/Muon/grouping_tab/pairing_table_group_selector_test.py b/scripts/test/Muon/grouping_tab/pairing_table_group_selector_test.py
index 9817f6bb2bb..22fb69e531b 100644
--- a/scripts/test/Muon/grouping_tab/pairing_table_group_selector_test.py
+++ b/scripts/test/Muon/grouping_tab/pairing_table_group_selector_test.py
@@ -188,7 +188,7 @@ class GroupSelectorTest(unittest.TestCase):
         self.assertEqual(self.get_group_1_selector_from_pair(0).currentText(), 'my_group_1')
         self.assertEqual(self.get_group_2_selector_from_pair(0).currentText(), 'my_group_1')
 
-    def test_group_cannot_be_changed_to_match_other_group(self):
+    def test_group_changed_to_other_group_switches_groups(self):
         self.add_three_groups_to_model()
         self.presenter.handle_add_pair_button_clicked()
 
@@ -202,8 +202,8 @@ class GroupSelectorTest(unittest.TestCase):
 
         self.assertEqual(self.get_group_1_selector_from_pair(0).count(), 3)
         self.assertEqual(self.get_group_2_selector_from_pair(0).count(), 3)
-        self.assertEqual(self.get_group_1_selector_from_pair(0).currentText(), 'my_group_0')
-        self.assertEqual(self.get_group_2_selector_from_pair(0).currentText(), 'my_group_1')
+        self.assertEqual(self.get_group_1_selector_from_pair(0).currentText(), 'my_group_1')
+        self.assertEqual(self.get_group_2_selector_from_pair(0).currentText(), 'my_group_0')
 
 
 
-- 
GitLab