class VendingException( Exception ): pass
-FILENAME="/etc/dispense2/snacks.conf"
-
-def parse_line( l ):
- toks = l.strip().split()
- if not len( toks ):
- return
-
- if toks[0][:1] == '#':
- return
-
- if len( toks ) < 4:
- raise VendingException( "Bad line '%s' in snack config file, too few items" % l )
-
- # price
- try:
- price = int( toks[0] )
- except ValueError:
- raise VendingException( "Bad line '%s' in snack config file, bad price" % l)
-
- # slots
- slots = toks[1].split(",")
- for s in slots:
- if len(s) != 2:
- raise VendingException( "Bad line %s' in snack config file, bad slot '%s'" % (l, s) )
-
- # shortname for dispense
- shortname = toks[2]
-
- # name
- name = ' '.join( toks[3:] )
-
- return ( price, slots, shortname, name )
-
-def get_snacks( filename = FILENAME ):
-
- snacks = []
- try:
- f = file( filename )
- snacks = filter( bool, map( parse_line, f ) )
- except IOError, e:
- raise VendingException( e )
-
- ret = {}
- for price, slots, shortname, name in snacks:
- for s in slots:
- ret[s] = (price, shortname, name)
-
- return ret
+import subprocess
+import os, re
def get_snack( slot ):
- snacks = get_snacks()
- if slot not in snacks:
- raise VendingException( "Slot '%s' isn't in config file" % slot )
-
- return snacks[slot]
+ if slot == "--":
+ return (0, 'nothing', 'Nothing')
+ cmd = 'dispense iteminfo snack:%s' % slot
+# print 'cmd = %s' % cmd
+ try:
+# info = subprocess.check_output(["dispense","iteminfo",'snack:%s'%slot])
+ raw = os.popen(cmd)
+ info = raw.read()
+ raw.close()
+# print 'cmd (2) = %s' % cmd
+# print 'info = "%s"' % info
+ m = re.match("\s*[a-z]+:\d+\s+(\d+)\.(\d\d)\s+([^\n]+)", info)
+ val = ( int(m.group(1))*100 + int(m.group(2)), m.group(3), m.group(3) )
+# print 'Price: %i, Name: %s' % (val[0], val[1])
+ except BaseException as e:
+ print "BaseException"
+ print e
+ val = (0, 'error', 'Error')
+ except:
+ print "Unknown exception"
+ val = (0, 'error', 'Error')
+ return val
def get_price( slot ):
p, sn, n = get_snacks( slot )
return sn
if __name__ == '__main__':
- snacks = get_snacks()
-
- print snacks
+ print "Don't run this"