|
@@ -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)
|
|
|
|