create pipe idler
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index 8c5ab73..93f22f2 100755 (executable)
@@ -10,7 +10,7 @@ from traceback import format_tb
 if USE_DB: import pg
 from time import time, sleep
 from popen2 import popen2
 if USE_DB: import pg
 from time import time, sleep
 from popen2 import popen2
-#from LATClient import LATClient, LATClientException
+from LATClient import LATClient, LATClientException
 from SerialClient import SerialClient, SerialClientException
 from VendingMachine import VendingMachine, VendingException
 from MessageKeeper import MessageKeeper
 from SerialClient import SerialClient, SerialClientException
 from VendingMachine import VendingMachine, VendingException
 from MessageKeeper import MessageKeeper
@@ -195,14 +195,18 @@ def setup_idlers(v):
                 GrayIdler(v,one="*",zero="-"),
                StringIdler(v, text=CREDITS),
                 GrayIdler(v,one="/",zero="\\"),
                 GrayIdler(v,one="*",zero="-"),
                StringIdler(v, text=CREDITS),
                 GrayIdler(v,one="/",zero="\\"),
+               ClockIdler(v),
                FileIdler(v, '/etc/passwd'),
                 GrayIdler(v,one="X",zero="O"),
                FileIdler(v, '/usr/share/common-licenses/GPL-2'),
                 GrayIdler(v,one="*",zero="-",reorder=1),
                StringIdler(v, text=str(math.pi) + "            "),
                FileIdler(v, '/etc/passwd'),
                 GrayIdler(v,one="X",zero="O"),
                FileIdler(v, '/usr/share/common-licenses/GPL-2'),
                 GrayIdler(v,one="*",zero="-",reorder=1),
                StringIdler(v, text=str(math.pi) + "            "),
+               ClockIdler(v),
                 GrayIdler(v,one="/",zero="\\",reorder=1),
                StringIdler(v, text=str(math.e) + "            "),
                 GrayIdler(v,one="X",zero="O",reorder=1),
                 GrayIdler(v,one="/",zero="\\",reorder=1),
                StringIdler(v, text=str(math.e) + "            "),
                 GrayIdler(v,one="X",zero="O",reorder=1),
+               StringIdler(v, text="    I want some pizza - please call Pizza Hut Shenton Park on +61 8 9381 9979 - and order as Quinn - I am getting really hungry", repeat=False),
+               PipeIdler(v, "/usr/bin/ypcat", "passwd"),
                FortuneIdler(v),
                ClockIdler(v),
                StringIdler(v),
                FortuneIdler(v),
                ClockIdler(v),
                StringIdler(v),
@@ -277,6 +281,7 @@ def run_forever(rfh, wfh, options, cf):
                if len(cur_pin) == PIN_LENGTH and mk.done() and time_to_autologout == None:
                        # start autologout
                        time_to_autologout = time() + 15
                if len(cur_pin) == PIN_LENGTH and mk.done() and time_to_autologout == None:
                        # start autologout
                        time_to_autologout = time() + 15
+                       last_timeout_refresh = None
 
                if time_to_idle == None and cur_user == '':
                        time_to_idle = time() + 5
 
                if time_to_idle == None and cur_user == '':
                        time_to_idle = time() + 5
@@ -406,26 +411,33 @@ def run_forever(rfh, wfh, options, cf):
                                                continue
                                        elif cur_selection[1] == '8':
                                                v.display('GOT COKE?')
                                                continue
                                        elif cur_selection[1] == '8':
                                                v.display('GOT COKE?')
-                                               os.system('su - "%s" -c "dispense %s"'%(username, cur_selection[0]))
+                                               if ((os.system('su - "%s" -c "dispense %s"'%(username, cur_selection[0])) >> 8) != 0):
+                                                       v.display('SEEMS NOT')
+                                               else:
+                                                       v.display('GOT COKE!')
                                        else:
                                        else:
