From 0739c8a0c0dd026fd57be2fc44bc63f2e3da86fa Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 5 Apr 2012 22:26:07 +0200 Subject: add merge action --- stocks.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/stocks.py b/stocks.py index b4a2192..67d841f 100755 --- a/stocks.py +++ b/stocks.py @@ -156,10 +156,31 @@ class AppCGI: old_qty = item.qty.get (self.place, 0) item.qty[self.place] = old_qty + qty dirty = True + elif self.action == 'merge': + from_ = form.getfirst ('from', None) + to = form.getfirst ('to', None) + factor = int (form.getfirst ('factor', None)) + if not (from_ and to and factor): + raise StocksError ("bad parameters") + for item in self.stocks.items.itervalues (): + if from_ in item.qty: + old_qty = item.qty.get (to, 0) + item.qty[to] = old_qty + item.qty[from_] * factor + if from_ != to: + del item.qty[from_] + dirty = True + except StocksError, e: + self.error = str (e) except ValueError: self.error = "bad input value" if dirty: self.stocks.dump () + # Make a list of places. + places = set () + for item in self.stocks.items.itervalues (): + places.update (item.qty) + places -= set (('main', )) + self.places = sorted (places) # Done. self.output () @@ -203,9 +224,12 @@ td.qty, td.action { form { margin: 0; } -input.qty { +input.qty, input.number { width: 5em; } +p { + margin: 0.5ex 0; +} p.error { background: #ff4444; border: 1px dashed black; @@ -246,17 +270,38 @@ $stylesheet #end if #end def +#def select_places($name, $add = None) + #set $places = $places + #if $add + #set $places = sorted ($places + $add) + #end if + +#end def + #if $error

$error

#end if #if not $mode +

Command mode

+

+ + Merge $select_places("from") + x + to $select_places("to", ['main']) + +

#else

#end if -- cgit v1.2.3