Преглед изворни кода

fix NewProduct entry not applying data from text fields

Daniel Sheffield пре 2 година
родитељ
комит
7a8a3d6174
1 измењених фајлова са 14 додато и 10 уклоњено
  1. 14 10
      app/activities/NewProduct.py

+ 14 - 10
app/activities/NewProduct.py

@@ -23,10 +23,9 @@ class NewProduct(urwid.Overlay):
     ):
         self.esc_cb = esc_cb
         self.under = under
-        self._data = data
         self.query_manager = query_manager
         self.name = name
-        
+
         title = urwid.Text('Enter Product Info', align='center')
         self.fields = OrderedDict()
         for f in ('product', 'category', 'group'):
@@ -64,20 +63,25 @@ class NewProduct(urwid.Overlay):
 
     @property
     def data(self):
-        return dict([(k,v) for k,v in self._data.items() if k in ('product', 'category', 'group')])
-    
+        return dict([
+            (k,v.get_edit_text()) for k,v in self.fields.items()
+        ])
+
+    @data.setter
+    def data(self, _data):
+        for k,v in _data.items():
+            self.fields[k].set_edit_text(v)
+
     def apply_choice(self, name, value):
-        self._data.update({
+        self.data = {
             name: value
-        })
+        }
         for k,v in self.data.items():
             if k == name or v:
                 continue
             options = self.query_manager.unique_suggestions(k, exclude=[self.name, *NON_IDENTIFIER_COLUMNS], **self.data)
             if len(options) == 1 and k != 'ts':
-                self._data.update({
-                    k: list(options)[0]
-                })
+                self.data = { k: list(options)[0] }
 
     def update(self):
         for k, v in self.data.items():
@@ -93,7 +97,7 @@ class NewProduct(urwid.Overlay):
             return super().keypress(size, 'down')
         elif key == 'shift tab':
             return super().keypress(size, 'up')
-        
+
 
         return super().keypress(size, key)