-                                               v.display('HERES A '+cur_selection)
-                                               v.vend(cur_selection)
-                                       sleep(0.5)
-                                       v.display('THANK YOU')
-                                       sleep(0.5)
+                                               v.display(cur_selection+' - $1.00')
+                                               if ((os.system('su - "%s" -c "dispense snack"'%(username)) >> 8) == 0):
+                                                       v.vend(cur_selection)
+                                                       v.display('THANK YOU')
+                                               else:
+                                                       v.display('NO MONEY?')
+                                       sleep(1)
                                        cur_selection = ''
                                        time_to_autologout = time() + 8
                                        cur_selection = ''
                                        time_to_autologout = time() + 8
+                                       last_timeout_refresh = None
 
 def connect_to_vend(options, cf):
 
 def connect_to_vend(options, cf):
-       # Open vending machine via serial.
-       logging.info('Connecting to vending machine using serial')
-       serialclient = SerialClient(port = '/dev/ttyS1', baud = 9600)
-       return serialclient.get_fh()
-       
+
        if options.use_lat:
                logging.info('Connecting to vending machine using LAT')
                latclient = LATClient(service = cf.ServiceName, password = cf.ServicePassword, server_name = cf.ServerName, connect_password = cf.ConnectPassword, priv_password = cf.PrivPassword)
                rfh, wfh = latclient.get_fh()
        if options.use_lat:
                logging.info('Connecting to vending machine using LAT')
                latclient = LATClient(service = cf.ServiceName, password = cf.ServicePassword, server_name = cf.ServerName, connect_password = cf.ConnectPassword, priv_password = cf.PrivPassword)
                rfh, wfh = latclient.get_fh()
+       elif options.use_serial:
+               # Open vending machine via serial.
+               logging.info('Connecting to vending machine using serial')
+               serialclient = SerialClient(port = '/dev/ttyS1', baud = 9600)
+               rfh,wfh = serialclient.get_fh()
        else:
                #(rfh, wfh) = popen2('../../virtualvend/vvend.py')
                logging.info('Connecting to virtual vending machine on %s:%d'%(options.host,options.port))
        else:
                #(rfh, wfh) = popen2('../../virtualvend/vvend.py')
                logging.info('Connecting to virtual vending machine on %s:%d'%(options.host,options.port))
@@ -442,7 +454,9 @@ def parse_args():
 
        op = OptionParser(usage="%prog [OPTION]...")
        op.add_option('-f', '--config-file', default='/etc/dispense/servers.conf', metavar='FILE', dest='config_file', help='use the specified config file instead of /etc/dispense/servers.conf')
 
        op = OptionParser(usage="%prog [OPTION]...")
        op.add_option('-f', '--config-file', default='/etc/dispense/servers.conf', metavar='FILE', dest='config_file', help='use the specified config file instead of /etc/dispense/servers.conf')
-       op.add_option('--virtualvend', action='store_false', default=True, dest='use_lat', help='use the virtual vending server instead of LAT')
+       op.add_option('--serial', action='store_true', default=True, dest='use_serial', help='use the serial port')
+       op.add_option('--lat', action='store_true', default=False, dest='use_lat', help='use LAT')
+       op.add_option('--virtualvend', action='store_false', default=True, dest='use_serial', help='use the virtual vending server instead of LAT')
        op.add_option('-n', '--hostname', dest='host', default='localhost', help='the hostname to connect to for virtual vending machine mode (default: localhost)')
        op.add_option('-p', '--port', dest='port', default=5150, type='int', help='the port number to connect to (default: 5150)')
        op.add_option('-l', '--log-file', metavar='FILE', dest='log_file', default='', help='log output to the specified file')
        op.add_option('-n', '--hostname', dest='host', default='localhost', help='the hostname to connect to for virtual vending machine mode (default: localhost)')
        op.add_option('-p', '--port', dest='port', default=5150, type='int', help='the port number to connect to (default: 5150)')
        op.add_option('-l', '--log-file', metavar='FILE', dest='log_file', default='', help='log output to the specified file')

UCC git Repository :: git.ucc.asn.au